From 6d6e2b813a275cce2d945f82e599a4848cca87e5 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Tue, 8 Jan 2019 15:18:25 +0100 Subject: [PATCH 001/571] Update interface/web/sites/database_edit.php --- interface/web/sites/database_edit.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php index 71e5acaf27..22f3302c6c 100644 --- a/interface/web/sites/database_edit.php +++ b/interface/web/sites/database_edit.php @@ -152,6 +152,12 @@ class page_action extends tform_actions { $app->tpl->setVar("database_name_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_name_prefix'], $dbname_prefix, $global_config['dbname_prefix']), true); } + if($global_config['disable_client_remote_dbserver'] == 'y' && $_SESSION["s"]["user"]["typ"] != 'admin') { + $app->tpl->setVar("disable_remote_db", 1); + } else { + $app->tpl->setVar("disable_remote_db", 0); + } + 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 @@ -351,9 +357,14 @@ class page_action extends tform_actions { if($tmp['server_id'] && $tmp['server_id'] != $this->dataRecord['server_id']) { // we need remote access rights for this server, so get it's ip address $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); + + // Add default remote_ips from Main Configuration. + $remote_ips = explode(",", $global_config['default_remote_dbserver']); + if (!in_array($server_config['ip_address'], $default_remote_db)) { $remote_ips[] = $server_config['ip_address']; } + if($server_config['ip_address']!='') { if($this->dataRecord['remote_access'] != 'y'){ - $this->dataRecord['remote_ips'] = $server_config['ip_address']; + $this->dataRecord['remote_ips'] = implode(',', $remote_ips); $this->dataRecord['remote_access'] = 'y'; } else { if($this->dataRecord['remote_ips'] != ''){ @@ -361,6 +372,7 @@ class page_action extends tform_actions { $this->dataRecord['remote_ips'] .= ',' . $server_config['ip_address']; } $tmp = preg_split('/\s*,\s*/', $this->dataRecord['remote_ips']); + $tmp = array_merge($tmp, $remote_ips); $tmp = array_unique($tmp); $this->dataRecord['remote_ips'] = implode(',', $tmp); unset($tmp); @@ -430,9 +442,14 @@ class page_action extends tform_actions { if($tmp['server_id'] && $tmp['server_id'] != $this->dataRecord['server_id']) { // we need remote access rights for this server, so get it's ip address $server_config = $app->getconf->get_server_config($tmp['server_id'], 'server'); + + // Add default remote_ips from Main Configuration. + $remote_ips = explode(",", $global_config['default_remote_dbserver']); + if (!in_array($server_config['ip_address'], $default_remote_db)) { $remote_ips[] = $server_config['ip_address']; } + if($server_config['ip_address']!='') { if($this->dataRecord['remote_access'] != 'y'){ - $this->dataRecord['remote_ips'] = $server_config['ip_address']; + $this->dataRecord['remote_ips'] = implode(',', $remote_ips); $this->dataRecord['remote_access'] = 'y'; } else { if($this->dataRecord['remote_ips'] != ''){ @@ -440,6 +457,7 @@ class page_action extends tform_actions { $this->dataRecord['remote_ips'] .= ',' . $server_config['ip_address']; } $tmp = preg_split('/\s*,\s*/', $this->dataRecord['remote_ips']); + $tmp = array_merge($tmp, $remote_ips); $tmp = array_unique($tmp); $this->dataRecord['remote_ips'] = implode(',', $tmp); unset($tmp); -- GitLab From 15506bef8018548c7da59a599db9d67416121c67 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Tue, 8 Jan 2019 15:19:23 +0100 Subject: [PATCH 002/571] Update interface/web/sites/templates/database_edit.htm --- interface/web/sites/templates/database_edit.htm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm index 290ae30a96..0d5be00130 100644 --- a/interface/web/sites/templates/database_edit.htm +++ b/interface/web/sites/templates/database_edit.htm @@ -97,6 +97,7 @@ </select></div> </tmpl_if> </div> + <tmpl_unless name="disable_remote_db"> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='remote_access_txt'}</label> <div class="col-sm-9"> @@ -106,6 +107,7 @@ <div class="form-group"> <label for="remote_ips" class="col-sm-3 control-label">{tmpl_var name='remote_ips_txt'}</label> <div class="col-sm-9"><input type="text" name="remote_ips" id="remote_ips" value="{tmpl_var name='remote_ips'}" class="form-control" /></div></div> + </tmpl_if> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> -- GitLab From fefa02d353b7aca12cebe7f245588a4d1c336991 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Tue, 8 Jan 2019 15:33:54 +0100 Subject: [PATCH 003/571] Update interface/web/admin/lib/lang/en_system_config.lng, interface/web/admin/lib/lang/it_system_config.lng, interface/web/admin/templates/system_config_sites_edit.htm, interface/web/admin/form/system_config.tform.php files --- .../web/admin/form/system_config.tform.php | 21 ++++++++++++++++++- .../web/admin/lib/lang/en_system_config.lng | 2 ++ .../web/admin/lib/lang/it_system_config.lng | 2 ++ .../templates/system_config_sites_edit.htm | 13 +++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 449805f3c1..fb2f1f7264 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -200,6 +200,25 @@ $form["tabs"]['sites'] = array ( 'value' => '', 'name' => 'default_dbserver' ), + 'disable_client_remote_dbserver' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'default_remote_dbserver' => array ( + 'datatype' => 'TEXT', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_database', + 'function' => 'valid_ip_list', + 'errmsg' => 'database_remote_error_ips'), + ), + 'default' => '', + 'value' => '', + 'width' => '60', + 'searchable' => 2 + ), //################################# // ENDE Datatable fields //################################# @@ -731,4 +750,4 @@ $form["tabs"]['misc'] = array ( ); -?> +?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 38f178f9f5..1a7d18b9e7 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -84,4 +84,6 @@ $wb["reseller_can_use_options_txt"] = "Reseller can use the option-tab for websi $wb["custom_login_text_txt"] = "Custom Text on Login-Page"; $wb["custom_login_link_txt"] = "Custom Link on Login-Page"; $wb["login_link_error_regex"] = "Invalid Link for Custom Login"; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 396503f02e..bc72844ed8 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -81,4 +81,6 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb["default_remote_dbserver_txt"] = "DB remoti predefiniti"; +$wb["disable_client_remote_dbserver_txt"] = "Disabilita la configurazione dei DB Remoti per i clienti"; ?> diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm index 1c4c5c6f9a..8ab35989ff 100644 --- a/interface/web/admin/templates/system_config_sites_edit.htm +++ b/interface/web/admin/templates/system_config_sites_edit.htm @@ -75,7 +75,18 @@ {tmpl_var name='default_dbserver'} </select></div> </div> - + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='disable_client_remote_dbserver_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='disable_client_remote_dbserver'} + </div> + </div> + <div class="form-group"> + <label for="default_remote_dbserver" class="col-sm-3 control-label">{tmpl_var name='default_remote_dbserver_txt'}</label> + <div class="col-sm-9"><input type="text" name="default_remote_dbserver" id="default_remote_dbserver" value="{tmpl_var name='default_remote_dbserver'}" class="form-control" /></div> + </div> + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> <div class="clear"><div class="right"> -- GitLab From 0c0dd4652bee894003806692b1a2c3529ed78154 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Tue, 8 Jan 2019 15:35:07 +0100 Subject: [PATCH 004/571] Show DNS Slave Zone menu only if enabled by limits. --- interface/web/dns/lib/module.conf.php | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/interface/web/dns/lib/module.conf.php b/interface/web/dns/lib/module.conf.php index 75b17a98e8..4e4c645470 100644 --- a/interface/web/dns/lib/module.conf.php +++ b/interface/web/dns/lib/module.conf.php @@ -1,5 +1,7 @@ <?php +$userid=$app->auth->get_user_id(); + $module["name"] = "dns"; $module["title"] = "top_menu_dns"; $module["template"] = "module.tpl.htm"; @@ -56,19 +58,23 @@ $module["nav"][] = array( 'title' => 'DNS', unset($items); -$items[] = array( 'title' => "Secondary Zones", - 'target' => 'content', - 'link' => 'dns/dns_slave_list.php', - 'html_id' => 'dns_slave_list'); - -$module["nav"][] = array( 'title' => 'Secondary DNS', - 'open' => 1, - 'items' => $items); +if($app->auth->get_client_limit($userid, 'dns_slave_zone') != 0) +{ + $items[] = array( 'title' => "Secondary Zones", + 'target' => 'content', + 'link' => 'dns/dns_slave_list.php', + 'html_id' => 'dns_slave_list'); + + $module["nav"][] = array( 'title' => 'Secondary DNS', + 'open' => 1, + 'items' => $items); + + unset($items); +} -unset($items); -?> +?> \ No newline at end of file -- GitLab From 6ea7d4c89a477765fb2dea6025484712321eae74 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Mon, 11 Mar 2019 11:16:35 +0100 Subject: [PATCH 005/571] stats Folder created even when Statistics set to none - Fixes #4977 --- .../plugins-available/apache2_plugin.inc.php | 35 +++++++++++-------- server/plugins-available/nginx_plugin.inc.php | 5 +++ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 8ebe11d92a..e9845eec34 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1801,21 +1801,23 @@ class apache2_plugin { //* Create .htaccess and .htpasswd file for website statistics //if(!is_file($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess') or $data['old']['document_root'] != $data['new']['document_root']) { - if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); - $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; - $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); - $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); - unset($ht_file); - //} - if(!is_file($data['new']['document_root'].'/web/stats/.htpasswd_stats') || $data['new']['stats_password'] != $data['old']['stats_password']) { - if(trim($data['new']['stats_password']) != '') { - $htp_file = 'admin:'.trim($data['new']['stats_password']); - $app->system->web_folder_protection($data['new']['document_root'], false); - $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); - $app->system->web_folder_protection($data['new']['document_root'], true); - $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); - unset($htp_file); + if($data['new']['stats_type'] != '') { + if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; + $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); + $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); + unset($ht_file); + + if(!is_file($data['new']['document_root'].'/web/stats/.htpasswd_stats') || $data['new']['stats_password'] != $data['old']['stats_password']) { + if(trim($data['new']['stats_password']) != '') { + $htp_file = 'admin:'.trim($data['new']['stats_password']); + $app->system->web_folder_protection($data['new']['document_root'], false); + $app->system->file_put_contents($data['new']['document_root'].'/web/stats/.htpasswd_stats', $htp_file); + $app->system->web_folder_protection($data['new']['document_root'], true); + $app->system->chmod($data['new']['document_root'].'/web/stats/.htpasswd_stats', 0755); + unset($htp_file); + } } } @@ -1824,6 +1826,11 @@ class apache2_plugin { $this->awstats_update($data, $web_config); } + //* Remove Stats-Folder when Statistics set to none + if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + exec('rm -rf '.$data['new']['document_root'].'/web/stats'); + } + $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); $this->hhvm_update($data, $web_config); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index adac20c78a..94c588c8b9 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1889,6 +1889,11 @@ class nginx_plugin { $this->awstats_update($data, $web_config); } + //* Remove Stats-Folder when Statistics set to none + if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + exec('rm -rf '.$data['new']['document_root'].'/web/stats'); + } + $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); $this->hhvm_update($data, $web_config); -- GitLab From 5d019bf55f67d9b0f657f7de0f6a38af6c9234dc Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 11 Mar 2019 12:13:40 +0100 Subject: [PATCH 006/571] - added new webroot map argument to cli call of certbot on versions >= 0.31, should fix #5258 --- server/lib/classes/letsencrypt.inc.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 4f681cc485..3807149c1c 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -284,7 +284,17 @@ class letsencrypt { } 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"; + if ($letsencrypt_version >= 0.31) { + $webroot_map = array(); + for($i = 0; $i < count($temp_domains); $i++) { + $webroot_map[$temp_domains[$i]] = '/usr/local/ispconfig/interface/acme'; + } + $webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map))); + } else { + $webroot_args = "$cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme"; + } + + $letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $webroot_args"; $success = $app->system->_exec($letsencrypt_cmd); } } else { -- GitLab From 97d1dce043e4adccaee83f42a01f8cc7e828f049 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Mon, 11 Mar 2019 12:32:23 +0100 Subject: [PATCH 007/571] Send emails to active customers and resellers only. - #5216 --- interface/web/client/client_message.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php index 2617bbe67d..a46aefa6b4 100644 --- a/interface/web/client/client_message.php +++ b/interface/web/client/client_message.php @@ -71,18 +71,18 @@ if(isset($_POST) && count($_POST) > 1) { $where[] = 'client_id = '.$app->functions->intval($tmp_client_id); } if(!empty($where)) $where_clause = ' AND ('.implode(' OR ', $where).')'; - $sql = "SELECT * FROM client WHERE email != ''".$where_clause; + $sql = "SELECT * FROM client WHERE canceled != 'y' AND email != ''".$where_clause; } else { - $sql = "SELECT * FROM client WHERE 0"; + $sql = "SELECT * FROM client WHERE canceled != 'y'"; } } else { //* Select all clients and resellers if($_SESSION["s"]["user"]["typ"] == 'admin'){ - $sql = "SELECT * FROM client WHERE email != ''"; + $sql = "SELECT * FROM client WHERE email != '' AND canceled != 'y'"; } else { $client_id = $app->functions->intval($_SESSION['s']['user']['client_id']); if($client_id == 0) die('Invalid Client ID.'); - $sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'"; + $sql = "SELECT * FROM client WHERE email != '' AND canceled != 'y' AND parent_client_id = '$client_id'"; } } -- GitLab From 89284110eb20176699afe42bd0487516eb0f3f0c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 11 Mar 2019 12:35:05 +0100 Subject: [PATCH 008/571] Update apache2_plugin.inc.php --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index e9845eec34..3aa851f649 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1828,7 +1828,7 @@ class apache2_plugin { //* Remove Stats-Folder when Statistics set to none if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { - exec('rm -rf '.$data['new']['document_root'].'/web/stats'); + $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); } $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); -- GitLab From 9768d64e9044b9fb85de7689218d2ab8853c9a47 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 11 Mar 2019 12:36:21 +0100 Subject: [PATCH 009/571] Update nginx_plugin.inc.php --- server/plugins-available/nginx_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 94c588c8b9..189a6f88ea 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1891,7 +1891,7 @@ class nginx_plugin { //* Remove Stats-Folder when Statistics set to none if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { - exec('rm -rf '.$data['new']['document_root'].'/web/stats'); + $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); } $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); -- GitLab From f3087460f54521f331646bc6bb2b0a5f5c3cdefe Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 20 Mar 2019 18:44:03 +0100 Subject: [PATCH 010/571] Fixes #5275 DNS Wizard does not add new zone. --- install/sql/incremental/upd_dev_collection.sql | 6 +++--- install/sql/ispconfig3.sql | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index b9fb91d46c..279d3ce211 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -78,6 +78,6 @@ INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); -ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NOT NULL DEFAULT ''; -ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NOT NULL DEFAULT ''; -ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NOT NULL DEFAULT ''; \ No newline at end of file +ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; +ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index f06a49b7ea..4cfaebb396 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -516,7 +516,7 @@ CREATE TABLE `dns_slave` ( `origin` varchar(255) NOT NULL DEFAULT '', `ns` varchar(255) NOT NULL DEFAULT '', `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` TEXT NOT NULL DEFAULT '', + `xfer` TEXT NULL, PRIMARY KEY (`id`), UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) @@ -620,8 +620,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` TEXT NOT NULL DEFAULT '', - `also_notify` TEXT NOT NULL DEFAULT '', + `xfer` TEXT NULL, + `also_notify` TEXT NULL, `update_acl` varchar(255) default NULL, `dnssec_initialized` ENUM('Y','N') NOT NULL DEFAULT 'N', `dnssec_wanted` ENUM('Y','N') NOT NULL DEFAULT 'N', -- GitLab From 12f591327e3c6c8b6b3e475cd676a9f70801b173 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 20 Mar 2019 18:45:43 +0100 Subject: [PATCH 011/571] Added INSTALLER_UPDATE constant in update.php to allow easier detection if installer run is an update or new installation. --- install/update.php | 1 + 1 file changed, 1 insertion(+) diff --git a/install/update.php b/install/update.php index 62e8d5ef4a..104aab57ff 100644 --- a/install/update.php +++ b/install/update.php @@ -59,6 +59,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. error_reporting(E_ALL|E_STRICT); define('INSTALLER_RUN', true); +define('INSTALLER_UPDATE', true); //** The banner on the command line echo "\n\n".str_repeat('-', 80)."\n"; -- GitLab From 14807bde32856093b7a50a0da25e3c143783b937 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Apr 2019 12:41:20 +0200 Subject: [PATCH 012/571] Fixed SQL query in DNS slave datasource component. --- interface/lib/classes/custom_datasource.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index 484d0fa055..c50d585027 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -72,7 +72,7 @@ class custom_datasource { $client = $app->db->queryOneRecord("SELECT default_slave_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); $sql = "SELECT server_id,server_name FROM server WHERE server_id = ?"; } else { - $sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 ORDER BY server_name AND mirror_server_id = 0"; + $sql = "SELECT server_id,server_name FROM server WHERE dns_server = 1 AND mirror_server_id = 0 ORDER BY server_name"; } $records = $app->db->queryAllRecords($sql, $client['default_slave_dnsserver']); $records_new = array(); -- GitLab From 03f54d5ebc557b408ed80e304d2c12dab4652597 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Apr 2019 13:28:36 +0200 Subject: [PATCH 013/571] Fixed: WARNING - assumed 'LOGLEVEL_WARNING' (this will throw an Error in a future version of PHP) in /usr/local/ispconfig/server/lib/classes/services.inc.php on line 44 --- server/lib/classes/services.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/services.inc.php b/server/lib/classes/services.inc.php index 7a8841ece5..0914081672 100644 --- a/server/lib/classes/services.inc.php +++ b/server/lib/classes/services.inc.php @@ -41,7 +41,7 @@ class services { if(is_array($this->registered_services[$service_name])) { $this->delayed_restarts[$service_name] = $action; } else { - $app->log("Unable to add a delayed restart for '$service_name'. Service not registered.", LOGLEVEL_WARNING); + $app->log("Unable to add a delayed restart for '$service_name'. Service not registered.", LOGLEVEL_WARN); } } -- GitLab From c33bba3c53f913099b76d2cd7708c2cc073c18f0 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Apr 2019 18:33:44 +0200 Subject: [PATCH 014/571] Fixed #5288 Wrong permissions of dkim cert folder on CentOS 7 --- install/dist/lib/centos_base.lib.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/install/dist/lib/centos_base.lib.php b/install/dist/lib/centos_base.lib.php index 8e6741fd69..0fe988439d 100644 --- a/install/dist/lib/centos_base.lib.php +++ b/install/dist/lib/centos_base.lib.php @@ -111,6 +111,25 @@ class installer_centos extends installer_dist { removeLine('/etc/sysconfig/freshclam', 'FRESHCLAM_DELAY=disabled-warn # REMOVE ME', 1); replaceLine('/etc/freshclam.conf', 'Example', '# Example', 1); + + // get shell-group for amavis + $amavis_group=exec('grep -o "^amavis:\|^vscan:" /etc/group'); + if(!empty($amavis_group)) { + $amavis_group=rtrim($amavis_group, ":"); + } + // get shell-user for amavis + $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); + if(!empty($amavis_user)) { + $amavis_user=rtrim($amavis_user, ":"); + } + + // Create the director for DKIM-Keys + if(!is_dir('/var/lib/amavis')) mkdir('/var/lib/amavis', 0750, true); + if(!empty($amavis_user)) exec('chown '.$amavis_user.' /var/lib/amavis'); + if(!empty($amavis_group)) exec('chgrp '.$amavis_group.' /var/lib/amavis'); + if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750); + if(!empty($amavis_user)) exec('chown -R '.$amavis_user.' /var/lib/amavis/dkim'); + if(!empty($amavis_group)) exec('chgrp -R '.$amavis_group.' /var/lib/amavis/dkim'); } -- GitLab From 470bb76e8cb96617c8dfbc026b3f49e68f8dca72 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 10 Apr 2019 19:08:24 +0200 Subject: [PATCH 015/571] Fix: dont use strict comparison to install server plugin --- server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php index bc88f4a198..f88cbe9c0b 100644 --- a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php +++ b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php @@ -17,7 +17,7 @@ class z_php_fpm_incron_reload_plugin { function onInstall() { global $conf; - return $conf['services']['web'] === true; + return $conf['services']['web'] == true; } function onLoad() { -- GitLab From 249241ab586b402bf2357ea530ce9ec695ccca12 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Apr 2019 14:12:01 +0200 Subject: [PATCH 016/571] - using certificates command on certbot >= 0.30, fixes #5291 --- server/lib/classes/letsencrypt.inc.php | 64 +++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 3807149c1c..ea1e745a77 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -265,26 +265,34 @@ class letsencrypt { unset($subdomains); unset($aliasdomains); + $letsencrypt_use_certcommand = false; $letsencrypt_cmd = ''; + $letsencrypt = false; $success = false; + + $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 = false; + } if(!empty($cli_domain_arg)) { if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); $app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG); - $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); - $letsencrypt = reset($letsencrypt); - if(is_executable($letsencrypt)) { + if($letsencrypt) { $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { $letsencrypt_version = $matches[2]; } - if ($letsencrypt_version >=0.22) { + if (version_compare($letsencrypt_version, '0.22', '>=')) { $acme_version = 'https://acme-v02.api.letsencrypt.org/directory'; } else { $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; } - if ($letsencrypt_version >= 0.31) { + if (version_compare($letsencrypt_version, '0.30', '>=')) { + $app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG); + $letsencrypt_use_certcommand = true; $webroot_map = array(); for($i = 0; $i < count($temp_domains); $i++) { $webroot_map[$temp_domains[$i]] = '/usr/local/ispconfig/interface/acme'; @@ -302,8 +310,50 @@ class letsencrypt { $success = true; } } - - $le_files = $this->get_letsencrypt_certificate_paths($temp_domains); + $le_files = array(); + if($letsencrypt_use_certcommand === true && $letsencrypt) { + $letsencrypt_cmd = $letsencrypt . " certificates " . $cli_domain_arg; + $output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'")); + $le_path = ''; + $skip_to_next = true; + foreach($output as $outline) { + $outline = trim($outline); + $app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG); + + if($skip_to_next === true && !preg_match('/^\s*Certificate Name/', $outline)) { + continue; + } + $skip_to_next = false; + + if(preg_match('/^\s*Expiry.*?VALID:\s+\D/', $outline)) { + $app->log("Found LE path is expired or invalid: " . $matches[1], LOGLEVEL_DEBUG); + $skip_to_next = true; + continue; + } + + if(preg_match('/^\s*Certificate Path:\s*(\/.*?)\s*$/', $outline, $matches)) { + $app->log("Found LE path: " . $matches[1], LOGLEVEL_DEBUG); + $le_path = dirname($matches[1]); + if(is_dir($le_path)) { + break; + } else { + $le_path = false; + } + } + } + + if($le_path) { + $le_files = array( + 'privkey' => $le_path . '/privkey.pem', + 'chain' => $le_path . '/chain.pem', + 'cert' => $le_path . '/cert.pem', + 'fullchain' => $le_path . '/fullchain.pem' + ); + } + } + if(empty($le_files)) { + $le_files = $this->get_letsencrypt_certificate_paths($temp_domains); + } unset($temp_domains); if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) { -- GitLab From 9490993f0712f22032cb102e8853dfbe1f8d4949 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 15 Apr 2019 15:02:14 +0200 Subject: [PATCH 017/571] Implements #5290 in stable branch: Nginx - Allow certbot acme challenge on auth_basic protected websites --- server/conf/nginx_vhost.conf.master | 1 + 1 file changed, 1 insertion(+) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 63c9260354..d46da535ca 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -128,6 +128,7 @@ server { location ^~ /.well-known/acme-challenge/ { access_log off; log_not_found off; + auth_basic off; root /usr/local/ispconfig/interface/acme/; autoindex off; index index.html; -- GitLab From 5d1673ed91c4fd5bba49c11bc7eddad93b1be4ed Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 17 May 2019 17:44:17 +0200 Subject: [PATCH 018/571] Update rest.php to check if remote api is allowed. --- interface/web/remote/rest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/interface/web/remote/rest.php b/interface/web/remote/rest.php index d579150045..4f202c6eee 100644 --- a/interface/web/remote/rest.php +++ b/interface/web/remote/rest.php @@ -6,7 +6,11 @@ require_once '../../lib/config.inc.php'; $conf['start_session'] = false; require_once '../../lib/app.inc.php'; -$app->load('rest_handler'); +$app->load('rest_handler,getconf'); + +$security_config = $app->getconf->get_security_config('permissions'); +if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); + $rest_handler = new ISPConfigRESTHandler(); $rest_handler->run(); -- GitLab From dda2b4745ef216566bf6acd6cfad9dc07770fdfb Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 26 Jun 2019 15:36:57 +0200 Subject: [PATCH 019/571] Renewal of letsencrypt does not restart/reload nginx, fixes #5033 --- server/cron.php | 5 ++++- server/lib/classes/modules.inc.php | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/server/cron.php b/server/cron.php index 6f74bd3570..cd8f08ef0a 100644 --- a/server/cron.php +++ b/server/cron.php @@ -69,9 +69,10 @@ $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); +$app->modules->loadModules('web'); // read all cron jobs $path = SCRIPT_PATH . '/lib/classes/cron.d'; @@ -114,6 +115,8 @@ foreach($files as $f) { } unset($files); +$app->services->processDelayedActions(); + // Remove lock @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'); $app->log('Remove Lock: ' . $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock', LOGLEVEL_DEBUG); diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php index aa95d473b2..3fd788d0a9 100644 --- a/server/lib/classes/modules.inc.php +++ b/server/lib/classes/modules.inc.php @@ -37,18 +37,32 @@ class modules { /* This function is called to load the modules from the mods-enabled or the mods-core folder */ - function loadModules($type) { + function loadModules($type = 'all') { global $app, $conf; $subPath = 'mods-enabled'; - if ($type == 'core') $subPath = 'mods-core'; + if ($type == 'core') { + $subPath = 'mods-core'; + } elseif ($type == 'all') { + $type = ''; + } elseif (!preg_match('/^\w+$/', $type)) { + $app->log('Invalid loadModules type ' . $type, LOGLEVEL_ERROR); + return false; + } else { + $subPath = 'mods-available'; + } + $loaded = false; $modules_dir = $conf['rootpath'].$conf['fs_div'].$subPath.$conf['fs_div']; if (is_dir($modules_dir)) { if ($dh = opendir($modules_dir)) { while (($file = readdir($dh)) !== false) { if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { $module_name = substr($file, 0, -8); + if($type && $type !== 'core' && $type != $module_name) { + continue; + } + $loaded = true; include_once $modules_dir.$file; if($this->debug) $app->log('Loading Module: '.$module_name, LOGLEVEL_DEBUG); $app->loaded_modules[$module_name] = new $module_name; @@ -60,6 +74,9 @@ class modules { $app->log('Modules directory missing: '.$modules_dir, LOGLEVEL_ERROR); } + if($type && $type !== 'core' && $loaded === false) { + $app->log('Module ' . $type . ' not found.', LOGLEVEL_ERROR); + } } /* -- GitLab From 9ceff3c13b9dbace5b4ee9acae2b76c8611fc603 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 26 Jun 2019 15:44:08 +0200 Subject: [PATCH 020/571] LE Renewal issue on systems that use the relative symlink option for websites, fixes #5326 --- server/lib/classes/letsencrypt.inc.php | 24 ++++++------------------ server/lib/classes/system.inc.php | 2 +- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index ea1e745a77..583e1c25bb 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -388,12 +388,8 @@ class letsencrypt { $app->system->unlink($key_file); } - if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($key_tmp_file), escapeshellcmd($key_file)); - } else { - if(@is_link($key_file)) $app->system->unlink($key_file); - if(@file_exists($key_tmp_file)) exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file)); - } + if(@is_link($key_file)) $app->system->unlink($key_file); + if(@file_exists($key_tmp_file)) exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file)); if(is_file($crt_file)) { $app->system->copy($crt_file, $crt_file.'.old.'.$date); @@ -401,12 +397,8 @@ class letsencrypt { $app->system->unlink($crt_file); } - if($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($crt_tmp_file), escapeshellcmd($crt_file)); - } else { - if(@is_link($crt_file)) $app->system->unlink($crt_file); - if(@file_exists($crt_tmp_file))exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file)); - } + if(@is_link($crt_file)) $app->system->unlink($crt_file); + if(@file_exists($crt_tmp_file))exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file)); if(is_file($bundle_file)) { $app->system->copy($bundle_file, $bundle_file.'.old.'.$date); @@ -414,12 +406,8 @@ class letsencrypt { $app->system->unlink($bundle_file); } - if($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($bundle_tmp_file), escapeshellcmd($bundle_file)); - } else { - if(@is_link($bundle_file)) $app->system->unlink($bundle_file); - if(@file_exists($bundle_tmp_file)) exec("ln -s ".escapeshellcmd($bundle_tmp_file)." ".escapeshellcmd($bundle_file)); - } + if(@is_link($bundle_file)) $app->system->unlink($bundle_file); + if(@file_exists($bundle_tmp_file)) exec("ln -s ".escapeshellcmd($bundle_tmp_file)." ".escapeshellcmd($bundle_file)); return true; } else { diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index f4d94743a1..5c277ada1a 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -918,7 +918,7 @@ class system{ // Add ($cnt_to-1) number of "../" elements to left side of $cfrom for ($c = 0; $c < (count($a2)-1); $c++) { $cfrom = '../'.$cfrom; } - if(strstr($to,'/etc/letsencrypt/archive/')) $to = str_replace('/etc/letsencrypt/archive/','/etc/letsencrypt/live/',$to); + //if(strstr($to,'/etc/letsencrypt/archive/')) $to = str_replace('/etc/letsencrypt/archive/','/etc/letsencrypt/live/',$to); return symlink($cfrom, $to); } -- GitLab From eab22adbf98b61b3c4802b0ee72640f76784a721 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 26 Jun 2019 15:48:54 +0200 Subject: [PATCH 021/571] Addition to commit dda2b474 for #5033 --- server/cron.php | 2 -- server/lib/classes/cron.d/900-letsencrypt.inc.php | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/server/cron.php b/server/cron.php index cd8f08ef0a..ba59ff4049 100644 --- a/server/cron.php +++ b/server/cron.php @@ -72,8 +72,6 @@ $conf['server_id'] = intval($conf['server_id']); $app->uses('modules,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); -$app->modules->loadModules('web'); - // read all cron jobs $path = SCRIPT_PATH . '/lib/classes/cron.d'; if(!is_dir($path)) die('Cron path missing!'); diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php index d03d4a184a..30a23fe973 100644 --- a/server/lib/classes/cron.d/900-letsencrypt.inc.php +++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php @@ -44,6 +44,7 @@ class cronjob_letsencrypt extends cronjob { public function onBeforeRun() { global $app; + $app->modules->loadModules('web_module'); return parent::onBeforeRun(); } -- GitLab From 7ca2762dc01c8aeb2f0fef6bb404a5468714bf5b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 26 Jun 2019 16:05:30 +0200 Subject: [PATCH 022/571] Syntax errors in PHP 5.3.3, fixes #5129 --- interface/lib/app.inc.php | 3 ++- interface/web/dns/dns_caa_edit.php | 3 ++- interface/web/mail/ajax_get_json.php | 6 +++++- interface/web/sites/database_quota_stats.php | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index ccc80fd254..b02ae8526d 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -335,7 +335,8 @@ class app { } private function get_cookie_domain() { - $proxy_panel_allowed = $this->getconf->get_security_config('permissions')['reverse_proxy_panel_allowed']; + $sec_config = $this->getconf->get_security_config('permissions'); + $proxy_panel_allowed = $sec_config['reverse_proxy_panel_allowed']; if ($proxy_panel_allowed == 'all') { return ''; } diff --git a/interface/web/dns/dns_caa_edit.php b/interface/web/dns/dns_caa_edit.php index c3d8618414..0151600e48 100644 --- a/interface/web/dns/dns_caa_edit.php +++ b/interface/web/dns/dns_caa_edit.php @@ -165,7 +165,8 @@ class page_action extends tform_actions { // Set name if($this->dataRecord['additional'] != '') { - $temp = explode(',', $this->dataRecord['additional'])[0]; // if we have more hostnames the interface-plugin will be used + $temp = explode(',', $this->dataRecord['additional']); + $temp = $temp[0]; // if we have more hostnames the interface-plugin will be used $temp = trim($temp,'.'); if(trim($temp != '')) $this->dataRecord['name'] = $temp.'.'.$this->dataRecord['name']; unset($temp); diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index 2a1a756167..17fd4cf45a 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -40,7 +40,11 @@ $domain_id = $_GET['domain_id']; if($type == 'create_dkim' && $domain_id != ''){ $dkim_public = $_GET['dkim_public']; $dkim_selector = $_GET['dkim_selector']; - $domain=@(is_numeric($domain_id))?$app->db->queryOneRecord("SELECT domain FROM domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r'), $domain_id)['domain']:$domain_id; + $domain = $domain_id; + if(is_numeric($domain_id)) { + $temp = $app->db->queryOneRecord("SELECT domain FROM domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r'), $domain_id); + $domain = $temp['domain']; + } $rec = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = ?", $domain); $server_id = $rec['server_id']; $maildomain = $rec['domain']; diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index 148aa127ae..5f550cf8d1 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -83,7 +83,8 @@ class list_action extends listform_actions { } else { $web_database = $app->db->queryOneRecord("SELECT * FROM web_database WHERE database_id = ?", $rec[$this->idx_key]); $rec['database'] = $rec['database_name']; - $rec['server_name'] = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $web_database['server_id'])['server_name']; + $temp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $web_database['server_id']); + $rec['server_name'] = $temp['server_name']; $sys_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE groupid = ?", $web_database['sys_groupid']); $client = $app->db->queryOneRecord("SELECT * FROM client WHERE client_id = ?", $sys_group['client_id']); $rec['client'] = $client['username']; -- GitLab From 23ca8059e5407b7606b0b3e9df5a8c8d7cd915d8 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 26 Jun 2019 17:05:00 +0200 Subject: [PATCH 023/571] - added missing load for modules lib --- server/cron_debug.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/cron_debug.php b/server/cron_debug.php index 615a56d743..2ab9289d26 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -39,7 +39,7 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE); $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); // Path settings -- GitLab From cb984ca1d806d32fa7b334347ca846f4ba70fd80 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 28 Jun 2019 16:03:48 +0200 Subject: [PATCH 024/571] Add support for Debian 10 (Buster) to OS detection code. --- install/dist/conf/debian100.conf.php | 234 +++++++++++++++++++++++ install/dist/conf/debiantesting.conf.php | 22 ++- install/lib/install.lib.php | 9 +- server/lib/classes/monitor_tools.inc.php | 12 +- 4 files changed, 266 insertions(+), 11 deletions(-) create mode 100644 install/dist/conf/debian100.conf.php diff --git a/install/dist/conf/debian100.conf.php b/install/dist/conf/debian100.conf.php new file mode 100644 index 0000000000..28d82b8079 --- /dev/null +++ b/install/dist/conf/debian100.conf.php @@ -0,0 +1,234 @@ +<?php + +/* +Copyright (c) 2016, Till Brehm, ISPConfig UG +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. +*/ + +//*** Debian 10 default settings + +//* Main +$conf['language'] = 'en'; +$conf['distname'] = 'debian100'; +$conf['hostname'] = 'server1.domain.tld'; // Full hostname +$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error +$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; +$conf['server_id'] = 1; +$conf['init_scripts'] = '/etc/init.d'; +$conf['runlevel'] = '/etc'; +$conf['shells'] = '/etc/shells'; +$conf['pam'] = '/etc/pam.d'; + +//* Services provided by this server, this selection will be overridden by the expert mode +$conf['services']['mail'] = true; +$conf['services']['web'] = true; +$conf['services']['dns'] = true; +$conf['services']['file'] = true; +$conf['services']['db'] = true; +$conf['services']['vserver'] = true; +$conf['services']['proxy'] = false; +$conf['services']['firewall'] = false; + +//* MySQL +$conf['mysql']['installed'] = false; // will be detected automatically during installation +$conf['mysql']['init_script'] = 'mysql'; +$conf['mysql']['host'] = 'localhost'; +$conf['mysql']['ip'] = '127.0.0.1'; +$conf['mysql']['port'] = '3306'; +$conf['mysql']['database'] = 'dbispconfig'; +$conf['mysql']['admin_user'] = 'root'; +$conf['mysql']['admin_password'] = ''; +$conf['mysql']['charset'] = 'utf8'; +$conf['mysql']['ispconfig_user'] = 'ispconfig'; +$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); +$conf['mysql']['master_slave_setup'] = 'n'; +$conf['mysql']['master_host'] = ''; +$conf['mysql']['master_database'] = 'dbispconfig'; +$conf['mysql']['master_admin_user'] = 'root'; +$conf['mysql']['master_admin_password'] = ''; +$conf['mysql']['master_ispconfig_user'] = ''; +$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); + +//* Apache +$conf['apache']['installed'] = false; // will be detected automatically during installation +$conf['apache']['user'] = 'www-data'; +$conf['apache']['group'] = 'www-data'; +$conf['apache']['init_script'] = 'apache2'; +$conf['apache']['version'] = '2.4'; +$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; +$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; +$conf['apache']['vhost_port'] = '8080'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; + +//* Website base settings +$conf['web']['website_basedir'] = '/var/www'; +$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; +$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; + +//* Apps base settings +$conf['web']['apps_vhost_ip'] = '_default_'; +$conf['web']['apps_vhost_port'] = '8081'; +$conf['web']['apps_vhost_servername'] = ''; +$conf['web']['apps_vhost_user'] = 'ispapps'; +$conf['web']['apps_vhost_group'] = 'ispapps'; + +//* Fastcgi +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; +$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; +$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; + +//* Postfix +$conf['postfix']['installed'] = false; // will be detected automatically during installation +$conf['postfix']['config_dir'] = '/etc/postfix'; +$conf['postfix']['init_script'] = 'postfix'; +$conf['postfix']['user'] = 'postfix'; +$conf['postfix']['group'] = 'postfix'; +$conf['postfix']['vmail_userid'] = '5000'; +$conf['postfix']['vmail_username'] = 'vmail'; +$conf['postfix']['vmail_groupid'] = '5000'; +$conf['postfix']['vmail_groupname'] = 'vmail'; +$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; + +//* Mailman +$conf['mailman']['installed'] = false; // will be detected automatically during installation +$conf['mailman']['config_dir'] = '/etc/mailman'; +$conf['mailman']['init_script'] = 'mailman'; + +//* mlmmj +$conf['mlmmj']['installed'] = false; // will be detected automatically during installation +$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; + +//* Getmail +$conf['getmail']['installed'] = false; // will be detected automatically during installation +$conf['getmail']['config_dir'] = '/etc/getmail'; +$conf['getmail']['program'] = '/usr/bin/getmail'; + +//* Courier +$conf['courier']['installed'] = false; // will be detected automatically during installation +$conf['courier']['config_dir'] = '/etc/courier'; +$conf['courier']['courier-authdaemon'] = 'courier-authdaemon'; +$conf['courier']['courier-imap'] = 'courier-imap'; +$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl'; +$conf['courier']['courier-pop'] = 'courier-pop'; +$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl'; + +//* Dovecot +$conf['dovecot']['installed'] = false; // will be detected automatically during installation +$conf['dovecot']['config_dir'] = '/etc/dovecot'; +$conf['dovecot']['init_script'] = 'dovecot'; + +//* SASL +$conf['saslauthd']['installed'] = false; // will be detected automatically during installation +$conf['saslauthd']['config'] = '/etc/default/saslauthd'; +$conf['saslauthd']['init_script'] = 'saslauthd'; + +//* Amavisd +$conf['amavis']['installed'] = false; // will be detected automatically during installation +$conf['amavis']['config_dir'] = '/etc/amavis'; +$conf['amavis']['init_script'] = 'amavis'; + +//* ClamAV +$conf['clamav']['installed'] = false; // will be detected automatically during installation +$conf['clamav']['init_script'] = 'clamav-daemon'; + +//* Pureftpd +$conf['pureftpd']['installed'] = false; // will be detected automatically during installation +$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; +$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql'; + +//* MyDNS +$conf['mydns']['installed'] = false; // will be detected automatically during installation +$conf['mydns']['config_dir'] = '/etc'; +$conf['mydns']['init_script'] = 'mydns'; + +//* PowerDNS +$conf['powerdns']['installed'] = false; // will be detected automatically during installation +$conf['powerdns']['database'] = 'powerdns'; +$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; +$conf['powerdns']['init_script'] = 'pdns'; + +//* BIND DNS Server +$conf['bind']['installed'] = false; // will be detected automatically during installation +$conf['bind']['bind_user'] = 'root'; +$conf['bind']['bind_group'] = 'bind'; +$conf['bind']['bind_zonefiles_dir'] = '/etc/bind'; +$conf['bind']['named_conf_path'] = '/etc/bind/named.conf'; +$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local'; +$conf['bind']['init_script'] = 'bind9'; + +//* Jailkit +$conf['jailkit']['installed'] = false; // will be detected automatically during installation +$conf['jailkit']['config_dir'] = '/etc/jailkit'; +$conf['jailkit']['jk_init'] = 'jk_init.ini'; +$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch'; +$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; + +//* Squid +$conf['squid']['installed'] = false; // will be detected automatically during installation +$conf['squid']['config_dir'] = '/etc/squid'; +$conf['squid']['init_script'] = 'squid'; + +//* Nginx +$conf['nginx']['installed'] = false; // will be detected automatically during installation +$conf['nginx']['user'] = 'www-data'; +$conf['nginx']['group'] = 'www-data'; +$conf['nginx']['config_dir'] = '/etc/nginx'; +$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; +$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; +$conf['nginx']['init_script'] = 'nginx'; +$conf['nginx']['vhost_port'] = '8080'; +$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; +$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; +$conf['nginx']['php_fpm_start_port'] = 9010; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; + +//* OpenVZ +$conf['openvz']['installed'] = false; + +//*Bastille-Firwall +$conf['bastille']['installed'] = false; +$conf['bastille']['config_dir'] = '/etc/Bastille'; + +//* vlogger +$conf['vlogger']['config_dir'] = '/etc'; + +//* cron +$conf['cron']['init_script'] = 'cron'; +$conf['cron']['crontab_dir'] = '/etc/cron.d'; +$conf['cron']['wget'] = '/usr/bin/wget'; + +//* Metronome XMPP +$conf['xmpp']['installed'] = false; +$conf['xmpp']['init_script'] = 'metronome'; + + +?> diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php index 92787bf428..5e5e32f474 100644 --- a/install/dist/conf/debiantesting.conf.php +++ b/install/dist/conf/debiantesting.conf.php @@ -28,11 +28,11 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -//*** Ubuntu 16.04 default settings +//*** Debian Testing default settings //* Main $conf['language'] = 'en'; -$conf['distname'] = 'ubuntu1604'; +$conf['distname'] = 'debian100'; $conf['hostname'] = 'server1.domain.tld'; // Full hostname $conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; $conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; @@ -83,8 +83,8 @@ $conf['apache']['version'] = '2.4'; $conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; $conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; $conf['apache']['vhost_port'] = '8080'; -$conf['apache']['php_ini_path_apache'] = '/etc/php/7.0/apache2/php.ini'; -$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.0/cgi/php.ini'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; //* Website base settings $conf['web']['website_basedir'] = '/var/www'; @@ -99,7 +99,7 @@ $conf['web']['apps_vhost_user'] = 'ispapps'; $conf['web']['apps_vhost_group'] = 'ispapps'; //* Fastcgi -$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.0/cgi/'; +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; $conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; $conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; @@ -120,6 +120,10 @@ $conf['mailman']['installed'] = false; // will be detected automatically during $conf['mailman']['config_dir'] = '/etc/mailman'; $conf['mailman']['init_script'] = 'mailman'; +//* mlmmj +$conf['mlmmj']['installed'] = false; // will be detected automatically during installation +$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; + //* Getmail $conf['getmail']['installed'] = false; // will be detected automatically during installation $conf['getmail']['config_dir'] = '/etc/getmail'; @@ -201,11 +205,11 @@ $conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; $conf['nginx']['init_script'] = 'nginx'; $conf['nginx']['vhost_port'] = '8080'; $conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; -$conf['nginx']['php_fpm_init_script'] = 'php7.0-fpm'; -$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.0/fpm/php.ini'; -$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.0/fpm/pool.d'; +$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; $conf['nginx']['php_fpm_start_port'] = 9010; -$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.0-fpm'; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; //* OpenVZ $conf['openvz']['installed'] = false; diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 933c30fe38..6b3a7cd623 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -227,6 +227,13 @@ function get_distname() { $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 9.0 (Stretch) or compatible\n"); + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '10') { + $distname = 'Debian'; + $distver = 'Buster'; + $distconfid = 'debian100'; + $distid = 'debian60'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian 10.0 (Buster) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; @@ -238,7 +245,7 @@ function get_distname() { $distname = 'Debian'; $distver = 'Unknown'; $distid = 'debian60'; - $distconfid = 'debian90'; + $distconfid = 'debian100'; $distbaseid = 'debian'; swriteln("Operating System: Debian or compatible, unknown version.\n"); } diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index c4a60702b2..a15514fd72 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -211,17 +211,27 @@ class monitor_tools { $distconfid = 'debian90'; $distid = 'debian60'; $distbaseid = 'debian'; + } elseif(substr(trim(file_get_contents('/etc/debian_version')),0,2) == '10') { + $distname = 'Debian'; + $distver = 'Buster'; + $distconfid = 'debian100'; + $distid = 'debian60'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian 10.0 (Buster) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; $distid = 'debian60'; $distconfid = 'debiantesting'; $distbaseid = 'debian'; + swriteln("Operating System: Debian Testing\n"); } else { $distname = 'Debian'; $distver = 'Unknown'; - $distid = 'debian40'; + $distid = 'debian60'; + $distconfid = 'debian100'; $distbaseid = 'debian'; + swriteln("Operating System: Debian or compatible, unknown version.\n"); } } -- GitLab From 70c53657aa5ccf1eac53164a1ca941e2151382d4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 12:01:43 +0200 Subject: [PATCH 025/571] Fixed #5313 Extend custom php.ini check regex --- interface/web/sites/web_vhost_domain_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 8d43e21fad..3d6ecc6fb8 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1301,7 +1301,7 @@ class page_action extends tform_actions { // value inside '' if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue; // everything else - if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; $custom_php_ini_settings_are_valid = false; break; } -- GitLab From c6bf185c613df0f998c2858d0f0985feb1236edd Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 12:02:29 +0200 Subject: [PATCH 026/571] Added SSL SMTP port 465 to default ports in ISPConfig Firewall. --- interface/web/admin/form/firewall.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php index ce7d2dbd09..75f190b3f0 100644 --- a/interface/web/admin/form/firewall.tform.php +++ b/interface/web/admin/form/firewall.tform.php @@ -79,7 +79,7 @@ $form["tabs"]['firewall'] = array ( 'regex' => '/^[\s0-9\,\:]{0,255}$/', 'errmsg'=> 'tcp_ports_error_regex'), ), - 'default' => '20,21,22,25,53,80,110,143,443,587,993,995,3306,8080,8081,10000', + 'default' => '20,21,22,25,53,80,110,143,443,465,587,993,995,3306,8080,8081,10000', 'value' => '', 'width' => '30', 'maxlength' => '255' -- GitLab From b772b1b26c7fa3490997e67c271fba2c83bb1b38 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 12:26:58 +0200 Subject: [PATCH 027/571] Implemented #5303 database Backup including routines --- server/lib/classes/cron.d/500-backup.inc.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index fa57431116..77b355fe6e 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -225,6 +225,11 @@ class cronjob_backup extends cronjob { if(is_array($records)) { include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf'; + + //* Check mysqldump capabilities + exec('mysqldump --help',$tmp); + $mysqldump_routines = (strpos(implode($tmp),'--routines') !== false)?'--routines':''; + unset($tmp); foreach($records as $rec) { @@ -252,7 +257,7 @@ class cronjob_backup extends cronjob { $db_name = $rec['database_name']; $db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql'; //$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --max_allowed_packet=512M --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; + $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 ".$mysqldump_routines." --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; exec($command, $tmp_output, $retval); //* Compress the backup with gzip / pigz -- GitLab From 8c08db9bf18f7fb2e126a06de63cda3bdc1e5ef7 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 12:31:09 +0200 Subject: [PATCH 028/571] Fixed #5293 If an email is submitted via SMTPUTF8 it will bounce --- install/tpl/amavisd_user_config.master | 1 - 1 file changed, 1 deletion(-) diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master index 8663f07498..2738eac3a9 100644 --- a/install/tpl/amavisd_user_config.master +++ b/install/tpl/amavisd_user_config.master @@ -83,7 +83,6 @@ $notify_method = 'smtp:127.0.0.1:*'; $interface_policy{'10026'} = 'ORIGINATING'; $policy_bank{'ORIGINATING'} = { originating => 1, - smtpd_discard_ehlo_keywords => ['8BITMIME'], }; # IP-Addresses for internal networks => load policy MYNETS -- GitLab From 7a62b126634da6b1375ecff57d1ea34ef4590317 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 12:58:05 +0200 Subject: [PATCH 029/571] Fixed #5070 Firewall > Character not allowed in tcp port definition --- install/sql/incremental/upd_dev_collection.sql | 4 +++- install/sql/ispconfig3.sql | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 279d3ce211..55e3b846d7 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -80,4 +80,6 @@ INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; -ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; \ No newline at end of file +ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `firewall` CHANGE `tcp_port` `tcp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `firewall` CHANGE `udp_port` `udp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 4cfaebb396..b547a93dfc 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -682,8 +682,8 @@ CREATE TABLE `firewall` ( `sys_perm_group` varchar(5) default NULL, `sys_perm_other` varchar(5) default NULL, `server_id` int(11) unsigned NOT NULL default '0', - `tcp_port` varchar(255) default NULL, - `udp_port` varchar(255) default NULL, + `tcp_port` text, + `udp_port` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`firewall_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- GitLab From f6150fe64813bd442bb09c69987ca38fcdaf9489 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 13:11:53 +0200 Subject: [PATCH 030/571] Fixed #4353 Layout Issues --- interface/lib/classes/listform_actions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index a13c3fdb73..1b8426b894 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -264,7 +264,7 @@ class listform_actions { foreach($limits as $key => $val){ $options .= '<option value="'.$key.'" '.(isset($_SESSION['search']['limit']) && $_SESSION['search']['limit'] == $key ? 'selected="selected"':'' ).(!isset($_SESSION['search']['limit']) && $key == '15' ? 'selected="selected"':'').'>'.$val.'</option>'; } - $app->tpl->setVar('search_limit', '<select name="search_limit" class="search_limit">'.$options.'</select>'); + $app->tpl->setVar('search_limit', '<select name="search_limit" class="search_limit" style="width: 60px;">'.$options.'</select>'); $app->tpl->setVar('toolsarea_head_txt', $app->lng('toolsarea_head_txt')); $app->tpl->setVar($app->listform->wordbook); -- GitLab From b019e483854d7d634fafac06353659b6ba673b2b Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 14:01:57 +0200 Subject: [PATCH 031/571] Fixed #4946 Problems with email starst not being written into the database. --- server/lib/classes/cron.d/100-mailbox_stats.inc.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/lib/classes/cron.d/100-mailbox_stats.inc.php b/server/lib/classes/cron.d/100-mailbox_stats.inc.php index e5a0065a5b..51c3a45489 100644 --- a/server/lib/classes/cron.d/100-mailbox_stats.inc.php +++ b/server/lib/classes/cron.d/100-mailbox_stats.inc.php @@ -173,6 +173,10 @@ class cronjob_mailbox_stats extends cronjob { continue; } } + + $this->mail_boxes = $mail_boxes; + $this->mail_rewrites = $mail_rewrites; + $this->add_mailbox_traffic($cur_line['from'], $cur_line['size'],$mail_boxes, $mail_rewrites); //echo "1\n"; //print_r($this->mailbox_traffic); @@ -221,6 +225,7 @@ class cronjob_mailbox_stats extends cronjob { $tstamp = date('Y-m'); $sql = "SELECT mailuser_id,email FROM mail_user WHERE server_id = ?"; $records = $app->db->queryAllRecords($sql, $conf['server_id']); + $mailbox_traffic = $this->mailbox_traffic; foreach($records as $rec) { if(array_key_exists($rec['email'], $mailbox_traffic)) { $sql = "SELECT * FROM mail_traffic WHERE month = ? AND mailuser_id = ?"; -- GitLab From 373a9f2b9fd5b011ebfc4bf5b70f6af3f15e1eb3 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 14:50:37 +0200 Subject: [PATCH 032/571] implemented #5116 Cronjob on Jailkit Environment is not executed --- server/scripts/create_jailkit_user.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/scripts/create_jailkit_user.sh b/server/scripts/create_jailkit_user.sh index 5e1060be25..efefafe3ea 100755 --- a/server/scripts/create_jailkit_user.sh +++ b/server/scripts/create_jailkit_user.sh @@ -21,6 +21,12 @@ CHROOT_SHELL=$4 CHROOT_P_USER=$5 CHROOT_P_USER_HOMEDIR=$6 +### Check if USERHOMEDIR already exists ### +if [ ! -d $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR ]; then + mkdir -p $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR + chown -R $CHROOT_USERNAME $CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR +fi + ### Reconfigure the chroot home directory for the user ### usermod --home=$CHROOT_HOMEDIR/.$CHROOT_USERHOMEDIR $CHROOT_USERNAME 2>/dev/null -- GitLab From f1374f877a27ed182b072009260b1d5b40f9da29 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 15:50:34 +0200 Subject: [PATCH 033/571] Fixed #5225 ISPConfig fails to create ispconfig user during initial installation with MySQL 8.0 --- install/lib/installer_base.lib.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 2c99f1bd0b..1c32c64984 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -288,11 +288,15 @@ class installer_base { $this->db->query("DROP USER ?@?", $conf['mysql']['ispconfig_user'], $from_host); $this->db->query("DROP DATABASE IF EXISTS ?", $conf['mysql']['database']); - //* Create the ISPConfig database user in the local database - $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@? IDENTIFIED BY ?'; - if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { + //* Create the ISPConfig database user and grant permissions in the local database + $query = 'CREATE USER ?@? IDENTIFIED BY ?'; + if(!$this->db->query($query, $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); } + $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@?'; + if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host)) { + $this->error('Unable to grant databse permissions to user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); + } //* Set the database name in the DB library $this->db->setDBName($conf['mysql']['database']); -- GitLab From de0ecf8f0a55e090ce0b5a66817437959b7c5848 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 3 Jul 2019 16:48:36 +0200 Subject: [PATCH 034/571] Fixed #5248 ISPConfig user login database record not created on percona DB --- interface/web/client/client_edit.php | 2 +- interface/web/client/reseller_edit.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index 8577a1b32d..bbc7849f1f 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -266,7 +266,7 @@ class page_action extends tform_actions { $app->functions->generate_ssh_key($this->id, $username); // Create the controlpaneluser for the client - $sql = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id) + $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`,`active`,`language`,`groups`,`default_group`,`client_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $app->db->query($sql, $username, $password, $modules, $startmodule, $usertheme, $type, $active, $language, $groups, $groupid, $this->id); diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 7a84be5253..a089558cab 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -222,7 +222,7 @@ class page_action extends tform_actions { $password = crypt(stripslashes($password), $salt); // Create the controlpaneluser for the reseller - $sql = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id) + $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ,active`,`language`,`groups`,`default_group`,`client_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $app->db->query($sql, $username, $password, $modules, $startmodule, $usertheme, $type, $active, $language, $groups, $groupid, $this->id); -- GitLab From cc87da34d2434a0e5d167d07034f19fcabe7c78f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 3 Jul 2019 17:01:12 +0200 Subject: [PATCH 035/571] Add a space after ***SPAM*** The spamassassin default also has a space, like in install/tpl/amavisd_user_config.master --- install/sql/ispconfig3.sql | 2 +- interface/web/mail/form/mail_spamfilter.tform.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index b547a93dfc..2417ef0d21 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2521,7 +2521,7 @@ INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM*** ', NULL, NULL); INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php index fb9a3c311b..d726a3eb74 100644 --- a/interface/web/mail/form/mail_spamfilter.tform.php +++ b/interface/web/mail/form/mail_spamfilter.tform.php @@ -114,7 +114,7 @@ $form["tabs"]['spamfilter'] = array ( 1 => array( 'event' => 'SAVE', 'type' => 'STRIPNL') ), - 'default' => '***SPAM***', + 'default' => '***SPAM*** ', 'value' => '', 'width' => '30', 'maxlength' => '255' -- GitLab From 1a5608d1320160e55e665146cfba6d8119199e59 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 4 Jul 2019 18:07:18 +0200 Subject: [PATCH 036/571] Implemented #5330 Limit available PHP Handlers globally in ISPConfig UI --- install/tpl/system.ini.master | 1 + interface/lib/classes/tform_base.inc.php | 123 ++++++++++-------- .../web/admin/form/system_config.tform.php | 10 ++ .../web/admin/lib/lang/de_system_config.lng | 1 + .../web/admin/lib/lang/en_system_config.lng | 1 + .../web/admin/lib/lang/es_system_config.lng | 1 + .../templates/server_config_web_edit.htm | 2 +- .../templates/system_config_sites_edit.htm | 6 + interface/web/client/form/client.tform.php | 2 +- .../web/client/form/client_template.tform.php | 2 +- interface/web/client/form/reseller.tform.php | 1 + .../web/sites/form/web_vhost_domain.tform.php | 2 +- 12 files changed, 94 insertions(+), 58 deletions(-) diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 42a003b9c1..c916a62547 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -33,6 +33,7 @@ vhost_aliasdomains=n client_username_web_check_disabled=n backups_include_into_web_quota=n reseller_can_use_options=n +web_php_options=no,fast-cgi,mod,php-fpm [tools] diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 36de1371ab..e6174d2da7 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -336,69 +336,84 @@ class tform_base { } //* If the parameter 'valuelimit' is set - function applyValueLimit($limit, $values) { + function applyValueLimit($limit, $values, $current_value = '') { global $app; + + // we mas have multiple limits, therefore we explode by ; first + // Example: "system:sites:web_php_options;client:web_php_options" + $limits = explode(';',$limit); + + + foreach($limits as $limit) { - $limit_parts = explode(':', $limit); + $limit_parts = explode(':', $limit); - //* values are limited to a comma separated list - if($limit_parts[0] == 'list') { - $allowed = explode(',', $limit_parts[1]); - } - - //* values are limited to a field in the client settings - if($limit_parts[0] == 'client') { - if($_SESSION["s"]["user"]["typ"] == 'admin') { - return $values; - } else { - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - $allowed = explode(',', $client['lm']); + //* values are limited to a comma separated list + if($limit_parts[0] == 'list') { + $allowed = explode(',', $limit_parts[1]); } - } - //* values are limited to a field in the reseller settings - if($limit_parts[0] == 'reseller') { - if($_SESSION["s"]["user"]["typ"] == 'admin') { - return $values; - } else { - //* Get the limits of the client that is currently logged in - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); - //echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"; - //* If the client belongs to a reseller, we will check against the reseller Limit too - if($client['parent_client_id'] != 0) { - - //* first we need to know the groups of this reseller - $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ?", $client['parent_client_id']); - $reseller_groups = $tmp["groups"]; - $reseller_userid = $tmp["userid"]; - - // Get the limits of the reseller of the logged in client - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ?", $client['parent_client_id']); - $allowed = explode(',', $reseller['lm']); - } else { + //* values are limited to a field in the client settings + if($limit_parts[0] == 'client') { + if($_SESSION["s"]["user"]["typ"] == 'admin') { return $values; + } else { + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $client = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + $allowed = explode(',', $client['lm']); } - } // end if admin - } // end if reseller - - //* values are limited to a field in the system settings - if($limit_parts[0] == 'system') { - $app->uses('getconf'); - $tmp_conf = $app->getconf->get_global_config($limit_parts[1]); - $tmp_key = $limit_parts[2]; - $allowed = $tmp_conf[$tmp_key]; - } + } + + //* values are limited to a field in the reseller settings + if($limit_parts[0] == 'reseller') { + if($_SESSION["s"]["user"]["typ"] == 'admin') { + return $values; + } else { + //* Get the limits of the client that is currently logged in + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + //echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"; + //* If the client belongs to a reseller, we will check against the reseller Limit too + if($client['parent_client_id'] != 0) { + + //* first we need to know the groups of this reseller + $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ?", $client['parent_client_id']); + $reseller_groups = $tmp["groups"]; + $reseller_userid = $tmp["userid"]; + + // Get the limits of the reseller of the logged in client + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ?", $client['parent_client_id']); + $allowed = explode(',', $reseller['lm']); + } else { + return $values; + } + } // end if admin + } // end if reseller + + //* values are limited to a field in the system settings + if($limit_parts[0] == 'system') { + $app->uses('getconf'); + $tmp_conf = $app->getconf->get_global_config($limit_parts[1]); + $tmp_key = $limit_parts[2]; + $allowed = $allowed = explode(',',$tmp_conf[$tmp_key]); + } + + // add the current value to the allowed array + $allowed[] = $current_value; + + // remove all values that are not allowed + $values_new = array(); + foreach($values as $key => $val) { + if(in_array($key, $allowed)) $values_new[$key] = $val; + } + + $values = $values_new; - $values_new = array(); - foreach($values as $key => $val) { - if(in_array($key, $allowed)) $values_new[$key] = $val; } - return $values_new; + return $values; } @@ -464,7 +479,7 @@ class tform_base { // If a limitation for the values is set if(isset($field['valuelimit']) && is_array($field["value"])) { - $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"]); + $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"], $val); } switch ($field['formtype']) { @@ -599,7 +614,7 @@ class tform_base { // If a limitation for the values is set if(isset($field['valuelimit']) && is_array($field["value"])) { - $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"]); + $field["value"] = $this->applyValueLimit($field['valuelimit'], $field["value"], $field['default']); } switch ($field['formtype']) { diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index d718e4ef82..3fe7f0c7e3 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -200,6 +200,16 @@ $form["tabs"]['sites'] = array ( 'value' => '', 'name' => 'default_dbserver' ), + 'web_php_options' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOXARRAY', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'web_php_options_notempty'), + ), + 'default' => '', + 'separator' => ',', + 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') + ), //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 0771322ef9..59a3e8d111 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -89,4 +89,5 @@ $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktiv'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; +$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)'; ?> diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 29732e4169..ef34493c9d 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -92,4 +92,5 @@ $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Active'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 21575571f0..6dc07dfd5b 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -89,4 +89,5 @@ $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 8cc8dc4340..8231e45cb7 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -256,7 +256,7 @@ <div id="collapsePHP" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPHP"> <div class="panel-body"> <!-- Begin content --> - <div class="form-group"> + <div class="form-group"> <label for="php_default_name" class="col-sm-3 control-label">{tmpl_var name='php_default_name_txt'}</label> <div class="col-sm-9"><input type="text" name="php_default_name" id="php_default_name" value="{tmpl_var name='php_default_name'}" class="form-control" /></div></div> <div class="form-group apache"> diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm index 1c4c5c6f9a..a0f95e479a 100644 --- a/interface/web/admin/templates/system_config_sites_edit.htm +++ b/interface/web/admin/templates/system_config_sites_edit.htm @@ -63,6 +63,12 @@ {tmpl_var name='reseller_can_use_options'} </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='web_php_options_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='web_php_options'} + </div> + </div> <div class="form-group"> <label for="default_webserver" class="col-sm-3 control-label">{tmpl_var name='default_webserver_txt'}</label> <div class="col-sm-9"><select name="default_webserver" id="default_webserver" class="form-control"> diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 151c5dc959..07ca813bf5 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -1087,7 +1087,7 @@ $form["tabs"]['limits'] = array ( ), 'default' => '', 'separator' => ',', - 'valuelimit' => 'client:web_php_options', + 'valuelimit' => 'system:sites:web_php_options', 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') ), 'limit_cgi' => array ( diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php index 5d9f81de0b..1da5cdafcd 100644 --- a/interface/web/client/form/client_template.tform.php +++ b/interface/web/client/form/client_template.tform.php @@ -495,7 +495,7 @@ $form["tabs"]['limits'] = array ( 'formtype' => 'CHECKBOXARRAY', 'default' => '', 'separator' => ',', - 'valuelimit' => 'client:web_php_options', + 'valuelimit' => 'system:sites:web_php_options', 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') ), 'limit_cgi' => array ( diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index 706219f76a..6231895f28 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -1080,6 +1080,7 @@ $form["tabs"]['limits'] = array ( 'web_php_options' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOXARRAY', + 'valuelimit' => 'system:sites:web_php_options', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'web_php_options_notempty'), ), diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index e7698cbe87..e131a7cbaf 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -250,7 +250,7 @@ $form["tabs"]['domain'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'fast-cgi', - 'valuelimit' => 'client:web_php_options', + 'valuelimit' => 'system:sites:web_php_options;client:web_php_options', 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), 'searchable' => 2 ), -- GitLab From 20bc613204d4973ab887010fb5202a599ae5b145 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 4 Jul 2019 18:55:04 +0200 Subject: [PATCH 037/571] Fixed #5163 Databases still exists on reseller delete --- interface/web/client/reseller_del.php | 43 ++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/interface/web/client/reseller_del.php b/interface/web/client/reseller_del.php index 55872beabd..a77dc5659c 100644 --- a/interface/web/client/reseller_del.php +++ b/interface/web/client/reseller_del.php @@ -60,7 +60,48 @@ class page_action extends tform_actions { $client_id = $app->functions->intval($this->dataRecord['client_id']); $tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE parent_client_id = ?", $client_id); - if($tmp["number"] > 0) $app->error($app->lng('error_has_clients')); + if($tmp["number"] > 0) { + $app->error($app->lng('error_has_clients')); + } else { + $parent_client_id = $app->functions->intval($this->dataRecord['parent_client_id']); + $parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = ?", $parent_client_id); + $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client_id); + + // Delete all records (mail, web, etc....) of this reseller. + $tables = 'cron,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 != '') { + //* find the primary ID of the table + $table_info = $app->db->tableInfo($table); + $index_field = ''; + foreach($table_info as $tmp) { + if($tmp['option'] == 'primary') $index_field = $tmp['name']; + } + //* 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]); + //* Delete traffic records that dont have a sys_groupid column + if($table == 'web_domain') { + $app->db->query("DELETE FROM web_traffic WHERE hostname = ?", $rec['domain']); + } + //* Delete mail_traffic records that dont have a sys_groupid + if($table == 'mail_user') { + $app->db->query("DELETE FROM mail_traffic WHERE mailuser_id = ?", $rec['mailuser_id']); + } + } + } + } + + } + } + } + } } -- GitLab From 568b977eadca233cd8d77aa7c17dc5a7af634b4e Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 5 Jul 2019 07:22:17 +0200 Subject: [PATCH 038/571] nginx server listen ipv6 and ipv4 and SSL (Fixes #5190) --- server/conf/nginx_vhost.conf.master | 7 ++++++- server/plugins-available/nginx_plugin.inc.php | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 63c9260354..c45ce0a98b 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -3,7 +3,9 @@ server { <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='http_port'>; </tmpl_if> - +<tmpl_if name='ipv6_wildcard'> + listen [::]:<tmpl_var name='http_port'>; +</tmpl_if> <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; @@ -11,6 +13,9 @@ server { # ssl_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; +</tmpl_if> +<tmpl_if name='ipv6_wildcard'> + listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 189a6f88ea..30f9501505 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -991,6 +991,7 @@ class nginx_plugin { } } } + if($data['new']['ip_address'] == '*' && $data['new']['ipv6_address'] == '') $tpl->setVar('ipv6_wildcard', 1); // PHP-FPM // Support for multiple PHP versions -- GitLab From d712ea46794aaf32f2c99fb97ac24a269ae042d6 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 10:56:27 +0200 Subject: [PATCH 039/571] Fixed #5146 disabled reseller still may login Fixed typo in SQL query. --- interface/web/client/reseller_edit.php | 120 ++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-) diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index a089558cab..59699ec163 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -222,7 +222,7 @@ class page_action extends tform_actions { $password = crypt(stripslashes($password), $salt); // Create the controlpaneluser for the reseller - $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ,active`,`language`,`groups`,`default_group`,`client_id`) + $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`, `active`,`language`,`groups`,`default_group`,`client_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $app->db->query($sql, $username, $password, $modules, $startmodule, $usertheme, $type, $active, $language, $groups, $groupid, $this->id); @@ -368,6 +368,124 @@ class page_action extends tform_actions { $app->uses('client_templates'); $app->client_templates->update_client_templates($this->id, $this->_template_additional); } + + if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n'; + if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) { + /** lock all the things like web, mail etc. - easy to extend */ + + + // get tmp_data of client + $client_data = $app->db->queryOneRecord('SELECT `tmp_data` FROM `client` WHERE `client_id` = ?', $this->id); + + if($client_data['tmp_data'] == '') $tmp_data = array(); + else $tmp_data = unserialize($client_data['tmp_data']); + + if(!is_array($tmp_data)) $tmp_data = array(); + + // database tables with their primary key columns + $to_disable = array('cron' => 'id', + 'ftp_user' => 'ftp_user_id', + 'mail_domain' => 'domain_id', + 'mail_user' => 'mailuser_id', + 'mail_user_smtp' => 'mailuser_id', + 'mail_forwarding' => 'forwarding_id', + 'mail_get' => 'mailget_id', + 'openvz_vm' => 'vm_id', + 'shell_user' => 'shell_user_id', + 'webdav_user' => 'webdav_user_id', + 'web_database' => 'database_id', + 'web_domain' => 'domain_id', + 'web_folder' => 'web_folder_id', + 'web_folder_user' => 'web_folder_user_id' + ); + + $udata = $app->db->queryOneRecord('SELECT `userid` FROM `sys_user` WHERE `client_id` = ?', $this->id); + $gdata = $app->db->queryOneRecord('SELECT `groupid` FROM `sys_group` WHERE `client_id` = ?', $this->id); + $sys_groupid = $gdata['groupid']; + $sys_userid = $udata['userid']; + + $entries = array(); + if($this->dataRecord['locked'] == 'y') { + $prev_active = array(); + $prev_sysuser = array(); + foreach($to_disable as $current => $keycolumn) { + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + + if(!isset($prev_active[$current])) $prev_active[$current] = array(); + if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array(); + + $entries = $app->db->queryAllRecords('SELECT ?? as `id`, `sys_userid`, ?? FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $active_col, $current, $sys_groupid); + foreach($entries as $item) { + + if($item[$active_col] != 'y' && $reverse == false) $prev_active[$current][$item['id']][$active_col] = 'n'; + elseif($item[$active_col] == 'y' && $reverse == true) $prev_active[$current][$item['id']][$active_col] = 'y'; + if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']] = $item['sys_userid']; + // we don't have to store these if y, as everything without previous state gets enabled later + + $app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); + } + } + + $tmp_data['prev_active'] = $prev_active; + $tmp_data['prev_sys_userid'] = $prev_sysuser; + $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id); + unset($prev_active); + unset($prev_sysuser); + } elseif($this->dataRecord['locked'] == 'n') { + foreach($to_disable as $current => $keycolumn) { + $active_col = 'active'; + $reverse = false; + if($current == 'mail_user') { + $active_col = 'postfix'; + } elseif($current == 'mail_user_smtp') { + $current = 'mail_user'; + $active_col = 'disablesmtp'; + $reverse = true; + } + + $entries = $app->db->queryAllRecords('SELECT ?? as `id` FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $current, $sys_groupid); + foreach($entries as $item) { + $set_active = ($reverse == true ? 'n' : 'y'); + $set_inactive = ($reverse == true ? 'y' : 'n'); + $set_sysuser = $sys_userid; + if(array_key_exists('prev_active', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_active']) == true + && array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true + && $tmp_data['prev_active'][$current][$item['id']][$active_col] == $set_inactive) $set_active = $set_inactive; + if(array_key_exists('prev_sysuser', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_sysuser']) == true + && array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true + && $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']]; + + $app->db->datalogUpdate($current, array($active_col => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); + } + } + if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']); + $app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id); + } + unset($tmp_data); + unset($entries); + unset($to_disable); + } + + if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n'; + if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) { + if($this->dataRecord['canceled'] == 'y') { + $sql = "UPDATE sys_user SET active = '0' WHERE client_id = ?"; + $app->db->query($sql, $this->id); + } elseif($this->dataRecord['canceled'] == 'n') { + $sql = "UPDATE sys_user SET active = '1' WHERE client_id = ?"; + $app->db->query($sql, $this->id); + } + } parent::onAfterUpdate(); } -- GitLab From b7ee5f0edfeb64382cd7580edffe9e760b58e27f Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 12:15:57 +0200 Subject: [PATCH 040/571] Fixed #5331 Disallow 0 as website harddisk quota value --- interface/web/sites/lib/lang/de_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/en_web_vhost_domain.lng | 1 + interface/web/sites/web_vhost_domain_edit.php | 5 +++++ 3 files changed, 7 insertions(+) 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 1b334bb298..d95b6d47e4 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit'; $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.'; ?> diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index 97d1c932ca..ae546e1c4d 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -157,4 +157,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 3d6ecc6fb8..86deb5b2a5 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1065,6 +1065,11 @@ class page_action extends tform_actions { } if($this->_vhostdomain_type == 'domain') { + //* ensure that quota value is not 0 when vhost type = domain + if(isset($_POST["hd_quota"]) && $_POST["hd_quota"] == 0) { + $app->tform->errorMessage .= $app->tform->lng("limit_web_quota_not_0_txt")."<br>"; + } + //* Check the website quota of the client if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) { $tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ? AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'), $this->id); -- GitLab From 3d4127ad47daf52cc1a8e914638e75f36341fd59 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 5 Jul 2019 14:41:55 +0200 Subject: [PATCH 041/571] - fix problem with tls version on STARTTLS in mail class --- interface/lib/classes/ispcmail.inc.php | 8 +++++++- server/lib/classes/ispcmail.inc.php | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php index b818e1e44a..522fd1a71b 100644 --- a/interface/lib/classes/ispcmail.inc.php +++ b/interface/lib/classes/ispcmail.inc.php @@ -599,10 +599,16 @@ class ispcmail { fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); fgets($this->_smtp_conn, 515); + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true); - stream_socket_enable_crypto($this->_smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); } //AUTH LOGIN diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php index 305b39f35b..cc83c74137 100644 --- a/server/lib/classes/ispcmail.inc.php +++ b/server/lib/classes/ispcmail.inc.php @@ -598,7 +598,13 @@ class ispcmail { if($this->smtp_crypt == 'tls') { fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); fgets($this->_smtp_conn, 515); - stream_socket_enable_crypto($this->_smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } + stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); } //AUTH LOGIN -- GitLab From c31703b89585c255153631cacbab4a935009fdfd Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 16:23:29 +0200 Subject: [PATCH 042/571] Implements #5007 Remove SSL bundle files if present on an apache 2.4 server --- server/conf/vhost.conf.master | 8 ++++---- server/plugins-available/apache2_plugin.inc.php | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index a259c29906..ee7dcac076 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -75,15 +75,15 @@ # </IfModule> SSLCertificateFile <tmpl_var name='ssl_crt_file'> SSLCertificateKeyFile <tmpl_var name='ssl_key_file'> -<tmpl_if name='has_bundle_cert'> - <tmpl_if name='apache_version' op='<' value='2.4.8' format='version'> - SSLCertificateChainFile <tmpl_var name='ssl_bundle_file'> - </tmpl_if> <tmpl_if name='apache_version' op='>=' value='2.4' format='version'> SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off </tmpl_if> +<tmpl_if name='has_bundle_cert'> + <tmpl_if name='apache_version' op='<' value='2.4.8' format='version'> + SSLCertificateChainFile <tmpl_var name='ssl_bundle_file'> + </tmpl_if> </tmpl_if> </tmpl_if> </IfModule> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 3aa851f649..6fa3101ed7 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1223,8 +1223,9 @@ class apache2_plugin { $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ? AND `server_id` = ?", $data['new']['ssl'], 'n', $data['new']['domain'], $conf['server_id']); } } - - if(@is_file($bundle_file)) $vhost_data['has_bundle_cert'] = 1; + + // Use separate bundle file only for apache versions < 2.4.8 + if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; // HTTP/2.0 ? $vhost_data['enable_http2'] = 'n'; -- GitLab From 3b0f4a4d8c30bc5c558b60147fbed0179d836ecf Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 18:28:08 +0200 Subject: [PATCH 043/571] Added PHP-FPM Restart mode. See System > Interface config > Web > PHP-FPM reload mode. Fixes #4816 --- install/tpl/server.ini.master | 1 + .../web/admin/form/server_config.tform.php | 8 ++++++ .../web/admin/lib/lang/de_server_config.lng | 1 + .../web/admin/lib/lang/en_server_config.lng | 1 + .../templates/server_config_web_edit.htm | 6 +++++ .../plugins-available/apache2_plugin.inc.php | 27 ++++++++++++------- 6 files changed, 34 insertions(+), 10 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 406881010e..6441609cab 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -116,6 +116,7 @@ overquota_db_notify_admin=y overquota_db_notify_client=y overquota_notify_onok=n logging=yes +php_fpm_reload_mode=reload [dns] bind_user=root diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index e0cf897abd..1a6c8070cb 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1376,6 +1376,14 @@ $form["tabs"]['web'] = array( 1 => 'y' ) ), + 'php_fpm_reload_mode' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'reload', + 'value' => array('reload' => 'Reload', 'restart' => 'Restart'), + 'width' => '40', + 'maxlength' => '255' + ), //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 73c6609a1a..108bf96de8 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; ?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 7ca9967922..ac0ee42b90 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -296,4 +296,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 8231e45cb7..eb285bbc07 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -299,6 +299,12 @@ {tmpl_var name='php_fpm_incron_reload'} </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_reload_mode_txt'}</label> + <div class="col-sm-9"><select name="php_fpm_reload_mode" id="php_fpm_reload_mode" class="form-control"> + {tmpl_var name='php_fpm_reload_mode'} + </select></div> + </div> <!-- End content --> </div> </div> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 6fa3101ed7..7ecbb76109 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -3058,6 +3058,8 @@ class apache2_plugin { $app->uses("getconf"); $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); + + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if($data['new']['php'] != 'php-fpm'){ if(@is_file($pool_dir.$pool_name.'.conf')){ @@ -3066,9 +3068,9 @@ class apache2_plugin { } if($data['old']['php'] == 'php-fpm'){ if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } //if($reload == true) $app->services->restartService('php-fpm','reload'); @@ -3205,7 +3207,7 @@ class apache2_plugin { if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { $app->system->unlink($default_pool_dir.$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$default_pool_dir.$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } $php_versions = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?", $conf["server_id"]); @@ -3217,7 +3219,7 @@ class apache2_plugin { if ( @is_file($php_version['php_fpm_pool_dir'].$pool_name.'.conf') ) { $app->system->unlink($php_version['php_fpm_pool_dir'].$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$php_version['php_fpm_pool_dir'].$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$php_version['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$php_version['php_fpm_init_script']); } } } @@ -3225,9 +3227,9 @@ class apache2_plugin { // Reload current PHP-FPM after all others sleep(1); if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } //$reload = true; @@ -3238,6 +3240,11 @@ class apache2_plugin { //* Delete the PHP-FPM pool configuration file private function php_fpm_pool_delete ($data, $web_config) { global $app, $conf; + + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); + + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){ $default_php_fpm = false; @@ -3271,7 +3278,7 @@ class apache2_plugin { if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { $app->system->unlink($default_pool_dir.$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$default_pool_dir.$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } $php_versions = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?", $data['old']['server_id']); @@ -3283,7 +3290,7 @@ class apache2_plugin { if ( @is_file($php_version['php_fpm_pool_dir'].$pool_name.'.conf') ) { $app->system->unlink($php_version['php_fpm_pool_dir'].$pool_name.'.conf'); $app->log('Removed PHP-FPM config file: '.$php_version['php_fpm_pool_dir'].$pool_name.'.conf', LOGLEVEL_DEBUG); - $app->services->restartService('php-fpm', 'reload:'.$php_version['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$php_version['php_fpm_init_script']); } } } @@ -3292,9 +3299,9 @@ class apache2_plugin { // Reload current PHP-FPM after all others sleep(1); if(!$default_php_fpm){ - $app->services->restartService('php-fpm', 'reload:'.$custom_php_fpm_init_script); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$custom_php_fpm_init_script); } else { - $app->services->restartService('php-fpm', 'reload:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); + $app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } -- GitLab From 9545334c5a54215d0c8c1aba8cee776a9a090d30 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 18:35:55 +0200 Subject: [PATCH 044/571] Merged language files --- .../web/admin/lib/lang/ar_server_config.lng | 1 + .../web/admin/lib/lang/ar_server_php_list.lng | 1 + .../web/admin/lib/lang/ar_system_config.lng | 3 ++- .../web/admin/lib/lang/bg_server_config.lng | 1 + .../web/admin/lib/lang/bg_server_php_list.lng | 1 + .../web/admin/lib/lang/bg_system_config.lng | 3 ++- .../web/admin/lib/lang/br_server_config.lng | 2 ++ .../web/admin/lib/lang/br_server_php_list.lng | 1 + .../web/admin/lib/lang/br_system_config.lng | 13 +++------- .../web/admin/lib/lang/ca_server_config.lng | 1 + .../web/admin/lib/lang/ca_server_php_list.lng | 1 + .../web/admin/lib/lang/ca_system_config.lng | 3 ++- .../web/admin/lib/lang/cz_server_config.lng | 3 ++- .../web/admin/lib/lang/cz_server_php_list.lng | 1 + .../web/admin/lib/lang/cz_system_config.lng | 3 ++- .../web/admin/lib/lang/de_system_config.lng | 2 +- .../web/admin/lib/lang/dk_server_config.lng | 1 + .../web/admin/lib/lang/dk_server_php_list.lng | 1 + .../web/admin/lib/lang/dk_system_config.lng | 3 ++- .../web/admin/lib/lang/el_server_config.lng | 1 + .../web/admin/lib/lang/el_server_php_list.lng | 1 + .../web/admin/lib/lang/el_system_config.lng | 3 ++- .../web/admin/lib/lang/es_server_config.lng | 1 + .../web/admin/lib/lang/es_server_php_list.lng | 1 + .../web/admin/lib/lang/es_system_config.lng | 2 +- .../web/admin/lib/lang/fi_server_config.lng | 1 + .../web/admin/lib/lang/fi_server_php_list.lng | 1 + .../web/admin/lib/lang/fi_system_config.lng | 3 ++- .../web/admin/lib/lang/fr_server_config.lng | 1 + .../web/admin/lib/lang/fr_server_php_list.lng | 1 + .../web/admin/lib/lang/fr_system_config.lng | 3 ++- .../web/admin/lib/lang/hr_server_config.lng | 1 + .../web/admin/lib/lang/hr_server_php_list.lng | 1 + .../web/admin/lib/lang/hr_system_config.lng | 3 ++- .../web/admin/lib/lang/hu_server_config.lng | 1 + .../web/admin/lib/lang/hu_server_php_list.lng | 1 + .../web/admin/lib/lang/hu_system_config.lng | 3 ++- .../web/admin/lib/lang/id_server_config.lng | 1 + .../web/admin/lib/lang/id_server_php_list.lng | 1 + .../web/admin/lib/lang/id_system_config.lng | 3 ++- .../web/admin/lib/lang/it_server_config.lng | 1 + .../web/admin/lib/lang/it_server_php_list.lng | 1 + .../web/admin/lib/lang/it_system_config.lng | 3 ++- .../web/admin/lib/lang/ja_server_config.lng | 1 + .../web/admin/lib/lang/ja_server_php_list.lng | 1 + .../web/admin/lib/lang/ja_system_config.lng | 3 ++- .../web/admin/lib/lang/nl_server_config.lng | 1 + .../web/admin/lib/lang/nl_server_php_list.lng | 1 + .../web/admin/lib/lang/nl_system_config.lng | 3 ++- .../web/admin/lib/lang/pl_server_config.lng | 1 + .../web/admin/lib/lang/pl_server_php_list.lng | 1 + .../web/admin/lib/lang/pl_system_config.lng | 3 ++- .../web/admin/lib/lang/pt_server_config.lng | 1 + .../web/admin/lib/lang/pt_server_php_list.lng | 1 + .../web/admin/lib/lang/pt_system_config.lng | 3 ++- .../web/admin/lib/lang/ro_server_config.lng | 1 + .../web/admin/lib/lang/ro_server_php_list.lng | 1 + .../web/admin/lib/lang/ro_system_config.lng | 3 ++- interface/web/admin/lib/lang/ru_firewall.lng | 4 +-- .../web/admin/lib/lang/ru_server_config.lng | 3 ++- .../web/admin/lib/lang/ru_server_php_list.lng | 1 + .../web/admin/lib/lang/ru_system_config.lng | 15 +++-------- interface/web/admin/lib/lang/ru_users.lng | 2 +- .../web/admin/lib/lang/se_server_config.lng | 1 + .../web/admin/lib/lang/se_server_php_list.lng | 1 + .../web/admin/lib/lang/se_system_config.lng | 3 ++- .../web/admin/lib/lang/sk_server_config.lng | 1 + .../web/admin/lib/lang/sk_server_php_list.lng | 1 + .../web/admin/lib/lang/sk_system_config.lng | 3 ++- .../web/admin/lib/lang/tr_server_config.lng | 1 + .../web/admin/lib/lang/tr_server_php_list.lng | 1 + .../web/admin/lib/lang/tr_system_config.lng | 3 ++- .../lib/lang/ar_client_template_list.lng | 1 + .../lib/lang/bg_client_template_list.lng | 1 + interface/web/client/lib/lang/br_client.lng | 2 +- .../client/lib/lang/br_client_template.lng | 2 +- .../lib/lang/br_client_template_list.lng | 1 + .../lib/lang/ca_client_template_list.lng | 1 + .../lib/lang/cz_client_template_list.lng | 1 + .../lib/lang/de_client_template_list.lng | 2 +- .../lib/lang/dk_client_template_list.lng | 1 + .../lib/lang/el_client_template_list.lng | 1 + .../lib/lang/es_client_template_list.lng | 1 + .../lib/lang/fi_client_template_list.lng | 1 + .../lib/lang/fr_client_template_list.lng | 1 + .../lib/lang/hr_client_template_list.lng | 1 + .../lib/lang/hu_client_template_list.lng | 1 + .../lib/lang/id_client_template_list.lng | 1 + .../lib/lang/it_client_template_list.lng | 1 + .../lib/lang/ja_client_template_list.lng | 1 + .../lib/lang/nl_client_template_list.lng | 1 + .../lib/lang/pl_client_template_list.lng | 1 + .../lib/lang/pt_client_template_list.lng | 1 + .../lib/lang/ro_client_template_list.lng | 1 + interface/web/client/lib/lang/ru_client.lng | 4 +-- .../lib/lang/ru_client_template_list.lng | 1 + interface/web/client/lib/lang/ru_reseller.lng | 4 +-- .../lib/lang/se_client_template_list.lng | 1 + .../lib/lang/sk_client_template_list.lng | 1 + .../lib/lang/tr_client_template_list.lng | 1 + interface/web/dns/lib/lang/ar_dns_caa.lng | 2 +- interface/web/dns/lib/lang/bg_dns_caa.lng | 2 +- interface/web/dns/lib/lang/br_dns_caa.lng | 2 +- interface/web/dns/lib/lang/br_dns_dmarc.lng | 10 +++---- interface/web/dns/lib/lang/br_dns_tlsa.lng | 4 +-- interface/web/dns/lib/lang/ca_dns_caa.lng | 2 +- interface/web/dns/lib/lang/cz_dns_caa.lng | 2 +- interface/web/dns/lib/lang/de_dns_caa.lng | 2 +- interface/web/dns/lib/lang/dk_dns_caa.lng | 2 +- interface/web/dns/lib/lang/el_dns_caa.lng | 2 +- interface/web/dns/lib/lang/es_dns_caa.lng | 2 +- interface/web/dns/lib/lang/fi_dns_caa.lng | 2 +- interface/web/dns/lib/lang/fr_dns_caa.lng | 2 +- interface/web/dns/lib/lang/hr_dns_caa.lng | 2 +- interface/web/dns/lib/lang/hu_dns_caa.lng | 2 +- interface/web/dns/lib/lang/id_dns_caa.lng | 2 +- interface/web/dns/lib/lang/it_dns_caa.lng | 2 +- interface/web/dns/lib/lang/ja_dns_caa.lng | 2 +- interface/web/dns/lib/lang/nl_dns_caa.lng | 2 +- interface/web/dns/lib/lang/pl_dns_caa.lng | 2 +- interface/web/dns/lib/lang/pt_dns_caa.lng | 2 +- interface/web/dns/lib/lang/ro_dns_caa.lng | 2 +- interface/web/dns/lib/lang/ru_dns_caa.lng | 2 +- interface/web/dns/lib/lang/ru_dns_hinfo.lng | 2 +- interface/web/dns/lib/lang/se_dns_caa.lng | 2 +- interface/web/dns/lib/lang/sk_dns_caa.lng | 2 +- interface/web/dns/lib/lang/tr_dns_caa.lng | 2 +- .../web/help/lib/lang/br_support_message.lng | 2 +- interface/web/login/lib/lang/br_login_as.lng | 2 +- interface/web/login/lib/lang/ru_login_as.lng | 6 ++--- interface/web/mail/lib/lang/br_mail_user.lng | 4 +-- interface/web/mail/lib/lang/ru_mail_get.lng | 2 +- .../web/mail/lib/lang/ru_mail_user_filter.lng | 2 +- .../mailuser/lib/lang/ru_mail_user_filter.lng | 2 +- interface/web/monitor/lib/lang/ar.lng | 1 + .../lib/lang/ar_dataloghistory_list.lng | 8 ++++++ .../lib/lang/ar_dataloghistory_undo.lng | 7 +++++ .../lib/lang/ar_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/bg.lng | 1 + .../lib/lang/bg_dataloghistory_list.lng | 8 ++++++ .../lib/lang/bg_dataloghistory_undo.lng | 7 +++++ .../lib/lang/bg_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/br.lng | 1 + .../lib/lang/br_dataloghistory_list.lng | 8 ++++++ .../lib/lang/br_dataloghistory_undo.lng | 7 +++++ .../lib/lang/br_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/ca.lng | 1 + .../lib/lang/ca_dataloghistory_list.lng | 8 ++++++ .../lib/lang/ca_dataloghistory_undo.lng | 7 +++++ .../lib/lang/ca_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/cz.lng | 1 + .../lib/lang/cz_dataloghistory_list.lng | 8 ++++++ .../lib/lang/cz_dataloghistory_undo.lng | 7 +++++ .../lib/lang/cz_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/dk.lng | 1 + .../lib/lang/dk_dataloghistory_list.lng | 8 ++++++ .../lib/lang/dk_dataloghistory_undo.lng | 7 +++++ .../lib/lang/dk_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/el.lng | 1 + .../lib/lang/el_dataloghistory_list.lng | 8 ++++++ .../lib/lang/el_dataloghistory_undo.lng | 7 +++++ .../lib/lang/el_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/es.lng | 1 + .../lib/lang/es_dataloghistory_list.lng | 8 ++++++ .../lib/lang/es_dataloghistory_undo.lng | 7 +++++ .../lib/lang/es_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/fi.lng | 1 + .../lib/lang/fi_dataloghistory_list.lng | 8 ++++++ .../lib/lang/fi_dataloghistory_undo.lng | 7 +++++ .../lib/lang/fi_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/fr.lng | 1 + .../lib/lang/fr_dataloghistory_list.lng | 8 ++++++ .../lib/lang/fr_dataloghistory_undo.lng | 7 +++++ .../lib/lang/fr_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/hr.lng | 1 + .../lib/lang/hr_dataloghistory_list.lng | 8 ++++++ .../lib/lang/hr_dataloghistory_undo.lng | 7 +++++ .../lib/lang/hr_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/hu.lng | 1 + .../lib/lang/hu_dataloghistory_list.lng | 8 ++++++ .../lib/lang/hu_dataloghistory_undo.lng | 7 +++++ .../lib/lang/hu_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/id.lng | 1 + .../lib/lang/id_dataloghistory_list.lng | 8 ++++++ .../lib/lang/id_dataloghistory_undo.lng | 7 +++++ .../lib/lang/id_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/it.lng | 1 + .../lib/lang/it_dataloghistory_list.lng | 8 ++++++ .../lib/lang/it_dataloghistory_undo.lng | 7 +++++ .../lib/lang/it_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/ja.lng | 1 + .../lib/lang/ja_dataloghistory_list.lng | 8 ++++++ .../lib/lang/ja_dataloghistory_undo.lng | 7 +++++ .../lib/lang/ja_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/nl.lng | 1 + .../lib/lang/nl_dataloghistory_list.lng | 8 ++++++ .../lib/lang/nl_dataloghistory_undo.lng | 7 +++++ .../lib/lang/nl_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/pl.lng | 1 + .../lib/lang/pl_dataloghistory_list.lng | 8 ++++++ .../lib/lang/pl_dataloghistory_undo.lng | 7 +++++ .../lib/lang/pl_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/pt.lng | 1 + .../lib/lang/pt_dataloghistory_list.lng | 8 ++++++ .../lib/lang/pt_dataloghistory_undo.lng | 7 +++++ .../lib/lang/pt_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/ro.lng | 1 + .../lib/lang/ro_dataloghistory_list.lng | 8 ++++++ .../lib/lang/ro_dataloghistory_undo.lng | 7 +++++ .../lib/lang/ro_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/ru.lng | 1 + .../lib/lang/ru_dataloghistory_list.lng | 8 ++++++ .../lib/lang/ru_dataloghistory_undo.lng | 7 +++++ .../lib/lang/ru_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/se.lng | 1 + .../lib/lang/se_dataloghistory_list.lng | 8 ++++++ .../lib/lang/se_dataloghistory_undo.lng | 7 +++++ .../lib/lang/se_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/sk.lng | 1 + .../lib/lang/sk_dataloghistory_list.lng | 8 ++++++ .../lib/lang/sk_dataloghistory_undo.lng | 7 +++++ .../lib/lang/sk_dataloghistory_view.lng | 26 +++++++++++++++++++ interface/web/monitor/lib/lang/tr.lng | 1 + .../lib/lang/tr_dataloghistory_list.lng | 8 ++++++ .../lib/lang/tr_dataloghistory_undo.lng | 7 +++++ .../lib/lang/tr_dataloghistory_view.lng | 26 +++++++++++++++++++ .../sites/lib/lang/ar_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/bg_aps.lng | 2 +- .../sites/lib/lang/bg_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/br.lng | 2 +- interface/web/sites/lib/lang/br_aps.lng | 2 +- interface/web/sites/lib/lang/br_cron.lng | 4 +-- interface/web/sites/lib/lang/br_database.lng | 2 +- .../web/sites/lib/lang/br_database_user.lng | 2 +- interface/web/sites/lib/lang/br_ftp_user.lng | 4 +-- .../web/sites/lib/lang/br_shell_user.lng | 4 +-- .../web/sites/lib/lang/br_web_aliasdomain.lng | 4 +-- .../web/sites/lib/lang/br_web_childdomain.lng | 6 ++--- .../web/sites/lib/lang/br_web_domain.lng | 2 +- .../web/sites/lib/lang/br_web_subdomain.lng | 2 +- .../sites/lib/lang/br_web_vhost_domain.lng | 5 ++-- .../sites/lib/lang/br_web_vhost_subdomain.lng | 10 +++---- .../web/sites/lib/lang/br_webdav_user.lng | 4 +-- interface/web/sites/lib/lang/ca_aps.lng | 2 +- .../sites/lib/lang/ca_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/cz_aps.lng | 2 +- .../sites/lib/lang/cz_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/de_aps.lng | 2 +- .../sites/lib/lang/dk_web_vhost_domain.lng | 1 + .../sites/lib/lang/el_web_vhost_domain.lng | 1 + .../sites/lib/lang/es_web_vhost_domain.lng | 1 + .../sites/lib/lang/fi_web_vhost_domain.lng | 1 + .../sites/lib/lang/fr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hu_web_vhost_domain.lng | 1 + .../sites/lib/lang/id_web_vhost_domain.lng | 1 + .../sites/lib/lang/it_web_vhost_domain.lng | 1 + .../sites/lib/lang/ja_web_vhost_domain.lng | 1 + .../sites/lib/lang/nl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pt_web_vhost_domain.lng | 1 + .../sites/lib/lang/ro_web_vhost_domain.lng | 1 + interface/web/sites/lib/lang/ru.lng | 2 +- interface/web/sites/lib/lang/ru_aps.lng | 16 ++++++------ interface/web/sites/lib/lang/ru_database.lng | 2 +- .../web/sites/lib/lang/ru_database_user.lng | 2 +- .../web/sites/lib/lang/ru_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_subdomain.lng | 2 +- .../sites/lib/lang/ru_web_vhost_domain.lng | 1 + .../sites/lib/lang/se_web_vhost_domain.lng | 1 + .../sites/lib/lang/sk_web_vhost_domain.lng | 1 + .../sites/lib/lang/tr_web_vhost_domain.lng | 1 + 272 files changed, 1205 insertions(+), 140 deletions(-) create mode 100644 interface/web/monitor/lib/lang/ar_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/ar_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/bg_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/bg_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/br_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/br_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/br_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/ca_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/ca_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/cz_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/cz_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/dk_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/dk_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/el_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/el_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/el_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/es_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/es_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/es_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/fi_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/fi_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/fr_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/fr_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/hr_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/hr_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/hu_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/hu_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/id_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/id_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/id_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/it_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/it_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/it_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/ja_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/ja_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/nl_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/nl_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/pl_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/pl_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/pt_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/pt_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/ro_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/ro_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/ru_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/ru_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/se_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/se_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/se_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/sk_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/sk_dataloghistory_view.lng create mode 100644 interface/web/monitor/lib/lang/tr_dataloghistory_list.lng create mode 100644 interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng create mode 100644 interface/web/monitor/lib/lang/tr_dataloghistory_view.lng diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 00e94f766b..55d3f8949c 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/ar_server_php_list.lng b/interface/web/admin/lib/lang/ar_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/ar_server_php_list.lng +++ b/interface/web/admin/lib/lang/ar_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 6bebcf39ad..0a830014d8 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 7c6ae9f2dc..6b63770459 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_php_list.lng b/interface/web/admin/lib/lang/bg_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/bg_server_php_list.lng +++ b/interface/web/admin/lib/lang/bg_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 8c3444e9cb..130cb596aa 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 9175790eb3..088dac70be 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -294,4 +294,6 @@ $wb['log_retention_txt'] = 'Log retention (days)'; $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng index 31a2b13eb8..88f1e38d21 100644 --- a/interface/web/admin/lib/lang/br_server_php_list.lng +++ b/interface/web/admin/lib/lang/br_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Servidor'; $wb['add_new_record_txt'] = 'Adicionar nova versão do php'; $wb['client_id_txt'] = 'Cliente'; $wb['name_txt'] = 'Nome da versão do php'; +$wb['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 8b5b6d0164..8688ca53aa 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'; @@ -82,19 +82,12 @@ $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; $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<E2><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['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; $wb['No'] = 'Não'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index dc44dd340c..815dbd30b5 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_php_list.lng b/interface/web/admin/lib/lang/ca_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/ca_server_php_list.lng +++ b/interface/web/admin/lib/lang/ca_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index ff46470f59..cc3c11c6c5 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index e219a7b3e4..ebccd8fce0 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'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \"Zakázat MySQL monitorovánÃ\" zmÄ›na se provede do 2-3 minut.<br>Pokud nepoÄkáte 2-3 minuty, monitorovánà nastartuje službu MySQL automaticky znovu !'; +$wb['rescue_description_txt'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \\"Zakázat MySQL monitorovánÃ\\" zmÄ›na se provede do 2-3 minut.<br>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'; @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng index 655f9a92b2..f79d482190 100644 --- a/interface/web/admin/lib/lang/cz_server_php_list.lng +++ b/interface/web/admin/lib/lang/cz_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'PÅ™idat verzi PHP'; $wb['client_id_txt'] = 'Klient'; $wb['name_txt'] = 'Verze PHP'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 4f0468833f..a0abf26410 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastnà odkaz na pÅ™ $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_critical_txt'] = 'Strict Check'; $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 59a3e8d111..76910e1db3 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -84,7 +84,7 @@ $wb['default_dbserver_txt'] = 'Default Database Server'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Wildcard verwenden'; -$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung'; $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktiv'; $wb['btn_save_txt'] = 'Speichern'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 47daacd86a..5bf2be008a 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_php_list.lng b/interface/web/admin/lib/lang/dk_server_php_list.lng index 8dbcdd211f..43fb5fe211 100644 --- a/interface/web/admin/lib/lang/dk_server_php_list.lng +++ b/interface/web/admin/lib/lang/dk_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Tilføj ny PHP version'; $wb['client_id_txt'] = 'Kunde'; $wb['name_txt'] = 'PHP Navn'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 5e96639d2c..26b0fe7e78 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 2755ade7c2..ae0efc9e31 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/el_server_php_list.lng b/interface/web/admin/lib/lang/el_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/el_server_php_list.lng +++ b/interface/web/admin/lib/lang/el_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 0191eb85e7..640d6f00a9 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 042671e594..95eaf9e8a0 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng index 2e6257cfac..111628b720 100755 --- a/interface/web/admin/lib/lang/es_server_php_list.lng +++ b/interface/web/admin/lib/lang/es_server_php_list.lng @@ -4,4 +4,5 @@ $wb['client_id_txt'] = 'Cliente'; $wb['list_head_txt'] = 'Versiones adicionales de PHP'; $wb['name_txt'] = 'Versión de PHP'; $wb['server_id_txt'] = 'Servidor'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 6dc07dfd5b..043c52cfdd 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -84,7 +84,7 @@ $wb['webmail_url_txt'] = 'URL de correo web'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 4d76c3f5eb..c1e43b276b 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_php_list.lng b/interface/web/admin/lib/lang/fi_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/fi_server_php_list.lng +++ b/interface/web/admin/lib/lang/fi_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index 7fe364c972..c0972c49d8 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index d1e229e7ce..418f633670 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_php_list.lng b/interface/web/admin/lib/lang/fr_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/fr_server_php_list.lng +++ b/interface/web/admin/lib/lang/fr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 0d9d27d14f..18f0dbbed4 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index ebfe30a16d..78d9a57a5b 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_php_list.lng b/interface/web/admin/lib/lang/hr_server_php_list.lng index 8fd3db7a05..9e9c0de986 100644 --- a/interface/web/admin/lib/lang/hr_server_php_list.lng +++ b/interface/web/admin/lib/lang/hr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Klijent'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index ba926e3a71..a7735647b1 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index f491b4b2da..c2adb3efb2 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_php_list.lng b/interface/web/admin/lib/lang/hu_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/hu_server_php_list.lng +++ b/interface/web/admin/lib/lang/hu_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index 9944f68b78..cee497fe19 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index f56204188a..36f3cd8535 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/id_server_php_list.lng b/interface/web/admin/lib/lang/id_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/id_server_php_list.lng +++ b/interface/web/admin/lib/lang/id_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 65c1768354..344185b84d 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 24b89ee8bd..766b7fb1ae 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/it_server_php_list.lng b/interface/web/admin/lib/lang/it_server_php_list.lng index 36bfcbc40e..296de9d0a5 100644 --- a/interface/web/admin/lib/lang/it_server_php_list.lng +++ b/interface/web/admin/lib/lang/it_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Aggiungi una nuova versione PHP'; $wb['client_id_txt'] = 'Cliente'; $wb['name_txt'] = 'Nome PHP'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index e3c4fcaae7..311b7c957c 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 72cecbcccd..ccabb127e6 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_php_list.lng b/interface/web/admin/lib/lang/ja_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/ja_server_php_list.lng +++ b/interface/web/admin/lib/lang/ja_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index ce16ad15bb..aa5cc6a7a3 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 389a0ea877..187ea86ec1 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_php_list.lng b/interface/web/admin/lib/lang/nl_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/nl_server_php_list.lng +++ b/interface/web/admin/lib/lang/nl_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 20df45f2bc..44a58b7646 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index a05df05752..a50e27b33e 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_php_list.lng b/interface/web/admin/lib/lang/pl_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/pl_server_php_list.lng +++ b/interface/web/admin/lib/lang/pl_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index 1c51b949a7..a809251ec1 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index ba5bd38248..96c16d3a2c 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_php_list.lng b/interface/web/admin/lib/lang/pt_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/pt_server_php_list.lng +++ b/interface/web/admin/lib/lang/pt_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 4a28e49a75..6fc26344c0 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 5a29d0eff0..239a87dc74 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_php_list.lng b/interface/web/admin/lib/lang/ro_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/ro_server_php_list.lng +++ b/interface/web/admin/lib/lang/ro_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index efbc6bf263..2a39a454e8 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ru_firewall.lng b/interface/web/admin/lib/lang/ru_firewall.lng index c30f26f2e8..70beb30437 100644 --- a/interface/web/admin/lib/lang/ru_firewall.lng +++ b/interface/web/admin/lib/lang/ru_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'ПеречиÑлить порты TCP через з $wb['udp_port_help_txt'] = 'ПеречиÑлить порты UDP через запÑтую'; $wb['active_txt'] = 'Ðктивно'; $wb['firewall_error_unique'] = 'Уже еÑÑ‚ÑŒ Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ брандмауÑра Ð´Ð»Ñ Ñтого Ñервера.'; -$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \":\" и \",\"'; -$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \":\" и \",\"'; +$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \\":\\" и \\",\\"'; +$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 7ed1fb88ab..02edb659de 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'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \"Отключить мониторинг MySQL\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; +$wb['rescue_description_txt'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \\"Отключить мониторинг MySQL\\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; $wb['enable_sni_txt'] = 'Включить SNI'; $wb['do_not_try_rescue_httpd_txt'] = 'Отключить мониторинг HTTPD'; $wb['set_folder_permissions_on_update_txt'] = 'УÑтановить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°Ð¿ÐºÐ¸ на обновлениÑ'; @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_php_list.lng b/interface/web/admin/lib/lang/ru_server_php_list.lng index bb4cc308e4..5c84917f15 100644 --- a/interface/web/admin/lib/lang/ru_server_php_list.lng +++ b/interface/web/admin/lib/lang/ru_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Сервер'; $wb['add_new_record_txt'] = 'Добавить новую верÑию PHP'; $wb['client_id_txt'] = 'ID Клиента'; $wb['name_txt'] = 'Ð˜Ð¼Ñ PHP'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index 301827893e..baed497b0e 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -14,7 +14,7 @@ $wb['mailboxlist_webmail_link_txt'] = 'СÑылка на веб-почту в Ñ $wb['webmail_url_txt'] = 'URL веб-почты'; $wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; $wb['use_domain_module_txt'] = 'ИÑпользовать модуль домена, чтобы добавить новые домены'; -$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \"домен\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; +$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \\"домен\\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; $wb['new_domain_txt'] = 'HTML текÑÑ‚, чтобы Ñоздать новый домен'; $wb['webdavuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV'; $wb['webdavuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV.'; @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Кли $wb['customer_no_start_txt'] = 'Ðачальное значение номера Клиента'; $wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; $wb['session_timeout_txt'] = 'Тайм-аут ÑеÑÑии (в минутах)'; -$wb['session_allow_endless_txt'] = 'Включить \"оÑтаватьÑÑ Ð² ÑиÑтеме\"'; +$wb['session_allow_endless_txt'] = 'Включить \\"оÑтаватьÑÑ Ð² ÑиÑтеме\\"'; $wb['No'] = 'Ðет'; $wb['min_password_length_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° паролÑ'; $wb['min_password_strength_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑтойкоÑÑ‚ÑŒ паролÑ'; @@ -84,17 +84,10 @@ $wb['default_dbserver_txt'] = 'Сервер базы данных по умол $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA<E2><80><99>s do not recognize any other flag values as described in RFC 6844 -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_critical_txt'] = 'Strict Check'; $wb['ca_iodef_txt'] = 'iodef'; $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng index bd1b8034ff..63f081f917 100644 --- a/interface/web/admin/lib/lang/ru_users.lng +++ b/interface/web/admin/lib/lang/ru_users.lng @@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не Ñовпадают.'; $wb['password_match_txt'] = 'Ðти пароли Ñовпадают.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['client_not_admin_err'] = 'Пользователь, который принадлежит к клиенту не может быть уÑтановлен тип: admin'; $wb['lost_password_function_txt'] = 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð¾Ñтупна'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 196fe3ffd0..c949c052ba 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/se_server_php_list.lng b/interface/web/admin/lib/lang/se_server_php_list.lng index f5762ad3a6..451236d1ca 100644 --- a/interface/web/admin/lib/lang/se_server_php_list.lng +++ b/interface/web/admin/lib/lang/se_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Lägg till ny PHP-version'; $wb['client_id_txt'] = 'Kund'; $wb['name_txt'] = 'PHP-namn'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index c9ccca89e9..74ae16734f 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 9d4703c4b3..709f7b928a 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_php_list.lng b/interface/web/admin/lib/lang/sk_server_php_list.lng index b402fd1ed1..62cbe61687 100644 --- a/interface/web/admin/lib/lang/sk_server_php_list.lng +++ b/interface/web/admin/lib/lang/sk_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index fdeb1648c4..90418e87d5 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -84,9 +84,10 @@ $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’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index b6a742781d..7d16f21454 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -295,4 +295,5 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng index 3b1d39bdd2..dd3d6b730c 100644 --- a/interface/web/admin/lib/lang/tr_server_php_list.lng +++ b/interface/web/admin/lib/lang/tr_server_php_list.lng @@ -4,4 +4,5 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['add_new_record_txt'] = 'PHP Sürümü Ekle'; $wb['client_id_txt'] = 'Müşteri'; $wb['name_txt'] = 'PHP Adı'; +$wb['active_txt'] = 'Active'; ?> diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 18657743ec..c52893f6b4 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -84,9 +84,10 @@ $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’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['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/client/lib/lang/ar_client_template_list.lng b/interface/web/client/lib/lang/ar_client_template_list.lng index 0840184a9b..9112afc626 100644 --- a/interface/web/client/lib/lang/ar_client_template_list.lng +++ b/interface/web/client/lib/lang/ar_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Client-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/bg_client_template_list.lng b/interface/web/client/lib/lang/bg_client_template_list.lng index 0840184a9b..9112afc626 100644 --- a/interface/web/client/lib/lang/bg_client_template_list.lng +++ b/interface/web/client/lib/lang/bg_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Client-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/br_client.lng b/interface/web/client/lib/lang/br_client.lng index ad9282aa4c..992c1ea2ca 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_template.lng b/interface/web/client/lib/lang/br_client_template.lng index bc7124b16c..4b2ce6555b 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_client_template_list.lng b/interface/web/client/lib/lang/br_client_template_list.lng index 4621788016..db73df8efd 100644 --- a/interface/web/client/lib/lang/br_client_template_list.lng +++ b/interface/web/client/lib/lang/br_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Gabarito de limites para clientes'; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome do Gabarito'; $wb['template_id_txt'] = 'ID do Gabarito'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/ca_client_template_list.lng b/interface/web/client/lib/lang/ca_client_template_list.lng index b5315018d2..b22a375f44 100644 --- a/interface/web/client/lib/lang/ca_client_template_list.lng +++ b/interface/web/client/lib/lang/ca_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Modèles de clients'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Nom du modèle'; $wb['template_id_txt'] = 'ID du modèle'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/cz_client_template_list.lng b/interface/web/client/lib/lang/cz_client_template_list.lng index 3abbd09adc..28a5d3bf63 100644 --- a/interface/web/client/lib/lang/cz_client_template_list.lng +++ b/interface/web/client/lib/lang/cz_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Klientské Å¡ablony'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Název Å¡ablony'; $wb['template_id_txt'] = 'ID Å¡ablony'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> 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 cd5f339eea..adb3fecdcb 100644 --- a/interface/web/client/lib/lang/de_client_template_list.lng +++ b/interface/web/client/lib/lang/de_client_template_list.lng @@ -3,5 +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'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/dk_client_template_list.lng b/interface/web/client/lib/lang/dk_client_template_list.lng index ca83656182..6be08eade8 100644 --- a/interface/web/client/lib/lang/dk_client_template_list.lng +++ b/interface/web/client/lib/lang/dk_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Kunde og Forhandler Skabeloner'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Skabelon navn'; $wb['template_id_txt'] = 'Skabelon ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/el_client_template_list.lng b/interface/web/client/lib/lang/el_client_template_list.lng index 175c2bfb8f..8bb3412df9 100644 --- a/interface/web/client/lib/lang/el_client_template_list.lng +++ b/interface/web/client/lib/lang/el_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Î Ïότυπα Πελάτη'; $wb['template_type_txt'] = 'ΤÏπος'; $wb['template_name_txt'] = 'Όνομα Î ÏοτÏπου'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/es_client_template_list.lng b/interface/web/client/lib/lang/es_client_template_list.lng index 4a8032c6fb..283a4ff17a 100755 --- a/interface/web/client/lib/lang/es_client_template_list.lng +++ b/interface/web/client/lib/lang/es_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Plantillas de clientes'; $wb['template_id_txt'] = 'ID de la plantilla'; $wb['template_name_txt'] = 'Nombre de la plantilla'; $wb['template_type_txt'] = 'Tipo'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/fi_client_template_list.lng b/interface/web/client/lib/lang/fi_client_template_list.lng index b3f310f131..586f93e01c 100755 --- a/interface/web/client/lib/lang/fi_client_template_list.lng +++ b/interface/web/client/lib/lang/fi_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Asiakasmallit'; $wb['template_type_txt'] = 'Tyyppi'; $wb['template_name_txt'] = 'Asiakasmallin nimi'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/fr_client_template_list.lng b/interface/web/client/lib/lang/fr_client_template_list.lng index b5315018d2..b22a375f44 100644 --- a/interface/web/client/lib/lang/fr_client_template_list.lng +++ b/interface/web/client/lib/lang/fr_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Modèles de clients'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Nom du modèle'; $wb['template_id_txt'] = 'ID du modèle'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/hr_client_template_list.lng b/interface/web/client/lib/lang/hr_client_template_list.lng index cdc2f0006a..fc817c9c25 100644 --- a/interface/web/client/lib/lang/hr_client_template_list.lng +++ b/interface/web/client/lib/lang/hr_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'PredloÅ¡ci za klijente'; $wb['template_type_txt'] = 'Vrsta'; $wb['template_name_txt'] = 'Naziv predloÅ¡ka'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/hu_client_template_list.lng b/interface/web/client/lib/lang/hu_client_template_list.lng index 316de63143..b04b3405ee 100644 --- a/interface/web/client/lib/lang/hu_client_template_list.lng +++ b/interface/web/client/lib/lang/hu_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Ãœgyfél-Sablonok'; $wb['template_type_txt'] = 'tÃpus'; $wb['template_name_txt'] = 'Sablon neve'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/id_client_template_list.lng b/interface/web/client/lib/lang/id_client_template_list.lng index e0da97101a..dd0259544b 100644 --- a/interface/web/client/lib/lang/id_client_template_list.lng +++ b/interface/web/client/lib/lang/id_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Template Klien'; $wb['template_type_txt'] = 'Tipe'; $wb['template_name_txt'] = 'Nama Template'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/it_client_template_list.lng b/interface/web/client/lib/lang/it_client_template_list.lng index d78faf8778..43b1a5ca49 100644 --- a/interface/web/client/lib/lang/it_client_template_list.lng +++ b/interface/web/client/lib/lang/it_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Modelli cliente'; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome modello'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/ja_client_template_list.lng b/interface/web/client/lib/lang/ja_client_template_list.lng index 8adca01b14..3e67a0e009 100644 --- a/interface/web/client/lib/lang/ja_client_template_list.lng +++ b/interface/web/client/lib/lang/ja_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'クライアントテンプレート'; $wb['template_type_txt'] = '種別'; $wb['template_name_txt'] = 'テンプレートå'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/nl_client_template_list.lng b/interface/web/client/lib/lang/nl_client_template_list.lng index 8bbe7a5a0f..fa62e4b79f 100644 --- a/interface/web/client/lib/lang/nl_client_template_list.lng +++ b/interface/web/client/lib/lang/nl_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Client-Templates'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Template naam'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/pl_client_template_list.lng b/interface/web/client/lib/lang/pl_client_template_list.lng index d6bd952d0b..a7f7cf1638 100644 --- a/interface/web/client/lib/lang/pl_client_template_list.lng +++ b/interface/web/client/lib/lang/pl_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Szablon klienta'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Nazwa szablonu'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/pt_client_template_list.lng b/interface/web/client/lib/lang/pt_client_template_list.lng index d5f451111a..54b88241da 100644 --- a/interface/web/client/lib/lang/pt_client_template_list.lng +++ b/interface/web/client/lib/lang/pt_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Templates de Cliente '; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome da template'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/ro_client_template_list.lng b/interface/web/client/lib/lang/ro_client_template_list.lng index 17fbf995b9..3f5764c50c 100644 --- a/interface/web/client/lib/lang/ro_client_template_list.lng +++ b/interface/web/client/lib/lang/ro_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Template client'; $wb['template_type_txt'] = 'Tp'; $wb['template_name_txt'] = 'Nume Template'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index a37d4673a1..befd6b15bf 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Ðекорректный почтовый адре $wb['customer_no_error_unique'] = 'Счётчик номера Клиента должен быть уникален (или отÑутÑтвует).'; $wb['paypal_email_error_isemail'] = 'ПожалуйÑта, введите дейÑтвующий Ð°Ð´Ñ€ÐµÑ Ñлектронной почты PayPal.'; $wb['paypal_email_txt'] = 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты PayPal'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; $wb['aps_limits_txt'] = 'Лимиты УÑтановщика APS'; $wb['limit_aps_txt'] = 'МакÑ. количеÑтво ÑкземплÑров APS'; $wb['limit_aps_error_notint'] = 'Лимит ÑкземплÑров APS должен быть чиÑлом.'; diff --git a/interface/web/client/lib/lang/ru_client_template_list.lng b/interface/web/client/lib/lang/ru_client_template_list.lng index 30d0dfed45..2981e21671 100644 --- a/interface/web/client/lib/lang/ru_client_template_list.lng +++ b/interface/web/client/lib/lang/ru_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Шаблоны клиентов'; $wb['template_type_txt'] = 'Тип'; $wb['template_name_txt'] = 'Ð˜Ð¼Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°'; $wb['template_id_txt'] = 'ID шаблона'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 4a177cccc8..998a886990 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Дата добавлениÑ'; $wb['limit_domainmodule_error_notint'] = 'Лимит модулей домена должен быть чиÑлом.'; $wb['limit_domainmodule_txt'] = 'Лимит модулей домена'; $wb['client_limits_txt'] = 'Лимиты Клиента'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; $wb['email_error_empty'] = 'ÐÐ´Ñ€ÐµÑ Ñл. почты пуÑтой'; diff --git a/interface/web/client/lib/lang/se_client_template_list.lng b/interface/web/client/lib/lang/se_client_template_list.lng index b594337e7c..37ce6de45d 100644 --- a/interface/web/client/lib/lang/se_client_template_list.lng +++ b/interface/web/client/lib/lang/se_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Kundmallar'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Mallnamn'; $wb['template_id_txt'] = 'Mall-ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/sk_client_template_list.lng b/interface/web/client/lib/lang/sk_client_template_list.lng index ac25b8f3a9..94637b1750 100644 --- a/interface/web/client/lib/lang/sk_client_template_list.lng +++ b/interface/web/client/lib/lang/sk_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Klient-Å ablóny'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Meno Å¡ablóny'; $wb['template_id_txt'] = 'Template ID'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/client/lib/lang/tr_client_template_list.lng b/interface/web/client/lib/lang/tr_client_template_list.lng index 1663e6e2da..fbe35efc9e 100644 --- a/interface/web/client/lib/lang/tr_client_template_list.lng +++ b/interface/web/client/lib/lang/tr_client_template_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Müşteri ve Bayi Kalıpları'; $wb['template_type_txt'] = 'Tip'; $wb['template_name_txt'] = 'Kalıp adı'; $wb['template_id_txt'] = 'Kalıp kodu'; +$wb['sys_groupid_txt'] = 'Reseller'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_caa.lng b/interface/web/dns/lib/lang/ar_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/ar_dns_caa.lng +++ b/interface/web/dns/lib/lang/ar_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/bg_dns_caa.lng b/interface/web/dns/lib/lang/bg_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/bg_dns_caa.lng +++ b/interface/web/dns/lib/lang/bg_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/br_dns_caa.lng b/interface/web/dns/lib/lang/br_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/br_dns_caa.lng +++ b/interface/web/dns/lib/lang/br_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/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng index 5b7201075f..8bb35318f8 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_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng index c78c6fd190..5e1bf2256e 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_caa.lng b/interface/web/dns/lib/lang/ca_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/ca_dns_caa.lng +++ b/interface/web/dns/lib/lang/ca_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/cz_dns_caa.lng b/interface/web/dns/lib/lang/cz_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/cz_dns_caa.lng +++ b/interface/web/dns/lib/lang/cz_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/de_dns_caa.lng b/interface/web/dns/lib/lang/de_dns_caa.lng index 88dbf6e47a..a711023684 100644 --- a/interface/web/dns/lib/lang/de_dns_caa.lng +++ b/interface/web/dns/lib/lang/de_dns_caa.lng @@ -6,7 +6,7 @@ $wb['ca_hostname_note_txt'] = '(mit Komma getrennte Liste - leer für alle Namen $wb['ca_options_txt'] = 'zusätzliche Angaben'; $wb['ca_options_note_txt'] = 'von der Zertifizierungsstelle vorgegeben (mit Komma getrennte Liste)'; $wb['ca_wildcard_txt'] = 'Wildcard verwenden'; -$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung durch die Zertifizierungsstelle'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung durch die Zertifizierungsstelle'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Aktiv'; $wb['select_txt'] = 'Zertifizierungstelle auswählen'; diff --git a/interface/web/dns/lib/lang/dk_dns_caa.lng b/interface/web/dns/lib/lang/dk_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/dk_dns_caa.lng +++ b/interface/web/dns/lib/lang/dk_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/el_dns_caa.lng b/interface/web/dns/lib/lang/el_dns_caa.lng index 1fa7dcb7d5..973a97ceb6 100644 --- a/interface/web/dns/lib/lang/el_dns_caa.lng +++ b/interface/web/dns/lib/lang/el_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/es_dns_caa.lng b/interface/web/dns/lib/lang/es_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/es_dns_caa.lng +++ b/interface/web/dns/lib/lang/es_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/fi_dns_caa.lng b/interface/web/dns/lib/lang/fi_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/fi_dns_caa.lng +++ b/interface/web/dns/lib/lang/fi_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/fr_dns_caa.lng b/interface/web/dns/lib/lang/fr_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/fr_dns_caa.lng +++ b/interface/web/dns/lib/lang/fr_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/hr_dns_caa.lng b/interface/web/dns/lib/lang/hr_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/hr_dns_caa.lng +++ b/interface/web/dns/lib/lang/hr_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/hu_dns_caa.lng b/interface/web/dns/lib/lang/hu_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/hu_dns_caa.lng +++ b/interface/web/dns/lib/lang/hu_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/id_dns_caa.lng b/interface/web/dns/lib/lang/id_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/id_dns_caa.lng +++ b/interface/web/dns/lib/lang/id_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/it_dns_caa.lng b/interface/web/dns/lib/lang/it_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/it_dns_caa.lng +++ b/interface/web/dns/lib/lang/it_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/ja_dns_caa.lng b/interface/web/dns/lib/lang/ja_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/ja_dns_caa.lng +++ b/interface/web/dns/lib/lang/ja_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_caa.lng b/interface/web/dns/lib/lang/nl_dns_caa.lng index bf5b2ac8e1..82de234d6e 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/pl_dns_caa.lng b/interface/web/dns/lib/lang/pl_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/pl_dns_caa.lng +++ b/interface/web/dns/lib/lang/pl_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/pt_dns_caa.lng b/interface/web/dns/lib/lang/pt_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/pt_dns_caa.lng +++ b/interface/web/dns/lib/lang/pt_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/ro_dns_caa.lng b/interface/web/dns/lib/lang/ro_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/ro_dns_caa.lng +++ b/interface/web/dns/lib/lang/ro_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/ru_dns_caa.lng b/interface/web/dns/lib/lang/ru_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/ru_dns_caa.lng +++ b/interface/web/dns/lib/lang/ru_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/ru_dns_hinfo.lng b/interface/web/dns/lib/lang/ru_dns_hinfo.lng index 830576fdf6..363ed0eef5 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'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_caa.lng b/interface/web/dns/lib/lang/se_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/se_dns_caa.lng +++ b/interface/web/dns/lib/lang/se_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/sk_dns_caa.lng b/interface/web/dns/lib/lang/sk_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/sk_dns_caa.lng +++ b/interface/web/dns/lib/lang/sk_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/tr_dns_caa.lng b/interface/web/dns/lib/lang/tr_dns_caa.lng index bf5b2ac8e1..82de234d6e 100644 --- a/interface/web/dns/lib/lang/tr_dns_caa.lng +++ b/interface/web/dns/lib/lang/tr_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/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 83097915bf..19ae309a1f 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/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 4c02c963c2..5d9fb269b9 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 @@ <?php $wb['login_1_txt'] = 'Você deseja acessar como usuário'; -$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \"voltar\" selecionando sair.'; +$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.'; $wb['btn_yes_txt'] = 'Sim, acessar como cliente'; $wb['btn_back_txt'] = 'Não, voltar a lista'; $wb['udp_port_help_txt'] = 'Separado por vÃrgula'; diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 46a3eab288..63031d4d09 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 @@ <?php $wb['login_1_txt'] = 'Ð’Ñ‹ хотите войти как пользователь'; -$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \"вернутьÑÑ\", нажав на \"выход\".'; +$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \\"вернутьÑÑ\\", нажав на \\"выход\\".'; $wb['btn_yes_txt'] = 'Да, войти как Клиент'; $wb['btn_back_txt'] = 'Ðет, назад к ÑпиÑку'; $wb['udp_port_help_txt'] = 'ПеречиÑлить через запÑтую'; $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 порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; $wb['login_as_or_logout_txt'] = 'Ð’Ñ‹ хотите заново войти как {UTYPE} или выйти?'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index a786566277..f91d40f625 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/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng index 0ce613cd05..b3f2f0b6bf 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 ecc2d25b9d..c8306f9838 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/mailuser/lib/lang/ru_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng index f10dd4ddb2..d834e4057a 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/monitor/lib/lang/ar.lng b/interface/web/monitor/lib/lang/ar.lng index e00287a8e7..9d54ea1f5d 100644 --- a/interface/web/monitor/lib/lang/ar.lng +++ b/interface/web/monitor/lib/lang/ar.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/bg.lng b/interface/web/monitor/lib/lang/bg.lng index 0db4623d03..a8b7f491ac 100644 --- a/interface/web/monitor/lib/lang/bg.lng +++ b/interface/web/monitor/lib/lang/bg.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index 048fec64be..72325cc5b3 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'DomÃnio'; $wb['Show MongoDB-Log'] = 'Exibir logs do MongoDB'; $wb['monitor_services_mongodb_txt'] = 'Servidor MongoDB:'; $wb['monitor_title_mongodb_txt'] = 'Logs do MongoDB'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/ca.lng b/interface/web/monitor/lib/lang/ca.lng index 4575be2ff1..b57b255a74 100644 --- a/interface/web/monitor/lib/lang/ca.lng +++ b/interface/web/monitor/lib/lang/ca.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index dc3e3cb341..9e054aacf2 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Klient'; $wb['monitor_database_domain_txt'] = 'Doména'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/dk.lng b/interface/web/monitor/lib/lang/dk.lng index dc43c1306f..4c7bfab1e7 100644 --- a/interface/web/monitor/lib/lang/dk.lng +++ b/interface/web/monitor/lib/lang/dk.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng index 414642e2e3..245c80c666 100644 --- a/interface/web/monitor/lib/lang/el.lng +++ b/interface/web/monitor/lib/lang/el.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_view.lng b/interface/web/monitor/lib/lang/el_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/el_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index 8cc87b4801..f4acb3c45c 100755 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -161,4 +161,5 @@ $wb['System load 15 minutes'] = 'Carga del sistema hace 15 minutos'; $wb['System load 5 minutes'] = 'Carga del sistema hace 5 minutos'; $wb['System State (All Servers)'] = 'Estado de los sistemas'; $wb['Users online'] = 'Usuarios en lÃnea'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_view.lng b/interface/web/monitor/lib/lang/es_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/es_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng index 44143f3d20..911aae9bd1 100755 --- a/interface/web/monitor/lib/lang/fi.lng +++ b/interface/web/monitor/lib/lang/fi.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/fr.lng b/interface/web/monitor/lib/lang/fr.lng index 9fb2ab5e8c..c08fe74948 100644 --- a/interface/web/monitor/lib/lang/fr.lng +++ b/interface/web/monitor/lib/lang/fr.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index d878568104..17899ff3f0 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/hu.lng b/interface/web/monitor/lib/lang/hu.lng index 85fda97908..9a5c41654f 100644 --- a/interface/web/monitor/lib/lang/hu.lng +++ b/interface/web/monitor/lib/lang/hu.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/id.lng b/interface/web/monitor/lib/lang/id.lng index d77f145649..4cdbf5d8ba 100644 --- a/interface/web/monitor/lib/lang/id.lng +++ b/interface/web/monitor/lib/lang/id.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_view.lng b/interface/web/monitor/lib/lang/id_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/id_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/it.lng b/interface/web/monitor/lib/lang/it.lng index c7a6823683..e6feadf01f 100644 --- a/interface/web/monitor/lib/lang/it.lng +++ b/interface/web/monitor/lib/lang/it.lng @@ -161,4 +161,5 @@ $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_view.lng b/interface/web/monitor/lib/lang/it_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/it_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/ja.lng b/interface/web/monitor/lib/lang/ja.lng index bc2c7d2b5c..cccd678cb7 100644 --- a/interface/web/monitor/lib/lang/ja.lng +++ b/interface/web/monitor/lib/lang/ja.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/nl.lng b/interface/web/monitor/lib/lang/nl.lng index 81caa02b70..a534b9afb3 100644 --- a/interface/web/monitor/lib/lang/nl.lng +++ b/interface/web/monitor/lib/lang/nl.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/pl.lng b/interface/web/monitor/lib/lang/pl.lng index 77d05e0569..a8e1b3e53c 100644 --- a/interface/web/monitor/lib/lang/pl.lng +++ b/interface/web/monitor/lib/lang/pl.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/pt.lng b/interface/web/monitor/lib/lang/pt.lng index 2218ede892..7930febda2 100644 --- a/interface/web/monitor/lib/lang/pt.lng +++ b/interface/web/monitor/lib/lang/pt.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/ro.lng b/interface/web/monitor/lib/lang/ro.lng index 7b06c4ba0c..96a2ce10e6 100644 --- a/interface/web/monitor/lib/lang/ro.lng +++ b/interface/web/monitor/lib/lang/ro.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/ru.lng b/interface/web/monitor/lib/lang/ru.lng index 49e9d4604d..823174b716 100644 --- a/interface/web/monitor/lib/lang/ru.lng +++ b/interface/web/monitor/lib/lang/ru.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Домен'; $wb['Show MongoDB-Log'] = 'Показать журнал MongoDB'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Ñервер:'; $wb['monitor_title_mongodb_txt'] = 'Журнал MongoDB'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 732805d2a6..78dd5ed1be 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -161,4 +161,5 @@ $wb['no_permissions_to_view_munin_txt'] = 'Du har inte behörighet att visa Muni $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_view.lng b/interface/web/monitor/lib/lang/se_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/se_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/sk.lng b/interface/web/monitor/lib/lang/sk.lng index 7697242386..36af834eaf 100644 --- a/interface/web/monitor/lib/lang/sk.lng +++ b/interface/web/monitor/lib/lang/sk.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index 00beedb1dc..005b4d97e2 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -161,4 +161,5 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; +$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng new file mode 100644 index 0000000000..9f9afd6347 --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng @@ -0,0 +1,8 @@ +<?php +$wb["list_head_txt"] = 'Datalog History'; +$wb["tstamp_txt"] = 'Date'; +$wb["server_id_txt"] = 'Server'; +$wb["dbtable_txt"] = 'DB Table'; +$wb["action_txt"] = 'Action'; +$wb["status_txt"] = 'Status'; +?> diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng new file mode 100644 index 0000000000..0e040a3e77 --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_undo.lng @@ -0,0 +1,7 @@ +<?php +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['success_txt'] = 'Undo successful'; +$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; +$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; +$wb['btn_cancel_txt'] = 'Back'; +?> diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng new file mode 100644 index 0000000000..df9ddd286f --- /dev/null +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_view.lng @@ -0,0 +1,26 @@ +<?php +$wb['i'] = 'Insert'; +$wb['u'] = 'Update'; +$wb['d'] = 'Delete'; +$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['id_txt'] = 'ID'; +$wb['timestamp_txt'] = 'Timestamp'; +$wb['table_txt'] = 'Table'; +$wb['action_txt'] = 'Action'; +$wb['session_id_txt'] = 'Session ID'; +$wb['fields_txt'] = 'Fields'; +$wb['fields_inserted_txt'] = 'Inserted Fields'; +$wb['fields_updated_txt'] = 'Updated Fields'; +$wb['fields_deleted_txt'] = 'Deleted Fields'; +$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['is_diff_txt'] = 'The differences are highlighted'; +$wb['is_diff_inserts_txt'] = 'Insertions'; +$wb['is_diff_deletes_txt'] = 'Deletions'; +$wb['field_txt'] = 'Field'; +$wb['value_txt'] = 'Value'; +$wb['old_txt'] = 'Old'; +$wb['new_txt'] = 'New'; +$wb['btn_cancel_txt'] = 'Back'; +$wb['undo_txt'] = 'Undo action'; +$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +?> 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 bfaf07f226..f208ab3f36 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/bg_aps.lng b/interface/web/sites/lib/lang/bg_aps.lng index 5313f2d910..6a5f981943 100644 --- a/interface/web/sites/lib/lang/bg_aps.lng +++ b/interface/web/sites/lib/lang/bg_aps.lng @@ -60,4 +60,4 @@ $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['password_strength_txt'] = 'Сила на паролата'; -?> \ No newline at end of file +?> 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 0c01cbfdac..a84d915230 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 3fdd93585e..685ce6ed28 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -30,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_aps.lng b/interface/web/sites/lib/lang/br_aps.lng index 46cfabfb01..27e7434359 100644 --- a/interface/web/sites/lib/lang/br_aps.lng +++ b/interface/web/sites/lib/lang/br_aps.lng @@ -60,4 +60,4 @@ $wb['repeat_password_txt'] = 'Repetir senha'; $wb['password_mismatch_txt'] = 'A senhas não coincidem.'; $wb['password_match_txt'] = 'A senhas coincidem.'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -?> \ No newline at end of file +?> diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng index eab5b9f688..2bbadf6d1b 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 57b97693eb..ac916feef1 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 518f0296e1..59b9fce627 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 bb8d99ceb0..3df741ed9e 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 c92bf5baa4..3cbc911ab3 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 9d4f1951d8..4acadb2c54 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 1c53d16584..ecff0c2ae8 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -36,18 +36,18 @@ $wb['domain_error_empty'] = 'DomÃnio está em branco.'; $wb['domain_error_unique'] = 'Já existe apelido de domÃnio ou subdomÃnio com este nome.'; $wb['domain_error_regex'] = 'Nome de domÃnio é inválido.'; $wb['host_txt'] = 'Nome do servidor'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; +$wb['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'; diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index f0fdabb75f..662fdb407c 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'; diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 8abb050438..0ccc574805 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 413863f1eb..4c72b1fd88 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'; @@ -106,7 +106,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:'; @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed'; $wb['log_retention_txt'] = 'Tempo de armazenamenro dos arquivos de log'; $wb['log_retention_error_regex'] = 'Tempo de armazenamento, em dias (valores permitidos: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> 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 8a0c3e6a1f..fa6ddad484 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 b135d5e0fa..4347f8ae36 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_aps.lng b/interface/web/sites/lib/lang/ca_aps.lng index bbf799bb39..062d6ea589 100644 --- a/interface/web/sites/lib/lang/ca_aps.lng +++ b/interface/web/sites/lib/lang/ca_aps.lng @@ -60,4 +60,4 @@ $wb['repeat_password_txt'] = 'Vérification du mot de passe'; $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.'; $wb['password_match_txt'] = 'Les mots de passe correspondent.'; $wb['password_strength_txt'] = 'Force du mot de passe'; -?> \ No newline at end of file +?> 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 c9cdb68c9a..aae2f46339 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng index 36bc6816f4..adf6ccf58e 100644 --- a/interface/web/sites/lib/lang/cz_aps.lng +++ b/interface/web/sites/lib/lang/cz_aps.lng @@ -60,4 +60,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodujÃ.'; $wb['password_match_txt'] = 'Hesla se shodujÃ.'; $wb['password_strength_txt'] = 'BezpeÄnost hesla'; -?> \ No newline at end of file +?> 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 9f40aaec68..269b6b5862 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/de_aps.lng b/interface/web/sites/lib/lang/de_aps.lng index bb986b5c44..6c9ff30eed 100644 --- a/interface/web/sites/lib/lang/de_aps.lng +++ b/interface/web/sites/lib/lang/de_aps.lng @@ -60,4 +60,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen'; $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; $wb['password_strength_txt'] = 'Passwortkomplexität'; -?> \ No newline at end of file +?> 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 c9cdb68c9a..aae2f46339 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng index 1d238b64e9..0ea2c2a796 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 8421966c0e..f98c02db15 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 1a4d753b56..c7c4a14432 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index ab34cdf35e..931c00a533 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index 0ef7e93851..7842d770b4 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index da4391a926..a40a4b62a5 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 6d16061cfe..617e7fe769 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index adb557f390..9fbca551a3 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index 9dd8cd7aff..0efd971187 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index 1301001bd1..dd007d549f 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng index e6fd601125..8a426b0a1a 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index a33ac11fc1..170f2feb04 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index cb5fc4d82b..046c2c71a6 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng index 6316c21d17..dbf2926043 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 3dd4ad0a8a..d2225358c1 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 b931b715f2..0f5eaf3180 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 df927317ca..7de99a11dc 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 49905e77ea..af71669a47 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ðет флага'; $wb['domain_error_wildcard'] = 'Wildcard поддомены не допуÑкаютÑÑ.'; $wb['proxy_directives_txt'] = 'Директивы прокÑи'; $wb['available_proxy_directive_snippets_txt'] = 'ДоÑтупные заготовки директив Proxy:'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качеÑтве пути перенаправлениÑ.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качеÑтве пути перенаправлениÑ.'; $wb['backup_interval_txt'] = 'Интервал резервного копированиÑ'; $wb['backup_copies_txt'] = 'КоличеÑтво резервных копий'; $wb['ssl_key_txt'] = 'SSL-ключ'; diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng index 46203a1815..376c789430 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 b8a3b41759..e87af3b654 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Включить PageSpeed'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng index 2a67966577..1a2572b950 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['https_port_error_regex'] = 'HTTPS Port invalid.'; $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index 2d354ce9dc..17e60da6e6 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 8a04a244e6..2e9384fee4 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -152,4 +152,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; ?> -- GitLab From de9ac2e8960471375dd1929150ee5d845ca78b36 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 19:24:08 +0200 Subject: [PATCH 045/571] Fixed double quoting in language files. --- interface/lib/lang/ar.lng | 2 +- interface/lib/lang/bg.lng | 2 +- interface/lib/lang/ca.lng | 2 +- interface/lib/lang/cz.lng | 2 +- interface/lib/lang/de.lng | 2 +- interface/lib/lang/dk.lng | 2 +- interface/lib/lang/el.lng | 2 +- interface/lib/lang/es.lng | 2 +- interface/lib/lang/fi.lng | 2 +- interface/lib/lang/hr.lng | 2 +- interface/lib/lang/hu.lng | 2 +- interface/lib/lang/id.lng | 2 +- interface/lib/lang/it.lng | 2 +- interface/lib/lang/ja.lng | 2 +- interface/lib/lang/nl.lng | 2 +- interface/lib/lang/pl.lng | 2 +- interface/lib/lang/pt.lng | 2 +- interface/lib/lang/ro.lng | 2 +- interface/lib/lang/ru.lng | 2 +- interface/lib/lang/se.lng | 2 +- interface/lib/lang/sk.lng | 2 +- interface/lib/lang/tr.lng | 2 +- .../web/admin/lib/lang/ar_system_config.lng | 2 +- interface/web/admin/lib/lang/ar_users.lng | 2 +- .../web/admin/lib/lang/bg_system_config.lng | 2 +- interface/web/admin/lib/lang/bg_users.lng | 2 +- .../web/admin/lib/lang/br_system_config.lng | 2 +- interface/web/admin/lib/lang/ca_firewall.lng | 4 ++-- .../web/admin/lib/lang/ca_server_config.lng | 2 +- .../web/admin/lib/lang/ca_system_config.lng | 2 +- interface/web/admin/lib/lang/ca_users.lng | 2 +- .../web/admin/lib/lang/cz_remote_action.lng | 4 ++-- .../web/admin/lib/lang/cz_server_config.lng | 2 +- interface/web/admin/lib/lang/dk_firewall.lng | 4 ++-- .../web/admin/lib/lang/dk_server_config.lng | 2 +- .../web/admin/lib/lang/dk_system_config.lng | 2 +- interface/web/admin/lib/lang/dk_users.lng | 2 +- .../web/admin/lib/lang/el_system_config.lng | 2 +- interface/web/admin/lib/lang/el_users.lng | 2 +- interface/web/admin/lib/lang/es_firewall.lng | 4 ++-- .../web/admin/lib/lang/es_server_config.lng | 2 +- .../web/admin/lib/lang/es_system_config.lng | 4 ++-- .../web/admin/lib/lang/fi_system_config.lng | 2 +- interface/web/admin/lib/lang/fi_users.lng | 2 +- .../web/admin/lib/lang/fr_remote_action.lng | 2 +- .../web/admin/lib/lang/fr_system_config.lng | 2 +- .../web/admin/lib/lang/hr_system_config.lng | 2 +- interface/web/admin/lib/lang/hr_users.lng | 2 +- interface/web/admin/lib/lang/hr_users_list.lng | 2 +- .../web/admin/lib/lang/hu_system_config.lng | 2 +- interface/web/admin/lib/lang/hu_users.lng | 2 +- .../web/admin/lib/lang/id_system_config.lng | 2 +- interface/web/admin/lib/lang/id_users.lng | 2 +- .../web/admin/lib/lang/it_system_config.lng | 2 +- interface/web/admin/lib/lang/it_users.lng | 2 +- .../web/admin/lib/lang/ja_system_config.lng | 2 +- interface/web/admin/lib/lang/ja_users.lng | 2 +- .../web/admin/lib/lang/nl_system_config.lng | 2 +- interface/web/admin/lib/lang/nl_users.lng | 2 +- .../web/admin/lib/lang/pl_system_config.lng | 2 +- .../web/admin/lib/lang/pt_system_config.lng | 2 +- interface/web/admin/lib/lang/pt_users.lng | 2 +- .../web/admin/lib/lang/ro_system_config.lng | 2 +- interface/web/admin/lib/lang/ro_users.lng | 2 +- interface/web/admin/lib/lang/ru_firewall.lng | 4 ++-- .../web/admin/lib/lang/ru_server_config.lng | 2 +- .../web/admin/lib/lang/ru_system_config.lng | 4 ++-- interface/web/admin/lib/lang/ru_users.lng | 2 +- .../web/admin/lib/lang/se_system_config.lng | 2 +- .../web/admin/lib/lang/sk_system_config.lng | 2 +- interface/web/admin/lib/lang/sk_users.lng | 2 +- interface/web/admin/lib/lang/tr_firewall.lng | 4 ++-- .../web/admin/lib/lang/tr_remote_action.lng | 4 ++-- .../web/admin/lib/lang/tr_server_config.lng | 2 +- .../web/admin/lib/lang/tr_system_config.lng | 2 +- interface/web/admin/lib/lang/tr_users.lng | 2 +- interface/web/client/lib/lang/ar_client.lng | 2 +- interface/web/client/lib/lang/ar_reseller.lng | 2 +- interface/web/client/lib/lang/bg_client.lng | 2 +- interface/web/client/lib/lang/bg_reseller.lng | 2 +- interface/web/client/lib/lang/br_client.lng | 2 +- .../web/client/lib/lang/br_client_template.lng | 2 +- interface/web/client/lib/lang/br_reseller.lng | 2 +- interface/web/client/lib/lang/ca_client.lng | 2 +- interface/web/client/lib/lang/ca_reseller.lng | 2 +- interface/web/client/lib/lang/cz_client.lng | 2 +- interface/web/client/lib/lang/cz_reseller.lng | 2 +- interface/web/client/lib/lang/de_reseller.lng | 2 +- interface/web/client/lib/lang/dk_client.lng | 2 +- interface/web/client/lib/lang/dk_reseller.lng | 2 +- interface/web/client/lib/lang/el_client.lng | 2 +- interface/web/client/lib/lang/el_reseller.lng | 2 +- interface/web/client/lib/lang/es_client.lng | 4 ++-- .../web/client/lib/lang/es_client_template.lng | 4 ++-- interface/web/client/lib/lang/es_reseller.lng | 4 ++-- interface/web/client/lib/lang/fi_client.lng | 2 +- interface/web/client/lib/lang/fi_reseller.lng | 2 +- interface/web/client/lib/lang/fr_client.lng | 2 +- interface/web/client/lib/lang/fr_reseller.lng | 2 +- interface/web/client/lib/lang/hr_client.lng | 2 +- interface/web/client/lib/lang/hr_reseller.lng | 2 +- interface/web/client/lib/lang/hu_client.lng | 2 +- interface/web/client/lib/lang/hu_reseller.lng | 2 +- interface/web/client/lib/lang/id_client.lng | 2 +- interface/web/client/lib/lang/id_reseller.lng | 2 +- interface/web/client/lib/lang/it_client.lng | 2 +- interface/web/client/lib/lang/it_reseller.lng | 2 +- interface/web/client/lib/lang/ja_client.lng | 2 +- interface/web/client/lib/lang/ja_reseller.lng | 2 +- interface/web/client/lib/lang/nl_client.lng | 2 +- interface/web/client/lib/lang/nl_reseller.lng | 2 +- interface/web/client/lib/lang/pl_reseller.lng | 2 +- interface/web/client/lib/lang/pt_client.lng | 2 +- interface/web/client/lib/lang/pt_reseller.lng | 2 +- interface/web/client/lib/lang/ro_client.lng | 2 +- interface/web/client/lib/lang/ro_reseller.lng | 2 +- interface/web/client/lib/lang/ru_client.lng | 4 ++-- interface/web/client/lib/lang/ru_reseller.lng | 4 ++-- interface/web/client/lib/lang/se_client.lng | 2 +- interface/web/client/lib/lang/se_reseller.lng | 2 +- interface/web/client/lib/lang/sk_client.lng | 2 +- interface/web/client/lib/lang/sk_reseller.lng | 2 +- interface/web/client/lib/lang/tr_client.lng | 2 +- interface/web/client/lib/lang/tr_reseller.lng | 2 +- .../web/dashboard/lib/lang/es_dashlet_limits.lng | 2 +- interface/web/dns/lib/lang/br_dns_dmarc.lng | 10 +++++----- interface/web/dns/lib/lang/br_dns_tlsa.lng | 4 ++-- interface/web/dns/lib/lang/ru_dns_hinfo.lng | 2 +- .../web/help/lib/lang/br_support_message.lng | 2 +- interface/web/login/lib/lang/ar_login_as.lng | 6 +++--- interface/web/login/lib/lang/bg_login_as.lng | 6 +++--- interface/web/login/lib/lang/br_login_as.lng | 2 +- interface/web/login/lib/lang/ca_login_as.lng | 6 +++--- interface/web/login/lib/lang/dk_login_as.lng | 6 +++--- interface/web/login/lib/lang/el_login_as.lng | 6 +++--- interface/web/login/lib/lang/es_login_as.lng | 6 +++--- interface/web/login/lib/lang/fi_login_as.lng | 6 +++--- interface/web/login/lib/lang/hr_login_as.lng | 6 +++--- interface/web/login/lib/lang/hu_login_as.lng | 6 +++--- interface/web/login/lib/lang/id_login_as.lng | 6 +++--- interface/web/login/lib/lang/it_login_as.lng | 6 +++--- interface/web/login/lib/lang/ja_login_as.lng | 6 +++--- interface/web/login/lib/lang/nl_login_as.lng | 4 ++-- interface/web/login/lib/lang/pt_login_as.lng | 6 +++--- interface/web/login/lib/lang/ro_login_as.lng | 6 +++--- interface/web/login/lib/lang/ru_login_as.lng | 6 +++--- interface/web/login/lib/lang/se_login_as.lng | 6 +++--- interface/web/login/lib/lang/sk_login_as.lng | 6 +++--- interface/web/login/lib/lang/tr_login_as.lng | 6 +++--- interface/web/mail/lib/lang/ar_mail_get.lng | 2 +- interface/web/mail/lib/lang/bg_mail_get.lng | 2 +- interface/web/mail/lib/lang/br_mail_user.lng | 4 ++-- interface/web/mail/lib/lang/ca_mail_get.lng | 2 +- interface/web/mail/lib/lang/cz_mail_get.lng | 2 +- .../web/mail/lib/lang/cz_mail_mailinglist.lng | 2 +- interface/web/mail/lib/lang/dk_mail_get.lng | 2 +- interface/web/mail/lib/lang/el_mail_get.lng | 2 +- interface/web/mail/lib/lang/es.lng | 2 +- .../mail/lib/lang/es_mail_domain_catchall.lng | 4 ++-- .../lib/lang/es_mail_domain_catchall_list.lng | 4 ++-- interface/web/mail/lib/lang/es_mail_get.lng | 2 +- interface/web/mail/lib/lang/fi_mail_get.lng | 2 +- interface/web/mail/lib/lang/fr_mail_get.lng | 2 +- interface/web/mail/lib/lang/hr_mail_get.lng | 2 +- interface/web/mail/lib/lang/hu_mail_get.lng | 2 +- interface/web/mail/lib/lang/id_mail_get.lng | 2 +- interface/web/mail/lib/lang/it_mail_get.lng | 2 +- interface/web/mail/lib/lang/ja_mail_get.lng | 2 +- interface/web/mail/lib/lang/nl_mail_get.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 4 ++-- interface/web/mail/lib/lang/pt_mail_get.lng | 2 +- interface/web/mail/lib/lang/ro_mail_get.lng | 2 +- interface/web/mail/lib/lang/ru_mail_get.lng | 2 +- .../web/mail/lib/lang/ru_mail_user_filter.lng | 2 +- interface/web/mail/lib/lang/se_mail_get.lng | 2 +- interface/web/mail/lib/lang/sk_mail_get.lng | 2 +- interface/web/mail/lib/lang/tr_mail_get.lng | 2 +- .../mailuser/lib/lang/ru_mail_user_filter.lng | 2 +- interface/web/monitor/lib/lang/es.lng | 2 +- interface/web/sites/lib/lang/ar.lng | 2 +- interface/web/sites/lib/lang/ar_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ar_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ar_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/bg.lng | 2 +- interface/web/sites/lib/lang/bg_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/bg_web_childdomain.lng | 2 +- .../web/sites/lib/lang/bg_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/br.lng | 2 +- interface/web/sites/lib/lang/br_cron.lng | 4 ++-- interface/web/sites/lib/lang/br_database.lng | 2 +- .../web/sites/lib/lang/br_database_user.lng | 2 +- interface/web/sites/lib/lang/br_ftp_user.lng | 4 ++-- interface/web/sites/lib/lang/br_shell_user.lng | 4 ++-- .../web/sites/lib/lang/br_web_aliasdomain.lng | 4 ++-- .../web/sites/lib/lang/br_web_childdomain.lng | 6 +++--- interface/web/sites/lib/lang/br_web_domain.lng | 6 +++--- .../web/sites/lib/lang/br_web_subdomain.lng | 2 +- .../web/sites/lib/lang/br_web_vhost_domain.lng | 4 ++-- .../sites/lib/lang/br_web_vhost_subdomain.lng | 10 +++++----- interface/web/sites/lib/lang/br_webdav_user.lng | 4 ++-- interface/web/sites/lib/lang/ca.lng | 2 +- interface/web/sites/lib/lang/ca_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ca_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ca_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/cz.lng | 2 +- interface/web/sites/lib/lang/cz_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/cz_web_childdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_subdomain.lng | 2 +- .../web/sites/lib/lang/de_web_childdomain.lng | 2 +- .../web/sites/lib/lang/de_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/dk.lng | 2 +- interface/web/sites/lib/lang/dk_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/dk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/dk_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/el.lng | 2 +- interface/web/sites/lib/lang/el_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/el_web_childdomain.lng | 2 +- .../web/sites/lib/lang/el_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/es.lng | 2 +- interface/web/sites/lib/lang/es_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/es_web_childdomain.lng | 4 ++-- .../web/sites/lib/lang/es_web_subdomain.lng | 2 +- .../web/sites/lib/lang/es_web_vhost_domain.lng | 2 +- interface/web/sites/lib/lang/fi.lng | 2 +- interface/web/sites/lib/lang/fi_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/fi_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fi_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/fr.lng | 2 +- interface/web/sites/lib/lang/fr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/fr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fr_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/hr.lng | 2 +- interface/web/sites/lib/lang/hr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/hr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hr_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/hu.lng | 2 +- interface/web/sites/lib/lang/hu_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/hu_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hu_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/id.lng | 2 +- interface/web/sites/lib/lang/id_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/id_web_childdomain.lng | 2 +- .../web/sites/lib/lang/id_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/it.lng | 2 +- interface/web/sites/lib/lang/it_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/it_web_childdomain.lng | 2 +- .../web/sites/lib/lang/it_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ja.lng | 2 +- interface/web/sites/lib/lang/ja_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ja_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ja_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/nl.lng | 2 +- interface/web/sites/lib/lang/nl_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/nl_web_childdomain.lng | 2 +- .../web/sites/lib/lang/nl_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/pl_aps.lng | 16 ++++++++-------- interface/web/sites/lib/lang/pt.lng | 2 +- interface/web/sites/lib/lang/pt_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/pt_web_childdomain.lng | 2 +- .../web/sites/lib/lang/pt_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ro.lng | 2 +- interface/web/sites/lib/lang/ro_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ro_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ro_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ru.lng | 2 +- interface/web/sites/lib/lang/ru_aps.lng | 16 ++++++++-------- interface/web/sites/lib/lang/ru_database.lng | 2 +- .../web/sites/lib/lang/ru_database_user.lng | 2 +- .../web/sites/lib/lang/ru_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/se.lng | 2 +- interface/web/sites/lib/lang/se_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/se_web_childdomain.lng | 2 +- .../web/sites/lib/lang/se_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/sk.lng | 2 +- interface/web/sites/lib/lang/sk_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/sk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/sk_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/tr.lng | 2 +- interface/web/sites/lib/lang/tr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/tr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/tr_web_subdomain.lng | 2 +- interface/web/vm/lib/lang/dk_openvz_template.lng | 2 +- interface/web/vm/lib/lang/es_openvz_template.lng | 2 +- interface/web/vm/lib/lang/tr_openvz_template.lng | 2 +- 285 files changed, 514 insertions(+), 514 deletions(-) diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index 25dd920831..c8ee365e4b 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index ff1e39fe34..eafc8334d4 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng index c39cd0db27..03b9e65a0d 100644 --- a/interface/lib/lang/ca.lng +++ b/interface/lib/lang/ca.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Moyen'; $wb['strength_3'] = 'Bon'; $wb['strength_4'] = 'Fort'; $wb['strength_5'] = 'Très fort'; -$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \\"{strength}\\".'; +$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \"{strength}\".'; $wb['weak_password_length_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums.'; $wb['security_check1_txt'] = 'Vérifier les permissions de sécurité:'; $wb['security_check2_txt'] = 'Echec'; diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 6bd61dd6d9..6d95c1249f 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'PodprůmÄ›rná'; $wb['strength_3'] = 'Dobrá'; $wb['strength_4'] = 'Silná'; $wb['strength_5'] = 'Velmi silná'; -$wb['weak_password_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé a majÃcà sÃlu \\"{strength}\\".'; +$wb['weak_password_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé a majÃcà sÃlu \"{strength}\".'; $wb['weak_password_length_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 61551ceeab..6f2e2d00ba 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -152,7 +152,7 @@ $wb['strength_2'] = 'Mittel'; $wb['strength_3'] = 'Gut'; $wb['strength_4'] = 'Stark'; $wb['strength_5'] = 'Sehr stark'; -$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \\"{strength}\\" besitzen.'; +$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \"{strength}\" besitzen.'; $wb['weak_password_length_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein.'; $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:'; $wb['security_check2_txt'] = 'fehlgeschlagen.'; diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng index 798d2ccd45..2f7aeb2790 100644 --- a/interface/lib/lang/dk.lng +++ b/interface/lib/lang/dk.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Nogenlunde'; $wb['strength_3'] = 'God'; $wb['strength_4'] = 'Stærk'; $wb['strength_5'] = 'Meget Stærk'; -$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke pÃ¥ \\"{strength}\\".'; +$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke pÃ¥ \"{strength}\".'; $wb['weak_password_length_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden.'; $wb['security_check1_txt'] = 'Check for sikkerheds tilladelse:'; $wb['security_check2_txt'] = 'mislykkedes.'; diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 382bf4a758..53cd56f175 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index 3b1bae0b46..8b9bc94ef8 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Aceptable'; $wb['strength_3'] = 'Buena'; $wb['strength_4'] = 'Fuerte'; $wb['strength_5'] = 'Muy fuerte'; -$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \\"{strength}\\".'; +$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \"{strength}\".'; $wb['weak_password_length_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres.'; $wb['security_check1_txt'] = 'Verificar permisos de seguridad:'; $wb['security_check2_txt'] = 'ha fallado.'; diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index d4c23ca777..0439142c52 100755 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 310371be47..c6a1b74d81 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Dobro'; $wb['strength_3'] = 'Bolje'; $wb['strength_4'] = 'Jako'; $wb['strength_5'] = 'OdliÄno'; -$wb['weak_password_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova i jaÄine \\"{strength}\\".'; +$wb['weak_password_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova i jaÄine \"{strength}\".'; $wb['weak_password_length_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova.'; $wb['security_check1_txt'] = 'Provjerite sigurnosne dozvole:'; $wb['security_check2_txt'] = 'greÅ¡ka.'; diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index dd4cce79b3..1ef741d6a2 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index bd90fd5a1b..6483418b3e 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 33d16c3d5f..332cd1ab9f 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -138,7 +138,7 @@ $wb['strength_2'] = 'Mediocre'; $wb['strength_3'] = 'Buono'; $wb['strength_4'] = 'Forte'; $wb['strength_5'] = 'Molto forte'; -$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri ed avere un livello di sicurezza pari a \\"{strength}\\".'; +$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri ed avere un livello di sicurezza pari a \"{strength}\".'; $wb['weak_password_length_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri.'; $wb['security_check1_txt'] = 'Verifica permessi di sicurezza:'; $wb['security_check2_txt'] = 'fallito.'; diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index 2a56e77399..5f8b20add4 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index 888f9c0200..561e4cdb76 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index b5b62c816d..abbb98ee14 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 7845520a5b..026aff80a8 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index 613f2377a1..bfbd725dab 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index e5e8ce6278..823ef44c79 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/lang/se.lng b/interface/lib/lang/se.lng index b6767144df..4f67c28024 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'SÃ¥där'; $wb['strength_3'] = 'Bra'; $wb['strength_4'] = 'Starkt'; $wb['strength_5'] = 'Väldigt starkt'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index 6b4ef7676f..b647226e34 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 115bc890bb..551fae8d86 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Yeterli'; $wb['strength_3'] = 'Ä°yi'; $wb['strength_4'] = 'Güçlü'; $wb['strength_5'] = 'Çok Güçlü'; -$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve \\"{strength}\\" güçlüğünde olmalı.'; +$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve \"{strength}\" güçlüğünde olmalı.'; $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda olmalı.'; $wb['security_check1_txt'] = 'Güvenlik iznini denetle:'; $wb['security_check2_txt'] = 'baÅŸarısız.'; diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 0a830014d8..b650929064 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng index dcbc4f4727..9d9923b631 100644 --- a/interface/web/admin/lib/lang/ar_users.lng +++ b/interface/web/admin/lib/lang/ar_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 130cb596aa..15d5338704 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng index e8dc631a59..e36d2d9d32 100644 --- a/interface/web/admin/lib/lang/bg_users.lng +++ b/interface/web/admin/lib/lang/bg_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 8688ca53aa..3d8ea38e14 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/ca_firewall.lng b/interface/web/admin/lib/lang/ca_firewall.lng index 06a51c80cf..0e08215f7a 100644 --- a/interface/web/admin/lib/lang/ca_firewall.lng +++ b/interface/web/admin/lib/lang/ca_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Separated by comma'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 815dbd30b5..42fb15c246 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -161,7 +161,7 @@ $wb['do_not_try_rescue_httpd_txt'] = 'Disable HTTPD monitoring'; $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; $wb['do_not_try_rescue_mysql_txt'] = 'Disable MySQL monitoring'; $wb['do_not_try_rescue_mail_txt'] = 'Disable Email monitoring'; -$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \\"Disable MySQL monitor\\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; +$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \"Disable MySQL monitor\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; $wb['enable_sni_txt'] = 'Enable SNI'; $wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update'; $wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group'; diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index cc3c11c6c5..326b3b2750 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng index dcbc4f4727..9d9923b631 100644 --- a/interface/web/admin/lib/lang/ca_users.lng +++ b/interface/web/admin/lib/lang/ca_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng index e1908e2d04..68da1c065d 100644 --- a/interface/web/admin/lib/lang/cz_remote_action.lng +++ b/interface/web/admin/lib/lang/cz_remote_action.lng @@ -2,9 +2,9 @@ $wb['select_server_txt'] = 'Zvolit server'; $wb['btn_do_txt'] = 'Provést akci'; $wb['do_osupdate_caption'] = 'Aktualizace operaÄnÃho systému na vzdáleném serveru.'; -$wb['do_osupdate_desc'] = 'Tato akce provede \\"aptitude -y\\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; +$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['do_ispcupdate_caption'] = 'Provedenà ISPConfig 3 - aktualizace na vzdáleném serveru'; -$wb['do_ispcupdate_desc'] = 'Tato akce provede \\"ISPConfig 3\\" aktualizaci na vaÅ¡em vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; +$wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vaÅ¡em vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['action_scheduled'] = 'Akce je naplánována na provedenÃ'; $wb['select_all_server'] = 'VÅ¡echny servery'; $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index ebccd8fce0..40af41289a 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'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \\"Zakázat MySQL monitorovánÃ\\" zmÄ›na se provede do 2-3 minut.<br>Pokud nepoÄkáte 2-3 minuty, monitorovánà nastartuje službu MySQL automaticky znovu !'; +$wb['rescue_description_txt'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \"Zakázat MySQL monitorovánÃ\" zmÄ›na se provede do 2-3 minut.<br>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'; diff --git a/interface/web/admin/lib/lang/dk_firewall.lng b/interface/web/admin/lib/lang/dk_firewall.lng index 96608b2830..9a20698384 100644 --- a/interface/web/admin/lib/lang/dk_firewall.lng +++ b/interface/web/admin/lib/lang/dk_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Adskilt af komma'; $wb['udp_port_help_txt'] = 'Adskilt af komma'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.'; -$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; -$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \":\" og \",\".'; +$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \":\" og \",\".'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 5bf2be008a..a4e0a12d9f 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Aktiver overvÃ¥gnings service og genstarte ved fejl'; $wb['do_not_try_rescue_httpd_txt'] = 'Deaktiver HTTPD monitoring'; $wb['do_not_try_rescue_mysql_txt'] = 'Deaktiver MySQL monitoring'; $wb['do_not_try_rescue_mail_txt'] = 'Deaktiver E-mail monitoring'; -$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \\"Deaktiver MySQL monitor\\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!'; +$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \"Deaktiver MySQL monitor\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!'; $wb['enable_sni_txt'] = 'Enable SNI'; $wb['set_folder_permissions_on_update_txt'] = 'Indstil mappe tilladelser ved opdatering'; $wb['add_web_users_to_sshusers_group_txt'] = 'Tilføj web-brugere til -sshusers- gruppe'; diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 26b0fe7e78..75e55f1eb0 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugy $wb['customer_no_start_txt'] = 'Kunde Nr. start værdi'; $wb['customer_no_counter_txt'] = 'Kunde Nr. tæller'; $wb['session_timeout_txt'] = 'Session timeout (minutter)'; -$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"'; +$wb['session_allow_endless_txt'] = 'Aktiver \"forbliv logget ind\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum adgangskode længde'; $wb['min_password_strength_txt'] = 'Minimum adgangskode styrke'; diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng index 2e86ab4ca9..a70cc1dbf1 100644 --- a/interface/web/admin/lib/lang/dk_users.lng +++ b/interface/web/admin/lib/lang/dk_users.lng @@ -29,7 +29,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['username_error_collision'] = 'Brugernavn mÃ¥ ikke være web eller web plus et tal.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 640d6f00a9..80ddaca144 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng index f0307b95ec..e5ce7a8792 100644 --- a/interface/web/admin/lib/lang/el_users.lng +++ b/interface/web/admin/lib/lang/el_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_firewall.lng b/interface/web/admin/lib/lang/es_firewall.lng index 81cad3c0aa..db09b57844 100755 --- a/interface/web/admin/lib/lang/es_firewall.lng +++ b/interface/web/admin/lib/lang/es_firewall.lng @@ -4,8 +4,8 @@ $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este s $wb['server_id_txt'] = 'Servidor'; $wb['tcp_port_help_txt'] = 'Separados por coma'; $wb['tcp_port_txt'] = 'Puertos TCP abiertos'; -$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".'; $wb['udp_port_help_txt'] = 'Separados por coma'; $wb['udp_port_txt'] = 'Puertos UDP abiertos'; -$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; +$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 95eaf9e8a0..01c9978ae1 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -228,7 +228,7 @@ $wb['reject_sender_login_mismatch_txt'] = 'Rechazar remitente e inicio de sesió $wb['relayhost_password_txt'] = 'Contraseña del servidor de retransmisión'; $wb['relayhost_txt'] = 'Servidor de retransmisión'; $wb['relayhost_user_txt'] = 'Usuario del servidor de retransmisión'; -$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \\"Deshabilitar monitorización de MySQL\\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio'; +$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \"Deshabilitar monitorización de MySQL\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio'; $wb['security_level_txt'] = 'Nivel de seguridad'; $wb['server_type_txt'] = 'Tipo de servidor'; $wb['set_folder_permissions_on_update_txt'] = 'Establecer permisos de carpetas al actualizar'; diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 043c52cfdd..b927ab043f 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -7,7 +7,7 @@ $wb['available_dashlets_note_txt'] = 'Componentes disponibles:'; $wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.'; $wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda'; $wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha'; -$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.'; +$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \"web\" en los nombres de clientes.'; $wb['company_name_txt'] = 'Nombre de la compañÃa para el tÃtulo de la página'; $wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión'; $wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión'; @@ -51,7 +51,7 @@ $wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin'; $wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs'; $wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda'; $wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha'; -$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"'; +$wb['session_allow_endless_txt'] = 'Habilitar \"mantenerme conectado\"'; $wb['session_timeout_txt'] = 'Tiempo lÃmite de sesión (minutos)'; $wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.'; $wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell'; diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index c0972c49d8..72e7aaa2e6 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng index 199601f520..4fde01b87c 100755 --- a/interface/web/admin/lib/lang/fi_users.lng +++ b/interface/web/admin/lib/lang/fi_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_action.lng b/interface/web/admin/lib/lang/fr_remote_action.lng index bb3443b40a..0072271d69 100644 --- a/interface/web/admin/lib/lang/fr_remote_action.lng +++ b/interface/web/admin/lib/lang/fr_remote_action.lng @@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Cette action met à jour ISPConfig3 sur le serveur $wb['action_scheduled'] = 'L’action est marquée pour exécution'; $wb['select_all_server'] = 'Tout serveur'; $wb['ispconfig_update_title'] = 'ISPConfig update instructions'; -$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Click here for detailed update instructions</a>'; +$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Click here for detailed update instructions</a>'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 18f0dbbed4..df90e03011 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index a7735647b1..a8b44528c6 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng index 7be3f968f2..52f0bdff34 100644 --- a/interface/web/admin/lib/lang/hr_users.lng +++ b/interface/web/admin/lib/lang/hr_users.lng @@ -29,7 +29,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['username_error_collision'] = 'KorisniÄko ime ne može biti web ili web sa brojem.\\"'; +$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/hr_users_list.lng b/interface/web/admin/lib/lang/hr_users_list.lng index c102e5f7f5..7725ce2b96 100644 --- a/interface/web/admin/lib/lang/hr_users_list.lng +++ b/interface/web/admin/lib/lang/hr_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'KorisniÄko ime'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'Dodaj klijenta'; -$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \\"Klijent\\" i \\"PreprodavaÄ\\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!'; +$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \"Klijent\" i \"PreprodavaÄ\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index cee497fe19..e983379e3f 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng index e2cf25fb79..05f3554dfd 100644 --- a/interface/web/admin/lib/lang/hu_users.lng +++ b/interface/web/admin/lib/lang/hu_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 344185b84d..41dd67fbac 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng index f9e961192c..f5ae7efea5 100644 --- a/interface/web/admin/lib/lang/id_users.lng +++ b/interface/web/admin/lib/lang/id_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 311b7c957c..35e625bd2a 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng index 1bde73a67b..be1294cdbe 100644 --- a/interface/web/admin/lib/lang/it_users.lng +++ b/interface/web/admin/lib/lang/it_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index aa5cc6a7a3..494f90dd3e 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng index 64f8339ffa..2e6ad9fb72 100644 --- a/interface/web/admin/lib/lang/ja_users.lng +++ b/interface/web/admin/lib/lang/ja_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 44a58b7646..89e3ff8e47 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng index 1e6d4ef586..782bfc5f90 100644 --- a/interface/web/admin/lib/lang/nl_users.lng +++ b/interface/web/admin/lib/lang/nl_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index a809251ec1..bbbbf95ec7 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 6fc26344c0..a72ca0e954 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng index 67cfe4f572..b53790e6fa 100644 --- a/interface/web/admin/lib/lang/pt_users.lng +++ b/interface/web/admin/lib/lang/pt_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 2a39a454e8..93ccf39477 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng index dcbc4f4727..9d9923b631 100644 --- a/interface/web/admin/lib/lang/ro_users.lng +++ b/interface/web/admin/lib/lang/ro_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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 70beb30437..c30f26f2e8 100644 --- a/interface/web/admin/lib/lang/ru_firewall.lng +++ b/interface/web/admin/lib/lang/ru_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'ПеречиÑлить порты TCP через з $wb['udp_port_help_txt'] = 'ПеречиÑлить порты UDP через запÑтую'; $wb['active_txt'] = 'Ðктивно'; $wb['firewall_error_unique'] = 'Уже еÑÑ‚ÑŒ Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ брандмауÑра Ð´Ð»Ñ Ñтого Ñервера.'; -$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \\":\\" и \\",\\"'; -$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; +$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \":\" и \",\"'; +$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \":\" и \",\"'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 02edb659de..ca66b325bc 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'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \\"Отключить мониторинг MySQL\\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; +$wb['rescue_description_txt'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \"Отключить мониторинг MySQL\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; $wb['enable_sni_txt'] = 'Включить SNI'; $wb['do_not_try_rescue_httpd_txt'] = 'Отключить мониторинг HTTPD'; $wb['set_folder_permissions_on_update_txt'] = 'УÑтановить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°Ð¿ÐºÐ¸ на обновлениÑ'; diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index baed497b0e..52324f3c77 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -14,7 +14,7 @@ $wb['mailboxlist_webmail_link_txt'] = 'СÑылка на веб-почту в Ñ $wb['webmail_url_txt'] = 'URL веб-почты'; $wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; $wb['use_domain_module_txt'] = 'ИÑпользовать модуль домена, чтобы добавить новые домены'; -$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \\"домен\\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; +$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \"домен\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; $wb['new_domain_txt'] = 'HTML текÑÑ‚, чтобы Ñоздать новый домен'; $wb['webdavuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV'; $wb['webdavuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV.'; @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Кли $wb['customer_no_start_txt'] = 'Ðачальное значение номера Клиента'; $wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; $wb['session_timeout_txt'] = 'Тайм-аут ÑеÑÑии (в минутах)'; -$wb['session_allow_endless_txt'] = 'Включить \\"оÑтаватьÑÑ Ð² ÑиÑтеме\\"'; +$wb['session_allow_endless_txt'] = 'Включить \"оÑтаватьÑÑ Ð² ÑиÑтеме\"'; $wb['No'] = 'Ðет'; $wb['min_password_length_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° паролÑ'; $wb['min_password_strength_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑтойкоÑÑ‚ÑŒ паролÑ'; diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng index 63f081f917..bd1b8034ff 100644 --- a/interface/web/admin/lib/lang/ru_users.lng +++ b/interface/web/admin/lib/lang/ru_users.lng @@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не Ñовпадают.'; $wb['password_match_txt'] = 'Ðти пароли Ñовпадают.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['client_not_admin_err'] = 'Пользователь, который принадлежит к клиенту не может быть уÑтановлен тип: admin'; $wb['lost_password_function_txt'] = 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð¾Ñтупна'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 74ae16734f..0c5643bf4f 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehÃ¥ller otil $wb['customer_no_start_txt'] = 'Kundnummer startvärde'; $wb['customer_no_counter_txt'] = 'Kundnummer räknare'; $wb['session_timeout_txt'] = 'Session timeout (minuter)'; -$wb['session_allow_endless_txt'] = 'Aktivera \\"hÃ¥ll mig inloggad\\"'; +$wb['session_allow_endless_txt'] = 'Aktivera \"hÃ¥ll mig inloggad\"'; $wb['No'] = 'Nej'; $wb['min_password_length_txt'] = 'Minsta lösenordslängd'; $wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 90418e87d5..390458886c 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng index d71952fa3e..60a0aa99ec 100644 --- a/interface/web/admin/lib/lang/sk_users.lng +++ b/interface/web/admin/lib/lang/sk_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\\"'; +$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_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng index a45998d4e1..8db312ff05 100644 --- a/interface/web/admin/lib/lang/tr_firewall.lng +++ b/interface/web/admin/lib/lang/tr_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; ?> diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng index c067f67e88..2f124714e1 100644 --- a/interface/web/admin/lib/lang/tr_remote_action.lng +++ b/interface/web/admin/lib/lang/tr_remote_action.lng @@ -2,11 +2,11 @@ $wb['select_server_txt'] = 'Sunucu Seçin'; $wb['btn_do_txt'] = 'Ä°ÅŸlemi BaÅŸlatın'; $wb['do_osupdate_caption'] = 'Uzak sunucudaki iÅŸletim sistemini güncelleyin'; -$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda \\"aptitude -y upgrade\\" komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; +$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda \"aptitude -y upgrade\" komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; $wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin'; $wb['do_ispcupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda ISPConfig3 güncellemesini yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÃœZE AÄ°TTÄ°R!</strong>'; $wb['action_scheduled'] = 'Ä°ÅŸlem yürütülmek üzere zamanlandı'; $wb['select_all_server'] = 'Tüm Sunucularda'; $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri'; -$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; +$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 7d16f21454..4abfd909bf 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden ba $wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin'; $wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin'; $wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin'; -$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneÄŸini iÅŸaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; +$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \"MySQL izlenmesin\" seçeneÄŸini iÅŸaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; $wb['enable_sni_txt'] = 'SNI Kullanılsın'; $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın'; $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin'; diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index c52893f6b4..b4b213697f 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersi $wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; $wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)'; -$wb['session_allow_endless_txt'] = '\\"Oturum açık kalsın\\" kullanılabilsin'; +$wb['session_allow_endless_txt'] = '\"Oturum açık kalsın\" kullanılabilsin'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu'; $wb['min_password_strength_txt'] = 'En Az Parola Güçlüğü'; diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index 0029214773..b639bf9a1d 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -29,7 +29,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['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile baÅŸlayamaz.\\"'; +$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/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index 71bc0fc1f7..4d2bcccef0 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng index 68e8a950f3..553abe0aee 100644 --- a/interface/web/client/lib/lang/ar_reseller.lng +++ b/interface/web/client/lib/lang/ar_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index 36da0a0422..163f677043 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng index 211b6daf93..7daa4cff22 100644 --- a/interface/web/client/lib/lang/bg_reseller.lng +++ b/interface/web/client/lib/lang/bg_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index 992c1ea2ca..ad9282aa4c 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_template.lng b/interface/web/client/lib/lang/br_client_template.lng index 4b2ce6555b..bc7124b16c 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_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index d90d3b15a2..524f875f73 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Data do cadastro'; $wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domÃnio deve ser um número.'; $wb['limit_domainmodule_txt'] = 'Limites de módulos de domÃnio'; $wb['client_limits_txt'] = 'Limite de clientes'; -$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \\"personalizado\\" for selecionado.'; +$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \"personalizado\" for selecionado.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['email_error_empty'] = 'e-mail está em branco.'; diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng index bfa38a3401..7f460522ff 100644 --- a/interface/web/client/lib/lang/ca_client.lng +++ b/interface/web/client/lib/lang/ca_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse courriel valide.'; $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).'; $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.'; $wb['paypal_email_txt'] = 'Compte Paypal'; -$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.'; +$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.'; $wb['aps_limits_txt'] = 'Nombre max d\'Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d\'instances APS'; $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre'; diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng index f83d3aaff7..7125b01a74 100644 --- a/interface/web/client/lib/lang/ca_reseller.lng +++ b/interface/web/client/lib/lang/ca_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Ajouté le'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index 3351ac58e1..edd366830a 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Zadejte prosÃm platnou e-mailovou adresu.'; $wb['customer_no_error_unique'] = 'Zákaznické ÄÃslo musà být jedineÄné (nebo prázdné).'; $wb['paypal_email_error_isemail'] = 'Zadejte prosÃm platnou PayPal e-mail addresu.'; $wb['paypal_email_txt'] = 'PayPal e-mail'; -$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \\"hlavnà šablona\\" nastavena na volbu \\"Custom\\".'; +$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \"hlavnà šablona\" nastavena na volbu \"Custom\".'; $wb['aps_limits_txt'] = 'APS limity instalátoru'; $wb['limit_aps_txt'] = 'Max. poÄet APS instalacÃ'; $wb['limit_aps_error_notint'] = 'Limit pro APS instalace musà být ÄÃslo.'; diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index adfea62ac5..011b985311 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Datum vytvoÅ™enà úÄtu'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Klientské limity'; -$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \\"hlavnà šablona\\" nastavena na volbu \\"Custom\\".'; +$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \"hlavnà šablona\" nastavena na volbu \"Custom\".'; $wb['contact_firstname_txt'] = 'Kontakt kÅ™estnà jméno'; $wb['limit_backup_txt'] = 'Funkce zálohovánà (volitelné)'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng index e37ca395af..48460658c0 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['invalid_vat_id'] = 'Die USt.-ID ist ungültig.'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng index b944e03175..f0a8d1a7cd 100644 --- a/interface/web/client/lib/lang/dk_client.lng +++ b/interface/web/client/lib/lang/dk_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Indtast en gyldig e-mail adresse.'; $wb['customer_no_error_unique'] = 'Kunde nr. skal være unikke (eller tomt).'; $wb['paypal_email_error_isemail'] = 'Indtast en gyldig PayPal e-mail adresse.'; $wb['paypal_email_txt'] = 'PayPal E-mail'; -$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.'; +$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.'; $wb['aps_limits_txt'] = 'APS Installer Begrænsninger'; $wb['limit_aps_txt'] = 'Max. antal af APS forekomster'; $wb['limit_aps_error_notint'] = 'APS forekomster grænse skal være et tal.'; diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng index b06301ccdd..93cd7c4032 100644 --- a/interface/web/client/lib/lang/dk_reseller.lng +++ b/interface/web/client/lib/lang/dk_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Tilføjet d.'; $wb['limit_domainmodule_error_notint'] = 'Domænemodul grænse skal være et tal.'; $wb['limit_domainmodule_txt'] = 'Domænemodul Begrænsning'; $wb['client_limits_txt'] = 'Kunde Begrænsninger'; -$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.'; +$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_database_user_txt'] = 'Max. Database users'; diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index b85f653d4e..8c2d7d738e 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index b409c169e6..13a38caf9d 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index 75125024fb..1935b168af 100755 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -42,7 +42,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacÃo'; $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.'; $wb['email_limits_txt'] = 'LÃmites de correo'; $wb['email_txt'] = 'Correo'; -$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".'; +$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".'; $wb['fax_txt'] = 'Fax'; $wb['firstname_error_empty'] = 'El nombre está vacÃo.'; $wb['firstname_txt'] = 'Nombre'; @@ -90,7 +90,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El lÃmite de alias de dominio de c $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \\"recoge-todo\\" debe ser un número.'; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \"recoge-todo\" debe ser un número.'; $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos'; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng index 4fd6f650f3..6a51459600 100755 --- a/interface/web/client/lib/lang/es_client_template.lng +++ b/interface/web/client/lib/lang/es_client_template.lng @@ -46,8 +46,8 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El lÃmite de alias de dominio de c $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de receptores de correo \\"recoge-todo\\" debe ser un número.'; -$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo \\"recoge-todo\\" '; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de receptores de correo \"recoge-todo\" debe ser un número.'; +$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo \"recoge-todo\" '; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; $wb['limit_mailfetchmail_error_notint'] = 'El lÃmite de recuperadores de correo debe ser un número.'; diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng index 5a94b9e803..a1de1fb7b9 100755 --- a/interface/web/client/lib/lang/es_reseller.lng +++ b/interface/web/client/lib/lang/es_reseller.lng @@ -46,7 +46,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacÃo'; $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.'; $wb['email_limits_txt'] = 'LÃmites de correo'; $wb['email_txt'] = 'Correo'; -$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".'; +$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".'; $wb['fax_txt'] = 'Fax'; $wb['firstname_error_empty'] = 'El nombre está vacÃo.'; $wb['firstname_txt'] = 'Nombre'; @@ -97,7 +97,7 @@ $wb['limit_mailalias_txt'] = 'Cantidad máx. de alias de correo'; $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \\"recoge-todo\\" debe ser un número.'; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \"recoge-todo\" debe ser un número.'; $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos'; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index 6df30e7753..a90a3d7c2d 100755 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng index 58af2fdf0d..6aecc836e3 100644 --- a/interface/web/client/lib/lang/fi_reseller.lng +++ b/interface/web/client/lib/lang/fi_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index 61612ccbe0..f13f0d4676 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse e-mail valide.'; $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).'; $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.'; $wb['paypal_email_txt'] = 'Compte Paypal'; -$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.'; +$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.'; $wb['aps_limits_txt'] = 'Nombre max d’Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d’instances APS'; $wb['limit_aps_error_notint'] = 'La limite d’instances APS doit être un nombre'; diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index f30fcd48c6..591e12ac35 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index ec5b73d940..351ad4b8b4 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Unesi ispravnu email adresu.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index 9188b6861b..37e1e38356 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Datum dodavanja'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domain module Limit'; $wb['client_limits_txt'] = 'Limiti klijenata'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index 10993601c0..8b9cc16081 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng index dd9290885a..2b0c15e8f0 100644 --- a/interface/web/client/lib/lang/hu_reseller.lng +++ b/interface/web/client/lib/lang/hu_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index c84e6251f4..d25230ea3d 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng index 821a35e3cd..af91d1bb4e 100644 --- a/interface/web/client/lib/lang/id_reseller.lng +++ b/interface/web/client/lib/lang/id_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index 0f75d849d6..a361d0a887 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng index 2cef293265..8fc49568af 100644 --- a/interface/web/client/lib/lang/it_reseller.lng +++ b/interface/web/client/lib/lang/it_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index 33aa6ab4e9..2526c02791 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng index 7edf836f39..66200eccbe 100644 --- a/interface/web/client/lib/lang/ja_reseller.lng +++ b/interface/web/client/lib/lang/ja_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index 188a37f4fd..8e0092f255 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -142,7 +142,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index 9953880bec..9cdb1856fe 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng index 9b2cf58f75..69b30fe2a3 100644 --- a/interface/web/client/lib/lang/pl_reseller.lng +++ b/interface/web/client/lib/lang/pl_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index ae3e45b24d..b05e14dfe7 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng index e021cd2511..ae3eddd8b0 100644 --- a/interface/web/client/lib/lang/pt_reseller.lng +++ b/interface/web/client/lib/lang/pt_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index 034c4d0e44..bc0ad4316e 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng index 68e8a950f3..553abe0aee 100644 --- a/interface/web/client/lib/lang/ro_reseller.lng +++ b/interface/web/client/lib/lang/ro_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index befd6b15bf..a37d4673a1 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Ðекорректный почтовый адре $wb['customer_no_error_unique'] = 'Счётчик номера Клиента должен быть уникален (или отÑутÑтвует).'; $wb['paypal_email_error_isemail'] = 'ПожалуйÑта, введите дейÑтвующий Ð°Ð´Ñ€ÐµÑ Ñлектронной почты PayPal.'; $wb['paypal_email_txt'] = 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты PayPal'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; $wb['aps_limits_txt'] = 'Лимиты УÑтановщика APS'; $wb['limit_aps_txt'] = 'МакÑ. количеÑтво ÑкземплÑров APS'; $wb['limit_aps_error_notint'] = 'Лимит ÑкземплÑров APS должен быть чиÑлом.'; diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 998a886990..4a177cccc8 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Дата добавлениÑ'; $wb['limit_domainmodule_error_notint'] = 'Лимит модулей домена должен быть чиÑлом.'; $wb['limit_domainmodule_txt'] = 'Лимит модулей домена'; $wb['client_limits_txt'] = 'Лимиты Клиента'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; $wb['email_error_empty'] = 'ÐÐ´Ñ€ÐµÑ Ñл. почты пуÑтой'; diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index 2884302c18..5232e95f55 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Vänligen ange en giltig epostadress'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal epostadress'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index 68e8a950f3..553abe0aee 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index 3edec417cf..6fff6bf3f0 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng index 4ae3ef5b97..34643c55b8 100644 --- a/interface/web/client/lib/lang/sk_reseller.lng +++ b/interface/web/client/lib/lang/sk_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index 765d9f1980..359095534a 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; $wb['customer_no_error_unique'] = 'Müşteri numarası eÅŸsiz (ya da boÅŸ) olmalıdır.'; $wb['paypal_email_error_isemail'] = 'Lütfen geçerli bir PayPal e-posta adresi yazın.'; $wb['paypal_email_txt'] = 'PayPal E-posta Adresi'; -$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; +$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları'; $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı'; $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.'; diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index 4906a894c0..5e2a37e268 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'EklendiÄŸi Tarih'; $wb['limit_domainmodule_error_notint'] = 'Alan adı modülü sınırı bir sayı olmalıdır.'; $wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı'; $wb['client_limits_txt'] = 'Müşteri Sınırları'; -$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; +$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_database_user_txt'] = 'Max. Database users'; diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng index da6cd6b513..0f819f2a9d 100755 --- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng @@ -11,7 +11,7 @@ $wb['limit_ftp_user_txt'] = 'Cantidad de usuarios FTP'; $wb['limit_mailalias_txt'] = 'Cantidad de alias de correos'; $wb['limit_mailaliasdomain_txt'] = 'Cantidad de alias de dominios'; $wb['limit_mailbox_txt'] = 'Cantidad de buzones'; -$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \\"recoge-todo\\"'; +$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \"recoge-todo\"'; $wb['limit_maildomain_txt'] = 'Cantidad de dominios para correo'; $wb['limit_mailfilter_txt'] = 'Cantidad de filtros de correo'; $wb['limit_mailforward_txt'] = 'Cantidad de reenviadores de correos'; diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng index 8bb35318f8..5b7201075f 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_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng index 5e1bf2256e..c78c6fd190 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/ru_dns_hinfo.lng b/interface/web/dns/lib/lang/ru_dns_hinfo.lng index 363ed0eef5..830576fdf6 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'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 19ae309a1f..83097915bf 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/login/lib/lang/ar_login_as.lng b/interface/web/login/lib/lang/ar_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/ar_login_as.lng +++ b/interface/web/login/lib/lang/ar_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/bg_login_as.lng b/interface/web/login/lib/lang/bg_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/bg_login_as.lng +++ b/interface/web/login/lib/lang/bg_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 5d9fb269b9..4c02c963c2 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 @@ <?php $wb['login_1_txt'] = 'Você deseja acessar como usuário'; -$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.'; +$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \"voltar\" selecionando sair.'; $wb['btn_yes_txt'] = 'Sim, acessar como cliente'; $wb['btn_back_txt'] = 'Não, voltar a lista'; $wb['udp_port_help_txt'] = 'Separado por vÃrgula'; diff --git a/interface/web/login/lib/lang/ca_login_as.lng b/interface/web/login/lib/lang/ca_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/ca_login_as.lng +++ b/interface/web/login/lib/lang/ca_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/dk_login_as.lng b/interface/web/login/lib/lang/dk_login_as.lng index bebcf165a7..a75ea7262a 100644 --- a/interface/web/login/lib/lang/dk_login_as.lng +++ b/interface/web/login/lib/lang/dk_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Vil du logge ind som bruger'; -$wb['login_2_txt'] = 'Hvis du gør det, kan du \\"GÃ¥ tilbage\\" ved at klikke pÃ¥ logout.'; +$wb['login_2_txt'] = 'Hvis du gør det, kan du \"GÃ¥ tilbage\" ved at klikke pÃ¥ logout.'; $wb['btn_yes_txt'] = 'Ja, log ind som Kunde'; $wb['btn_back_txt'] = 'Nej, tilbage til listen'; $wb['udp_port_help_txt'] = 'Adskilt af komma'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.'; -$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; -$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \":\" og \",\".'; +$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \":\" og \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/el_login_as.lng b/interface/web/login/lib/lang/el_login_as.lng index 435d3e9a69..a6c2988017 100644 --- a/interface/web/login/lib/lang/el_login_as.lng +++ b/interface/web/login/lib/lang/el_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'ΘÎλετε να εισÎλθετε ως χÏήστης;'; -$wb['login_2_txt'] = 'Αν το κάνετε, μποÏείτε να \\"επιστÏÎψετε\\" κάνοντας αποσÏνδεση.'; +$wb['login_2_txt'] = 'Αν το κάνετε, μποÏείτε να \"επιστÏÎψετε\" κάνοντας αποσÏνδεση.'; $wb['btn_yes_txt'] = 'Îαι, είσοδος ως Πελάτης'; $wb['btn_back_txt'] = 'Όχι, επιστÏοφή στην λίστα'; $wb['udp_port_help_txt'] = 'διαχωÏισμός με κόμα'; $wb['active_txt'] = 'Εν ΕνεÏγεία'; $wb['firewall_error_unique'] = 'ΥπάÏχει ήδη μια εγγÏαφή Firewall για αυτόν τον server.'; -$wb['tcp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας tcp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \\":\\" και οι \\",\\".'; -$wb['udp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας udp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \\":\\" και οι \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας tcp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \":\" και οι \",\".'; +$wb['udp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας udp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \":\" και οι \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng index b7f3e21f98..10a8554bcb 100755 --- a/interface/web/login/lib/lang/es_login_as.lng +++ b/interface/web/login/lib/lang/es_login_as.lng @@ -4,9 +4,9 @@ $wb['btn_back_txt'] = 'No, volver a la lista'; $wb['btn_yes_txt'] = 'SÃ, iniciar sesión como cliente'; $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este servidor.'; $wb['login_1_txt'] = 'Desea iniciar sesión como usuario'; -$wb['login_2_txt'] = 'Si lo hace, puede \\"volver\\" haciendo clic en salir.'; -$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; +$wb['login_2_txt'] = 'Si lo hace, puede \"volver\" haciendo clic en salir.'; +$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".'; $wb['udp_port_help_txt'] = 'Separado por comas'; -$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; +$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/fi_login_as.lng b/interface/web/login/lib/lang/fi_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/fi_login_as.lng +++ b/interface/web/login/lib/lang/fi_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/hr_login_as.lng b/interface/web/login/lib/lang/hr_login_as.lng index bcd13040d3..a94f659705 100644 --- a/interface/web/login/lib/lang/hr_login_as.lng +++ b/interface/web/login/lib/lang/hr_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Odvojeno zarezom'; $wb['active_txt'] = 'Aktivno'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/hu_login_as.lng b/interface/web/login/lib/lang/hu_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/hu_login_as.lng +++ b/interface/web/login/lib/lang/hu_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/id_login_as.lng b/interface/web/login/lib/lang/id_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/id_login_as.lng +++ b/interface/web/login/lib/lang/id_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/it_login_as.lng b/interface/web/login/lib/lang/it_login_as.lng index 3fa23da274..fab2f1b088 100644 --- a/interface/web/login/lib/lang/it_login_as.lng +++ b/interface/web/login/lib/lang/it_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Desideri accedere come utente'; -$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \\"go back\\" eseguendo il logout.'; +$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \"go back\" eseguendo il logout.'; $wb['btn_yes_txt'] = 'Si, login accedi come cliente'; $wb['btn_back_txt'] = 'No, torna alla lista'; $wb['udp_port_help_txt'] = 'Separato da virgola'; $wb['active_txt'] = 'Attivo'; $wb['firewall_error_unique'] = 'Esiste già un record firewall per questo server.'; -$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \\":\\" e \\",\\".'; -$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \\":\\" e \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \":\" e \",\".'; +$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \":\" e \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ja_login_as.lng b/interface/web/login/lib/lang/ja_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/ja_login_as.lng +++ b/interface/web/login/lib/lang/ja_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/nl_login_as.lng b/interface/web/login/lib/lang/nl_login_as.lng index d4d2715e7a..3061782706 100644 --- a/interface/web/login/lib/lang/nl_login_as.lng +++ b/interface/web/login/lib/lang/nl_login_as.lng @@ -6,7 +6,7 @@ $wb['btn_back_txt'] = 'Nee, terug naar het overzicht'; $wb['udp_port_help_txt'] = 'Gescheiden door komma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/pt_login_as.lng b/interface/web/login/lib/lang/pt_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/pt_login_as.lng +++ b/interface/web/login/lib/lang/pt_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ro_login_as.lng b/interface/web/login/lib/lang/ro_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/ro_login_as.lng +++ b/interface/web/login/lib/lang/ro_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 63031d4d09..46a3eab288 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 @@ <?php $wb['login_1_txt'] = 'Ð’Ñ‹ хотите войти как пользователь'; -$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \\"вернутьÑÑ\\", нажав на \\"выход\\".'; +$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \"вернутьÑÑ\", нажав на \"выход\".'; $wb['btn_yes_txt'] = 'Да, войти как Клиент'; $wb['btn_back_txt'] = 'Ðет, назад к ÑпиÑку'; $wb['udp_port_help_txt'] = 'ПеречиÑлить через запÑтую'; $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 порта. ДопуÑтимые Ñиволы - цифры, \":\" и \",\"'; $wb['login_as_or_logout_txt'] = 'Ð’Ñ‹ хотите заново войти как {UTYPE} или выйти?'; ?> diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng index 17a82080dc..203832c7b7 100644 --- a/interface/web/login/lib/lang/se_login_as.lng +++ b/interface/web/login/lib/lang/se_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Vill du loggga in som användare'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Ja, logga in som kund'; $wb['btn_back_txt'] = 'Nej, tillbaka till listan'; $wb['udp_port_help_txt'] = 'Avdelade med kommatecken'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/sk_login_as.lng b/interface/web/login/lib/lang/sk_login_as.lng index cf75b54b47..68cb3318e5 100644 --- a/interface/web/login/lib/lang/sk_login_as.lng +++ b/interface/web/login/lib/lang/sk_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng index f7f12feeff..a000d44342 100644 --- a/interface/web/login/lib/lang/tr_login_as.lng +++ b/interface/web/login/lib/lang/tr_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz'; -$wb['login_2_txt'] = '\\"Geri dönmek\\" için oturumu kapat üzerine tıklayın.'; +$wb['login_2_txt'] = '\"Geri dönmek\" için oturumu kapat üzerine tıklayın.'; $wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç'; $wb['btn_back_txt'] = 'Hayır, listeye geri dön'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/mail/lib/lang/ar_mail_get.lng b/interface/web/mail/lib/lang/ar_mail_get.lng index 8ae7712151..5d6a72fbfb 100644 --- a/interface/web/mail/lib/lang/ar_mail_get.lng +++ b/interface/web/mail/lib/lang/ar_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_get.lng b/interface/web/mail/lib/lang/bg_mail_get.lng index e1b1935d32..305256d5c6 100644 --- a/interface/web/mail/lib/lang/bg_mail_get.lng +++ b/interface/web/mail/lib/lang/bg_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index f91d40f625..a786566277 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/ca_mail_get.lng b/interface/web/mail/lib/lang/ca_mail_get.lng index a13a1b03f6..9300a29049 100644 --- a/interface/web/mail/lib/lang/ca_mail_get.lng +++ b/interface/web/mail/lib/lang/ca_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.'; $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.'; $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n\'est pas un nom de domaine valide.'; $wb['source_read_all_txt'] = 'Récupérer tous les courriels (incl. les courriels lus)'; -$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les courriels après récupération\\" = non avec \\"Récupérer tous les courriels\\" = oui'; +$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les courriels après récupération\" = non avec \"Récupérer tous les courriels\" = oui'; $wb['source_delete_note_txt'] = 'Please check first if courriel retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_get.lng b/interface/web/mail/lib/lang/cz_mail_get.lng index cdb39b09a1..3dfee1a5ef 100644 --- a/interface/web/mail/lib/lang/cz_mail_get.lng +++ b/interface/web/mail/lib/lang/cz_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdné.'; $wb['destination_error_isemail'] = 'Nevybrán žádný cÃl.'; $wb['source_server_error_regex'] = 'POP3/IMAP server nenà validnà doménový název.'; $wb['source_read_all_txt'] = 'NaÄÃst vÅ¡echny e-maily (vÄetnÄ› již pÅ™eÄtené poÅ¡ty)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'ProsÃm, zkontrolujte nejprve, zda pÅ™ÃjÃmánà e-mailů funguje, než aktivujete tuto možnost.'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng index e1f7dfbfa5..f534d6c8e9 100644 --- a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng @@ -16,7 +16,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['listname_error_unique'] = 'Na serveru je již shodný \\"název seznamu\\". ProsÃm, vyberte si jiný \\"název seznamu\\".'; +$wb['listname_error_unique'] = 'Na serveru je již shodný \"název seznamu\". ProsÃm, vyberte si jiný \"název seznamu\".'; $wb['email_error_isemail'] = 'E-mailová adresa je neplatná.'; $wb['mailinglist_txt'] = 'E-mailové konference'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_get.lng b/interface/web/mail/lib/lang/dk_mail_get.lng index 1fa44cb6ad..dc0b7455ac 100644 --- a/interface/web/mail/lib/lang/dk_mail_get.lng +++ b/interface/web/mail/lib/lang/dk_mail_get.lng @@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Brugernavn er tom.'; $wb['source_password_error_isempty'] = 'Adgangskode er tom.'; $wb['destination_error_isemail'] = 'Ingen destination er valgt.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server er ikke et gyldigt domænenavn.'; -$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \\"Slet e-mails efter hentning\\" = nej sammen med \\"Hent alle e-mails\\" = ja'; +$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \"Slet e-mails efter hentning\" = nej sammen med \"Hent alle e-mails\" = ja'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_get.lng b/interface/web/mail/lib/lang/el_mail_get.lng index 0ec9645c8f..cc2c261a5b 100644 --- a/interface/web/mail/lib/lang/el_mail_get.lng +++ b/interface/web/mail/lib/lang/el_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Το Συνθηματικό δεν Îχ $wb['destination_error_isemail'] = 'Δεν επιλÎχθηκε Ï€ÏοοÏισμός.'; $wb['source_server_error_regex'] = 'Το όνομα του Pop3/Imap Server δεν είναι ÎγκυÏο.'; $wb['source_read_all_txt'] = 'Ανάκτηση όλων των emails (συμπεÏ. αναγνωσμÎνων mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng index 797aeeeb60..787007a7fc 100755 --- a/interface/web/mail/lib/lang/es.lng +++ b/interface/web/mail/lib/lang/es.lng @@ -8,7 +8,7 @@ $wb['Domain'] = 'Dominio'; $wb['Email Accounts'] = 'Cuentas de correo'; $wb['Email Alias'] = 'Alias de correo'; $wb['Email Blacklist'] = 'Lista negra de correo'; -$wb['Email Catchall'] = 'Correo \\"recoge-todo\\"'; +$wb['Email Catchall'] = 'Correo \"recoge-todo\"'; $wb['Email filter'] = 'Filtro de correo'; $wb['Email Forward'] = 'ReenvÃo de correo'; $wb['Email Mailbox'] = 'Buzón de correo'; diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng index 48ead68ac1..ed6c9b5db4 100755 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng @@ -3,9 +3,9 @@ $wb['active_txt'] = 'Habilitado'; $wb['destination_error_isemail'] = 'El destinatario no es una dirección de correo válida.'; $wb['destination_txt'] = 'Correo de destino'; $wb['domain_error_regex'] = 'El nombre de dominio es inválido o contiene caracteres no permitidos.'; -$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \\"recoge-todo\\".'; +$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \"recoge-todo\".'; $wb['domain_txt'] = 'Dominio'; -$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \\"recoge-todo\\" para correo permitidos para su cuenta.'; +$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \"recoge-todo\" para correo permitidos para su cuenta.'; $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.'; $wb['source_txt'] = 'Origen'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng index 8288430a18..fc3fde1956 100755 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng @@ -1,9 +1,9 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['add_new_record_txt'] = 'Añadir correo \\"recoge-todo\\"'; +$wb['add_new_record_txt'] = 'Añadir correo \"recoge-todo\"'; $wb['destination_txt'] = 'Dirección de correo de destino'; $wb['domain_txt'] = 'Dominio'; -$wb['list_head_txt'] = 'Correo \\"recoge-todo\\"'; +$wb['list_head_txt'] = 'Correo \"recoge-todo\"'; $wb['server_id_txt'] = 'Servidor'; $wb['source_txt'] = 'Origen'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng index 81de60b038..47529e27c6 100755 --- a/interface/web/mail/lib/lang/es_mail_get.lng +++ b/interface/web/mail/lib/lang/es_mail_get.lng @@ -2,7 +2,7 @@ $wb['active_txt'] = 'Habilitado'; $wb['destination_error_isemail'] = 'No ha seleccionado un destinatario.'; $wb['destination_txt'] = 'Destino'; -$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \\"Borrar correos después de recuperarlos\\" = NO al mismo tiempo que \\"Recuperar todos los correos\\" = SI'; +$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \"Borrar correos después de recuperarlos\" = NO al mismo tiempo que \"Recuperar todos los correos\" = SI'; $wb['limit_fetchmail_txt'] = 'Ha alcanzado el número máx. de registros de recuperación de correo permitidos para su cuenta.'; $wb['server_id_txt'] = 'Servidor'; $wb['source_delete_note_txt'] = 'Por favor, verifique que funcione la recuperación de correos antes de activar esta opción.'; diff --git a/interface/web/mail/lib/lang/fi_mail_get.lng b/interface/web/mail/lib/lang/fi_mail_get.lng index 063a37bf04..9eca1d8498 100755 --- a/interface/web/mail/lib/lang/fi_mail_get.lng +++ b/interface/web/mail/lib/lang/fi_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Salasana-kenttä on tyhjä.'; $wb['destination_error_isemail'] = 'Ei kohdetta valittuna.'; $wb['source_server_error_regex'] = 'Pop3/Imap-palvelin ei ole kelvollinen osoite.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_get.lng b/interface/web/mail/lib/lang/fr_mail_get.lng index 00f72f0c8b..118ab5ed32 100644 --- a/interface/web/mail/lib/lang/fr_mail_get.lng +++ b/interface/web/mail/lib/lang/fr_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.'; $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.'; $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n’est pas un nom de domaine valide.'; $wb['source_read_all_txt'] = 'Récupérer tous les emails (incl. les emails lus)'; -$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les emails après récupération\\" = non avec \\"Récupérer tous les emails\\" = oui'; +$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les emails après récupération\" = non avec \"Récupérer tous les emails\" = oui'; $wb['source_delete_note_txt'] = 'Please check first if e-mail retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_get.lng b/interface/web/mail/lib/lang/hr_mail_get.lng index 18c53a4d53..025bb136b0 100644 --- a/interface/web/mail/lib/lang/hr_mail_get.lng +++ b/interface/web/mail/lib/lang/hr_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_get.lng b/interface/web/mail/lib/lang/hu_mail_get.lng index 59cb26dd6a..a02a1fe114 100644 --- a/interface/web/mail/lib/lang/hu_mail_get.lng +++ b/interface/web/mail/lib/lang/hu_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Jelszó üres.'; $wb['destination_error_isemail'] = 'Nem választott cÃmzettet.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_get.lng b/interface/web/mail/lib/lang/id_mail_get.lng index cec2466f28..7617cbc7df 100644 --- a/interface/web/mail/lib/lang/id_mail_get.lng +++ b/interface/web/mail/lib/lang/id_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Kata Sandi kosong.'; $wb['destination_error_isemail'] = 'Tidak ada tujuan yang dipilih.'; $wb['source_server_error_regex'] = 'Server Pop3/Imap bukan merupakan nama domain yang valid.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_get.lng b/interface/web/mail/lib/lang/it_mail_get.lng index 70770c22d4..3b443a7268 100644 --- a/interface/web/mail/lib/lang/it_mail_get.lng +++ b/interface/web/mail/lib/lang/it_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Valore Password vuoto.'; $wb['destination_error_isemail'] = 'Nessuna destinazione selezionata.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server non è un nome dominio valido.'; $wb['source_read_all_txt'] = 'Recupera tutte le email (incluso mail lette)'; -$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \\"Elimina mail dopo averle scaricate \\" = NO assieme a \\"Recupera tutte le email\\" = SI'; +$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \"Elimina mail dopo averle scaricate \" = NO assieme a \"Recupera tutte le email\" = SI'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_get.lng b/interface/web/mail/lib/lang/ja_mail_get.lng index 3c5c9ec092..f1c45256bf 100644 --- a/interface/web/mail/lib/lang/ja_mail_get.lng +++ b/interface/web/mail/lib/lang/ja_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'パスワードを指定ã—ã¦ãã ã• $wb['destination_error_isemail'] = '宛先をé¸æŠžã—ã¦ãã ã•ã„。'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng index 5cbeab14e7..6752b42cd8 100644 --- a/interface/web/mail/lib/lang/nl_mail_get.lng +++ b/interface/web/mail/lib/lang/nl_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.'; $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.'; $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 94dd018332..acc2da94e1 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -36,7 +36,7 @@ $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; $wb['autoresponder_active'] = 'Inschakelen autoresponder'; $wb['cc_txt'] = 'Stuur kopie naar'; -$wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres'; +$wb['cc_error_isemail'] = 'Het \"Stuur kopie naar\" veld bevat geen geldig e-mail adres'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; @@ -60,6 +60,6 @@ $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; -$wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; +$wb['sender_cc_error_isemail'] = 'Het \"Stuur uitgaande kopie aan\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_get.lng b/interface/web/mail/lib/lang/pt_mail_get.lng index 883279a2d5..f3ea6227fa 100644 --- a/interface/web/mail/lib/lang/pt_mail_get.lng +++ b/interface/web/mail/lib/lang/pt_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Senha em branco.'; $wb['destination_error_isemail'] = 'Destino não seleccionado.'; $wb['source_server_error_regex'] = 'Servidor Pop3/Imap não é um nome de domÃnio válido.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_get.lng b/interface/web/mail/lib/lang/ro_mail_get.lng index 5e0a590f70..16a0b6aeb7 100644 --- a/interface/web/mail/lib/lang/ro_mail_get.lng +++ b/interface/web/mail/lib/lang/ro_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password este necompletat'; $wb['destination_error_isemail'] = 'Nici o destinatie nu e selectata'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng index b3f2f0b6bf..0ce613cd05 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 c8306f9838..ecc2d25b9d 100644 --- a/interface/web/mail/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ru_mail_user_filter.lng @@ -6,7 +6,7 @@ $wb['active_txt'] = 'Ðктивно'; $wb['rulename_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['searchterm_is_empty'] = 'Поле поиÑка пуÑтое.'; $wb['source_txt'] = 'ИÑточник'; -$wb['target_error_regex'] = 'Ðазначение может Ñодержать только Ñледующие Ñимволы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}'; +$wb['target_error_regex'] = 'Ðазначение может Ñодержать только Ñледующие Ñимволы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}'; $wb['limit_mailfilter_txt'] = 'МакÑимальное чиÑло почтовых фильтров доÑтигнуто.'; $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; diff --git a/interface/web/mail/lib/lang/se_mail_get.lng b/interface/web/mail/lib/lang/se_mail_get.lng index 9ed9710055..db4440210e 100644 --- a/interface/web/mail/lib/lang/se_mail_get.lng +++ b/interface/web/mail/lib/lang/se_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Lösenord är tomt.'; $wb['destination_error_isemail'] = 'Ingen destination vald.'; $wb['source_server_error_regex'] = 'POP3-/Imapserver är inte ett giltigt domännamn.'; $wb['source_read_all_txt'] = 'Hämta all epost (även läst epost)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Vänligen kontrollera först om eposthämtning fungerar innan du aktiverar detta val..'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_get.lng b/interface/web/mail/lib/lang/sk_mail_get.lng index e43899965d..8e180ca7a8 100644 --- a/interface/web/mail/lib/lang/sk_mail_get.lng +++ b/interface/web/mail/lib/lang/sk_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdne.'; $wb['destination_error_isemail'] = 'Žiadny Cieľ nebol vybraný.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server nie je valÃdne doménové meno.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng index b82b6c8c9a..3e29c26a71 100644 --- a/interface/web/mail/lib/lang/tr_mail_get.lng +++ b/interface/web/mail/lib/lang/tr_mail_get.lng @@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['source_password_error_isempty'] = 'Parola boÅŸ olamaz.'; $wb['destination_error_isemail'] = 'Hedef seçilmemiÅŸ.'; $wb['source_server_error_regex'] = 'POP3/IMAP Sunucu alan adı geçersiz.'; -$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \\"E-postalar alındıktan sonra silinsin\\" = Hayır iken \\"Tüm e-postalar alınsın\\" = Evet olamaz'; +$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \"E-postalar alındıktan sonra silinsin\" = Hayır iken \"Tüm e-postalar alınsın\" = Evet olamaz'; ?> 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 d834e4057a..f10dd4ddb2 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/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index f4acb3c45c..3a95c6e9c2 100755 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -27,7 +27,7 @@ $wb['monitor_logs_mailerr_txt'] = 'Registros de errores de correo'; $wb['monitor_logs_mailwarn_txt'] = 'Registros de advertencias de correo'; $wb['monitor_logs_messages_txt'] = 'Registros de mensajes del sistema'; $wb['monitor_norkhunter_txt'] = 'RKHunter no está instalado, por lo que no hay registros a mostrar'; -$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \\"mdadm\\" o \\"mpt-status\\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavÃa.'; +$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \"mdadm\" o \"mpt-status\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavÃa.'; $wb['monitor_serverstate_beancountercritical_txt'] = 'Existen muchos errores en el Beancounter'; $wb['monitor_serverstate_beancountererror_txt'] = 'Existen muchÃsimos errores en el Beancounter'; $wb['monitor_serverstate_beancounterinfo_txt'] = 'Existen algún error en el Beancounter'; diff --git a/interface/web/sites/lib/lang/ar.lng b/interface/web/sites/lib/lang/ar.lng index 6ca61afae0..bfd833292d 100644 --- a/interface/web/sites/lib/lang/ar.lng +++ b/interface/web/sites/lib/lang/ar.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ar_aps.lng b/interface/web/sites/lib/lang/ar_aps.lng index 881c146a4d..3ff130f57e 100644 --- a/interface/web/sites/lib/lang/ar_aps.lng +++ b/interface/web/sites/lib/lang/ar_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ar_web_childdomain.lng b/interface/web/sites/lib/lang/ar_web_childdomain.lng index 636505f248..604a81b68f 100644 --- a/interface/web/sites/lib/lang/ar_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ar_web_subdomain.lng b/interface/web/sites/lib/lang/ar_web_subdomain.lng index c5fa1711bb..1295f36697 100644 --- a/interface/web/sites/lib/lang/ar_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/bg.lng b/interface/web/sites/lib/lang/bg.lng index 0d28df2994..842b70ae02 100644 --- a/interface/web/sites/lib/lang/bg.lng +++ b/interface/web/sites/lib/lang/bg.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/bg_aps.lng b/interface/web/sites/lib/lang/bg_aps.lng index 6a5f981943..612adcd429 100644 --- a/interface/web/sites/lib/lang/bg_aps.lng +++ b/interface/web/sites/lib/lang/bg_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/bg_web_childdomain.lng b/interface/web/sites/lib/lang/bg_web_childdomain.lng index c7549b76f7..7106438c34 100644 --- a/interface/web/sites/lib/lang/bg_web_childdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/bg_web_subdomain.lng b/interface/web/sites/lib/lang/bg_web_subdomain.lng index 0df1e50594..f4218278d9 100644 --- a/interface/web/sites/lib/lang/bg_web_subdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 685ce6ed28..3fdd93585e 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -30,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 2bbadf6d1b..eab5b9f688 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 ac916feef1..57b97693eb 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 59b9fce627..518f0296e1 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 3df741ed9e..bb8d99ceb0 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 3cbc911ab3..c92bf5baa4 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 4acadb2c54..9d4f1951d8 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 ecff0c2ae8..1c53d16584 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -36,18 +36,18 @@ $wb['domain_error_empty'] = 'DomÃnio está em branco.'; $wb['domain_error_unique'] = 'Já existe apelido de domÃnio ou subdomÃnio com este nome.'; $wb['domain_error_regex'] = 'Nome de domÃnio é inválido.'; $wb['host_txt'] = 'Nome do servidor'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".'; +$wb['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'; diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 662fdb407c..4b2e77b654 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -52,10 +52,10 @@ $wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponÃvel'; $wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \\"a-z\\", \'0-9\' e \'.,-_\'.'; +$wb['ssl_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'; @@ -104,7 +104,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 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['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; $wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:'; $wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:'; diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 0ccc574805..8abb050438 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 4c72b1fd88..d30db9f189 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'; @@ -106,7 +106,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:'; 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 fa6ddad484..8a0c3e6a1f 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 4347f8ae36..b135d5e0fa 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.lng b/interface/web/sites/lib/lang/ca.lng index 9acee9d061..c914ef002f 100644 --- a/interface/web/sites/lib/lang/ca.lng +++ b/interface/web/sites/lib/lang/ca.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles'; $wb['Installed packages'] = 'Packages installés'; $wb['Update Packagelist'] = 'Mise à jour de la liste des packages'; $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)'; -$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/ca_aps.lng b/interface/web/sites/lib/lang/ca_aps.lng index 062d6ea589..7233c1f0dd 100644 --- a/interface/web/sites/lib/lang/ca_aps.lng +++ b/interface/web/sites/lib/lang/ca_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d\'installation choisi est invalide $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d\'utilisation (licence).'; $wb['error_no_database_pw'] = 'Vous n\'avez pas renseigné de mot de passe BDD valide.'; $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.'; -$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.'; -$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.'; -$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.'; -$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".'; -$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.'; +$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.'; +$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.'; +$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.'; +$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".'; +$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \"%s\" est invalide.'; +$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.'; +$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.'; +$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.'; $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d\'installation.'; $wb['installation_task_txt'] = 'Installation prévue'; $wb['installation_error_txt'] = 'Erreur d\'installation'; diff --git a/interface/web/sites/lib/lang/ca_web_childdomain.lng b/interface/web/sites/lib/lang/ca_web_childdomain.lng index 762acfe244..1d838990e3 100644 --- a/interface/web/sites/lib/lang/ca_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ca_web_subdomain.lng b/interface/web/sites/lib/lang/ca_web_subdomain.lng index 13fd0d66ef..ec5980a91b 100644 --- a/interface/web/sites/lib/lang/ca_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.'; $wb['proxy_directives_txt'] = 'Directives pour les Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :'; -$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng index 4c16438e34..2e4276c817 100644 --- a/interface/web/sites/lib/lang/cz.lng +++ b/interface/web/sites/lib/lang/cz.lng @@ -31,5 +31,5 @@ $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'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng index adf6ccf58e..bb8015951c 100644 --- a/interface/web/sites/lib/lang/cz_aps.lng +++ b/interface/web/sites/lib/lang/cz_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Instalace plánované'; $wb['installation_error_txt'] = 'Chyba instalace'; diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index 5a22de61de..e39dfc12ee 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -49,7 +49,7 @@ $wb['no_flag_txt'] = 'Žádný pÅ™Ãznak'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['ipv6_address_txt'] = 'IPv6 adresa'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; diff --git a/interface/web/sites/lib/lang/cz_web_subdomain.lng b/interface/web/sites/lib/lang/cz_web_subdomain.lng index cd301db143..986f76acc8 100644 --- a/interface/web/sites/lib/lang/cz_web_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Žádný pÅ™Ãznak'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/de_web_childdomain.lng b/interface/web/sites/lib/lang/de_web_childdomain.lng index 05b1f1d51d..561e8de968 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect'; $wb['no_flag_txt'] = 'Kein Flag'; $wb['proxy_directives_txt'] = 'Proxy-Direktiven'; $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:'; -$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.'; +$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.'; $wb['backup_interval_txt'] = 'Backup-Intervall'; $wb['backup_copies_txt'] = 'Anzahl der Backups'; $wb['ssl_key_txt'] = 'SSL-Schlüssel'; diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng index 586c90adc3..a88918b09a 100644 --- a/interface/web/sites/lib/lang/de_web_subdomain.lng +++ b/interface/web/sites/lib/lang/de_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect'; $wb['no_flag_txt'] = 'Kein Flag'; $wb['proxy_directives_txt'] = 'Proxy-Direktiven'; $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:'; -$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.'; +$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/dk.lng b/interface/web/sites/lib/lang/dk.lng index 39974fef5d..a99760a66e 100644 --- a/interface/web/sites/lib/lang/dk.lng +++ b/interface/web/sites/lib/lang/dk.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tilgængelig pakker'; $wb['Installed packages'] = 'Installeret pakker'; $wb['Update Packagelist'] = 'Opdater Pakkeliste'; $wb['Subdomain (Vhost)'] = 'Sub-domæne (Vhost)'; -$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/dk_aps.lng b/interface/web/sites/lib/lang/dk_aps.lng index ca006e2eb2..c3f2983cfd 100644 --- a/interface/web/sites/lib/lang/dk_aps.lng +++ b/interface/web/sites/lib/lang/dk_aps.lng @@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Den oplyste installations mappe er ugyldig.'; $wb['error_license_agreement'] = 'For at fortsætte skal du acceptere licensaftalen.'; $wb['error_no_database_pw'] = 'Du har ikke oplyst en database adgangskode.'; $wb['error_short_database_pw'] = 'Vælg en længer database adgangskode.'; -$wb['error_no_value_for'] = 'Feltet \\"%s\\" mÃ¥ ikke være tomt.'; -$wb['error_short_value_for'] = 'Feltet \\"%s\\" kræver en længere indtastnings værdi.'; -$wb['error_long_value_for'] = 'Feltet \\"%s\\" kræver en kortere indtastnings værdi.'; -$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \\"%s\\".'; -$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \\"%s\\".'; -$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \\"%s\\".'; -$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \\"%s\\".'; -$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \\"%s\\".'; +$wb['error_no_value_for'] = 'Feltet \"%s\" mÃ¥ ikke være tomt.'; +$wb['error_short_value_for'] = 'Feltet \"%s\" kræver en længere indtastnings værdi.'; +$wb['error_long_value_for'] = 'Feltet \"%s\" kræver en kortere indtastnings værdi.'; +$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \"%s\".'; +$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \"%s\".'; +$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \"%s\".'; +$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \"%s\".'; +$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \"%s\".'; $wb['error_used_location'] = 'Installations stien indeholder allerede en pakke installation.'; $wb['installation_task_txt'] = 'Installation planlagt'; $wb['installation_error_txt'] = 'Installations fejl'; diff --git a/interface/web/sites/lib/lang/dk_web_childdomain.lng b/interface/web/sites/lib/lang/dk_web_childdomain.lng index 762acfe244..1d838990e3 100644 --- a/interface/web/sites/lib/lang/dk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/dk_web_subdomain.lng b/interface/web/sites/lib/lang/dk_web_subdomain.lng index c14a347263..4fffd59365 100644 --- a/interface/web/sites/lib/lang/dk_web_subdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Ingen redirect'; $wb['no_flag_txt'] = 'Ingen flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Tilgængelig Proxy Direktiv Kodestykker:'; -$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/el.lng b/interface/web/sites/lib/lang/el.lng index 2d726140fd..19bfc27349 100644 --- a/interface/web/sites/lib/lang/el.lng +++ b/interface/web/sites/lib/lang/el.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/el_aps.lng b/interface/web/sites/lib/lang/el_aps.lng index 0209737f61..73cb49f106 100644 --- a/interface/web/sites/lib/lang/el_aps.lng +++ b/interface/web/sites/lib/lang/el_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/el_web_childdomain.lng b/interface/web/sites/lib/lang/el_web_childdomain.lng index 3c5cb7a936..a1cead28e3 100644 --- a/interface/web/sites/lib/lang/el_web_childdomain.lng +++ b/interface/web/sites/lib/lang/el_web_childdomain.lng @@ -45,7 +45,7 @@ $wb['no_flag_txt'] = 'ΧωÏίς Σημαία'; $wb['domain_error_wildcard'] = 'Wildcard subdomains δεν επιτÏÎπονται.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'ΔιαθÎσιμα Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Ο Ï„Ïπος ανακατεÏθυνσης \\"proxy\\" απαιτεί Îνα URL ως μονοπάτι ανακατεÏθυνσης.'; +$wb['error_proxy_requires_url'] = 'Ο Ï„Ïπος ανακατεÏθυνσης \"proxy\" απαιτεί Îνα URL ως μονοπάτι ανακατεÏθυνσης.'; $wb['ssl_domain_txt'] = 'SSL Domain'; $wb['web_folder_error_regex'] = 'Εισάγατε μη ÎγκυÏο φάκελο. Μην εισάγετε την κάθετο.'; $wb['ipv6_address_txt'] = 'ΔιεÏθυνση IPv6'; diff --git a/interface/web/sites/lib/lang/el_web_subdomain.lng b/interface/web/sites/lib/lang/el_web_subdomain.lng index 606137bc82..b3f8e1312f 100644 --- a/interface/web/sites/lib/lang/el_web_subdomain.lng +++ b/interface/web/sites/lib/lang/el_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'ΧωÏίς Σημαία'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng index 7d128081f6..78cfa3a609 100755 --- a/interface/web/sites/lib/lang/es.lng +++ b/interface/web/sites/lib/lang/es.lng @@ -8,7 +8,7 @@ $wb['Cron'] = 'Trabajos programados'; $wb['Database User'] = 'Usuarios de bases de datos'; $wb['Database'] = 'Bases de datos'; $wb['Domain'] = 'Dominio'; -$wb['error_proxy_requires_url'] = 'La redirección del tipo \\"proxy\\" requiere de una URL como ruta de redirección.'; +$wb['error_proxy_requires_url'] = 'La redirección del tipo \"proxy\" requiere de una URL como ruta de redirección.'; $wb['Folder users'] = 'Usuarios de carpetas protegidas'; $wb['Folder'] = 'Carpetas protegidas'; $wb['FTP'] = 'FTP'; diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng index 3780b32edd..afecc225fc 100755 --- a/interface/web/sites/lib/lang/es_aps.lng +++ b/interface/web/sites/lib/lang/es_aps.lng @@ -12,20 +12,20 @@ $wb['config_script_txt'] = 'Archivo de configuración'; $wb['database_txt'] = 'Base de datos'; $wb['description_txt'] = 'Descripción'; $wb['details_txt'] = 'Detalles'; -$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \\"%s\\".'; -$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \\"%s\\".'; -$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \\"%s\\".'; -$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \\"%s\\".'; +$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \"%s\".'; +$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \"%s\".'; +$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \"%s\".'; +$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \"%s\".'; $wb['error_inv_main_location'] = 'La ubicación de la carpeta de instalación proporcionada es inválida.'; -$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \\"%s\\".'; +$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \"%s\".'; $wb['error_license_agreement'] = 'Para poder continuar debe aceptar el acuerdo de licencia.'; -$wb['error_long_value_for'] = 'El campo \\"%s\\" requiere una entrada más corta.'; +$wb['error_long_value_for'] = 'El campo \"%s\" requiere una entrada más corta.'; $wb['error_main_domain'] = 'El dominio de la ruta de la instalación es inválido.'; $wb['error_no_database_pw'] = 'No ha proporcionado una contraseña válida para la base de datos.'; $wb['error_no_main_location'] = 'Ha proporcionado una ruta de instalación inválida.'; -$wb['error_no_value_for'] = 'El campo \\"%s\\" no puede estar vacÃo.'; +$wb['error_no_value_for'] = 'El campo \"%s\" no puede estar vacÃo.'; $wb['error_short_database_pw'] = 'Por favor seleccione un contraseña más larga para la base de datos.'; -$wb['error_short_value_for'] = 'El campo \\"%s\\" requiere una entrada más larga.'; +$wb['error_short_value_for'] = 'El campo \"%s\" requiere una entrada más larga.'; $wb['error_used_location'] = 'La ruta de instalación ya contiene un paquete instalado.'; $wb['homepage_txt'] = 'Página de inicio'; $wb['install_language_txt'] = 'Idioma de la interfaz'; diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng index 25843a0e21..839110669f 100644 --- a/interface/web/sites/lib/lang/es_web_childdomain.lng +++ b/interface/web/sites/lib/lang/es_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Sin flag'; $wb['domain_error_wildcard'] = 'No se permiten subdominios comodÃn.'; $wb['proxy_directives_txt'] = 'Directivas de Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Fragmentos de directivas de proxy disponibles:'; -$wb['error_proxy_requires_url'] = 'Tipo de redirección \\"proxy\\" necesita una URL como ruta de redirección.'; +$wb['error_proxy_requires_url'] = 'Tipo de redirección \"proxy\" necesita una URL como ruta de redirección.'; $wb['backup_interval_txt'] = 'Intervalo de copia de seguridad'; $wb['backup_copies_txt'] = 'Número de copias de seguridad'; $wb['ssl_key_txt'] = 'Clave SSL'; @@ -104,7 +104,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; +$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; $wb['generate_password_txt'] = 'Generar contraseña'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/sites/lib/lang/es_web_subdomain.lng b/interface/web/sites/lib/lang/es_web_subdomain.lng index 2221a749c2..8bae76742c 100644 --- a/interface/web/sites/lib/lang/es_web_subdomain.lng +++ b/interface/web/sites/lib/lang/es_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index f98c02db15..4a2b17cab7 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -102,7 +102,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; +$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; $wb['generate_password_txt'] = 'Generar contraseña'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/sites/lib/lang/fi.lng b/interface/web/sites/lib/lang/fi.lng index ebf94bc190..5adab57775 100755 --- a/interface/web/sites/lib/lang/fi.lng +++ b/interface/web/sites/lib/lang/fi.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/fi_aps.lng b/interface/web/sites/lib/lang/fi_aps.lng index d78701f272..cc8dc83588 100644 --- a/interface/web/sites/lib/lang/fi_aps.lng +++ b/interface/web/sites/lib/lang/fi_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng index 5105ba3f2e..98c41088a1 100755 --- a/interface/web/sites/lib/lang/fi_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/fi_web_subdomain.lng b/interface/web/sites/lib/lang/fi_web_subdomain.lng index 7fe7103905..7500fb7a61 100644 --- a/interface/web/sites/lib/lang/fi_web_subdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/fr.lng b/interface/web/sites/lib/lang/fr.lng index 9acee9d061..c914ef002f 100644 --- a/interface/web/sites/lib/lang/fr.lng +++ b/interface/web/sites/lib/lang/fr.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles'; $wb['Installed packages'] = 'Packages installés'; $wb['Update Packagelist'] = 'Mise à jour de la liste des packages'; $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)'; -$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/fr_aps.lng b/interface/web/sites/lib/lang/fr_aps.lng index 6beef9939f..0f067e78bc 100644 --- a/interface/web/sites/lib/lang/fr_aps.lng +++ b/interface/web/sites/lib/lang/fr_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d’installation choisi est invalid $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d’utilisation (licence).'; $wb['error_no_database_pw'] = 'Vous n’avez pas renseigné de mot de passe BDD valide.'; $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.'; -$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.'; -$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.'; -$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.'; -$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".'; -$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.'; -$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.'; +$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.'; +$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.'; +$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.'; +$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".'; +$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \"%s\" est invalide.'; +$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.'; +$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.'; +$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.'; $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d’installation.'; $wb['installation_task_txt'] = 'Installation prévue'; $wb['installation_error_txt'] = 'Erreur d’installation'; diff --git a/interface/web/sites/lib/lang/fr_web_childdomain.lng b/interface/web/sites/lib/lang/fr_web_childdomain.lng index 1be206e122..f33ca58f09 100644 --- a/interface/web/sites/lib/lang/fr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/fr_web_subdomain.lng b/interface/web/sites/lib/lang/fr_web_subdomain.lng index 957dfbfed6..6dfc914a0a 100644 --- a/interface/web/sites/lib/lang/fr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.'; $wb['proxy_directives_txt'] = 'Directives pour les Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :'; -$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/hr.lng b/interface/web/sites/lib/lang/hr.lng index b6af1225ac..4c53c89843 100644 --- a/interface/web/sites/lib/lang/hr.lng +++ b/interface/web/sites/lib/lang/hr.lng @@ -30,6 +30,6 @@ $wb['Available packages'] = 'Dostupni paketi'; $wb['Installed packages'] = 'Instalirani paketi'; $wb['Update Packagelist'] = 'Osvježi listu paketa'; $wb['Subdomain (Vhost)'] = 'Poddomena (Vhost)'; -$wb['error_proxy_requires_url'] = '\\"proxy\\" redirekcija zahtijeva URL za redirekcijsku putanju.'; +$wb['error_proxy_requires_url'] = '\"proxy\" redirekcija zahtijeva URL za redirekcijsku putanju.'; $wb['Domain'] = 'Domain'; ?> diff --git a/interface/web/sites/lib/lang/hr_aps.lng b/interface/web/sites/lib/lang/hr_aps.lng index 79d31cf7fa..6169342e71 100644 --- a/interface/web/sites/lib/lang/hr_aps.lng +++ b/interface/web/sites/lib/lang/hr_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Instalacija u postupku'; $wb['installation_error_txt'] = 'Instalacijska greÅ¡ka'; diff --git a/interface/web/sites/lib/lang/hr_web_childdomain.lng b/interface/web/sites/lib/lang/hr_web_childdomain.lng index 99df0d2fdf..f0e69f24f8 100644 --- a/interface/web/sites/lib/lang/hr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/hr_web_subdomain.lng b/interface/web/sites/lib/lang/hr_web_subdomain.lng index 76d7f39571..18fe4630a4 100644 --- a/interface/web/sites/lib/lang/hr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja'; $wb['domain_error_wildcard'] = 'Wildcard poddomene nisu dozvoljene.'; $wb['proxy_directives_txt'] = 'Proxy direktive'; $wb['available_proxy_directive_snippets_txt'] = 'Dostupne proxy direktive:'; -$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \\"proxy\\" zahtjeva URL kao redirekcijsku putanju.'; +$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \"proxy\" zahtjeva URL kao redirekcijsku putanju.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/hu.lng b/interface/web/sites/lib/lang/hu.lng index 2c156a4775..1a3e31d3f9 100644 --- a/interface/web/sites/lib/lang/hu.lng +++ b/interface/web/sites/lib/lang/hu.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/hu_aps.lng b/interface/web/sites/lib/lang/hu_aps.lng index 88708732df..9330a1fb45 100644 --- a/interface/web/sites/lib/lang/hu_aps.lng +++ b/interface/web/sites/lib/lang/hu_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/hu_web_childdomain.lng b/interface/web/sites/lib/lang/hu_web_childdomain.lng index 5ac19c3bbc..aa554d4bc4 100644 --- a/interface/web/sites/lib/lang/hu_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/hu_web_subdomain.lng b/interface/web/sites/lib/lang/hu_web_subdomain.lng index 84874b22c5..79c9ecc700 100644 --- a/interface/web/sites/lib/lang/hu_web_subdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/id.lng b/interface/web/sites/lib/lang/id.lng index c8510df6cb..4fdae1813f 100644 --- a/interface/web/sites/lib/lang/id.lng +++ b/interface/web/sites/lib/lang/id.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/id_aps.lng b/interface/web/sites/lib/lang/id_aps.lng index b8c9af2152..6f6d0bced2 100644 --- a/interface/web/sites/lib/lang/id_aps.lng +++ b/interface/web/sites/lib/lang/id_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/id_web_childdomain.lng b/interface/web/sites/lib/lang/id_web_childdomain.lng index d5fd9711a4..2b97dc223a 100644 --- a/interface/web/sites/lib/lang/id_web_childdomain.lng +++ b/interface/web/sites/lib/lang/id_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/id_web_subdomain.lng b/interface/web/sites/lib/lang/id_web_subdomain.lng index c2d007e693..7f51be8e44 100644 --- a/interface/web/sites/lib/lang/id_web_subdomain.lng +++ b/interface/web/sites/lib/lang/id_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/it.lng b/interface/web/sites/lib/lang/it.lng index 77473bd0f8..2237545be9 100644 --- a/interface/web/sites/lib/lang/it.lng +++ b/interface/web/sites/lib/lang/it.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Pacchetti disponibili'; $wb['Installed packages'] = 'Pacchetti Installati'; $wb['Update Packagelist'] = 'Aggiorna Elenco Pacchetti'; $wb['Subdomain (Vhost)'] = 'Sottodominio (Vhost)'; -$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso del reinderizzamento.'; +$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso del reinderizzamento.'; ?> diff --git a/interface/web/sites/lib/lang/it_aps.lng b/interface/web/sites/lib/lang/it_aps.lng index 0a6365f98f..ade7808616 100644 --- a/interface/web/sites/lib/lang/it_aps.lng +++ b/interface/web/sites/lib/lang/it_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'La cartella di installazione fornita non è va $wb['error_license_agreement'] = 'Per poter proseguire è necessario che prendi visione ed accetti l accordi di licenza.'; $wb['error_no_database_pw'] = 'La password fornita non è valida.'; $wb['error_short_database_pw'] = 'Per favore scegli una password di database più lunga.'; -$wb['error_no_value_for'] = 'Il campo \\"%s\\" non può essere vuoto.'; -$wb['error_short_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più lungo.'; -$wb['error_long_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più corto.'; -$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \\"%s\\".'; -$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \\"%s\\".'; -$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \\"%s\\".'; -$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo \\"%s\\".'; -$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \\"%s\\".'; +$wb['error_no_value_for'] = 'Il campo \"%s\" non può essere vuoto.'; +$wb['error_short_value_for'] = 'Il campo \"%s\" richiede un valore immesso più lungo.'; +$wb['error_long_value_for'] = 'Il campo \"%s\" richiede un valore immesso più corto.'; +$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \"%s\".'; +$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \"%s\".'; +$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \"%s\".'; +$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo \"%s\".'; +$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \"%s\".'; $wb['error_used_location'] = 'L installazione della patch contiene già un pacchetto di installazione.'; $wb['installation_task_txt'] = 'Installazione pianificata'; $wb['installation_error_txt'] = 'Errore di installazione'; diff --git a/interface/web/sites/lib/lang/it_web_childdomain.lng b/interface/web/sites/lib/lang/it_web_childdomain.lng index 3a214e298e..edd32aa6db 100644 --- a/interface/web/sites/lib/lang/it_web_childdomain.lng +++ b/interface/web/sites/lib/lang/it_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/it_web_subdomain.lng b/interface/web/sites/lib/lang/it_web_subdomain.lng index 956b5c3be0..0019304914 100644 --- a/interface/web/sites/lib/lang/it_web_subdomain.lng +++ b/interface/web/sites/lib/lang/it_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Non sono ammessi caratteri jolly per i sottodomini.'; $wb['proxy_directives_txt'] = 'Direttive Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Snippets Direttive Proxy disponibili:'; -$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso di reinderizzamento.'; +$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso di reinderizzamento.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ja.lng b/interface/web/sites/lib/lang/ja.lng index 920064bc5e..470ec2baec 100644 --- a/interface/web/sites/lib/lang/ja.lng +++ b/interface/web/sites/lib/lang/ja.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ja_aps.lng b/interface/web/sites/lib/lang/ja_aps.lng index dc6b22edf7..91f8ad102c 100644 --- a/interface/web/sites/lib/lang/ja_aps.lng +++ b/interface/web/sites/lib/lang/ja_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ja_web_childdomain.lng b/interface/web/sites/lib/lang/ja_web_childdomain.lng index d59d7bbda5..fe885c8c3e 100644 --- a/interface/web/sites/lib/lang/ja_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ja_web_subdomain.lng b/interface/web/sites/lib/lang/ja_web_subdomain.lng index 5eb45907ea..f77c98444e 100644 --- a/interface/web/sites/lib/lang/ja_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/nl.lng b/interface/web/sites/lib/lang/nl.lng index 8e07a1844a..89a4caa109 100644 --- a/interface/web/sites/lib/lang/nl.lng +++ b/interface/web/sites/lib/lang/nl.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Beschikbare pakketten'; $wb['Installed packages'] = 'Geïnstalleerde pakketten'; $wb['Update Packagelist'] = 'Pakkettenlijst bijwerken'; $wb['Subdomain (Vhost)'] = 'Subdomein (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/nl_aps.lng b/interface/web/sites/lib/lang/nl_aps.lng index c0adacee99..dfd852dcd0 100644 --- a/interface/web/sites/lib/lang/nl_aps.lng +++ b/interface/web/sites/lib/lang/nl_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/nl_web_childdomain.lng b/interface/web/sites/lib/lang/nl_web_childdomain.lng index e99616ce11..4c5b3dc2ad 100644 --- a/interface/web/sites/lib/lang/nl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/nl_web_subdomain.lng b/interface/web/sites/lib/lang/nl_web_subdomain.lng index 2f4412afba..c644d8113d 100644 --- a/interface/web/sites/lib/lang/nl_web_subdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Geen flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomeinen zijn niet toegestaan.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port niet correct.'; diff --git a/interface/web/sites/lib/lang/pl_aps.lng b/interface/web/sites/lib/lang/pl_aps.lng index c17bbca532..398c74e4c0 100644 --- a/interface/web/sites/lib/lang/pl_aps.lng +++ b/interface/web/sites/lib/lang/pl_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Instalacja w podanym folderze jest niemożliwa $wb['error_license_agreement'] = 'Aby kontynuować musisz zaakceptować umowÄ™ licencyjnÄ….'; $wb['error_no_database_pw'] = 'Nie podaÅ‚eÅ› prawidÅ‚owego hasÅ‚a do bazy danych.'; $wb['error_short_database_pw'] = 'Wybierz dÅ‚uższe hasÅ‚o do bazy.'; -$wb['error_no_value_for'] = 'Pole \\"%s\\" nie może być puste'; -$wb['error_short_value_for'] = 'Pole \\"%s\\" wymaga dÅ‚uższej wartoÅ›ci'; -$wb['error_long_value_for'] = 'Pole \\"%s\\" wymaga krótszej wartoÅ›ci'; -$wb['error_inv_value_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… wartość w polu \\"%s\\"'; -$wb['error_inv_email_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owy adres email w polu \\"%s\\"'; -$wb['error_inv_domain_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… domenÄ™ w polu \\"%s\\"'; -$wb['error_inv_integer_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \\"%s\\"'; -$wb['error_inv_float_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \\"%s\\"'; +$wb['error_no_value_for'] = 'Pole \"%s\" nie może być puste'; +$wb['error_short_value_for'] = 'Pole \"%s\" wymaga dÅ‚uższej wartoÅ›ci'; +$wb['error_long_value_for'] = 'Pole \"%s\" wymaga krótszej wartoÅ›ci'; +$wb['error_inv_value_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… wartość w polu \"%s\"'; +$wb['error_inv_email_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owy adres email w polu \"%s\"'; +$wb['error_inv_domain_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… domenÄ™ w polu \"%s\"'; +$wb['error_inv_integer_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \"%s\"'; +$wb['error_inv_float_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \"%s\"'; $wb['error_used_location'] = 'Åšcieżka instalacji zawiera już zainstalowany pakiet.'; $wb['installation_task_txt'] = 'Instalacja planowana'; $wb['installation_error_txt'] = 'BÅ‚Ä…d instalacji'; diff --git a/interface/web/sites/lib/lang/pt.lng b/interface/web/sites/lib/lang/pt.lng index c1fca015b8..6cd9798fa1 100644 --- a/interface/web/sites/lib/lang/pt.lng +++ b/interface/web/sites/lib/lang/pt.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/pt_aps.lng b/interface/web/sites/lib/lang/pt_aps.lng index c17ef00914..33c4e87266 100644 --- a/interface/web/sites/lib/lang/pt_aps.lng +++ b/interface/web/sites/lib/lang/pt_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/pt_web_childdomain.lng b/interface/web/sites/lib/lang/pt_web_childdomain.lng index 4cbc032c19..688af77bd2 100644 --- a/interface/web/sites/lib/lang/pt_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/pt_web_subdomain.lng b/interface/web/sites/lib/lang/pt_web_subdomain.lng index 8a4f1440fd..8f2fd70e46 100644 --- a/interface/web/sites/lib/lang/pt_web_subdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ro.lng b/interface/web/sites/lib/lang/ro.lng index f674e91b80..418585ea55 100644 --- a/interface/web/sites/lib/lang/ro.lng +++ b/interface/web/sites/lib/lang/ro.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ro_aps.lng b/interface/web/sites/lib/lang/ro_aps.lng index 881c146a4d..3ff130f57e 100644 --- a/interface/web/sites/lib/lang/ro_aps.lng +++ b/interface/web/sites/lib/lang/ro_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ro_web_childdomain.lng b/interface/web/sites/lib/lang/ro_web_childdomain.lng index 30f83e7283..5f56786510 100644 --- a/interface/web/sites/lib/lang/ro_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ro_web_subdomain.lng b/interface/web/sites/lib/lang/ro_web_subdomain.lng index f36685be8a..436acc4cf9 100644 --- a/interface/web/sites/lib/lang/ro_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng index dbf2926043..6316c21d17 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 d2225358c1..3dd4ad0a8a 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 0f5eaf3180..b931b715f2 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 7de99a11dc..df927317ca 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 af71669a47..49905e77ea 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ðет флага'; $wb['domain_error_wildcard'] = 'Wildcard поддомены не допуÑкаютÑÑ.'; $wb['proxy_directives_txt'] = 'Директивы прокÑи'; $wb['available_proxy_directive_snippets_txt'] = 'ДоÑтупные заготовки директив Proxy:'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качеÑтве пути перенаправлениÑ.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качеÑтве пути перенаправлениÑ.'; $wb['backup_interval_txt'] = 'Интервал резервного копированиÑ'; $wb['backup_copies_txt'] = 'КоличеÑтво резервных копий'; $wb['ssl_key_txt'] = 'SSL-ключ'; diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng index 376c789430..46203a1815 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/se.lng b/interface/web/sites/lib/lang/se.lng index 6b44cdcf7c..a63670545c 100644 --- a/interface/web/sites/lib/lang/se.lng +++ b/interface/web/sites/lib/lang/se.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tillgängliga paket'; $wb['Installed packages'] = 'Installerade paket'; $wb['Update Packagelist'] = 'Uppdatera paketlista'; $wb['Subdomain (Vhost)'] = 'Underdomän (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng index 3b32095d62..f399880dea 100644 --- a/interface/web/sites/lib/lang/se_aps.lng +++ b/interface/web/sites/lib/lang/se_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Installation planerad'; $wb['installation_error_txt'] = 'Installationsfel'; diff --git a/interface/web/sites/lib/lang/se_web_childdomain.lng b/interface/web/sites/lib/lang/se_web_childdomain.lng index eff6791c65..52fba020aa 100644 --- a/interface/web/sites/lib/lang/se_web_childdomain.lng +++ b/interface/web/sites/lib/lang/se_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/se_web_subdomain.lng b/interface/web/sites/lib/lang/se_web_subdomain.lng index ec784641e8..a2d73c012d 100644 --- a/interface/web/sites/lib/lang/se_web_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ingan flagga'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/sk.lng b/interface/web/sites/lib/lang/sk.lng index fabf52fda0..401ad2c65d 100644 --- a/interface/web/sites/lib/lang/sk.lng +++ b/interface/web/sites/lib/lang/sk.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/sk_aps.lng b/interface/web/sites/lib/lang/sk_aps.lng index d6e6c7f4ca..2b3dc9a0ff 100644 --- a/interface/web/sites/lib/lang/sk_aps.lng +++ b/interface/web/sites/lib/lang/sk_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; +$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/sk_web_childdomain.lng b/interface/web/sites/lib/lang/sk_web_childdomain.lng index e0d26667bc..c91bee49ac 100644 --- a/interface/web/sites/lib/lang/sk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/sk_web_subdomain.lng b/interface/web/sites/lib/lang/sk_web_subdomain.lng index f6bcffd901..d44bb27bd6 100644 --- a/interface/web/sites/lib/lang/sk_web_subdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng index d0570f6c12..4f8620c34a 100644 --- a/interface/web/sites/lib/lang/tr.lng +++ b/interface/web/sites/lib/lang/tr.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Kullanılabilecek Paketler'; $wb['Installed packages'] = 'Yüklü Paketler'; $wb['Update Packagelist'] = 'Güncelleme Paketi Listesi'; $wb['Subdomain (Vhost)'] = 'Alt alan adı (SSunucu)'; -$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; ?> diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng index 1c6ccd49a6..f0eea59cba 100644 --- a/interface/web/sites/lib/lang/tr_aps.lng +++ b/interface/web/sites/lib/lang/tr_aps.lng @@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü ge $wb['error_license_agreement'] = 'Devam etmek için lisans anlaÅŸmasını onaylamalısınız.'; $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.'; $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.'; -$wb['error_no_value_for'] = '\\"%s\\" alanı boÅŸ olamaz.'; -$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir deÄŸer yazılmalıdır.'; -$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir deÄŸer yazılmalıdır.'; -$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan deÄŸer geçersiz.'; -$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.'; -$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.'; -$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.'; -$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.'; +$wb['error_no_value_for'] = '\"%s\" alanı boÅŸ olamaz.'; +$wb['error_short_value_for'] = '\"%s\" alanına daha uzun bir deÄŸer yazılmalıdır.'; +$wb['error_long_value_for'] = '\"%s\" alanına daha kısa bir deÄŸer yazılmalıdır.'; +$wb['error_inv_value_for'] = '\"%s\" alanına yazılan deÄŸer geçersiz.'; +$wb['error_inv_email_for'] = '\"%s\" alanına yazılan e-posta adresi geçersiz.'; +$wb['error_inv_domain_for'] = '\"%s\" alanına yazılan alan adı geçersiz.'; +$wb['error_inv_integer_for'] = '\"%s\" alanına yazılan sayı geçersiz.'; +$wb['error_inv_float_for'] = '\"%s\" alanına yazılan küsuratlı sayı geçersiz.'; $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiÅŸ bir paket var.'; $wb['installation_task_txt'] = 'Yükleme planlandı'; $wb['installation_error_txt'] = 'Yükleme hatası'; diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index e11c6a92b5..5d68e809b3 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/tr_web_subdomain.lng b/interface/web/sites/lib/lang/tr_web_subdomain.lng index 188b257589..c6e28bc6fa 100644 --- a/interface/web/sites/lib/lang/tr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; $wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; -$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/vm/lib/lang/dk_openvz_template.lng b/interface/web/vm/lib/lang/dk_openvz_template.lng index 9de4a6fd92..7016f41a67 100644 --- a/interface/web/vm/lib/lang/dk_openvz_template.lng +++ b/interface/web/vm/lib/lang/dk_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Total størrelse af TCP send buffere.'; $wb['tcprcvbuf_desc_txt'] = 'Total størrelse af TCP modtage buffere.'; $wb['othersockbuf_desc_txt'] = 'Total størrelse af UNIX-domæne sokel buffere, UDP og andre datagram protokoller send buffere.'; $wb['dgramrcvbuf_desc_txt'] = 'Modtage buffere af UDP og andre datagram protokoller.'; -$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \\"over-booked\\" (out-of-memory kill guarantee), i sider.'; +$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \"over-booked\" (out-of-memory kill guarantee), i sider.'; $wb['privvmpages_desc_txt'] = 'Hukommelses grænse tildeling, i sider.'; $wb['lockedpages_desc_txt'] = 'Proces-sider uden tiladelse til at blive byttet ud (pages locked by mlock(2)).'; $wb['shmpages_desc_txt'] = 'Total størrelse af delt hukommelse (IPC, delt anonyme afbildninger og tmpfs objekter), i sider.'; diff --git a/interface/web/vm/lib/lang/es_openvz_template.lng b/interface/web/vm/lib/lang/es_openvz_template.lng index 1abd562ed5..1868240d3e 100644 --- a/interface/web/vm/lib/lang/es_openvz_template.lng +++ b/interface/web/vm/lib/lang/es_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Tamaño total de los buffers de envÃo TCP.'; $wb['tcprcvbuf_desc_txt'] = 'Tamaño total de los buffers de recepción TCP.'; $wb['othersockbuf_desc_txt'] = 'Tamaño total de buffers de socket UNIX-domain, UDP y otros protocolos de envÃo para buffers de datagramas.'; $wb['dgramrcvbuf_desc_txt'] = 'Recibir buffers de UDP y otros protocolos de datagrama.'; -$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \\"over-booked\\" (garantizado para out-of-memory kill), en las páginas.'; +$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \"over-booked\" (garantizado para out-of-memory kill), en las páginas.'; $wb['privvmpages_desc_txt'] = 'LÃmite de asignación de memoria en las páginas.'; $wb['lockedpages_desc_txt'] = 'Páginas de procesos sin permisos para sacar del swap (páginas bloqueadas por mlock(2)).'; $wb['shmpages_desc_txt'] = 'Tamaño total de memoria compatida (IPC, asignaciones anónimas compartidas y objetos tmpfs), en las páginas.'; diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng index fb1452e885..2621212862 100644 --- a/interface/web/vm/lib/lang/tr_openvz_template.lng +++ b/interface/web/vm/lib/lang/tr_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'TCP gönderme arabelleÄŸinin toplam boyutu.'; $wb['tcprcvbuf_desc_txt'] = 'TCP alma arabelleÄŸinin toplam boyutu.'; $wb['othersockbuf_desc_txt'] = 'UNIX alan adı soket arabelleÄŸinin toplam boyutu, UDP ve diÄŸer datagram iletiÅŸim kuralları gönderme ara bellekleri.'; $wb['dgramrcvbuf_desc_txt'] = 'UDP ve diÄŸer datagram iletiÅŸim kuralları alma ara bellekleri.'; -$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taÅŸması durumlarında garanti edilen bellek miktarı\\" (bellek bitti boÅŸaltma garantisi).'; +$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taÅŸması durumlarında garanti edilen bellek miktarı\" (bellek bitti boÅŸaltma garantisi).'; $wb['privvmpages_desc_txt'] = 'Bellek sayfası cinsinden ayrılacak bellek sınırı.'; $wb['lockedpages_desc_txt'] = 'Ä°ÅŸlem sayfaları takasına izin verilmez (mlock(2) ile kilitlenmiÅŸ sayfalar).'; $wb['shmpages_desc_txt'] = 'Bellek sayfası cinsinden, paylaşılan belleÄŸin toplam boyutu (IPC, paylaşılan anonim haritalama ve tmpfs nesneleri).'; -- GitLab From ffc60c2a940bf9bf63c418c7f5ae12b4ebef4da0 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 5 Jul 2019 19:36:38 +0200 Subject: [PATCH 046/571] Created upd_0087.sql file from upd_dev_collection.sql --- install/sql/incremental/upd_0087.sql | 85 +++++++++++++++++++ .../sql/incremental/upd_dev_collection.sql | 85 ------------------- 2 files changed, 85 insertions(+), 85 deletions(-) create mode 100644 install/sql/incremental/upd_0087.sql diff --git a/install/sql/incremental/upd_0087.sql b/install/sql/incremental/upd_0087.sql new file mode 100644 index 0000000000..55e3b846d7 --- /dev/null +++ b/install/sql/incremental/upd_0087.sql @@ -0,0 +1,85 @@ +ALTER TABLE `sys_datalog` ADD `session_id` varchar(64) NOT NULL DEFAULT '' AFTER `error`; +ALTER TABLE `sys_user` CHANGE `sys_userid` `sys_userid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by userid'; +ALTER TABLE `sys_user` CHANGE `sys_groupid` `sys_groupid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by groupid'; +ALTER TABLE `web_domain` ADD COLUMN `php_fpm_chroot` enum('n','y') NOT NULL DEFAULT 'n' AFTER `php_fpm_use_socket`; + +CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `ca_name` varchar(255) NOT NULL DEFAULT '', + `ca_issue` varchar(255) NOT NULL DEFAULT '', + `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', + `ca_iodef` text NOT NULL, + `ca_critical` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY (`ca_issue`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); + +UPDATE `dns_ssl_ca` SET `ca_issue` = 'comodo.com' WHERE `ca_issue` = 'comodoca.com'; +DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'geotrust.com'; +DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'thawte.com'; +UPDATE `dns_ssl_ca` SET `ca_name` = 'Symantec / Thawte / GeoTrust' WHERE `ca_issue` = 'symantec.com'; + +ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CAA','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; +INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); + +ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; +ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; +ALTER TABLE `firewall` CHANGE `tcp_port` `tcp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `firewall` CHANGE `udp_port` `udp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 55e3b846d7..e69de29bb2 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,85 +0,0 @@ -ALTER TABLE `sys_datalog` ADD `session_id` varchar(64) NOT NULL DEFAULT '' AFTER `error`; -ALTER TABLE `sys_user` CHANGE `sys_userid` `sys_userid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by userid'; -ALTER TABLE `sys_user` CHANGE `sys_groupid` `sys_groupid` INT(11) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Created by groupid'; -ALTER TABLE `web_domain` ADD COLUMN `php_fpm_chroot` enum('n','y') NOT NULL DEFAULT 'n' AFTER `php_fpm_use_socket`; - -CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `active` enum('N','Y') NOT NULL DEFAULT 'N', - `ca_name` varchar(255) NOT NULL DEFAULT '', - `ca_issue` varchar(255) NOT NULL DEFAULT '', - `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', - `ca_iodef` text NOT NULL, - `ca_critical` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY (`ca_issue`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - -ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); - -UPDATE `dns_ssl_ca` SET `ca_issue` = 'comodo.com' WHERE `ca_issue` = 'comodoca.com'; -DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'geotrust.com'; -DELETE FROM `dns_ssl_ca` WHERE `ca_issue` = 'thawte.com'; -UPDATE `dns_ssl_ca` SET `ca_name` = 'Symantec / Thawte / GeoTrust' WHERE `ca_issue` = 'symantec.com'; - -ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CAA','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; -ALTER TABLE `dns_rr` CHANGE `data` `data` TEXT NOT NULL; -INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); - -ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; -ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; -ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; -ALTER TABLE `firewall` CHANGE `tcp_port` `tcp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; -ALTER TABLE `firewall` CHANGE `udp_port` `udp_port` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; \ No newline at end of file -- GitLab From 7ee3e451be6231c8228a664876ed625a20964e92 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Jul 2019 12:47:55 +0200 Subject: [PATCH 047/571] Changed config for Ubuntu unknown from 1604 to 1804 --- install/lib/install.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 6b3a7cd623..1e49e025ca 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -186,7 +186,7 @@ function get_distname() { break; default: $relname = "UNKNOWN"; - $distconfid = 'ubuntu1604'; + $distconfid = 'ubuntu1804'; } $distver = $ver.$lts." ".$relname; swriteln("Operating System: ".$distname.' '.$distver."\n"); -- GitLab From c8b6f257f95ee4221a6dff038fb7cb3fde0966ba Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Jul 2019 13:19:05 +0200 Subject: [PATCH 048/571] Fixed installer warning: postconf: warning: unmatched request: "maildrop.unix" --- install/lib/installer_base.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 1c32c64984..8d0456ef5b 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1050,7 +1050,7 @@ class installer_base { $regex = "/^maildrop unix.*pipe flags=DRhu user=vmail argv=\\/usr\\/bin\\/maildrop -d ".$cf['vmail_username']." \\$\{extension} \\$\{recipient} \\$\{user} \\$\{nexthop} \\$\{sender}/"; $configfile = $config_dir.'/master.cf'; if($this->get_postfix_service('maildrop', 'unix')) { - exec ("postconf -M maildrop.unix &> /dev/null", $out, $ret); + exec ("postconf -M maildrop.unix 2> /dev/null", $out, $ret); $change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true; } else { $change_maildrop_flags = @(preg_match($regex, $configfile))?false:true; -- GitLab From 7b5d94518aa4f0e61876e1ca324e6e7b9339b90d Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 8 Jul 2019 17:17:44 +0200 Subject: [PATCH 049/571] - added rspamd functionality --- install/dist/conf/centos70.conf.php | 5 + install/dist/conf/centos72.conf.php | 5 + install/dist/conf/debian40.conf.php | 5 + install/dist/conf/debian60.conf.php | 5 + install/dist/conf/debian90.conf.php | 5 + install/dist/conf/debiantesting.conf.php | 5 + install/dist/conf/debiantesting.conf.php.orig | 234 ++ install/dist/conf/fedora9.conf.php | 5 + install/dist/conf/gentoo.conf.php | 5 + install/dist/conf/opensuse112.conf.php | 5 + install/dist/conf/ubuntu1604.conf.php | 5 + install/dist/conf/ubuntu1710.conf.php | 5 + install/dist/conf/ubuntu1804.conf.php | 7 +- install/dist/lib/debian60.lib.php | 1 - install/dist/lib/fedora.lib.php | 1 - install/install.php | 24 +- install/lib/classes/tpl.inc.php | 141 - install/lib/installer_base.lib.php | 166 + install/lib/installer_base.lib.php.orig | 2962 +++++++++++++++++ .../sql/incremental/upd_dev_collection.sql | 32 + .../incremental/upd_dev_collection.sql.orig | 0 .../incremental/upd_dev_collection.sql.rej | 40 + install/sql/ispconfig3.sql | 19 +- install/sql/ispconfig3.sql.orig | 2570 ++++++++++++++ install/sql/ispconfig3.sql.rej | 23 + install/tpl/rspamd_antivirus.conf.master | 30 + .../tpl/rspamd_classifier-bayes.conf.master | 3 + install/tpl/rspamd_dkim_signing.conf.master | 2 + install/tpl/rspamd_greylist.conf.master | 1 + install/tpl/rspamd_groups.conf.master | 4 + install/tpl/rspamd_milter_headers.conf.master | 2 + install/tpl/rspamd_mx_check.conf.master | 9 + install/tpl/rspamd_neural.conf.master | 31 + install/tpl/rspamd_neural_group.conf.master | 18 + install/tpl/rspamd_options.inc.master | 5 + install/tpl/rspamd_override_rbl.conf.master | 53 + install/tpl/rspamd_override_surbl.conf.master | 108 + install/tpl/rspamd_redis.conf.master | 1 + .../tpl/rspamd_symbols_antivirus.conf.master | 15 + install/tpl/rspamd_users.conf.master | 43 + install/tpl/rspamd_users.inc.conf.master | 1 + install/tpl/rspamd_wblist.inc.conf.master | 18 + .../tpl/rspamd_worker-controller.inc.master | 1 + install/tpl/server.ini.master | 2 + install/update.php | 7 + interface/lib/lang/de.lng | 3 +- .../web/admin/form/server_config.tform.php | 31 +- .../admin/form/server_config.tform.php.orig | 1956 +++++++++++ .../web/admin/lib/lang/de_server_config.lng | 5 +- .../admin/lib/lang/de_server_config.lng.orig | 299 ++ .../admin/lib/lang/de_server_config.lng.rej | 11 + .../web/admin/lib/lang/en_server_config.lng | 5 +- .../admin/lib/lang/en_server_config.lng.orig | 300 ++ .../admin/lib/lang/en_server_config.lng.rej | 11 + interface/web/admin/server_config_edit.php | 71 + .../templates/server_config_mail_edit.htm | 34 + .../web/mail/form/spamfilter_policy.tform.php | 36 + .../form/spamfilter_policy.tform.php.orig | 496 +++ .../mail/lib/lang/de_spamfilter_policy.lng | 8 +- interface/web/mail/lib/lang/en.lng | 3 +- .../mail/lib/lang/en_spamfilter_policy.lng | 9 +- interface/web/mail/mail_domain_edit.php | 9 +- interface/web/mail/mail_user_edit.php | 4 +- interface/web/mail/spamfilter_policy_edit.php | 72 +- interface/web/mail/spamfilter_policy_list.php | 29 +- .../mail/templates/spamfilter_policy_edit.htm | 3 +- .../mail/templates/spamfilter_policy_list.htm | 10 +- .../templates/spamfilter_taglevel_edit.htm | 31 +- server/conf/apache_apps.vhost.master | 10 + server/conf/autoresponder.master | 2 +- server/conf/nginx_apps.vhost.master | 25 + server/conf/rspamd_users.inc.conf.master | 41 + .../conf/rspamd_worker-controller.inc.master | 8 + server/conf/sieve_filter.master | 6 +- server/conf/sieve_filter_1.2.master | 6 +- server/mods-available/mail_module.inc.php | 37 +- .../apps_vhost_plugin.inc.php | 22 +- .../mail_plugin_dkim.inc.php | 3 + .../postfix_server_plugin.inc.php | 62 +- .../plugins-available/rspamd_plugin.inc.php | 255 ++ 80 files changed, 10326 insertions(+), 216 deletions(-) create mode 100644 install/dist/conf/debiantesting.conf.php.orig create mode 100644 install/lib/installer_base.lib.php.orig create mode 100644 install/sql/incremental/upd_dev_collection.sql.orig create mode 100644 install/sql/incremental/upd_dev_collection.sql.rej create mode 100644 install/sql/ispconfig3.sql.orig create mode 100644 install/sql/ispconfig3.sql.rej create mode 100644 install/tpl/rspamd_antivirus.conf.master create mode 100644 install/tpl/rspamd_classifier-bayes.conf.master create mode 100644 install/tpl/rspamd_dkim_signing.conf.master create mode 100644 install/tpl/rspamd_greylist.conf.master create mode 100644 install/tpl/rspamd_groups.conf.master create mode 100644 install/tpl/rspamd_milter_headers.conf.master create mode 100644 install/tpl/rspamd_mx_check.conf.master create mode 100644 install/tpl/rspamd_neural.conf.master create mode 100644 install/tpl/rspamd_neural_group.conf.master create mode 100644 install/tpl/rspamd_options.inc.master create mode 100644 install/tpl/rspamd_override_rbl.conf.master create mode 100644 install/tpl/rspamd_override_surbl.conf.master create mode 100644 install/tpl/rspamd_redis.conf.master create mode 100644 install/tpl/rspamd_symbols_antivirus.conf.master create mode 100644 install/tpl/rspamd_users.conf.master create mode 120000 install/tpl/rspamd_users.inc.conf.master create mode 100644 install/tpl/rspamd_wblist.inc.conf.master create mode 120000 install/tpl/rspamd_worker-controller.inc.master create mode 100644 interface/web/admin/form/server_config.tform.php.orig create mode 100644 interface/web/admin/lib/lang/de_server_config.lng.orig create mode 100644 interface/web/admin/lib/lang/de_server_config.lng.rej create mode 100644 interface/web/admin/lib/lang/en_server_config.lng.orig create mode 100644 interface/web/admin/lib/lang/en_server_config.lng.rej create mode 100644 interface/web/mail/form/spamfilter_policy.tform.php.orig create mode 100644 server/conf/rspamd_users.inc.conf.master create mode 100644 server/conf/rspamd_worker-controller.inc.master create mode 100644 server/plugins-available/rspamd_plugin.inc.php diff --git a/install/dist/conf/centos70.conf.php b/install/dist/conf/centos70.conf.php index a40e88ed70..0465e5618a 100644 --- a/install/dist/conf/centos70.conf.php +++ b/install/dist/conf/centos70.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd@amavisd'; diff --git a/install/dist/conf/centos72.conf.php b/install/dist/conf/centos72.conf.php index e7ab6030b7..221cc5d7c4 100644 --- a/install/dist/conf/centos72.conf.php +++ b/install/dist/conf/centos72.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd@amavisd'; diff --git a/install/dist/conf/debian40.conf.php b/install/dist/conf/debian40.conf.php index 613c828d14..c04a54e998 100644 --- a/install/dist/conf/debian40.conf.php +++ b/install/dist/conf/debian40.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php index 2c26dcb9cb..e7c8f59845 100644 --- a/install/dist/conf/debian60.conf.php +++ b/install/dist/conf/debian60.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debian90.conf.php b/install/dist/conf/debian90.conf.php index cdaf7aa9a0..13fd230654 100644 --- a/install/dist/conf/debian90.conf.php +++ b/install/dist/conf/debian90.conf.php @@ -153,6 +153,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php index 5e5e32f474..6ea9112dff 100644 --- a/install/dist/conf/debiantesting.conf.php +++ b/install/dist/conf/debiantesting.conf.php @@ -153,6 +153,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/debiantesting.conf.php.orig b/install/dist/conf/debiantesting.conf.php.orig new file mode 100644 index 0000000000..5e5e32f474 --- /dev/null +++ b/install/dist/conf/debiantesting.conf.php.orig @@ -0,0 +1,234 @@ +<?php + +/* +Copyright (c) 2016, Till Brehm, ISPConfig UG +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. +*/ + +//*** Debian Testing default settings + +//* Main +$conf['language'] = 'en'; +$conf['distname'] = 'debian100'; +$conf['hostname'] = 'server1.domain.tld'; // Full hostname +$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error +$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; +$conf['server_id'] = 1; +$conf['init_scripts'] = '/etc/init.d'; +$conf['runlevel'] = '/etc'; +$conf['shells'] = '/etc/shells'; +$conf['pam'] = '/etc/pam.d'; + +//* Services provided by this server, this selection will be overridden by the expert mode +$conf['services']['mail'] = true; +$conf['services']['web'] = true; +$conf['services']['dns'] = true; +$conf['services']['file'] = true; +$conf['services']['db'] = true; +$conf['services']['vserver'] = true; +$conf['services']['proxy'] = false; +$conf['services']['firewall'] = false; + +//* MySQL +$conf['mysql']['installed'] = false; // will be detected automatically during installation +$conf['mysql']['init_script'] = 'mysql'; +$conf['mysql']['host'] = 'localhost'; +$conf['mysql']['ip'] = '127.0.0.1'; +$conf['mysql']['port'] = '3306'; +$conf['mysql']['database'] = 'dbispconfig'; +$conf['mysql']['admin_user'] = 'root'; +$conf['mysql']['admin_password'] = ''; +$conf['mysql']['charset'] = 'utf8'; +$conf['mysql']['ispconfig_user'] = 'ispconfig'; +$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); +$conf['mysql']['master_slave_setup'] = 'n'; +$conf['mysql']['master_host'] = ''; +$conf['mysql']['master_database'] = 'dbispconfig'; +$conf['mysql']['master_admin_user'] = 'root'; +$conf['mysql']['master_admin_password'] = ''; +$conf['mysql']['master_ispconfig_user'] = ''; +$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); + +//* Apache +$conf['apache']['installed'] = false; // will be detected automatically during installation +$conf['apache']['user'] = 'www-data'; +$conf['apache']['group'] = 'www-data'; +$conf['apache']['init_script'] = 'apache2'; +$conf['apache']['version'] = '2.4'; +$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; +$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; +$conf['apache']['vhost_port'] = '8080'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; + +//* Website base settings +$conf['web']['website_basedir'] = '/var/www'; +$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; +$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; + +//* Apps base settings +$conf['web']['apps_vhost_ip'] = '_default_'; +$conf['web']['apps_vhost_port'] = '8081'; +$conf['web']['apps_vhost_servername'] = ''; +$conf['web']['apps_vhost_user'] = 'ispapps'; +$conf['web']['apps_vhost_group'] = 'ispapps'; + +//* Fastcgi +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; +$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; +$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; + +//* Postfix +$conf['postfix']['installed'] = false; // will be detected automatically during installation +$conf['postfix']['config_dir'] = '/etc/postfix'; +$conf['postfix']['init_script'] = 'postfix'; +$conf['postfix']['user'] = 'postfix'; +$conf['postfix']['group'] = 'postfix'; +$conf['postfix']['vmail_userid'] = '5000'; +$conf['postfix']['vmail_username'] = 'vmail'; +$conf['postfix']['vmail_groupid'] = '5000'; +$conf['postfix']['vmail_groupname'] = 'vmail'; +$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; + +//* Mailman +$conf['mailman']['installed'] = false; // will be detected automatically during installation +$conf['mailman']['config_dir'] = '/etc/mailman'; +$conf['mailman']['init_script'] = 'mailman'; + +//* mlmmj +$conf['mlmmj']['installed'] = false; // will be detected automatically during installation +$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; + +//* Getmail +$conf['getmail']['installed'] = false; // will be detected automatically during installation +$conf['getmail']['config_dir'] = '/etc/getmail'; +$conf['getmail']['program'] = '/usr/bin/getmail'; + +//* Courier +$conf['courier']['installed'] = false; // will be detected automatically during installation +$conf['courier']['config_dir'] = '/etc/courier'; +$conf['courier']['courier-authdaemon'] = 'courier-authdaemon'; +$conf['courier']['courier-imap'] = 'courier-imap'; +$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl'; +$conf['courier']['courier-pop'] = 'courier-pop'; +$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl'; + +//* Dovecot +$conf['dovecot']['installed'] = false; // will be detected automatically during installation +$conf['dovecot']['config_dir'] = '/etc/dovecot'; +$conf['dovecot']['init_script'] = 'dovecot'; + +//* SASL +$conf['saslauthd']['installed'] = false; // will be detected automatically during installation +$conf['saslauthd']['config'] = '/etc/default/saslauthd'; +$conf['saslauthd']['init_script'] = 'saslauthd'; + +//* Amavisd +$conf['amavis']['installed'] = false; // will be detected automatically during installation +$conf['amavis']['config_dir'] = '/etc/amavis'; +$conf['amavis']['init_script'] = 'amavis'; + +//* ClamAV +$conf['clamav']['installed'] = false; // will be detected automatically during installation +$conf['clamav']['init_script'] = 'clamav-daemon'; + +//* Pureftpd +$conf['pureftpd']['installed'] = false; // will be detected automatically during installation +$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; +$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql'; + +//* MyDNS +$conf['mydns']['installed'] = false; // will be detected automatically during installation +$conf['mydns']['config_dir'] = '/etc'; +$conf['mydns']['init_script'] = 'mydns'; + +//* PowerDNS +$conf['powerdns']['installed'] = false; // will be detected automatically during installation +$conf['powerdns']['database'] = 'powerdns'; +$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; +$conf['powerdns']['init_script'] = 'pdns'; + +//* BIND DNS Server +$conf['bind']['installed'] = false; // will be detected automatically during installation +$conf['bind']['bind_user'] = 'root'; +$conf['bind']['bind_group'] = 'bind'; +$conf['bind']['bind_zonefiles_dir'] = '/etc/bind'; +$conf['bind']['named_conf_path'] = '/etc/bind/named.conf'; +$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local'; +$conf['bind']['init_script'] = 'bind9'; + +//* Jailkit +$conf['jailkit']['installed'] = false; // will be detected automatically during installation +$conf['jailkit']['config_dir'] = '/etc/jailkit'; +$conf['jailkit']['jk_init'] = 'jk_init.ini'; +$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch'; +$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; + +//* Squid +$conf['squid']['installed'] = false; // will be detected automatically during installation +$conf['squid']['config_dir'] = '/etc/squid'; +$conf['squid']['init_script'] = 'squid'; + +//* Nginx +$conf['nginx']['installed'] = false; // will be detected automatically during installation +$conf['nginx']['user'] = 'www-data'; +$conf['nginx']['group'] = 'www-data'; +$conf['nginx']['config_dir'] = '/etc/nginx'; +$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; +$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; +$conf['nginx']['init_script'] = 'nginx'; +$conf['nginx']['vhost_port'] = '8080'; +$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; +$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; +$conf['nginx']['php_fpm_start_port'] = 9010; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; + +//* OpenVZ +$conf['openvz']['installed'] = false; + +//*Bastille-Firwall +$conf['bastille']['installed'] = false; +$conf['bastille']['config_dir'] = '/etc/Bastille'; + +//* vlogger +$conf['vlogger']['config_dir'] = '/etc'; + +//* cron +$conf['cron']['init_script'] = 'cron'; +$conf['cron']['crontab_dir'] = '/etc/cron.d'; +$conf['cron']['wget'] = '/usr/bin/wget'; + +//* Metronome XMPP +$conf['xmpp']['installed'] = false; +$conf['xmpp']['init_script'] = 'metronome'; + + +?> diff --git a/install/dist/conf/fedora9.conf.php b/install/dist/conf/fedora9.conf.php index 80539a7859..19c9a4f625 100644 --- a/install/dist/conf/fedora9.conf.php +++ b/install/dist/conf/fedora9.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavisd'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd.amavisd'; diff --git a/install/dist/conf/gentoo.conf.php b/install/dist/conf/gentoo.conf.php index 2955cfa71d..24c7d0633e 100644 --- a/install/dist/conf/gentoo.conf.php +++ b/install/dist/conf/gentoo.conf.php @@ -162,6 +162,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_file'] = '/etc/amavisd.conf'; $conf['amavis']['init_script'] = 'amavisd'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/opensuse112.conf.php b/install/dist/conf/opensuse112.conf.php index fa0504652e..378320a144 100644 --- a/install/dist/conf/opensuse112.conf.php +++ b/install/dist/conf/opensuse112.conf.php @@ -147,6 +147,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamd'; diff --git a/install/dist/conf/ubuntu1604.conf.php b/install/dist/conf/ubuntu1604.conf.php index 9ac56de3f8..0d3fe23bad 100644 --- a/install/dist/conf/ubuntu1604.conf.php +++ b/install/dist/conf/ubuntu1604.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/ubuntu1710.conf.php b/install/dist/conf/ubuntu1710.conf.php index 0c87005910..0730f8f2d5 100644 --- a/install/dist/conf/ubuntu1710.conf.php +++ b/install/dist/conf/ubuntu1710.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; diff --git a/install/dist/conf/ubuntu1804.conf.php b/install/dist/conf/ubuntu1804.conf.php index 15cdb1c5eb..2a09f787db 100644 --- a/install/dist/conf/ubuntu1804.conf.php +++ b/install/dist/conf/ubuntu1804.conf.php @@ -149,6 +149,11 @@ $conf['amavis']['installed'] = false; // will be detected automatically during i $conf['amavis']['config_dir'] = '/etc/amavis'; $conf['amavis']['init_script'] = 'amavis'; +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + //* ClamAV $conf['clamav']['installed'] = false; // will be detected automatically during installation $conf['clamav']['init_script'] = 'clamav-daemon'; @@ -227,4 +232,4 @@ $conf['xmpp']['installed'] = false; $conf['xmpp']['init_script'] = 'metronome'; -?> \ No newline at end of file +?> diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 0cd7116568..af8899f8cb 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -68,7 +68,6 @@ class installer extends installer_base { } //* Reconfigure postfix to use dovecot authentication - // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', 'virtual_transport = '.$virtual_transport, diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 889bd4288d..5bb8fc0d25 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -401,7 +401,6 @@ class installer_dist extends installer_base { } //* Reconfigure postfix to use dovecot authentication - // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', 'virtual_transport = '.$virtual_transport, diff --git a/install/install.php b/install/install.php index a324669867..9dff3facf2 100644 --- a/install/install.php +++ b/install/install.php @@ -385,7 +385,14 @@ if($install_mode == 'standard' || strtolower($inst->simple_query('Configure Mail $inst->configure_amavis(); } - //* Configure Getmail + //* Configure Rspamd + $force = @($conf['rspamd']['installed']) ? true : $inst->force_configure_app('Rspamd', ($install_mode == 'expert')); + if($force) { + swriteln('Configuring Rspamd'); + $inst->configure_rspamd(); + } + +//* Configure Getmail $force = @($conf['getmail']['installed']) ? true : $inst->force_configure_app('Getmail', ($install_mode == 'expert')); if($force) { swriteln('Configuring Getmail'); @@ -538,20 +545,6 @@ $install_ispconfig_interface_default = ($conf['mysql']['master_slave_setup'] == if($install_mode == 'standard' || strtolower($inst->simple_query('Install ISPConfig Web Interface', array('y', 'n'), $install_ispconfig_interface_default,'install_ispconfig_web_interface')) == 'y') { swriteln('Installing ISPConfig'); - //** We want to check if the server is a module or cgi based php enabled server - //** TODO: Don't always ask for this somehow ? - /* - $fast_cgi = $inst->simple_query('CGI PHP Enabled Server?', array('yes','no'),'no'); - - if($fast_cgi == 'yes') { - $alias = $inst->free_query('Script Alias', '/php/'); - $path = $inst->free_query('Script Alias Path', '/path/to/cgi/bin'); - $conf['apache']['vhost_cgi_alias'] = sprintf('ScriptAlias %s %s', $alias, $path); - } else { - $conf['apache']['vhost_cgi_alias'] = ""; - } - */ - //** Customise the port ISPConfig runs on $ispconfig_vhost_port = $inst->free_query('ISPConfig Port', '8080','ispconfig_port'); $temp_admin_password = str_shuffle(bin2hex(openssl_random_pseudo_bytes(4))); @@ -602,6 +595,7 @@ if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') s if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); +if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); diff --git a/install/lib/classes/tpl.inc.php b/install/lib/classes/tpl.inc.php index 73ff19230b..5bd8ded1f8 100644 --- a/install/lib/classes/tpl.inc.php +++ b/install/lib/classes/tpl.inc.php @@ -357,147 +357,6 @@ if (!defined('vlibTemplateClassLoaded')) { return true; } - /** - * [** EXPERIMENTAL **] - * Function to create a loop from a Db result resource link. - * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() - * @param string $result link to a Db result resource - * @param string $db_type, type of db that the result resource belongs to. - * @return boolean true/false - * @access public - */ - public function setDbLoop($loopname, $result, $db_type = 'MYSQL') - { - /* - $db_type = strtoupper($db_type); - if (!in_array($db_type, $this->allowed_loop_dbs)) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_LOOP_DB', WARNING, $db_type); - return false; - } - - $loop_arr = array(); - // TODO: Are all these necessary as were onyl using mysql and possible postgres ? - pedro - switch ($db_type) { - - case 'MYSQL': - if (get_resource_type($result) != 'mysql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = mysql_fetch_assoc($result)) { - $loop_arr[] = $r; - } - break; - - case 'POSTGRESQL': - if (get_resource_type($result) != 'pgsql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - - $nr = (function_exists('pg_num_rows')) ? pg_num_rows($result) : pg_numrows($result); - - for ($i=0; $i < $nr; $i++) { - $loop_arr[] = pg_fetch_array($result, $i, PGSQL_ASSOC); - } - break; - - case 'INFORMIX': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ifx_fetch_row($result, 'NEXT')) { - $loop_arr[] = $r; - } - break; - - case 'INTERBASE': - if (get_resource_type($result) != 'interbase result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ibase_fetch_row($result)) { - $loop_arr[] = $r; - } - break; - - case 'INGRES': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = ingres_fetch_array(INGRES_ASSOC, $result)) { - $loop_arr[] = $r; - } - break; - - case 'MSSQL': - if (get_resource_type($result) != 'mssql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = mssql_fetch_array($result)) { - $loop_arr[] = $r; - } - break; - - case 'MSQL': - if (get_resource_type($result) != 'msql result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while($r = msql_fetch_array($result, MSQL_ASSOC)) { - $loop_arr[] = $r; - } - break; - - case 'OCI8': - if (get_resource_type($result) != 'oci8 statement') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(OCIFetchInto($result, &$r, OCI_ASSOC+OCI_RETURN_LOBS)) { - $loop_arr[] = $r; - } - break; - - case 'ORACLE': - if (get_resource_type($result) != 'oracle Cursor') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(ora_fetch_into($result, &$r, ORA_FETCHINTO_ASSOC)) { - $loop_arr[] = $r; - } - break; - - case 'OVRIMOS': - if (!$result) { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - while(ovrimos_fetch_into($result, &$r, 'NEXT')) { - $loop_arr[] = $r; - } - break; - - case 'SYBASE': - if (get_resource_type($result) != 'sybase-db result') { - vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); - return false; - } - - while($r = sybase_fetch_array($result)) { - $loop_arr[] = $r; - } - break; - } - $this->setLoop($loopname, $loop_arr); - return true; - */ - } - /** * Sets the name for the curent loop in the 3 step loop process. * @param string $name string to define loop name diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 8d0456ef5b..7221dd7dec 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -163,6 +163,7 @@ class installer_base { if(is_installed('dovecot')) $conf['dovecot']['installed'] = true; if(is_installed('saslauthd')) $conf['saslauthd']['installed'] = true; if(is_installed('amavisd-new') || is_installed('amavisd')) $conf['amavis']['installed'] = true; + if(is_installed('rspamd')) $conf['rspamd']['installed'] = true; if(is_installed('clamdscan')) $conf['clamav']['installed'] = true; if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true; if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true; @@ -1426,6 +1427,171 @@ class installer_base { } + public function configure_rspamd() { + global $conf; + + //* These postconf commands will be executed on installation and update + $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']); + $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); + unset($server_ini_rec); + + $mail_config = $server_ini_array['mail']; + if($mail_config['content_filter'] === 'rspamd') { + exec("postconf -X 'receive_override_options'"); + exec("postconf -X 'content_filter'"); + + exec("postconf -e 'smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'non_smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'milter_protocol = 6'"); + exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'"); + exec("postconf -e 'milter_default_action = accept'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); + + $new_options = array(); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + foreach ($options as $value) { + if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + $new_options[] = $value; + } + } + exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + } + + if(!is_dir('/etc/rspamd/local.d/')){ + mkdir('/etc/rspamd/local.d/', 0755, true); + } + + if(!is_dir('/etc/rspamd/override.d/')){ + mkdir('/etc/rspamd/override.d/', 0755, true); + } + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.conf.master'); + + $whitelist_ips = array(); + $ips = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); + if(is_array($ips) && !empty($ips)){ + foreach($ips as $ip){ + $whitelist_ips[] = array('ip' => $ip['ip_address']); + } + } + $tpl->setLoop('whitelist_ips', $whitelist_ips); + wf('/etc/rspamd/local.d/users.conf', $tpl->grab()); + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + } else { + exec('cp tpl/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + } else { + exec('cp tpl/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + } else { + exec('cp tpl/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + } else { + exec('cp tpl/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + } else { + exec('cp tpl/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + } else { + exec('cp tpl/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + } else { + exec('cp tpl/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + } else { + exec('cp tpl/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + } else { + exec('cp tpl/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + } else { + exec('cp tpl/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + } else { + exec('cp tpl/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); + } else { + exec('cp tpl/rspamd_neural.conf.master /etc/rspamd/local.d/neural.conf'); + } + + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); + } else { + exec('cp tpl/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); + } + + exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_dkim_signing.conf.master'); + $tpl->setVar('dkim_path', $mail_config['dkim_path']); + wf('/etc/rspamd/local.d/dkim_signing.conf', $tpl->grab()); + + $command = 'usermod -a -G amavis _rspamd'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + if(strpos(rf('/etc/rspamd/rspamd.conf'), '.include "$LOCAL_CONFDIR/local.d/users.conf"') === false){ + af('/etc/rspamd/rspamd.conf', '.include "$LOCAL_CONFDIR/local.d/users.conf"'); + } + + if(!isset($mail_config['rspamd_password']) || !$mail_config['rspamd_password']) { + $mail_config['rspamd_password'] = str_shuffle(bin2hex(openssl_random_pseudo_bytes(12))); + + $server_ini_array['mail']['rspamd_password'] = $mail_config['rspamd_password']; + } + + $server_ini_array['mail']['rspamd_available'] = 'y'; + $server_ini_string = array_to_ini($server_ini_array); + if($this->dbmaster != $this->db) { + $this->dbmaster->query('UPDATE `server` SET `config` = ? WHERE `server_id` = ?', $server_ini_string, $conf['server_id']); + } + $this->db->query('UPDATE `server` SET `config` = ? WHERE `server_id` = ?', $server_ini_string, $conf['server_id']); + unset($server_ini_array); + unset($server_ini_string); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_worker-controller.inc.master'); + $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); + wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + } + public function configure_spamassassin() { global $conf; diff --git a/install/lib/installer_base.lib.php.orig b/install/lib/installer_base.lib.php.orig new file mode 100644 index 0000000000..8d0456ef5b --- /dev/null +++ b/install/lib/installer_base.lib.php.orig @@ -0,0 +1,2962 @@ +<?php + +/* +Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh +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. +*/ + +class installer_base { + + var $wb = array(); + var $language = 'en'; + var $db; + public $conf; + public $install_ispconfig_interface = true; + public $is_update = false; // true if it is an update, falsi if it is a new install + public $min_php = '5.3.3'; // minimal php-version for update / install + protected $mailman_group = 'list'; + + + public function __construct() { + global $conf; //TODO: maybe $conf should be passed to constructor + //$this->conf = $conf; + } + + //: TODO Implement the translation function and language files for the installer. + public function lng($text) { + return $text; + } + + public function error($msg) { + die('ERROR: '.$msg."\n"); + } + + public function warning($msg) { + echo 'WARNING: '.$msg."\n"; + } + + public function simple_query($query, $answers, $default, $name = '') { + global $autoinstall, $autoupdate; + $finished = false; + do { + if($name != '' && $autoinstall[$name] != '') { + if($autoinstall[$name] == 'default') { + $input = $default; + } else { + $input = $autoinstall[$name]; + } + } elseif($name != '' && $autoupdate[$name] != '') { + if($autoupdate[$name] == 'default') { + $input = $default; + } else { + $input = $autoupdate[$name]; + } + } else { + $answers_str = implode(',', $answers); + swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: '); + $input = sread(); + } + + //* Stop the installation + if($input == 'quit') { + swriteln($this->lng("Installation terminated by user.\n")); + die(); + } + + //* Select the default + if($input == '') { + $answer = $default; + $finished = true; + } + + //* Set answer id valid + if(in_array($input, $answers)) { + $answer = $input; + $finished = true; + } + + } while ($finished == false); + swriteln(); + return $answer; + } + + public function free_query($query, $default, $name = '') { + global $autoinstall, $autoupdate; + if($name != '' && $autoinstall[$name] != '') { + if($autoinstall[$name] == 'default') { + $input = $default; + } else { + $input = $autoinstall[$name]; + } + } elseif($name != '' && $autoupdate[$name] != '') { + if($autoupdate[$name] == 'default') { + $input = $default; + } else { + $input = $autoupdate[$name]; + } + } else { + swrite($this->lng($query).' ['.$default.']: '); + $input = sread(); + } + + //* Stop the installation + if($input == 'quit') { + swriteln($this->lng("Installation terminated by user.\n")); + die(); + } + + $answer = ($input == '') ? $default : $input; + swriteln(); + return $answer; + } + + /* + // TODO: this function is not used atmo I think - pedro + function request_language(){ + + swriteln(lng('Enter your language')); + swriteln(lng('de, en')); + + } + */ + + //** Detect PHP-Version + public function get_php_version() { + if(version_compare(PHP_VERSION, $this->min_php, '<')) return false; + else return true; + } + + //** Detect installed applications + public function find_installed_apps() { + global $conf; + + if(is_installed('mysql') || is_installed('mysqld')) $conf['mysql']['installed'] = true; + if(is_installed('postfix')) $conf['postfix']['installed'] = true; + if(is_installed('postgrey')) $conf['postgrey']['installed'] = true; + if(is_installed('mailman') || is_installed('mmsitepass')) $conf['mailman']['installed'] = true; + if(is_installed('apache') || is_installed('apache2') || is_installed('httpd') || is_installed('httpd2')) $conf['apache']['installed'] = true; + if(is_installed('getmail')) $conf['getmail']['installed'] = true; + if(is_installed('courierlogger')) $conf['courier']['installed'] = true; + if(is_installed('dovecot')) $conf['dovecot']['installed'] = true; + if(is_installed('saslauthd')) $conf['saslauthd']['installed'] = true; + if(is_installed('amavisd-new') || is_installed('amavisd')) $conf['amavis']['installed'] = true; + if(is_installed('clamdscan')) $conf['clamav']['installed'] = true; + if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true; + if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true; + if(is_installed('jk_chrootsh')) $conf['jailkit']['installed'] = true; + if(is_installed('pdns_server') || is_installed('pdns_control')) $conf['powerdns']['installed'] = true; + if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true; + if(is_installed('squid')) $conf['squid']['installed'] = true; + if(is_installed('nginx')) $conf['nginx']['installed'] = true; + if(is_installed('iptables') && is_installed('ufw')) { + $conf['ufw']['installed'] = true; + } elseif(is_installed('iptables')) { + $conf['firewall']['installed'] = true; + } + 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('spamassassin')) $conf['spamassassin']['installed'] = true; + // if(is_installed('vlogger')) $conf['vlogger']['installed'] = true; + // ISPConfig ships with vlogger, so it is always installed. + $conf['vlogger']['installed'] = true; + if(is_installed('cron') || is_installed('anacron')) $conf['cron']['installed'] = true; + + 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) { + $force = false; + if(AUTOINSTALL == true) return false; + if($enable_force == true) { + swriteln("[WARN] autodetect for $service failed"); + } else { + swriteln("[INFO] service $service not detected"); + } + if($enable_force) { + 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; + if ($reconfigure_services_answer != 'selected') { + $reconfigure = true; + } else { + if(strtolower($this->simple_query("Reconfigure $service", array('y', 'n'), 'y') ) == 'y') { + $reconfigure = true; + } else { + swriteln("Skip reconfigure $service\n"); + } + } + return $reconfigure; + } + + /** Create the database for ISPConfig */ + + + public function configure_database() { + global $conf; + + //* 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'); + $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];"; + die(); + } + + //** Create the database + if(!$this->db->query('CREATE DATABASE IF NOT EXISTS ?? DEFAULT CHARACTER SET ?', $conf['mysql']['database'], $conf['mysql']['charset'])) { + $this->error('Unable to create MySQL database: '.$conf['mysql']['database'].'.'); + } + + //* Set the database name in the DB library + $this->db->setDBName($conf['mysql']['database']); + + //* Load the database dump into the database, if database contains no tables + $db_tables = $this->db->getTables(); + if(count($db_tables) > 0) { + $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'])." -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'])." -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(); + if(count($db_tables) == 0) { + $this->error('Unable to load SQL-Dump into database table.'); + } + + //* Load system.ini into the sys_ini table + $system_ini = rf('tpl/system.ini.master'); + $this->db->query("UPDATE sys_ini SET config = ? WHERE sysini_id = 1", $system_ini); + + } + } + + //** Create the server record in the database + public function add_database_server_record() { + + global $conf; + + if($conf['mysql']['host'] == 'localhost') { + $from_host = 'localhost'; + } else { + $from_host = $conf['hostname']; + } + + // Delete ISPConfig user in the local database, in case that it exists + $this->db->query("DROP USER ?@?", $conf['mysql']['ispconfig_user'], $from_host); + $this->db->query("DROP DATABASE IF EXISTS ?", $conf['mysql']['database']); + + //* Create the ISPConfig database user and grant permissions in the local database + $query = 'CREATE USER ?@? IDENTIFIED BY ?'; + if(!$this->db->query($query, $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { + $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); + } + $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@?'; + if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host)) { + $this->error('Unable to grant databse permissions to user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); + } + + //* Set the database name in the DB library + $this->db->setDBName($conf['mysql']['database']); + + $tpl_ini_array = ini_to_array(rf('tpl/server.ini.master')); + + //* Update further distribution specific parameters for server config here + //* HINT: Every line added here has to be added in update.lib.php too!! + $tpl_ini_array['web']['vhost_conf_dir'] = $conf['apache']['vhost_conf_dir']; + $tpl_ini_array['web']['vhost_conf_enabled_dir'] = $conf['apache']['vhost_conf_enabled_dir']; + $tpl_ini_array['jailkit']['jailkit_chroot_app_programs'] = $conf['jailkit']['jailkit_chroot_app_programs']; + $tpl_ini_array['fastcgi']['fastcgi_phpini_path'] = $conf['fastcgi']['fastcgi_phpini_path']; + $tpl_ini_array['fastcgi']['fastcgi_starter_path'] = $conf['fastcgi']['fastcgi_starter_path']; + $tpl_ini_array['fastcgi']['fastcgi_bin'] = $conf['fastcgi']['fastcgi_bin']; + $tpl_ini_array['server']['hostname'] = $conf['hostname']; + $tpl_ini_array['server']['ip_address'] = @gethostbyname($conf['hostname']); + $tpl_ini_array['server']['firewall'] = ($conf['ufw']['installed'] == true)?'ufw':'bastille'; + $tpl_ini_array['web']['website_basedir'] = $conf['web']['website_basedir']; + $tpl_ini_array['web']['website_path'] = $conf['web']['website_path']; + $tpl_ini_array['web']['website_symlinks'] = $conf['web']['website_symlinks']; + $tpl_ini_array['cron']['crontab_dir'] = $conf['cron']['crontab_dir']; + $tpl_ini_array['web']['security_level'] = 20; + $tpl_ini_array['web']['user'] = $conf['apache']['user']; + $tpl_ini_array['web']['group'] = $conf['apache']['group']; + $tpl_ini_array['web']['php_ini_path_apache'] = $conf['apache']['php_ini_path_apache']; + $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; + $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; + $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; + $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; + $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; + $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir']; + $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path']; + $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path']; + + $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; + $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; + $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; + $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; + $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; + $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; + $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; + $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; + $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']; + + if ($conf['nginx']['installed'] == true) { + $tpl_ini_array['web']['server_type'] = 'nginx'; + $tpl_ini_array['global']['webserver'] = 'nginx'; + } + + if (array_key_exists('awstats', $conf)) { + foreach ($conf['awstats'] as $aw_sett => $aw_value) { + $tpl_ini_array['web']['awstats_'.$aw_sett] = $aw_value; + } + } + + $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; + $file_server_enabled = ($conf['services']['file'])?1:0; + $db_server_enabled = ($conf['services']['db'])?1:0; + $vserver_server_enabled = ($conf['openvz']['installed'])?1:0; + $proxy_server_enabled = (isset($conf['services']['proxy']) && $conf['services']['proxy'])?1:0; + $firewall_server_enabled = (isset($conf['services']['firewall']) && $conf['services']['firewall'])?1:0; + + //** Get the database version number based on the patchfiles + $found = true; + $current_db_version = 1; + while($found == true) { + $next_db_version = intval($current_db_version + 1); + $patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql'; + if(is_file($patch_filename)) { + $current_db_version = $next_db_version; + } else { + $found = false; + } + } + $current_db_version = intval($current_db_version); + + + if($conf['mysql']['master_slave_setup'] == 'y') { + + //* Insert the server record in master DB + $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; + $this->dbmaster->query($sql, $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); + $conf['server_id'] = $this->dbmaster->insertID(); + $conf['server_id'] = $conf['server_id']; + + //* Insert the same record in the local DB + $sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (?,1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; + $this->db->query($sql, $conf['server_id'], $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); + + //* username for the ispconfig user + $conf['mysql']['master_ispconfig_user'] = 'ispcsrv'.$conf['server_id']; + + $this->grant_master_database_rights(); + + } else { + //* Insert the server, if its not a mster / slave setup + $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; + $this->db->query($sql, $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); + $conf['server_id'] = $this->db->insertID(); + $conf['server_id'] = $conf['server_id']; + } + + + } + + 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){ + $line = trim($line); + $ip_type = ''; + if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + $ip_type = 'IPv4'; + } + if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { + $ip_type = 'IPv6'; + } + if($ip_type == '') continue; + if($this->db->dbHost != $this->dbmaster->dbHost){ + $this->dbmaster->query('INSERT INTO server_ip ( + sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $conf['server_id'], $ip_type, $line); + $server_ip_id = $this->dbmaster->insertID(); + $this->db->query('INSERT INTO server_ip ( + server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + ?, + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $server_ip_id, $conf['server_id'], $ip_type, $line); + } else { + $this->db->query('INSERT INTO server_ip ( + sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $conf['server_id'], $ip_type, $line); + } + } + } + } + } + + public function grant_master_database_rights($verbose = false) { + global $conf; + + /* + * The following code is a little bit tricky: + * * If we HAVE a master-slave - Setup then the client has to grant the rights for himself + * at the master. + * * If we DO NOT have a master-slave - Setup then we have two possibilities + * 1) it is a single server + * 2) it is the MASTER of n clients + */ + $hosts = array(); + + if($conf['mysql']['master_slave_setup'] == 'y') { + /* + * it is a master-slave - Setup so the slave has to grant its rights in the master + * database + */ + + //* insert the ispconfig user in the remote server + $from_host = $conf['hostname']; + $from_ip = gethostbyname($conf['hostname']); + + $hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user']; + $hosts[$from_host]['db'] = $conf['mysql']['master_database']; + $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password']; + + $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user']; + $hosts[$from_ip]['db'] = $conf['mysql']['master_database']; + $hosts[$from_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 + * host + */ + $query = "SELECT Host, User FROM mysql.user WHERE User like 'ispcsrv%' ORDER BY User, Host"; + $data = $this->dbmaster->queryAllRecords($query); + if($data === false) { + $this->error('Unable to get the user rights: '.$value['db'].' Error: '.$this->dbmaster->errorMessage); + } + foreach ($data as $item){ + $hosts[$item['Host']]['user'] = $item['User']; + $hosts[$item['Host']]['db'] = $conf['mysql']['master_database']; + $hosts[$item['Host']]['pwd'] = ''; // the user already exists, so we need no pwd! + } + } + + if(count($hosts) > 0) { + foreach($hosts as $host => $value) { + /* + * If a pwd exists, this means, we have to add the new user (and his pwd). + * if not, the user already exists and we do not need the pwd + */ + if ($value['pwd'] != ''){ + $query = "CREATE USER ?@? IDENTIFIED BY ?"; + if ($verbose){ + echo "\n\n" . $query ."\n"; + } + $this->dbmaster->query($query, $value['user'], $host, $value['pwd']); // ignore the error + } + + /* + * Try to delete all rights of the user in case that it exists. + * In Case that it will not exist, do nothing (ignore the error!) + */ + $query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM ?@?"; + if ($verbose){ + echo "\n\n" . $query ."\n"; + } + $this->dbmaster->query($query, $value['user'], $host); // ignore the error + + //* Create the ISPConfig database user in the remote database + $query = "GRANT SELECT ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.server', $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 ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.sys_log', $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(`status`, `error`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.sys_datalog', $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(`status`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.software_update_inst', $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(`updated`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.server', $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 (`ssl`, `ssl_letsencrypt`, `ssl_request`, `ssl_cert`, `ssl_action`, `ssl_key`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.web_domain', $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 ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.sys_group', $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 (`action_state`, `response`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.sys_remoteaction', $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 , DELETE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.monitor_data', $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"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.mail_traffic', $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"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.web_traffic', $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, DELETE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + 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"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.aps_instances_settings', $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, DELETE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.web_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, INSERT, DELETE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + 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"; + } + 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"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.ftp_traffic', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } + + } + + } + + } + + //** writes postfix configuration files + public function process_postfix_config($configfile) { + global $conf; + + $config_dir = $conf['postfix']['config_dir'].'/'; + $full_file_name = $config_dir.$configfile; + //* Backup exiting file + if(is_file($full_file_name)) { + copy($full_file_name, $config_dir.$configfile.'~'); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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); + } + + public function configure_jailkit() { + global $conf; + + $cf = $conf['jailkit']; + $config_dir = $cf['config_dir']; + $jk_init = $cf['jk_init']; + $jk_chrootsh = $cf['jk_chrootsh']; + + if (is_dir($config_dir)) { + if(is_file($config_dir.'/'.$jk_init)) copy($config_dir.'/'.$jk_init, $config_dir.'/'.$jk_init.'~'); + if(is_file($config_dir.'/'.$jk_chrootsh.'.master')) copy($config_dir.'/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh.'~'); + + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_init.'.master')) { + copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_init.'.master', $config_dir.'/'.$jk_init); + } else { + copy('tpl/'.$jk_init.'.master', $config_dir.'/'.$jk_init); + } + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_chrootsh.'.master')) { + copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh); + } else { + copy('tpl/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh); + } + } + + //* help jailkit fo find its ini files + if(!is_link('/usr/jk_socketd.ini')) exec('ln -s /etc/jailkit/jk_socketd.ini /usr/jk_socketd.ini'); + if(!is_link('/usr/jk_init.ini')) exec('ln -s /etc/jailkit/jk_init.ini /usr/jk_init.ini'); + + } + + public function configure_mailman($status = 'insert') { + global $conf; + + $config_dir = $conf['mailman']['config_dir'].'/'; + $full_file_name = $config_dir.'mm_cfg.py'; + //* Backup exiting file + if(is_file($full_file_name)) { + copy($full_file_name, $config_dir.'mm_cfg.py~'); + } + + // load files + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/mm_cfg.py.master', 'tpl/mm_cfg.py.master'); + $old_file = rf($full_file_name); + + $old_options = array(); + $lines = explode("\n", $old_file); + foreach ($lines as $line) + { + if (trim($line) != '' && substr($line, 0, 1) != '#') + { + @list($key, $value) = @explode("=", $line); + if (isset($value) && $value !== '') + { + $key = rtrim($key); + $old_options[$key] = trim($value); + } + } + } + + $virtual_domains = ''; + if($status == 'update') + { + // create virtual_domains list + $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain"); + + if(is_array($domainAll)) { + foreach($domainAll as $domain) + { + if ($domainAll[0]['domain'] == $domain['domain']) + $virtual_domains .= "'".$domain['domain']."'"; + else + $virtual_domains .= ", '".$domain['domain']."'"; + } + } + } + else + $virtual_domains = "' '"; + + $content = str_replace('{hostname}', $conf['hostname'], $content); + if(!isset($old_options['DEFAULT_SERVER_LANGUAGE']) || $old_options['DEFAULT_SERVER_LANGUAGE'] == '') $old_options['DEFAULT_SERVER_LANGUAGE'] = "'en'"; + $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content); + $content = str_replace('{virtual_domains}', $virtual_domains, $content); + + wf($full_file_name, $content); + + //* Write virtual_to_transport.sh script + $config_dir = $conf['mailman']['config_dir'].'/'; + $full_file_name = $config_dir.'virtual_to_transport.sh'; + + //* Backup exiting virtual_to_transport.sh script + if(is_file($full_file_name)) { + copy($full_file_name, $config_dir.'virtual_to_transport.sh~'); + } + + if(is_dir('/etc/mailman')) { + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/mailman-virtual_to_transport.sh')) { + copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/mailman-virtual_to_transport.sh', $full_file_name); + } else { + copy('tpl/mailman-virtual_to_transport.sh', $full_file_name); + } + chgrp($full_file_name, $this->mailman_group); + chmod($full_file_name, 0755); + } + + //* Create aliasaes + if($status == 'install') exec('/usr/lib/mailman/bin/genaliases 2>/dev/null'); + + if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); + exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); + } + + public function get_postfix_service($service, $type) { + global $conf; + + exec("postconf -M 2> /dev/null", $out, $ret); + + 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 + if (!isset($out[0])) { //* try Postfix 2.9 + exec ("postconf -M $service.$type 2> /dev/null", $out, $ret); + } + $postfix_service = @($out[0]=='')?false:true; + } else { //* fallback - Postfix < 2.9 + $content = rf($conf['postfix']['config_dir'].'/master.cf'); + $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; + $postfix_service = @(preg_match($regex, $content))?true:false; + } + + return $postfix_service; + } + + public function configure_postfix($options = '') { + global $conf,$autoinstall; + $cf = $conf['postfix']; + $config_dir = $cf['config_dir']; + + if(!is_dir($config_dir)) { + $this->error("The postfix configuration directory '$config_dir' does not exist."); + } + + //* mysql-virtual_domains.cf + $this->process_postfix_config('mysql-virtual_domains.cf'); + + //* mysql-virtual_forwardings.cf + $this->process_postfix_config('mysql-virtual_forwardings.cf'); + + //* mysql-virtual_mailboxes.cf + $this->process_postfix_config('mysql-virtual_mailboxes.cf'); + + //* mysql-virtual_email2email.cf + $this->process_postfix_config('mysql-virtual_email2email.cf'); + + //* mysql-virtual_transports.cf + $this->process_postfix_config('mysql-virtual_transports.cf'); + + //* mysql-virtual_recipient.cf + $this->process_postfix_config('mysql-virtual_recipient.cf'); + + //* mysql-virtual_sender.cf + $this->process_postfix_config('mysql-virtual_sender.cf'); + + //* mysql-virtual_sender_login_maps.cf + $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); + + //* mysql-virtual_client.cf + $this->process_postfix_config('mysql-virtual_client.cf'); + + //* mysql-virtual_relaydomains.cf + $this->process_postfix_config('mysql-virtual_relaydomains.cf'); + + //* 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'); + + //* mysql-virtual_policy_greylist.cf + $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); + + //* mysql-virtual_gids.cf.master + $this->process_postfix_config('mysql-virtual_gids.cf'); + + //* mysql-virtual_uids.cf + $this->process_postfix_config('mysql-virtual_uids.cf'); + + //* postfix-dkim + $filename='tag_as_originating.re'; + $full_file_name=$config_dir.'/'.$filename; + if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); + wf($full_file_name, $content); + + $filename='tag_as_foreign.re'; + $full_file_name=$config_dir.'/'.$filename; + if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); + wf($full_file_name, $content); + + //* Changing mode and group of the new created config files. + caselog('chmod u=rw,g=r,o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', + __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); + caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', + __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed'); + + //* Creating virtual mail user and group + $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname']; + if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = 'useradd -g '.$cf['vmail_groupname'].' -u '.$cf['vmail_userid'].' '.$cf['vmail_username'].' -d '.$cf['vmail_mailbox_base'].' -m'; + if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* These postconf commands will be executed on installation and update + $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']); + $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); + unset($server_ini_rec); + + //* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removeal after an update + $rbl_list = ''; + if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') { + $rbl_hosts = explode(",", str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list'])); + foreach ($rbl_hosts as $key => $value) { + $rbl_list .= ", reject_rbl_client ". $value; + } + } + unset($rbl_hosts); + + //* If Postgrey is installed, configure it + $greylisting = ''; + 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, + '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], + '{vmail_userid}' => $cf['vmail_userid'], + '{vmail_groupid}' => $cf['vmail_groupid'], + '{rbl_list}' => $rbl_list, + '{greylisting}' => $greylisting, + '{reject_slm}' => $reject_sender_login_mismatch, + '{myhostname}' => $tmp, + ); + + $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_postfix.conf.master', 'tpl/debian_postfix.conf.master'); + $postconf_tpl = strtr($postconf_tpl, $postconf_placeholders); + $postconf_commands = array_filter(explode("\n", $postconf_tpl)); // read and remove empty lines + + //* These postconf commands will be executed on installation only + if($this->is_update == false) { + $postconf_commands = array_merge($postconf_commands, array( + 'myhostname = '.$conf['hostname'], + 'mydestination = '.$conf['hostname'].', localhost, localhost.localdomain', + 'mynetworks = 127.0.0.0/8 [::1]/128' + )); + } + + //* Create the header and body check files + touch($config_dir.'/header_checks'); + touch($config_dir.'/mime_header_checks'); + touch($config_dir.'/nested_header_checks'); + touch($config_dir.'/body_checks'); + + //* Create the mailman files + if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data'); + if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases'); + exec('postalias /var/lib/mailman/data/aliases'); + if(!is_file('/var/lib/mailman/data/virtual-mailman')) touch('/var/lib/mailman/data/virtual-mailman'); + exec('postmap /var/lib/mailman/data/virtual-mailman'); + if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); + exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); + + //* Create auxillary postfix conf files + $configfile = 'helo_access'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + chmod($config_dir.'/'.$configfile.'~', 0400); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + # todo: look up this server's ip addrs and loop through each + # todo: look up domains hosted on this server and loop through each + wf($config_dir.'/'.$configfile, $content); + + $configfile = 'blacklist_helo'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + chmod($config_dir.'/'.$configfile.'~', 0400); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + wf($config_dir.'/'.$configfile, $content); + + //* Make a backup copy of the main.cf file + copy($config_dir.'/main.cf', $config_dir.'/main.cf~'); + + //* Executing the postconf commands + foreach($postconf_commands as $cmd) { + $command = "postconf -e '$cmd'"; + caselog($command." &> /dev/null", __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); + } + + if(!stristr($options, 'dont-create-certs')) { + //* Create the SSL certificate + if(AUTOINSTALL){ + $command = 'cd '.$config_dir.'; ' + ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; + } else { + $command = 'cd '.$config_dir.'; ' + .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; + } + exec($command); + + $command = 'chmod o= '.$config_dir.'/smtpd.key'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); + } + + //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop. + $command = 'chmod 755 /var/run/courier/authdaemon/'; + if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); + + //* Check maildrop service in posfix master.cf + $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 2> /dev/null", $out, $ret); + $change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true; + } else { + $change_maildrop_flags = @(preg_match($regex, $configfile))?false:true; + } + if ($change_maildrop_flags) { + //* Change maildrop service in posfix master.cf + if(is_file($config_dir.'/master.cf')) { + copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); + } + 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); + wf($configfile, $content); + } + + //* Writing the Maildrop mailfilter file + $configfile = 'mailfilter'; + if(is_file($cf['vmail_mailbox_base'].'/.'.$configfile)) { + copy($cf['vmail_mailbox_base'].'/.'.$configfile, $cf['vmail_mailbox_base'].'/.'.$configfile.'~'); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = str_replace('{dist_postfix_vmail_mailbox_base}', $cf['vmail_mailbox_base'], $content); + wf($cf['vmail_mailbox_base'].'/.'.$configfile, $content); + + //* Create the directory for the custom mailfilters + if(!is_dir($cf['vmail_mailbox_base'].'/mailfilters')) { + $command = 'mkdir '.$cf['vmail_mailbox_base'].'/mailfilters'; + caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + //* Chmod and chown the .mailfilter file + $command = 'chown '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base'].'/.mailfilter'; + caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = 'chmod 600 '.$cf['vmail_mailbox_base'].'/.mailfilter'; + caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + } + + public function configure_saslauthd() { + global $conf; + + //* Get saslsauthd version + exec('saslauthd -v 2>&1', $out); + $parts = explode(' ', $out[0]); + $saslversion = $parts[1]; + unset($parts); + unset($out); + + if(version_compare($saslversion , '2.1.23', '<=')) { + //* Configfile for saslauthd versions up to 2.1.23 + $configfile = 'sasl_smtpd.conf'; + } else { + //* Configfile for saslauthd versions 2.1.24 and newer + $configfile = 'sasl_smtpd2.conf'; + } + + if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf')) copy($conf['postfix']['config_dir'].'/sasl/smtpd.conf', $conf['postfix']['config_dir'].'/sasl/smtpd.conf~'); + if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf~')) chmod($conf['postfix']['config_dir'].'/sasl/smtpd.conf~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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); + wf($conf['postfix']['config_dir'].'/sasl/smtpd.conf', $content); + + // TODO: Chmod and chown on the config file + + + // Recursively create the spool directory + if(!@is_dir('/var/spool/postfix/var/run/saslauthd')) mkdir('/var/spool/postfix/var/run/saslauthd', 0755, true); + + // Edit the file /etc/default/saslauthd + $configfile = $conf['saslauthd']['config']; + if(is_file($configfile)) copy($configfile, $configfile.'~'); + if(is_file($configfile.'~')) chmod($configfile.'~', 0400); + $content = rf($configfile); + $content = str_replace('START=no', 'START=yes', $content); + // Debian + $content = str_replace('OPTIONS="-c"', 'OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r"', $content); + // Ubuntu + $content = str_replace('OPTIONS="-c -m /var/run/saslauthd"', 'OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"', $content); + wf($configfile, $content); + + // Edit the file /etc/init.d/saslauthd + $configfile = $conf['init_scripts'].'/'.$conf['saslauthd']['init_script']; + $content = rf($configfile); + $content = str_replace('PIDFILE=$RUN_DIR/saslauthd.pid', 'PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"', $content); + wf($configfile, $content); + + // add the postfix user to the sasl group (at least necessary for Ubuntu 8.04 and most likely Debian Lenny as well. + exec('adduser postfix sasl'); + + + } + + public function configure_pam() { + global $conf; + $pam = $conf['pam']; + //* configure pam for SMTP authentication agains the ispconfig database + $configfile = 'pamd_smtp'; + if(is_file($pam.'/smtp')) copy($pam.'/smtp', $pam.'/smtp~'); + if(is_file($pam.'/smtp~')) chmod($pam.'/smtp~', 0400); + + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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); + wf($pam.'/smtp', $content); + // On some OSes smtp is world readable which allows for reading database information. Removing world readable rights should have no effect. + if(is_file($pam.'/smtp')) exec("chmod o= $pam/smtp"); + chmod($pam.'/smtp', 0660); + chown($pam.'/smtp', 'daemon'); + chgrp($pam.'/smtp', 'daemon'); + + } + + public function configure_courier() { + global $conf; + $config_dir = $conf['courier']['config_dir']; + //* authmysqlrc + $configfile = 'authmysqlrc'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + } + chmod($config_dir.'/'.$configfile.'~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + wf($config_dir.'/'.$configfile, $content); + + chmod($config_dir.'/'.$configfile, 0660); + chown($config_dir.'/'.$configfile, 'daemon'); + chgrp($config_dir.'/'.$configfile, 'daemon'); + + //* authdaemonrc + $configfile = $config_dir.'/authdaemonrc'; + if(is_file($configfile)) { + copy($configfile, $configfile.'~'); + } + if(is_file($configfile.'~')) { + chmod($configfile.'~', 0400); + } + $content = rf($configfile); + $content = str_replace('authmodulelist="authpam"', 'authmodulelist="authmysql"', $content); + wf($configfile, $content); + } + + 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; + } + } + + $config_dir = $conf['postfix']['config_dir']; + + //* Configure master.cf and add a line for deliver + if(!$this->get_postfix_service('dovecot', 'unix')) { + //* backup + if(is_file($config_dir.'/master.cf')){ + copy($config_dir.'/master.cf', $config_dir.'/master.cf~2'); + } + if(is_file($config_dir.'/master.cf~')){ + chmod($config_dir.'/master.cf~2', 0400); + } + //* 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"; + af($config_dir.'/master.cf', $deliver_content); + unset($content); + unset($deliver_content); + } + + //* Reconfigure postfix to use dovecot authentication + // Adding the amavisd commands to the postfix configuration + $postconf_commands = array ( + 'dovecot_destination_recipient_limit = 1', + 'virtual_transport = '.$virtual_transport, + 'smtpd_sasl_type = dovecot', + 'smtpd_sasl_path = private/auth' + ); + + // Make a backup copy of the main.cf file + copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~3'); + + // Executing the postconf commands + foreach($postconf_commands as $cmd) { + $command = "postconf -e '$cmd'"; + caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + //* backup dovecot.conf + $config_dir = $conf['dovecot']['config_dir']; + $configfile = 'dovecot.conf'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + } + + //* Get the dovecot version + exec('dovecot --version', $tmp); + $dovecot_version = $tmp[0]; + unset($tmp); + + //* Copy dovecot configuration file + 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 + 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 { + copy('tpl/debian_dovecot2.conf.master', $config_dir.'/'.$configfile); + } + 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); + if(version_compare($dovecot_version, 2.1, '<')) { + 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); + } + } + + //* dovecot-lmtpd + if($configure_lmtp) { + replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); + } + + //* dovecot-sql.conf + $configfile = 'dovecot-sql.conf'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + } + if(is_file($config_dir.'/'.$configfile.'~')) chmod($config_dir.'/'.$configfile.'~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot-sql.conf.master', 'tpl/debian_dovecot-sql.conf.master'); + $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_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); + # enable iterate_query for dovecot2 + if(version_compare($dovecot_version,2, '>=')) { + $content = str_replace('# iterate_query', 'iterate_query', $content); + } + wf($config_dir.'/'.$configfile, $content); + + 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"); + + } + + public function configure_amavis() { + global $conf; + + // amavisd user config file + $configfile = 'amavisd_user_config'; + if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) copy($conf['amavis']['config_dir'].'/conf.d/50-user', $conf['amavis']['config_dir'].'/50-user~'); + if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user~')) chmod($conf['amavis']['config_dir'].'/50-user~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_port}', $conf['mysql']['port'], $content); + $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); + wf($conf['amavis']['config_dir'].'/conf.d/50-user', $content); + chmod($conf['amavis']['config_dir'].'/conf.d/50-user', 0640); + + // TODO: chmod and chown on the config file + + + // Adding the amavisd commands to the postfix configuration + // Add array for no error in foreach and maybe future options + $postconf_commands = array (); + + // Check for amavisd -> pure webserver with postfix for mailing without antispam + if ($conf['amavis']['installed']) { + $postconf_commands[] = 'content_filter = amavis:[127.0.0.1]:10024'; + $postconf_commands[] = 'receive_override_options = no_address_mappings'; + } + + // Make a backup copy of the main.cf file + copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~2'); + + // Executing the postconf commands + foreach($postconf_commands as $cmd) { + $command = "postconf -e '$cmd'"; + caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + $config_dir = $conf['postfix']['config_dir']; + + // Adding amavis-services to the master.cf file if the service does not already exists + $add_amavis = !$this->get_postfix_service('amavis','unix'); + $add_amavis_10025 = !$this->get_postfix_service('127.0.0.1:10025','inet'); + $add_amavis_10027 = !$this->get_postfix_service('127.0.0.1:10027','inet'); + //*TODO: check templates against existing postfix-services to make sure we use the template + + if ($add_amavis || $add_amavis_10025 || $add_amavis_10027) { + //* backup master.cf + if(is_file($config_dir.'/master.cf')) copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); + // adjust amavis-config + if($add_amavis) { + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis.master', 'tpl/master_cf_amavis.master'); + af($config_dir.'/master.cf', $content); + unset($content); + } + if ($add_amavis_10025) { + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis10025.master', 'tpl/master_cf_amavis10025.master'); + af($config_dir.'/master.cf', $content); + unset($content); + } + if ($add_amavis_10027) { + $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 + exec('adduser clamav amavis'); + // get shell-group for amavis + $amavis_group=exec('grep -o "^amavis:\|^vscan:" /etc/group'); + if(!empty($amavis_group)) { + $amavis_group=rtrim($amavis_group, ":"); + } + // get shell-user for amavis + $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); + if(!empty($amavis_user)) { + $amavis_user=rtrim($amavis_user, ":"); + } + + // Create the director for DKIM-Keys + if(!is_dir('/var/lib/amavis')) mkdir('/var/lib/amavis', 0750, true); + if(!empty($amavis_user)) exec('chown '.$amavis_user.' /var/lib/amavis'); + if(!empty($amavis_group)) exec('chgrp '.$amavis_group.' /var/lib/amavis'); + if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750); + if(!empty($amavis_user)) exec('chown -R '.$amavis_user.' /var/lib/amavis/dkim'); + if(!empty($amavis_group)) exec('chgrp -R '.$amavis_group.' /var/lib/amavis/dkim'); + + } + + public function configure_spamassassin() { + global $conf; + + //* Enable spamasasssin on debian and ubuntu + $configfile = '/etc/default/spamassassin'; + if(is_file($configfile)) { + copy($configfile, $configfile.'~'); + } + $content = rf($configfile); + $content = str_replace('ENABLED=0', 'ENABLED=1', $content); + wf($configfile, $content); + } + + public function configure_getmail() { + global $conf; + + $config_dir = $conf['getmail']['config_dir']; + + if(!@is_dir($config_dir)) mkdir(escapeshellcmd($config_dir), 0700, true); + + $command = 'useradd -d '.$config_dir.' getmail'; + if(!is_user('getmail')) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = "chown -R getmail $config_dir"; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = "chmod -R 700 $config_dir"; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + + public function configure_pureftpd() { + global $conf; + + $config_dir = $conf['pureftpd']['config_dir']; + + //* configure pure-ftpd for MySQL authentication against the ispconfig database + $configfile = 'db/mysql.conf'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + } + if(is_file($config_dir.'/'.$configfile.'~')) { + chmod($config_dir.'/'.$configfile.'~', 0400); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/pureftpd_mysql.conf.master', 'tpl/pureftpd_mysql.conf.master'); + $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($config_dir.'/'.$configfile, $content); + chmod($config_dir.'/'.$configfile, 0600); + chown($config_dir.'/'.$configfile, 'root'); + chgrp($config_dir.'/'.$configfile, 'root'); + // **enable chrooting + //exec('mkdir -p '.$config_dir.'/conf/ChrootEveryone'); + exec('echo "yes" > '.$config_dir.'/conf/ChrootEveryone'); + exec('echo "yes" > '.$config_dir.'/conf/BrokenClientsCompatibility'); + exec('echo "yes" > '.$config_dir.'/conf/DisplayDotFiles'); + + if(is_file('/etc/default/pure-ftpd-common')) { + replaceLine('/etc/default/pure-ftpd-common', 'STANDALONE_OR_INETD=inetd', 'STANDALONE_OR_INETD=standalone', 1, 0); + replaceLine('/etc/default/pure-ftpd-common', 'VIRTUALCHROOT=false', 'VIRTUALCHROOT=true', 1, 0); + } + + if(is_file('/etc/inetd.conf')) { + replaceLine('/etc/inetd.conf', '/usr/sbin/pure-ftpd-wrapper', '#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper', 0, 0); + exec($this->getinitcommand('openbsd-inetd', 'restart')); + //if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart'); + } + + if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec('echo "yes" > /etc/pure-ftpd/conf/DontResolve'); + } + + public function configure_mydns() { + global $conf; + + // configure pam for SMTP authentication agains the ispconfig database + $configfile = 'mydns.conf'; + if(is_file($conf['mydns']['config_dir'].'/'.$configfile)) copy($conf['mydns']['config_dir'].'/'.$configfile, $conf['mydns']['config_dir'].'/'.$configfile.'~'); + if(is_file($conf['mydns']['config_dir'].'/'.$configfile.'~')) chmod($conf['mydns']['config_dir'].'/'.$configfile.'~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + $content = str_replace('{server_id}', $conf['server_id'], $content); + wf($conf['mydns']['config_dir'].'/'.$configfile, $content); + chmod($conf['mydns']['config_dir'].'/'.$configfile, 0600); + chown($conf['mydns']['config_dir'].'/'.$configfile, 'root'); + chgrp($conf['mydns']['config_dir'].'/'.$configfile, 'root'); + + } + + public function configure_powerdns() { + global $conf; + + //* Create the database + if(!$this->db->query('CREATE DATABASE IF NOT EXISTS ?? DEFAULT CHARACTER SET ?', $conf['powerdns']['database'], $conf['mysql']['charset'])) { + $this->error('Unable to create MySQL database: '.$conf['powerdns']['database'].'.'); + } + + //* Create the ISPConfig database user in the local database + $query = "GRANT ALL ON ?? TO ?@'localhost'"; + if(!$this->db->query($query, $conf['powerdns']['database'] . '.*', $conf['mysql']['ispconfig_user'])) { + $this->error('Unable to create user for powerdns database Error: '.$this->db->errorMessage); + } + + //* load the powerdns databse dump + if($conf['mysql']['admin_password'] == '') { + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); + } else { + caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", + __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); + } + + //* Create the powerdns config file + $configfile = 'pdns.local'; + if(is_file($conf['powerdns']['config_dir'].'/'.$configfile)) copy($conf['powerdns']['config_dir'].'/'.$configfile, $conf['powerdns']['config_dir'].'/'.$configfile.'~'); + if(is_file($conf['powerdns']['config_dir'].'/'.$configfile.'~')) chmod($conf['powerdns']['config_dir'].'/'.$configfile.'~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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('{powerdns_database}', $conf['powerdns']['database'], $content); + $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + wf($conf['powerdns']['config_dir'].'/'.$configfile, $content); + chmod($conf['powerdns']['config_dir'].'/'.$configfile, 0600); + chown($conf['powerdns']['config_dir'].'/'.$configfile, 'root'); + chgrp($conf['powerdns']['config_dir'].'/'.$configfile, 'root'); + + + } + + //** 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.'~'); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_ispconfig_database}', $conf['mysql']['database'], $content); + $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); + $content = str_replace('{ispconfig_install_dir}', $conf['ispconfig_install_dir'], $content); + $content = str_replace('{dnssec_conffile}', $conf['ispconfig_install_dir'].'/server/scripts/dnssec-config.sh', $content); + wf($full_file_name, $content); + } + + public function configure_bind() { + global $conf; + + //* Check if the zonefile directory has a slash at the end + $content=$conf['bind']['bind_zonefiles_dir']; + if(substr($content, -1, 1) != '/') { + $content .= '/'; + } + + //* Create the slave subdirectory + $content .= 'slave'; + if(!@is_dir($content)) mkdir($content, 02770, true); + + //* Chown the slave subdirectory to $conf['bind']['bind_user'] + 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 = '') { + global $conf; + + if($conf['xmpp']['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()); + unset($tpl); + + $tpl = new tpl('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/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__); + // 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('metronome_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['xmpp']['init_script'], 'restart')); + } + + + public function configure_apache() { + global $conf; + + if($conf['apache']['installed'] == false) return; + //* Create the logging directory for the vhost logfiles + if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true); + + if(is_file('/etc/suphp/suphp.conf')) { + replaceLine('/etc/suphp/suphp.conf', 'php="php:/usr/bin', 'x-httpd-suphp="php:/usr/bin/php-cgi"', 0); + //replaceLine('/etc/suphp/suphp.conf','docroot=','docroot=/var/clients',0); + replaceLine('/etc/suphp/suphp.conf', 'umask=00', 'umask=0022', 0); + } + + if(is_file('/etc/apache2/sites-enabled/000-default')) { + replaceLine('/etc/apache2/sites-available/000-default', 'NameVirtualHost *', 'NameVirtualHost *:80', 1, 0); + replaceLine('/etc/apache2/sites-available/000-default', '<VirtualHost *>', '<VirtualHost *:80>', 1, 0); + } + + 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); + } + + if(is_file('/etc/apache2/apache.conf')) { + if(hasLine('/etc/apache2/apache.conf', 'Include sites-enabled/', 1) == false) { + if(hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.conf', 1) == false && hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/', 1) == false) { + replaceLine('/etc/apache2/apache.conf', 'Include sites-enabled/', 'Include sites-enabled/', 1, 1); + } elseif(hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.vhost', 1) == false) { + replaceLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.vhost', 'IncludeOptional sites-enabled/', 1, 1); + } + } + } + + 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) { + replaceLine('/etc/apache2/apache2.conf', 'Include sites-enabled/*.conf', 'Include sites-enabled/', 1, 1); + } elseif(hasLine('/etc/apache2/apache2.conf', 'IncludeOptional sites-enabled/*.conf', 1) == true) { + replaceLine('/etc/apache2/apache2.conf', 'IncludeOptional sites-enabled/*.conf', 'IncludeOptional sites-enabled/', 1, 1); + } + } + } + + //* Copy the ISPConfig configuration include + $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; + $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; + + $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(); + + if(is_array($records) && count($records) > 0) { + foreach($records as $rec) { + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',', $rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); + } + } + } + } + } + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); + + if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.conf')) { + symlink($vhost_conf_dir.'/ispconfig.conf', $vhost_conf_enabled_dir.'/000-ispconfig.conf'); + } + + //* make sure that webalizer finds its config file when it is directly in /etc + if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) { + mkdir('/etc/webalizer'); + symlink('/etc/webalizer.conf', '/etc/webalizer/webalizer.conf'); + } + + if(is_file('/etc/webalizer/webalizer.conf')) { + // Change webalizer mode to incremental + replaceLine('/etc/webalizer/webalizer.conf', '#IncrementalName', 'IncrementalName webalizer.current', 0, 0); + replaceLine('/etc/webalizer/webalizer.conf', '#Incremental', 'Incremental yes', 0, 0); + replaceLine('/etc/webalizer/webalizer.conf', '#HistoryName', 'HistoryName webalizer.hist', 0, 0); + } + + // Check the awsatst script + if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools'); + if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl', '/usr/share/awstats/tools/awstats_buildstaticpages.pl'); + if(file_exists('/etc/awstats/awstats.conf.local')) replaceLine('/etc/awstats/awstats.conf.local', 'LogFormat=4', 'LogFormat=1', 0, 1); + + //* 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"); + + } + + public function configure_nginx(){ + global $conf; + + if($conf['nginx']['installed'] == false) return; + //* Create the logging directory for the vhost logfiles + if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true); + + //* make sure that webalizer finds its config file when it is directly in /etc + if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) { + mkdir('/etc/webalizer'); + symlink('/etc/webalizer.conf', '/etc/webalizer/webalizer.conf'); + } + + if(is_file('/etc/webalizer/webalizer.conf')) { + // Change webalizer mode to incremental + replaceLine('/etc/webalizer/webalizer.conf', '#IncrementalName', 'IncrementalName webalizer.current', 0, 0); + replaceLine('/etc/webalizer/webalizer.conf', '#Incremental', 'Incremental yes', 0, 0); + replaceLine('/etc/webalizer/webalizer.conf', '#HistoryName', 'HistoryName webalizer.hist', 0, 0); + } + + // Check the awsatst script + if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools'); + if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl', '/usr/share/awstats/tools/awstats_buildstaticpages.pl'); + if(file_exists('/etc/awstats/awstats.conf.local')) replaceLine('/etc/awstats/awstats.conf.local', 'LogFormat=4', 'LogFormat=1', 0, 1); + + //* 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() { + // To Do + } + + public function configure_squid() + { + global $conf; + $row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $conf["server_id"]); + $ip_address = gethostbyname($row["server_name"]); + $server_name = $row["server_name"]; + + $configfile = 'squid.conf'; + if(is_file($conf["squid"]["config_dir"].'/'.$configfile)) copy($conf["squid"]["config_dir"].'/'.$configfile, $conf["squid"]["config_dir"].'/'.$configfile.'~'); + if(is_file($conf["squid"]["config_dir"].'/'.$configfile.'~')) exec('chmod 400 '.$conf["squid"]["config_dir"].'/'.$configfile.'~'); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', "tpl/".$configfile.".master"); + $content = str_replace('{server_name}', $server_name, $content); + $content = str_replace('{ip_address}', $ip_address, $content); + $content = str_replace('{config_dir}', $conf['squid']['config_dir'], $content); + wf($conf["squid"]["config_dir"].'/'.$configfile, $content); + exec('chmod 600 '.$conf["squid"]["config_dir"].'/'.$configfile); + exec('chown root:root '.$conf["squid"]["config_dir"].'/'.$configfile); + } + + public function configure_ufw_firewall() + { + if($this->is_update == false) { + $configfile = 'ufw.conf'; + if(is_file('/etc/ufw/ufw.conf')) copy('/etc/ufw/ufw.conf', '/etc/ufw/ufw.conf~'); + $content = rf("tpl/".$configfile.".master"); + wf('/etc/ufw/ufw.conf', $content); + exec('chmod 600 /etc/ufw/ufw.conf'); + exec('chown root:root /etc/ufw/ufw.conf'); + } + } + + public function configure_bastille_firewall() { + global $conf; + + $dist_init_scripts = $conf['init_scripts']; + + if(is_dir('/etc/Bastille.backup')) caselog('rm -rf /etc/Bastille.backup', __FILE__, __LINE__); + if(is_dir('/etc/Bastille')) caselog('mv -f /etc/Bastille /etc/Bastille.backup', __FILE__, __LINE__); + @mkdir('/etc/Bastille', 0700); + if(is_dir('/etc/Bastille.backup/firewall.d')) caselog('cp -pfr /etc/Bastille.backup/firewall.d /etc/Bastille/', __FILE__, __LINE__); + if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/bastille-firewall.cfg.master')) { + caselog('cp -f ' . $conf['ispconfig_install_dir'].'/server/conf-custom/install/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); + } else { + caselog('cp -f tpl/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); + } + caselog('chmod 644 /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); + $content = rf('/etc/Bastille/bastille-firewall.cfg'); + $content = str_replace('{DNS_SERVERS}', '', $content); + + $tcp_public_services = ''; + $udp_public_services = ''; + + $row = $this->db->queryOneRecord('SELECT * FROM ?? WHERE server_id = ?', $conf["mysql"]["database"] . '.firewall', $conf['server_id']); + + if(trim($row['tcp_port']) != '' || trim($row['udp_port']) != '') { + $tcp_public_services = trim(str_replace(',', ' ', $row['tcp_port'])); + $udp_public_services = trim(str_replace(',', ' ', $row['udp_port'])); + } else { + $tcp_public_services = '21 22 25 53 80 110 143 443 3306 8080 10000'; + $udp_public_services = '53'; + } + + if(!stristr($tcp_public_services, $conf['apache']['vhost_port'])) { + $tcp_public_services .= ' '.intval($conf['apache']['vhost_port']); + if($row['tcp_port'] != '') $this->db->query("UPDATE firewall SET tcp_port = tcp_port + ? WHERE server_id = ?", ',' . intval($conf['apache']['vhost_port']), $conf['server_id']); + } + + $content = str_replace('{TCP_PUBLIC_SERVICES}', $tcp_public_services, $content); + $content = str_replace('{UDP_PUBLIC_SERVICES}', $udp_public_services, $content); + + wf('/etc/Bastille/bastille-firewall.cfg', $content); + + if(is_file($dist_init_scripts.'/bastille-firewall')) caselog('mv -f '.$dist_init_scripts.'/bastille-firewall '.$dist_init_scripts.'/bastille-firewall.backup', __FILE__, __LINE__); + caselog('cp -f apps/bastille-firewall '.$dist_init_scripts, __FILE__, __LINE__); + caselog('chmod 700 '.$dist_init_scripts.'/bastille-firewall', __FILE__, __LINE__); + + if(is_file('/sbin/bastille-ipchains')) caselog('mv -f /sbin/bastille-ipchains /sbin/bastille-ipchains.backup', __FILE__, __LINE__); + caselog('cp -f apps/bastille-ipchains /sbin', __FILE__, __LINE__); + caselog('chmod 700 /sbin/bastille-ipchains', __FILE__, __LINE__); + + if(is_file('/sbin/bastille-netfilter')) caselog('mv -f /sbin/bastille-netfilter /sbin/bastille-netfilter.backup', __FILE__, __LINE__); + caselog('cp -f apps/bastille-netfilter /sbin', __FILE__, __LINE__); + caselog('chmod 700 /sbin/bastille-netfilter', __FILE__, __LINE__); + + if(!@is_dir('/var/lock/subsys')) caselog('mkdir /var/lock/subsys', __FILE__, __LINE__); + + exec('which ipchains &> /dev/null', $ipchains_location, $ret_val); + if(!is_file('/sbin/ipchains') && !is_link('/sbin/ipchains') && $ret_val == 0) phpcaselog(@symlink(shell_exec('which ipchains'), '/sbin/ipchains'), 'create symlink', __FILE__, __LINE__); + unset($ipchains_location); + exec('which iptables &> /dev/null', $iptables_location, $ret_val); + if(!is_file('/sbin/iptables') && !is_link('/sbin/iptables') && $ret_val == 0) phpcaselog(@symlink(trim(shell_exec('which iptables')), '/sbin/iptables'), 'create symlink', __FILE__, __LINE__); + unset($iptables_location); + + } + + public function configure_vlogger() { + global $conf; + + //** Configure vlogger to use traffic logging to mysql (master) db + $configfile = 'vlogger-dbi.conf'; + if(is_file($conf['vlogger']['config_dir'].'/'.$configfile)) copy($conf['vlogger']['config_dir'].'/'.$configfile, $conf['vlogger']['config_dir'].'/'.$configfile.'~'); + if(is_file($conf['vlogger']['config_dir'].'/'.$configfile.'~')) chmod($conf['vlogger']['config_dir'].'/'.$configfile.'~', 0400); + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + if($conf['mysql']['master_slave_setup'] == 'y') { + $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); + $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); + $content = str_replace('{mysql_server_database}', $conf['mysql']['master_database'], $content); + $content = str_replace('{mysql_server_ip}', $conf['mysql']['master_host'], $content); + } else { + $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); + } + wf($conf['vlogger']['config_dir'].'/'.$configfile, $content); + chmod($conf['vlogger']['config_dir'].'/'.$configfile, 0600); + chown($conf['vlogger']['config_dir'].'/'.$configfile, 'root'); + chgrp($conf['vlogger']['config_dir'].'/'.$configfile, 'root'); + + } + + public function configure_apps_vhost() { + global $conf; + + //* Create the ispconfig apps vhost user and group + if($conf['apache']['installed'] == true){ + $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']); + $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']); + $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps'); + + $command = 'groupadd '.$apps_vhost_user; + if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group; + if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + + //$command = 'adduser '.$conf['apache']['user'].' '.$apps_vhost_group; + $command = 'usermod -a -G '.$apps_vhost_group.' '.$conf['apache']['user']; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + if(!@is_dir($install_dir)){ + mkdir($install_dir, 0755, true); + } else { + chmod($install_dir, 0755); + } + chown($install_dir, $apps_vhost_user); + chgrp($install_dir, $apps_vhost_group); + + //* Copy the apps vhost file + $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(); + } + + // Dont just copy over the virtualhost template but add some custom settings + $tpl = new tpl('apache_apps.vhost.master'); + $tpl->setVar('apps_vhost_ip',$conf['web']['apps_vhost_ip']); + $tpl->setVar('apps_vhost_port',$conf['web']['apps_vhost_port']); + $tpl->setVar('apps_vhost_dir',$conf['web']['website_basedir'].'/apps'); + $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 + if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { + $tpl->setVar('vhost_port_listen','#'); + } else { + $tpl->setVar('vhost_port_listen',''); + } + + wf($vhost_conf_dir.'/apps.vhost', $tpl->grab()); + unset($tpl); + + //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); + //* and create the symlink + if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost'); + if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost') && @is_file($vhost_conf_dir.'/apps.vhost')) { + @symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); + } + + if(!is_file($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter')) { + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_apps_fcgi_starter.master', 'tpl/apache_apps_fcgi_starter.master'); + $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); + $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); + mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true); + //copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); + wf($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', $content); + exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); + exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps'); + + } + } + if($conf['nginx']['installed'] == true){ + $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']); + $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']); + $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps'); + + $command = 'groupadd '.$apps_vhost_user; + if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group; + if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + + //$command = 'adduser '.$conf['nginx']['user'].' '.$apps_vhost_group; + $command = 'usermod -a -G '.$apps_vhost_group.' '.$conf['nginx']['user']; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + if(!@is_dir($install_dir)){ + mkdir($install_dir, 0755, true); + } else { + chmod($install_dir, 0755); + } + chown($install_dir, $apps_vhost_user); + chgrp($install_dir, $apps_vhost_group); + + //* Copy the apps vhost file + $vhost_conf_dir = $conf['nginx']['vhost_conf_dir']; + $vhost_conf_enabled_dir = $conf['nginx']['vhost_conf_enabled_dir']; + $apps_vhost_servername = ($conf['web']['apps_vhost_servername'] == '')?'_':$conf['web']['apps_vhost_servername']; + + // Dont just copy over the virtualhost template but add some custom settings + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/nginx_apps.vhost.master', 'tpl/nginx_apps.vhost.master'); + + if($conf['web']['apps_vhost_ip'] == '_default_'){ + $apps_vhost_ip = ''; + } else { + $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; + } + + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'apps.sock'; + $cgi_socket = escapeshellcmd($conf['nginx']['cgi_socket']); + + $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); + $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content); + $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content); + $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['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') + || 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 { + $use_tcp = ''; + $use_socket = '#'; + } + $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}', '', $content); + $content = str_replace('{ssl_comment}', '#', $content); + + // Fix socket path on PHP 7 systems + if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); + if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); + if(file_exists('/var/run/php/php7.2-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content); + + wf($vhost_conf_dir.'/apps.vhost', $content); + + // PHP-FPM + // Dont just copy over the php-fpm pool template but add some custom settings + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apps_php_fpm_pool.conf.master', 'tpl/apps_php_fpm_pool.conf.master'); + $content = str_replace('{fpm_pool}', 'apps', $content); + //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); + $content = str_replace('{fpm_user}', $apps_vhost_user, $content); + $content = str_replace('{fpm_group}', $apps_vhost_group, $content); + wf($conf['nginx']['php_fpm_pool_dir'].'/apps.conf', $content); + + //copy('tpl/nginx_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); + //* and create the symlink + if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost'); + if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) { + symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); + } + + } + } + + public function make_ispconfig_ssl_cert() { + global $conf,$autoinstall; + + $install_dir = $conf['ispconfig_install_dir']; + + $ssl_crt_file = $install_dir.'/interface/ssl/ispserver.crt'; + $ssl_csr_file = $install_dir.'/interface/ssl/ispserver.csr'; + $ssl_key_file = $install_dir.'/interface/ssl/ispserver.key'; + + if(!@is_dir($install_dir.'/interface/ssl')) mkdir($install_dir.'/interface/ssl', 0755, true); + + $ssl_pw = substr(md5(mt_rand()), 0, 6); + exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096"); + if(AUTOINSTALL){ + exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -key $ssl_key_file -out $ssl_csr_file"); + } else { + exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); + } + exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650"); + 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'); + + } + + public function install_ispconfig() { + global $conf; + + $install_dir = $conf['ispconfig_install_dir']; + + //* Create the ISPConfig installation directory + if(!@is_dir($install_dir)) { + $command = "mkdir $install_dir"; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + //* Create a ISPConfig user and group + $command = 'groupadd ispconfig'; + if(!is_group('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + $command = 'useradd -g ispconfig -d '.$install_dir.' ispconfig'; + if(!is_user('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* copy the ISPConfig interface part + $command = 'cp -rf ../interface '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* 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~')); + $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); + if(is_array($security_settings_new) && is_array($security_settings_old)) { + foreach($security_settings_new as $section => $sval) { + if(is_array($sval)) { + foreach($sval as $key => $val) { + if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { + $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; + } + } + } + } + file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); + } + } + + //* Create a symlink, so ISPConfig is accessible via web + // Replaced by a separate vhost definition for port 8080 + // $command = "ln -s $install_dir/interface/web/ /var/www/ispconfig"; + // caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Create the config file for ISPConfig interface + $configfile = 'config.inc.php'; + if(is_file($install_dir.'/interface/lib/'.$configfile)) { + copy($install_dir.'/interface/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~'); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + + $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); + $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); + $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content); + $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content); + $content = str_replace('{mysql_master_server_port}', $conf['mysql']['master_port'], $content); + + $content = str_replace('{server_id}', $conf['server_id'], $content); + $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content); + $content = str_replace('{language}', $conf['language'], $content); + $content = str_replace('{timezone}', $conf['timezone'], $content); + $content = str_replace('{theme}', $conf['theme'], $content); + $content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content); + + wf($install_dir.'/interface/lib/'.$configfile, $content); + + //* Create the config file for ISPConfig server + $configfile = 'config.inc.php'; + if(is_file($install_dir.'/server/lib/'.$configfile)) { + copy($install_dir.'/server/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~'); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $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_host}', $conf['mysql']['host'], $content); + $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); + + $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); + $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); + $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content); + $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content); + $content = str_replace('{mysql_master_server_port}', $conf['mysql']['master_port'], $content); + + $content = str_replace('{server_id}', $conf['server_id'], $content); + $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content); + $content = str_replace('{language}', $conf['language'], $content); + $content = str_replace('{timezone}', $conf['timezone'], $content); + $content = str_replace('{theme}', $conf['theme'], $content); + $content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content); + + wf($install_dir.'/server/lib/'.$configfile, $content); + + //* Create the config file for remote-actions (but only, if it does not exist, because + // the value is a autoinc-value and so changed by the remoteaction_core_module + if (!file_exists($install_dir.'/server/lib/remote_action.inc.php')) { + $content = '<?php' . "\n" . '$maxid_remote_action = 0;' . "\n" . '?>'; + wf($install_dir.'/server/lib/remote_action.inc.php', $content); + } + + //* Enable the server modules and plugins. + // TODO: Implement a selector which modules and plugins shall be enabled. + $dir = $install_dir.'/server/mods-available/'; + if (is_dir($dir)) { + if ($dh = opendir($dir)) { + while (($file = readdir($dh)) !== false) { + if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { + include_once $install_dir.'/server/mods-available/'.$file; + $module_name = substr($file, 0, -8); + $tmp = new $module_name; + if($tmp->onInstall()) { + if(!@is_link($install_dir.'/server/mods-enabled/'.$file)) { + @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-enabled/'.$file); + // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-enabled/'.$file); + } + if (strpos($file, '_core_module') !== false) { + if(!@is_link($install_dir.'/server/mods-core/'.$file)) { + @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-core/'.$file); + // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-core/'.$file); + } + } + } + unset($tmp); + } + } + closedir($dh); + } + } + + $dir = $install_dir.'/server/plugins-available/'; + if (is_dir($dir)) { + if ($dh = opendir($dir)) { + while (($file = readdir($dh)) !== false) { + if($conf['apache']['installed'] == true && $file == 'nginx_plugin.inc.php') continue; + if($conf['nginx']['installed'] == true && $file == 'apache2_plugin.inc.php') continue; + if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { + include_once $install_dir.'/server/plugins-available/'.$file; + $plugin_name = substr($file, 0, -8); + $tmp = new $plugin_name; + if(method_exists($tmp, 'onInstall') && $tmp->onInstall()) { + if(!@is_link($install_dir.'/server/plugins-enabled/'.$file)) { + @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-enabled/'.$file); + //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-enabled/'.$file); + } + if (strpos($file, '_core_plugin') !== false) { + if(!@is_link($install_dir.'/server/plugins-core/'.$file)) { + @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-core/'.$file); + //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-core/'.$file); + } + } + } + unset($tmp); + } + } + closedir($dh); + } + } + + // Update the server config + $mail_server_enabled = ($conf['services']['mail'])?1:0; + $web_server_enabled = ($conf['services']['web'])?1:0; + $dns_server_enabled = ($conf['services']['dns'])?1:0; + $file_server_enabled = ($conf['services']['file'])?1:0; + $db_server_enabled = ($conf['services']['db'])?1:0; + $vserver_server_enabled = ($conf['openvz']['installed'])?1:0; + $proxy_server_enabled = ($conf['services']['proxy'])?1:0; + $firewall_server_enabled = ($conf['services']['firewall'])?1:0; + $xmpp_server_enabled = ($conf['services']['xmpp'])?1:0; + + $sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled', proxy_server = '$proxy_server_enabled', firewall_server = '$firewall_server_enabled', xmpp_server = '$xmpp_server_enabled' WHERE server_id = ?"; + + $this->db->query($sql, $conf['server_id']); + if($conf['mysql']['master_slave_setup'] == 'y') { + $this->dbmaster->query($sql, $conf['server_id']); + } + + + // chown install dir to root and chmod 755 + $command = 'chown root:root '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chmod 755 '.$install_dir; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* Chmod the files and directories in the install dir + $command = 'chmod -R 750 '.$install_dir.'/*'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* chown the interface files to the ispconfig user and group + $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* 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"); + $command = 'chown root:ispconfig '.$install_dir.'/security'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; + 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"); + + //* Make the temp directory for language file exports writable + if(is_dir($install_dir.'/interface/web/temp')) exec("chmod -R 770 $install_dir/interface/web/temp"); + + //* Make all interface language file directories group writable + $handle = @opendir($install_dir.'/interface/web'); + while ($file = @readdir($handle)) { + if ($file != '.' && $file != '..') { + if(@is_dir($install_dir.'/interface/web'.'/'.$file.'/lib/lang')) { + $handle2 = opendir($install_dir.'/interface/web'.'/'.$file.'/lib/lang'); + chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang', 0770); + while ($lang_file = @readdir($handle2)) { + if ($lang_file != '.' && $lang_file != '..') { + chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang/'.$lang_file, 0770); + } + } + } + } + } + + //* Make the APS directories group writable + exec("chmod -R 770 $install_dir/interface/web/sites/aps_meta_packages"); + exec("chmod -R 770 $install_dir/server/aps_packages"); + + //* make sure that the server config file (not the interface one) is only readable by the root user + chmod($install_dir.'/server/lib/config.inc.php', 0600); + chown($install_dir.'/server/lib/config.inc.php', 'root'); + chgrp($install_dir.'/server/lib/config.inc.php', 'root'); + + //* Make sure thet the interface config file is readable by user ispconfig only + chmod($install_dir.'/interface/lib/config.inc.php', 0600); + chown($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); + chgrp($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); + + chmod($install_dir.'/server/lib/remote_action.inc.php', 0600); + chown($install_dir.'/server/lib/remote_action.inc.php', 'root'); + chgrp($install_dir.'/server/lib/remote_action.inc.php', 'root'); + + if(@is_file($install_dir.'/server/lib/mysql_clientdb.conf')) { + chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600); + chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); + chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); + } + + if(is_dir($install_dir.'/interface/invoices')) { + 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 + // and must be fixed as this will allow the apache user to read the ispconfig files. + // Later this must run as own apache server or via suexec! + if($conf['apache']['installed'] == true){ + $command = 'adduser '.$conf['apache']['user'].' ispconfig'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if(is_group('ispapps')){ + $command = 'adduser '.$conf['apache']['user'].' ispapps'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + if($conf['nginx']['installed'] == true){ + $command = 'adduser '.$conf['nginx']['user'].' ispconfig'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if(is_group('ispapps')){ + $command = 'adduser '.$conf['nginx']['user'].' ispapps'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + + //* Make the shell scripts executable + $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 + $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; + $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; + + // Dont just copy over the virtualhost template but add some custom settings + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); + + // comment out the listen directive if port is 80 or 443 + if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { + $tpl->setVar('vhost_port_listen','#'); + } else { + $tpl->setVar('vhost_port_listen',''); + } + + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); + } else { + $tpl->setVar('ssl_comment','#'); + } + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { + $tpl->setVar('ssl_bundle_comment',''); + } else { + $tpl->setVar('ssl_bundle_comment','#'); + } + + $tpl->setVar('apache_version',getapacheversion()); + + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); + + //* and create the symlink + if($this->is_update == false) { + if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost'); + if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) { + symlink($vhost_conf_dir.'/ispconfig.vhost', $vhost_conf_enabled_dir.'/000-ispconfig.vhost'); + } + } + //if(!is_file('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig_fcgi_starter.master', 'tpl/apache_ispconfig_fcgi_starter.master'); + $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); + $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); + @mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true); + wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); + exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); + @symlink($install_dir.'/interface/web', '/var/www/ispconfig'); + exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); + //} + } + + if($conf['nginx']['installed'] == true && $this->install_ispconfig_interface == true){ + //* Copy the ISPConfig vhost for the controlpanel + $vhost_conf_dir = $conf['nginx']['vhost_conf_dir']; + $vhost_conf_enabled_dir = $conf['nginx']['vhost_conf_enabled_dir']; + + // Dont just copy over the virtualhost template but add some custom settings + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/nginx_ispconfig.vhost.master', 'tpl/nginx_ispconfig.vhost.master'); + $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); + + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $content = str_replace('{ssl_on}', 'ssl', $content); + $content = str_replace('{ssl_comment}', '', $content); + $content = str_replace('{fastcgi_ssl}', 'on', $content); + } else { + $content = str_replace('{ssl_on}', '', $content); + $content = str_replace('{ssl_comment}', '#', $content); + $content = str_replace('{fastcgi_ssl}', 'off', $content); + } + + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); + if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; + if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + $fpm_socket = $socket_dir.'ispconfig.sock'; + + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); + + wf($vhost_conf_dir.'/ispconfig.vhost', $content); + + unset($content); + + // PHP-FPM + // Dont just copy over the php-fpm pool template but add some custom settings + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/php_fpm_pool.conf.master', 'tpl/php_fpm_pool.conf.master'); + $content = str_replace('{fpm_pool}', 'ispconfig', $content); + //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); + $content = str_replace('{fpm_socket}', $fpm_socket, $content); + $content = str_replace('{fpm_user}', 'ispconfig', $content); + $content = str_replace('{fpm_group}', 'ispconfig', $content); + wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); + + //copy('tpl/nginx_ispconfig.vhost.master', $vhost_conf_dir.'/ispconfig.vhost'); + //* and create the symlink + if($this->is_update == false) { + if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost'); + if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) { + symlink($vhost_conf_dir.'/ispconfig.vhost', $vhost_conf_enabled_dir.'/000-ispconfig.vhost'); + } + } + } + + //* Install the update script + 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/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'); + if(!is_link('/usr/local/bin/ispconfig_update.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh', '/usr/local/bin/ispconfig_update.sh'); + + //* Make the logs readable for the ispconfig user + if(@is_file('/var/log/mail.log')) exec('chmod +r /var/log/mail.log'); + if(@is_file('/var/log/mail.warn')) exec('chmod +r /var/log/mail.warn'); + if(@is_file('/var/log/mail.err')) exec('chmod +r /var/log/mail.err'); + if(@is_file('/var/log/messages')) exec('chmod +r /var/log/messages'); + if(@is_file('/var/log/clamav/clamav.log')) exec('chmod +r /var/log/clamav/clamav.log'); + if(@is_file('/var/log/clamav/freshclam.log')) exec('chmod +r /var/log/clamav/freshclam.log'); + + //* Create the ispconfig log file and directory + if(!is_file($conf['ispconfig_log_dir'].'/ispconfig.log')) { + if(!is_dir($conf['ispconfig_log_dir'])) mkdir($conf['ispconfig_log_dir'], 0755); + touch($conf['ispconfig_log_dir'].'/ispconfig.log'); + } + + //* Create the ispconfig auth log file and set uid/gid + if(!is_file($conf['ispconfig_log_dir'].'/auth.log')) { + touch($conf['ispconfig_log_dir'].'/auth.log'); + } + exec('chown ispconfig:ispconfig '. $conf['ispconfig_log_dir'].'/auth.log'); + exec('chmod 660 '. $conf['ispconfig_log_dir'].'/auth.log'); + + if(is_user('getmail')) { + rename($install_dir.'/server/scripts/run-getmail.sh', '/usr/local/bin/run-getmail.sh'); + if(is_user('getmail')) chown('/usr/local/bin/run-getmail.sh', 'getmail'); + chmod('/usr/local/bin/run-getmail.sh', 0744); + } + + //* Add Log-Rotation + if (is_dir('/etc/logrotate.d')) { + @unlink('/etc/logrotate.d/logispc3'); // ignore, if the file is not there + /* We rotate these logs in cron_daily.php + $fh = fopen('/etc/logrotate.d/logispc3', 'w'); + fwrite($fh, + "$conf['ispconfig_log_dir']/ispconfig.log { \n" . + " weekly \n" . + " missingok \n" . + " rotate 4 \n" . + " compress \n" . + " delaycompress \n" . + "} \n" . + "$conf['ispconfig_log_dir']/cron.log { \n" . + " weekly \n" . + " missingok \n" . + " rotate 4 \n" . + " compress \n" . + " delaycompress \n" . + "}"); + fclose($fh); + */ + } + + //* 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); + 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 configure_dbserver() { + global $conf; + + //* If this server shall act as database server for client DB's, we configure this here + $install_dir = $conf['ispconfig_install_dir']; + + // Create a file with the database login details which + // are used to create the client databases. + + if(!is_dir($install_dir.'/server/lib')) { + $command = "mkdir $install_dir/server/lib"; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/mysql_clientdb.conf.master', 'tpl/mysql_clientdb.conf.master'); + $content = str_replace('{hostname}', $conf['mysql']['host'], $content); + $content = str_replace('{username}', $conf['mysql']['admin_user'], $content); + $content = str_replace('{password}', addslashes($conf['mysql']['admin_password']), $content); + wf($install_dir.'/server/lib/mysql_clientdb.conf', $content); + chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600); + chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); + chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); + + } + + public function install_crontab() { + global $conf; + + $install_dir = $conf['ispconfig_install_dir']; + + //* Root Crontab + exec('crontab -u root -l > crontab.txt'); + $existing_root_cron_jobs = file('crontab.txt'); + + // remove existing ispconfig cronjobs, in case the syntax has changed + foreach($existing_root_cron_jobs as $key => $val) { + if(stristr($val, $install_dir)) unset($existing_root_cron_jobs[$key]); + } + + $root_cron_jobs = array( + "* * * * * ".$install_dir."/server/server.sh 2>&1 | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done", + "* * * * * ".$install_dir."/server/cron.sh 2>&1 | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done" + ); + + if ($conf['nginx']['installed'] == true) { + $root_cron_jobs[] = "0 0 * * * ".$install_dir."/server/scripts/create_daily_nginx_access_logs.sh &> /dev/null"; + } + + foreach($root_cron_jobs as $cron_job) { + if(!in_array($cron_job."\n", $existing_root_cron_jobs)) { + $existing_root_cron_jobs[] = $cron_job."\n"; + } + } + file_put_contents('crontab.txt', $existing_root_cron_jobs); + exec('crontab -u root crontab.txt &> /dev/null'); + unlink('crontab.txt'); + + //* Getmail crontab + if(is_user('getmail')) { + $cf = $conf['getmail']; + exec('crontab -u getmail -l > crontab.txt'); + $existing_cron_jobs = file('crontab.txt'); + + $cron_jobs = array( + '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null' + ); + + // remove existing ispconfig cronjobs, in case the syntax has changed + foreach($existing_cron_jobs as $key => $val) { + if(stristr($val, 'getmail')) unset($existing_cron_jobs[$key]); + } + + foreach($cron_jobs as $cron_job) { + if(!in_array($cron_job."\n", $existing_cron_jobs)) { + $existing_cron_jobs[] = $cron_job."\n"; + } + } + file_put_contents('crontab.txt', $existing_cron_jobs); + exec('crontab -u getmail crontab.txt &> /dev/null'); + unlink('crontab.txt'); + } + + touch($conf['ispconfig_log_dir'].'/cron.log'); + 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'); + if(is_array($rc_local) && !empty($rc_local)){ + foreach($rc_local as $line){ + $line = trim($line); + if(substr($line, 0, 1) == '#') continue; + if(strpos($line, 'sshfs') !== false && strpos($line, '/var/backup') !== false){ + $mount_command = "#!/bin/sh\n\n"; + $mount_command .= $line."\n\n"; + file_put_contents($mount_script, $mount_command); + chmod($mount_script, 0755); + chown($mount_script, 'root'); + chgrp($mount_script, 'root'); + break; + } + } + } + } + } + + // 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 = ''){ + global $conf; + // upstart + if(is_executable('/sbin/initctl')){ + exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']); + if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action; + } + // systemd + if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ + return 'systemctl '.$action.' '.$servicename.'.service'; + } + // sysvinit + if($init_script_directory == '') $init_script_directory = $conf['init_scripts']; + if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1); + return $init_script_directory.'/'.$servicename.' '.$action; + } + + /** + * Helper function - get the path to a template file based on + * the local part of the filename. Checks first for the existence + * of a distribution specific file and if not found looks in the + * base template folder. Optionally the behaviour can be changed + * by setting the 2nd parameter which will fetch the contents + * of the template file and return it instead of the path. The 3rd + * parameter further extends this behaviour by filtering the contents + * by inserting the ispconfig database credentials using the {} placeholders. + * + * @param string $tLocal local part of filename + * @param bool $tRf + * @param bool $tDBCred + * @return string Relative path to the chosen template file + */ + protected function get_template_file($tLocal, $tRf=false, $tDBCred=false) { + global $conf, $dist; + + $final_path = ''; + $dist_template = $conf['ispconfig_install_dir'] . '/server/conf-custom/install/' . $tLocal . '.master'; + if (file_exists($dist_template)) { + $final_path = $dist_template; + } else { + $dist_template = 'dist/tpl/'.strtolower($dist['name'])."/$tLocal.master"; + if (file_exists($dist_template)) { + $final_path = $dist_template; + } else { + $final_path = "tpl/$tLocal.master"; + } + } + + if (!$tRf) { + return $final_path; + } else { + return (!$tDBCred) ? rf($final_path) : $this->insert_db_credentials(rf($final_path)); + } + } + + /** + * Helper function - writes the contents to a config file + * and performs a backup if the file exist. Additionally + * if the file exists the new file will be given the + * same rights and ownership as the original. Optionally the + * rights and/or ownership can be overriden by appending umask, + * user and group to the parameters. Providing only uid and gid + * values will result in only a chown. + * + * @param $tConf + * @param $tContents + * @return bool + */ + protected function write_config_file($tConf, $tContents) { + // Backup config file before writing new contents and stat file + if ( is_file($tConf) ) { + $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res); + if ($res == 0) { // stat successfull + list($access, $user, $group) = explode(" ", $stat); + } + + if ( copy($tConf, $tConf.'~') ) { + chmod($tConf.'~', 0400); + } + } + + wf($tConf, $tContents); // write file + + if (func_num_args() >= 4) // override rights and/or ownership + { + $args = func_get_args(); + $output = array_slice($args, 2); + + switch (sizeof($output)) { + case 3: + $umask = array_shift($output); + if (is_numeric($umask) && preg_match('/^0?[0-7]{3}$/', $umask)) { + $access = $umask; + } + case 2: + if (is_user($output[0]) && is_group($output[1])) { + list($user, $group) = $output; + } + break; + } + } + + if (!empty($user) && !empty($group)) { + chown($tConf, $user); + chgrp($tConf, $group); + } + + if (!empty($access)) { + exec("chmod $access $tConf"); + } + } + + /** + * Helper function - filter the contents of a config + * file by inserting the common ispconfig database + * credentials. + * + * @param $tContents + * @return string + */ + protected function insert_db_credentials($tContents) { + global $conf; + + $tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents); + $tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents); + $tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents); + $tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents); + $tContents = str_replace('{mysql_server_host}', $conf['mysql']['host'], $tContents); + $tContents = str_replace('{mysql_server_port}', $conf['mysql']['port'], $tContents); + $tContents = str_replace('{mysql_server_port}', $conf["mysql"]["port"], $tContents); + + return $tContents; + } + +} + +?> diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index e69de29bb2..83949a7154 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -0,0 +1,32 @@ +-- rspamd +ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; + +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; + +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; +-- end of rspamd diff --git a/install/sql/incremental/upd_dev_collection.sql.orig b/install/sql/incremental/upd_dev_collection.sql.orig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/install/sql/incremental/upd_dev_collection.sql.rej b/install/sql/incremental/upd_dev_collection.sql.rej new file mode 100644 index 0000000000..4c57d840ab --- /dev/null +++ b/install/sql/incremental/upd_dev_collection.sql.rej @@ -0,0 +1,40 @@ +--- install/sql/incremental/upd_dev_collection.sql ++++ install/sql/incremental/upd_dev_collection.sql +@@ -80,4 +80,37 @@ INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us + + ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; + ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; +-ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL;+ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; ++ ++-- rspamd ++ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; ++ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; ++ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; ++ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; ++ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; ++ ++UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; ++UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; ++UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; ++ ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; ++UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; ++ ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; ++UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; ++ ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; ++UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; ++-- end of rspamd diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 2417ef0d21..5337c2b77a 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1589,6 +1589,11 @@ CREATE TABLE `spamfilter_policy` ( `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', `policyd_quota_out_period` int(11) NOT NULL DEFAULT '24', `policyd_greylist` ENUM( 'Y', 'N' ) NOT NULL DEFAULT 'N', + `rspamd_greylisting` enum('n','y') NOT NULL DEFAULT 'n', + `rspamd_spam_greylisting_level` decimal(5,2) DEFAULT NULL, + `rspamd_spam_tag_level` decimal(5,2) DEFAULT NULL, + `rspamd_spam_tag_method` enum('add_header','rewrite_subject') NOT NULL DEFAULT 'rewrite_subject', + `rspamd_spam_kill_level` decimal(5,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; @@ -2517,13 +2522,13 @@ INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `s -- Dumping data for table `spamfilter_policy` -- -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM*** ', NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 2.00, 4.00, 'rewrite_subject', 8.00); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 7.00, 10.00, 'rewrite_subject', 20.00); -- -------------------------------------------------------- diff --git a/install/sql/ispconfig3.sql.orig b/install/sql/ispconfig3.sql.orig new file mode 100644 index 0000000000..2417ef0d21 --- /dev/null +++ b/install/sql/ispconfig3.sql.orig @@ -0,0 +1,2570 @@ +/* +Copyright (c) 2007-2012, Till Brehm, projektfarm Gmbh +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. +*/ + +-- Includes +-- +-- iso_country_list.sql +-- +-- This will create and then populate a MySQL table with a list of the names and +-- ISO 3166 codes for countries in existence as of the date below. +-- +-- For updates to this file, see http://27.org/isocountrylist/ +-- For more about ISO 3166, see http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html +-- +-- Created by getisocountrylist.pl on Sun Nov 2 14:59:20 2003. +-- Wm. Rhodes <iso_country_list@27.org> +-- + +-- +-- ISPConfig 3 +-- DB-Version: 3.0.0.9 +-- + +SET FOREIGN_KEY_CHECKS = 0; + +-- -------------------------------------------------------- +-- -------------------------------------------------------- +-- DB-STRUCTURE +-- -------------------------------------------------------- +-- -------------------------------------------------------- + +-- +-- Table structure for table `aps_instances` +-- + +CREATE TABLE IF NOT EXISTS `aps_instances` ( + `id` int(4) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `customer_id` int(4) NOT NULL DEFAULT '0', + `package_id` int(4) NOT NULL DEFAULT '0', + `instance_status` int(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `aps_instances_settings` +-- + +CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( + `id` int(4) NOT NULL AUTO_INCREMENT, + `server_id` int(11) NOT NULL DEFAULT '0', + `instance_id` int(4) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL DEFAULT '', + `value` text, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `aps_packages` +-- + +CREATE TABLE IF NOT EXISTS `aps_packages` ( + `id` int(4) NOT NULL AUTO_INCREMENT, + `path` varchar(255) NOT NULL DEFAULT '', + `name` varchar(255) NOT NULL DEFAULT '', + `category` varchar(255) NOT NULL DEFAULT '', + `version` varchar(20) NOT NULL DEFAULT '', + `release` int(4) NOT NULL DEFAULT '0', + `package_url` TEXT, + `package_status` int(1) NOT NULL DEFAULT '2', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `aps_settings` +-- + +CREATE TABLE IF NOT EXISTS `aps_settings` ( + `id` int(4) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `value` text, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `attempts_login` +-- + +CREATE TABLE `attempts_login` ( + `ip` varchar(39) NOT NULL DEFAULT '', + `times` int(11) DEFAULT NULL, + `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `client` +-- + +CREATE TABLE `client` ( + `client_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `company_name` varchar(64) DEFAULT NULL, + `company_id` varchar(255) DEFAULT NULL, + `gender` enum('','m','f') NOT NULL DEFAULT '', + `contact_firstname` varchar( 64 ) NOT NULL DEFAULT '', + `contact_name` varchar(64) DEFAULT NULL, + `customer_no` varchar(64) DEFAULT NULL, + `vat_id` varchar(64) DEFAULT NULL, + `street` varchar(255) DEFAULT NULL, + `zip` varchar(32) DEFAULT NULL, + `city` varchar(64) DEFAULT NULL, + `state` varchar(32) DEFAULT NULL, + `country` char(2) DEFAULT NULL, + `telephone` varchar(32) DEFAULT NULL, + `mobile` varchar(32) DEFAULT NULL, + `fax` varchar(32) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `internet` varchar(255) NOT NULL DEFAULT '', + `icq` varchar(16) DEFAULT NULL, + `notes` text, + `bank_account_owner` varchar(255) DEFAULT NULL, + `bank_account_number` varchar(255) DEFAULT NULL, + `bank_code` varchar(255) DEFAULT NULL, + `bank_name` varchar(255) DEFAULT NULL, + `bank_account_iban` varchar(255) DEFAULT NULL, + `bank_account_swift` varchar(255) DEFAULT NULL, + `paypal_email` varchar(255) DEFAULT NULL, + `default_mailserver` int(11) unsigned NOT NULL DEFAULT '1', + `mail_servers` text, + `limit_maildomain` int(11) NOT NULL DEFAULT '-1', + `limit_mailbox` int(11) NOT NULL DEFAULT '-1', + `limit_mailalias` int(11) NOT NULL DEFAULT '-1', + `limit_mailaliasdomain` int(11) NOT NULL DEFAULT '-1', + `limit_mailforward` int(11) NOT NULL DEFAULT '-1', + `limit_mailcatchall` int(11) NOT NULL DEFAULT '-1', + `limit_mailrouting` int(11) NOT NULL DEFAULT '0', + `limit_mailfilter` int(11) NOT NULL DEFAULT '-1', + `limit_fetchmail` int(11) NOT NULL DEFAULT '-1', + `limit_mailquota` int(11) NOT NULL DEFAULT '-1', + `limit_spamfilter_wblist` int(11) NOT NULL DEFAULT '0', + `limit_spamfilter_user` int(11) NOT NULL DEFAULT '0', + `limit_spamfilter_policy` int(11) NOT NULL DEFAULT '0', + `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', + `xmpp_servers` text, + `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', + `limit_xmpp_user` int(11) NOT NULL DEFAULT '-1', + `limit_xmpp_muc` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_anon` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_auth_options` varchar(255) NOT NULL DEFAULT 'plain,hashed,isp', + `limit_xmpp_vjud` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_proxy` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_status` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_pastebin` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_httparchive` ENUM( 'n', 'y' ) NOT NULL default 'n', + `default_webserver` int(11) unsigned NOT NULL DEFAULT '1', + `web_servers` text, + `limit_web_ip` text, + `limit_web_domain` int(11) NOT NULL DEFAULT '-1', + `limit_web_quota` int(11) NOT NULL DEFAULT '-1', + `web_php_options` varchar(255) NOT NULL DEFAULT 'no,fast-cgi,cgi,mod,suphp,php-fpm,hhvm', + `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n', + `limit_perl` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n', + `limit_python` enum('n','y') NOT NULL DEFAULT 'n', + `force_suexec` enum('n','y') NOT NULL DEFAULT 'y', + `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n', + `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', + `limit_web_subdomain` int(11) NOT NULL DEFAULT '-1', + `limit_web_aliasdomain` int(11) NOT NULL DEFAULT '-1', + `limit_ftp_user` int(11) NOT NULL DEFAULT '-1', + `limit_shell_user` int(11) NOT NULL DEFAULT '0', + `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no,jailkit,ssh-chroot', + `limit_webdav_user` int(11) NOT NULL DEFAULT '0', + `limit_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', + `limit_directive_snippets` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', + `limit_aps` int(11) NOT NULL DEFAULT '-1', + `default_dnsserver` int(11) unsigned NOT NULL DEFAULT '1', + `db_servers` text, + `limit_dns_zone` int(11) NOT NULL DEFAULT '-1', + `default_slave_dnsserver` int(11) unsigned NOT NULL DEFAULT '1', + `limit_dns_slave_zone` int(11) NOT NULL DEFAULT '-1', + `limit_dns_record` int(11) NOT NULL DEFAULT '-1', + `default_dbserver` int(11) NOT NULL DEFAULT '1', + `dns_servers` text, + `limit_database` int(11) NOT NULL DEFAULT '-1', + `limit_database_user` int(11) NOT NULL DEFAULT '-1', + `limit_database_quota` int(11) NOT NULL default '-1', + `limit_cron` int(11) NOT NULL DEFAULT '0', + `limit_cron_type` enum('url','chrooted','full') NOT NULL DEFAULT 'url', + `limit_cron_frequency` int(11) NOT NULL DEFAULT '5', + `limit_traffic_quota` int(11) NOT NULL DEFAULT '-1', + `limit_client` int(11) NOT NULL DEFAULT '0', + `limit_domainmodule` int(11) NOT NULL DEFAULT '0', + `limit_mailmailinglist` int(11) NOT NULL DEFAULT '-1', + `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', + `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', + `parent_client_id` int(11) unsigned NOT NULL DEFAULT '0', + `username` varchar(64) DEFAULT NULL, + `password` varchar(64) DEFAULT NULL, + `language` char(2) NOT NULL DEFAULT 'en', + `usertheme` varchar(32) NOT NULL DEFAULT 'default', + `template_master` int(11) unsigned NOT NULL DEFAULT '0', + `template_additional` text, + `created_at` bigint(20) DEFAULT NULL, + `locked` enum('n','y') NOT NULL DEFAULT 'n', + `canceled` enum('n','y') NOT NULL DEFAULT 'n', + `can_use_api` enum('n','y') NOT NULL DEFAULT 'n', + `tmp_data` mediumblob, + `id_rsa` varchar(2000) NOT NULL DEFAULT '', + `ssh_rsa` varchar(600) NOT NULL DEFAULT '', + `customer_no_template` varchar(255) DEFAULT 'R[CLIENTID]C[CUSTOMER_NO]', + `customer_no_start` int(11) NOT NULL DEFAULT '1', + `customer_no_counter` int(11) NOT NULL DEFAULT '0', + `added_date` date NULL DEFAULT NULL, + `added_by` varchar(255) DEFAULT NULL, + `validation_status` enum('accept','review','reject') NOT NULL DEFAULT 'accept', + `risk_score` int(10) unsigned NOT NULL DEFAULT '0', + `activation_code` varchar(10) NOT NULL DEFAULT '', + PRIMARY KEY (`client_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `client_circle` +-- + +CREATE TABLE `client_circle` ( + `circle_id` int(11) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `circle_name` varchar(64) DEFAULT NULL, + `client_ids` text, + `description` text, + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`circle_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `client_template` +-- + +CREATE TABLE `client_template` ( + `template_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `template_name` varchar(64) NOT NULL DEFAULT '', + `template_type` varchar(1) NOT NULL default 'm', + `mail_servers` text, + `limit_maildomain` int(11) NOT NULL default '-1', + `limit_mailbox` int(11) NOT NULL default '-1', + `limit_mailalias` int(11) NOT NULL default '-1', + `limit_mailaliasdomain` int(11) NOT NULL default '-1', + `limit_mailforward` int(11) NOT NULL default '-1', + `limit_mailcatchall` int(11) NOT NULL default '-1', + `limit_mailrouting` int(11) NOT NULL default '0', + `limit_mailfilter` int(11) NOT NULL default '-1', + `limit_fetchmail` int(11) NOT NULL default '-1', + `limit_mailquota` int(11) NOT NULL default '-1', + `limit_spamfilter_wblist` int(11) NOT NULL default '0', + `limit_spamfilter_user` int(11) NOT NULL default '0', + `limit_spamfilter_policy` int(11) NOT NULL default '0', + `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', + `xmpp_servers` text, + `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', + `limit_xmpp_user` int(11) NOT NULL DEFAULT '-1', + `limit_xmpp_muc` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_anon` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_vjud` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_proxy` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_status` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_pastebin` ENUM( 'n', 'y' ) NOT NULL default 'n', + `limit_xmpp_httparchive` ENUM( 'n', 'y' ) NOT NULL default 'n', + `web_servers` text, + `limit_web_ip` text, + `limit_web_domain` int(11) NOT NULL default '-1', + `limit_web_quota` int(11) NOT NULL default '-1', + `web_php_options` varchar(255) NOT NULL DEFAULT 'no', + `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n', + `limit_perl` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n', + `limit_python` enum('n','y') NOT NULL DEFAULT 'n', + `force_suexec` enum('n','y') NOT NULL DEFAULT 'y', + `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n', + `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n', + `limit_ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', + `limit_web_subdomain` int(11) NOT NULL default '-1', + `limit_web_aliasdomain` int(11) NOT NULL default '-1', + `limit_ftp_user` int(11) NOT NULL default '-1', + `limit_shell_user` int(11) NOT NULL default '0', + `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no', + `limit_webdav_user` int(11) NOT NULL default '0', + `limit_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', + `limit_directive_snippets` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', + `limit_aps` int(11) NOT NULL DEFAULT '-1', + `dns_servers` text, + `limit_dns_zone` int(11) NOT NULL default '-1', + `default_slave_dnsserver` int(11) NOT NULL DEFAULT '0', + `limit_dns_slave_zone` int(11) NOT NULL default '-1', + `limit_dns_record` int(11) NOT NULL default '-1', + `db_servers` text, + `limit_database` int(11) NOT NULL default '-1', + `limit_database_user` int(11) NOT NULL DEFAULT '-1', + `limit_database_quota` int(11) NOT NULL default '-1', + `limit_cron` int(11) NOT NULL default '0', + `limit_cron_type` enum('url','chrooted','full') NOT NULL default 'url', + `limit_cron_frequency` int(11) NOT NULL default '5', + `limit_traffic_quota` int(11) NOT NULL default '-1', + `limit_client` int(11) NOT NULL default '0', + `limit_domainmodule` int(11) NOT NULL DEFAULT '0', + `limit_mailmailinglist` int(11) NOT NULL default '-1', + `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', + `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`template_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `client_template_assigned` +-- + +CREATE TABLE `client_template_assigned` ( + `assigned_template_id` bigint(20) NOT NULL auto_increment, + `client_id` bigint(11) NOT NULL DEFAULT '0', + `client_template_id` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`assigned_template_id`), + KEY `client_id` (`client_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +-- -------------------------------------------------------- + +-- +-- Table structure for table `invoice_message_template` +-- + +CREATE TABLE `client_message_template` ( + `client_message_template_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `template_type` varchar(255) DEFAULT NULL, + `template_name` varchar(255) DEFAULT NULL, + `subject` varchar(255) DEFAULT NULL, + `message` text, + PRIMARY KEY (`client_message_template_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Dumping data for table `invoice_message_template` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `country` +-- + +CREATE TABLE `country` ( + `iso` char(2) NOT NULL DEFAULT '', + `name` varchar(64) NOT NULL DEFAULT '', + `printable_name` varchar(64) NOT NULL DEFAULT '', + `iso3` char(3) DEFAULT NULL, + `numcode` smallint(6) DEFAULT NULL, + `eu` enum('n','y') NOT NULL DEFAULT 'n', + PRIMARY KEY (`iso`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `cron` +-- +CREATE TABLE `cron` ( + `id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NULL default NULL, + `sys_perm_group` varchar(5) NULL default NULL, + `sys_perm_other` varchar(5) NULL default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `parent_domain_id` int(11) unsigned NOT NULL default '0', + `type` enum('url','chrooted','full') NOT NULL default 'url', + `command` TEXT, + `run_min` varchar(100) NULL, + `run_hour` varchar(100) NULL, + `run_mday` varchar(100) NULL, + `run_month` varchar(100) NULL, + `run_wday` varchar(100) NULL, + `log` enum('n','y') NOT NULL default 'n', + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `directive_snippets` +-- + +CREATE TABLE IF NOT EXISTS `directive_snippets` ( + `directive_snippets_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `type` varchar(255) DEFAULT NULL, + `snippet` mediumtext, + `customer_viewable` ENUM('n','y') NOT NULL DEFAULT 'n', + `required_php_snippets` varchar(255) NOT NULL DEFAULT '', + `active` enum('n','y') NOT NULL DEFAULT 'y', + `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`directive_snippets_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_rr` +-- +CREATE TABLE `dns_rr` ( + `id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) NOT NULL default '1', + `zone` int(11) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL DEFAULT '', + `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL, + `data` TEXT NOT NULL, + `aux` int(11) unsigned NOT NULL default '0', + `ttl` int(11) unsigned NOT NULL default '3600', + `active` enum('N','Y') NOT NULL default 'Y', + `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP, + `serial` int(10) unsigned default NULL, + PRIMARY KEY (`id`), + KEY `rr` (`zone`,`type`,`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_slave` +-- + +CREATE TABLE `dns_slave` ( + `id` int(10) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) NOT NULL default '1', + `origin` varchar(255) NOT NULL DEFAULT '', + `ns` varchar(255) NOT NULL DEFAULT '', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `xfer` TEXT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `slave` (`origin`,`server_id`), + KEY `active` (`active`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_ssl_ca` +-- + +CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `ca_name` varchar(255) NOT NULL DEFAULT '', + `ca_issue` varchar(255) NOT NULL DEFAULT '', + `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', + `ca_iodef` text NOT NULL, + `ca_critical` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY (`ca_issue`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); + +INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_soa` +-- + +CREATE TABLE `dns_soa` ( + `id` int(10) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) NOT NULL default '1', + `origin` varchar(255) NOT NULL DEFAULT '', + `ns` varchar(255) NOT NULL DEFAULT '', + `mbox` varchar(255) NOT NULL DEFAULT '', + `serial` int(11) unsigned NOT NULL default '1', + `refresh` int(11) unsigned NOT NULL default '28800', + `retry` int(11) unsigned NOT NULL default '7200', + `expire` int(11) unsigned NOT NULL default '604800', + `minimum` int(11) unsigned NOT NULL default '3600', + `ttl` int(11) unsigned NOT NULL default '3600', + `active` enum('N','Y') NOT NULL DEFAULT 'N', + `xfer` TEXT NULL, + `also_notify` TEXT NULL, + `update_acl` varchar(255) default NULL, + `dnssec_initialized` ENUM('Y','N') NOT NULL DEFAULT 'N', + `dnssec_wanted` ENUM('Y','N') NOT NULL DEFAULT 'N', + `dnssec_last_signed` BIGINT NOT NULL DEFAULT '0', + `dnssec_info` TEXT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `origin` (`origin`), + KEY `active` (`active`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `dns_template` +-- + +CREATE TABLE `dns_template` ( + `template_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `name` varchar(64) default NULL, + `fields` varchar(255) default NULL, + `template` text, + `visible` enum('N','Y') NOT NULL default 'Y', + PRIMARY KEY (`template_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Table structure for table `domain` +-- + +CREATE TABLE `domain` ( + `domain_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `domain` varchar(255) NOT NULL default '', + PRIMARY KEY (`domain_id`), + UNIQUE KEY `domain` (`domain`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `firewall` +-- + +CREATE TABLE `firewall` ( + `firewall_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `tcp_port` text, + `udp_port` text, + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`firewall_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ftp_user` +-- + +CREATE TABLE `ftp_user` ( + `ftp_user_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `parent_domain_id` int(11) unsigned NOT NULL default '0', + `username` varchar(64) default NULL, + `username_prefix` varchar(50) NOT NULL default '', + `password` varchar(64) default NULL, + `quota_size` bigint(20) NOT NULL default '-1', + `active` enum('n','y') NOT NULL default 'y', + `uid` varchar(64) default NULL, + `gid` varchar(64) default NULL, + `dir` varchar(255) default NULL, + `quota_files` bigint(20) NOT NULL default '-1', + `ul_ratio` int(11) NOT NULL default '-1', + `dl_ratio` int(11) NOT NULL default '-1', + `ul_bandwidth` int(11) NOT NULL default '-1', + `dl_bandwidth` int(11) NOT NULL default '-1', + `expires` datetime NULL DEFAULT NULL, + `user_type` set('user','system') NOT NULL DEFAULT 'user', + `user_config` text, + PRIMARY KEY (`ftp_user_id`), + KEY `active` (`active`), + KEY `server_id` (`server_id`), + KEY `username` (`username`), + KEY `quota_files` (`quota_files`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ftp_traffic` +-- + +CREATE TABLE `ftp_traffic` ( + `hostname` varchar(255) NOT NULL, + `traffic_date` date NOT NULL, + `in_bytes` bigint(32) unsigned NOT NULL, + `out_bytes` bigint(32) unsigned NOT NULL, + UNIQUE KEY (`hostname`,`traffic_date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `help_faq` +-- + +CREATE TABLE `help_faq` ( + `hf_id` int(11) NOT NULL AUTO_INCREMENT, + `hf_section` int(11) DEFAULT NULL, + `hf_order` int(11) DEFAULT '0', + `hf_question` text, + `hf_answer` text, + `sys_userid` int(11) DEFAULT NULL, + `sys_groupid` int(11) DEFAULT NULL, + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + PRIMARY KEY (`hf_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `help_faq_sections` +-- + +CREATE TABLE `help_faq_sections` ( + `hfs_id` int(11) NOT NULL AUTO_INCREMENT, + `hfs_name` varchar(255) DEFAULT NULL, + `hfs_order` int(11) DEFAULT '0', + `sys_userid` int(11) DEFAULT NULL, + `sys_groupid` int(11) DEFAULT NULL, + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + PRIMARY KEY (`hfs_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- Table structure for table `iptables` +-- + +DROP TABLE IF EXISTS `iptables`; +CREATE TABLE `iptables` ( + `iptables_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(10) unsigned NOT NULL DEFAULT '0', + `table` varchar(10) DEFAULT NULL COMMENT 'INPUT OUTPUT FORWARD', + `source_ip` varchar(16) DEFAULT NULL, + `destination_ip` varchar(16) DEFAULT NULL, + `protocol` varchar(10) DEFAULT 'TCP' COMMENT 'TCP UDP GRE', + `singleport` varchar(10) DEFAULT NULL, + `multiport` varchar(40) DEFAULT NULL, + `state` varchar(20) DEFAULT NULL COMMENT 'NEW ESTABLISHED RECNET etc', + `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', + `active` enum('n','y') NOT NULL DEFAULT 'y', + PRIMARY KEY (`iptables_id`) +) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_access` +-- + +CREATE TABLE `mail_access` ( + `access_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) NOT NULL default '0', + `source` varchar(255) NOT NULL DEFAULT '', + `access` varchar(255) NOT NULL DEFAULT '', + `type` set('recipient','sender','client') NOT NULL DEFAULT 'recipient', + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`access_id`), + KEY `server_id` (`server_id`,`source`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_backup` +-- + +CREATE TABLE `mail_backup` ( + `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(10) unsigned NOT NULL DEFAULT '0', + `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0', + `mailuser_id` int(10) unsigned NOT NULL DEFAULT '0', + `backup_mode` varchar(64) NOT NULL DEFAULT '', + `tstamp` int(10) unsigned NOT NULL DEFAULT '0', + `filename` varchar(255) NOT NULL DEFAULT '', + `filesize` VARCHAR(20) NOT NULL DEFAULT '', + PRIMARY KEY (`backup_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_content_filter` +-- + +CREATE TABLE `mail_content_filter` ( + `content_filter_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) NOT NULL default '0', + `type` varchar(255) default NULL, + `pattern` varchar(255) default NULL, + `data` varchar(255) default NULL, + `action` varchar(255) default NULL, + `active` varchar(255) NOT NULL default 'y', + PRIMARY KEY (`content_filter_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_domain` +-- + +CREATE TABLE `mail_domain` ( + `domain_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `domain` varchar(255) NOT NULL default '', + `dkim` ENUM( 'n', 'y' ) NOT NULL default 'n', + `dkim_selector` varchar(63) NOT NULL DEFAULT 'default', + `dkim_private` mediumtext NULL, + `dkim_public` mediumtext NULL, + `active` enum('n','y') NOT NULL DEFAULT 'n', + PRIMARY KEY (`domain_id`), + KEY `server_id` (`server_id`,`domain`), + KEY `domain_active` (`domain`,`active`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_forwarding` +-- + +CREATE TABLE `mail_forwarding` ( + `forwarding_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `source` varchar(255) NOT NULL DEFAULT '', + `destination` text, + `type` enum('alias','aliasdomain','forward','catchall') NOT NULL default 'alias', + `active` enum('n','y') NOT NULL DEFAULT 'n', + `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n', + `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', + PRIMARY KEY (`forwarding_id`), + KEY `server_id` (`server_id`,`source`), + KEY `type` (`type`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_get` +-- + +CREATE TABLE `mail_get` ( + `mailget_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `type` varchar(255) default NULL, + `source_server` varchar(255) default NULL, + `source_username` varchar(255) default NULL, + `source_password` varchar(64) default NULL, + `source_delete` varchar(255) NOT NULL default 'y', + `source_read_all` varchar(255) NOT NULL default 'y', + `destination` varchar(255) default NULL, + `active` varchar(255) NOT NULL default 'y', + PRIMARY KEY (`mailget_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `mail_mailinglist` +-- + +CREATE TABLE `mail_mailinglist` ( + `mailinglist_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) unsigned NOT NULL default '0', + `domain` varchar(255) NOT NULL DEFAULT '', + `listname` varchar(255) NOT NULL DEFAULT '', + `email` varchar(255) NOT NULL DEFAULT '', + `password` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`mailinglist_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for Table `mail_relay_recipient` +-- + +CREATE TABLE IF NOT EXISTS `mail_relay_recipient` ( + `relay_recipient_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `source` varchar(255) DEFAULT NULL, + `access` varchar(255) NOT NULL DEFAULT 'OK', + `active` varchar(255) NOT NULL DEFAULT 'y', + PRIMARY KEY (`relay_recipient_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_traffic` +-- + +CREATE TABLE `mail_traffic` ( + `traffic_id` int(11) unsigned NOT NULL auto_increment, + `mailuser_id` int(11) unsigned NOT NULL DEFAULT '0', + `month` char(7) NOT NULL DEFAULT '', + `traffic` bigint(20) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`traffic_id`), + KEY `mailuser_id` (`mailuser_id`,`month`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_transport` +-- + +CREATE TABLE `mail_transport` ( + `transport_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `domain` varchar(255) NOT NULL default '', + `transport` varchar(255) NOT NULL DEFAULT '', + `sort_order` int(11) unsigned NOT NULL default '5', + `active` enum('n','y') NOT NULL DEFAULT 'n', + PRIMARY KEY (`transport_id`), + KEY `server_id` (`server_id`,`transport`), + KEY `server_id_2` (`server_id`,`domain`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_user` +-- + +CREATE TABLE `mail_user` ( + `mailuser_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `email` varchar(255) NOT NULL default '', + `login` varchar(255) NOT NULL default '', + `password` varchar(255) NOT NULL default '', + `name` varchar(255) NOT NULL default '', + `uid` int(11) NOT NULL default '5000', + `gid` int(11) NOT NULL default '5000', + `maildir` varchar(255) NOT NULL default '', + `maildir_format` varchar(255) NOT NULL default 'maildir', + `quota` bigint(20) NOT NULL default '-1', + `cc` varchar(255) NOT NULL default '', + `sender_cc` varchar(255) NOT NULL default '', + `homedir` varchar(255) NOT NULL default '', + `autoresponder` enum('n','y') NOT NULL default 'n', + `autoresponder_start_date` datetime NULL default NULL, + `autoresponder_end_date` datetime NULL default NULL, + `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', + `autoresponder_text` mediumtext NULL, + `move_junk` enum('n','y') NOT NULL default 'n', + `custom_mailfilter` mediumtext, + `postfix` enum('n','y') NOT NULL default 'y', + `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', + `access` enum('n','y') NOT NULL default 'y', + `disableimap` enum('n','y') NOT NULL default 'n', + `disablepop3` enum('n','y') NOT NULL default 'n', + `disabledeliver` enum('n','y') NOT NULL default 'n', + `disablesmtp` enum('n','y') NOT NULL default 'n', + `disablesieve` enum('n','y') NOT NULL default 'n', + `disablesieve-filter` enum('n','y') NOT NULL default 'n', + `disablelda` enum('n','y') NOT NULL default 'n', + `disablelmtp` enum('n','y') NOT NULL default 'n', + `disabledoveadm` enum('n','y') NOT NULL default 'n', + `last_quota_notification` date NULL default NULL, + `backup_interval` VARCHAR( 255 ) NOT NULL default 'none', + `backup_copies` INT NOT NULL DEFAULT '1', + PRIMARY KEY (`mailuser_id`), + KEY `server_id` (`server_id`,`email`), + KEY `email_access` (`email`,`access`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mail_user_filter` +-- + +CREATE TABLE `mail_user_filter` ( + `filter_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `mailuser_id` int(11) unsigned NOT NULL default '0', + `rulename` varchar(64) default NULL, + `source` varchar(255) default NULL, + `searchterm` varchar(255) default NULL, + `op` varchar(255) default NULL, + `action` varchar(255) default NULL, + `target` varchar(255) default NULL, + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`filter_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `monitor_data` +-- + +CREATE TABLE `monitor_data` ( + `server_id` int(11) unsigned NOT NULL default '0', + `type` varchar(255) NOT NULL default '', + `created` int(11) unsigned NOT NULL default '0', + `data` mediumtext, + `state` enum('no_state','unknown','ok','info','warning','critical','error') NOT NULL DEFAULT 'unknown', + PRIMARY KEY (`server_id`,`type`,`created`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `openvz_ip` +-- + +CREATE TABLE IF NOT EXISTS `openvz_ip` ( + `ip_address_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `ip_address` varchar(39) DEFAULT NULL, + `vm_id` int(11) NOT NULL DEFAULT '0', + `reserved` varchar(255) NOT NULL DEFAULT 'n', + `additional` varchar(255) NOT NULL DEFAULT 'n', + PRIMARY KEY (`ip_address_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `openvz_ip` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `openvz_ostemplate` +-- + +CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( + `ostemplate_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `template_name` varchar(255) DEFAULT NULL, + `template_file` varchar(255) NOT NULL DEFAULT '', + `server_id` int(11) NOT NULL DEFAULT '0', + `allservers` varchar(255) NOT NULL DEFAULT 'y', + `active` varchar(255) NOT NULL DEFAULT 'y', + `description` text, + PRIMARY KEY (`ostemplate_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `openvz_ostemplate` +-- + +INSERT INTO `openvz_ostemplate` (`ostemplate_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `template_file`, `server_id`, `allservers`, `active`, `description`) VALUES(1, 1, 1, 'riud', 'riud', '', 'Debian minimal', 'debian-minimal-x86', 1, 'y', 'y', 'Debian minimal image.'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `openvz_template` +-- + +CREATE TABLE IF NOT EXISTS `openvz_template` ( + `template_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `template_name` varchar(255) DEFAULT NULL, + `diskspace` int(11) NOT NULL DEFAULT '0', + `traffic` int(11) NOT NULL DEFAULT '-1', + `bandwidth` int(11) NOT NULL DEFAULT '-1', + `ram` int(11) NOT NULL DEFAULT '0', + `ram_burst` int(11) NOT NULL DEFAULT '0', + `cpu_units` int(11) NOT NULL DEFAULT '1000', + `cpu_num` int(11) NOT NULL DEFAULT '4', + `cpu_limit` int(11) NOT NULL DEFAULT '400', + `io_priority` int(11) NOT NULL DEFAULT '4', + `active` varchar(255) NOT NULL DEFAULT 'y', + `description` text, + `numproc` varchar(255) DEFAULT NULL, + `numtcpsock` varchar(255) DEFAULT NULL, + `numothersock` varchar(255) DEFAULT NULL, + `vmguarpages` varchar(255) DEFAULT NULL, + `kmemsize` varchar(255) DEFAULT NULL, + `tcpsndbuf` varchar(255) DEFAULT NULL, + `tcprcvbuf` varchar(255) DEFAULT NULL, + `othersockbuf` varchar(255) DEFAULT NULL, + `dgramrcvbuf` varchar(255) DEFAULT NULL, + `oomguarpages` varchar(255) DEFAULT NULL, + `privvmpages` varchar(255) DEFAULT NULL, + `lockedpages` varchar(255) DEFAULT NULL, + `shmpages` varchar(255) DEFAULT NULL, + `physpages` varchar(255) DEFAULT NULL, + `numfile` varchar(255) DEFAULT NULL, + `avnumproc` varchar(255) DEFAULT NULL, + `numflock` varchar(255) DEFAULT NULL, + `numpty` varchar(255) DEFAULT NULL, + `numsiginfo` varchar(255) DEFAULT NULL, + `dcachesize` varchar(255) DEFAULT NULL, + `numiptent` varchar(255) DEFAULT NULL, + `swappages` varchar(255) DEFAULT NULL, + `hostname` varchar(255) DEFAULT NULL, + `nameserver` varchar(255) DEFAULT NULL, + `create_dns` varchar(1) NOT NULL DEFAULT 'n', + `capability` varchar(255) DEFAULT NULL, + `features` varchar(255) DEFAULT NULL, + `iptables` varchar(255) DEFAULT NULL, + `custom` text, + PRIMARY KEY (`template_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `openvz_template` +-- + +INSERT INTO `openvz_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `diskspace`, `traffic`, `bandwidth`, `ram`, `ram_burst`, `cpu_units`, `cpu_num`, `cpu_limit`, `io_priority`, `active`, `description`, `numproc`, `numtcpsock`, `numothersock`, `vmguarpages`, `kmemsize`, `tcpsndbuf`, `tcprcvbuf`, `othersockbuf`, `dgramrcvbuf`, `oomguarpages`, `privvmpages`, `lockedpages`, `shmpages`, `physpages`, `numfile`, `avnumproc`, `numflock`, `numpty`, `numsiginfo`, `dcachesize`, `numiptent`, `swappages`, `hostname`, `nameserver`, `create_dns`, `capability`, `features`, `iptables`, `custom`) VALUES(1, 1, 1, 'riud', 'riud', '', 'small', 10, -1, -1, 256, 512, 1000, 4, 400, 4, 'y', '', '999999:999999', '7999992:7999992', '7999992:7999992', '65536:unlimited', '2147483646:2147483646', '214748160:396774400', '214748160:396774400', '214748160:396774400', '214748160:396774400', '65536:65536', '131072:139264', '999999:999999', '65536:65536', '0:2147483647', '23999976:23999976', '180:180', '999999:999999', '500000:500000', '999999:999999', '2147483646:2147483646', '999999:999999', '256000:256000', 'v{VEID}.test.tld', '8.8.8.8 8.8.4.4', 'n', '', '', '', ''); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `openvz_traffic` +-- + +CREATE TABLE IF NOT EXISTS `openvz_traffic` ( + `veid` int(11) NOT NULL DEFAULT '0', + `traffic_date` date NULL DEFAULT NULL, + `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', + UNIQUE KEY (`veid`,`traffic_date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `openvz_traffic` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `openvz_vm` +-- + +CREATE TABLE IF NOT EXISTS `openvz_vm` ( + `vm_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `veid` int(10) unsigned NOT NULL DEFAULT '0', + `ostemplate_id` int(11) NOT NULL DEFAULT '0', + `template_id` int(11) NOT NULL DEFAULT '0', + `ip_address` varchar(255) NOT NULL DEFAULT '', + `hostname` varchar(255) DEFAULT NULL, + `vm_password` varchar(255) DEFAULT NULL, + `start_boot` varchar(255) NOT NULL DEFAULT 'y', + `bootorder` int(11) NOT NULL DEFAULT '1', + `active` varchar(255) NOT NULL DEFAULT 'y', + `active_until_date` date NULL DEFAULT NULL, + `description` text, + `diskspace` int(11) NOT NULL DEFAULT '0', + `traffic` int(11) NOT NULL DEFAULT '-1', + `bandwidth` int(11) NOT NULL DEFAULT '-1', + `ram` int(11) NOT NULL DEFAULT '0', + `ram_burst` int(11) NOT NULL DEFAULT '0', + `cpu_units` int(11) NOT NULL DEFAULT '1000', + `cpu_num` int(11) NOT NULL DEFAULT '4', + `cpu_limit` int(11) NOT NULL DEFAULT '400', + `io_priority` int(11) NOT NULL DEFAULT '4', + `nameserver` varchar(255) NOT NULL DEFAULT '8.8.8.8 8.8.4.4', + `create_dns` varchar(1) NOT NULL DEFAULT 'n', + `capability` text, + `features` text, + `iptabless` text, + `config` mediumtext, + `custom` text, + PRIMARY KEY (`vm_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `openvz_vm` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `remote_session` +-- + +CREATE TABLE `remote_session` ( + `remote_session` varchar(64) NOT NULL DEFAULT '', + `remote_userid` int(11) unsigned NOT NULL DEFAULT '0', + `remote_functions` text, + `client_login` tinyint(1) unsigned NOT NULL default '0', + `tstamp` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`remote_session`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `remote_user` +-- + +CREATE TABLE `remote_user` ( + `remote_userid` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `remote_username` varchar(64) NOT NULL DEFAULT '', + `remote_password` varchar(64) NOT NULL DEFAULT '', + `remote_access` enum('y','n') NOT NULL DEFAULT 'y', + `remote_ips` TEXT, + `remote_functions` text, + PRIMARY KEY (`remote_userid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `server` +-- + +CREATE TABLE `server` ( + `server_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_name` varchar(255) NOT NULL default '', + `mail_server` tinyint(1) NOT NULL default '0', + `web_server` tinyint(1) NOT NULL default '0', + `dns_server` tinyint(1) NOT NULL default '0', + `file_server` tinyint(1) NOT NULL default '0', + `db_server` tinyint(1) NOT NULL default '0', + `vserver_server` tinyint(1) NOT NULL default '0', + `proxy_server` tinyint(1) NOT NULL default '0', + `firewall_server` tinyint(1) NOT NULL default '0', + `xmpp_server` tinyint(1) NOT NULL default '0', + `config` text, + `updated` bigint(20) unsigned NOT NULL default '0', + `mirror_server_id` int(11) unsigned NOT NULL default '0', + `dbversion` int(11) unsigned NOT NULL default '1', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`server_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `server_ip` +-- + +CREATE TABLE `server_ip` ( + `server_ip_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `client_id` int(11) unsigned NOT NULL default '0', + `ip_type` enum( 'IPv4', 'IPv6' ) NOT NULL DEFAULT 'IPv4', + `ip_address` varchar(39) default NULL, + `virtualhost` enum('n','y') NOT NULL default 'y', + `virtualhost_port` varchar(255) default '80,443', + PRIMARY KEY (`server_ip_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `server_ip_map` +-- + +CREATE TABLE `server_ip_map` ( + `server_ip_map_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `source_ip` varchar(15) DEFAULT NULL, + `destination_ip` varchar(35) DEFAULT '', + `active` enum('n','y') NOT NULL DEFAULT 'y', + PRIMARY KEY (`server_ip_map_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `server_php` +-- + +CREATE TABLE `server_php` ( + `server_php_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `client_id` int(11) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) DEFAULT NULL, + `php_fastcgi_binary` varchar(255) DEFAULT NULL, + `php_fastcgi_ini_dir` varchar(255) DEFAULT NULL, + `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 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `shell_user` +-- + +CREATE TABLE `shell_user` ( + `shell_user_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `parent_domain_id` int(11) unsigned NOT NULL default '0', + `username` varchar(64) default NULL, + `username_prefix` varchar(50) NOT NULL default '', + `password` varchar(64) default NULL, + `quota_size` bigint(20) NOT NULL default '-1', + `active` enum('n','y') NOT NULL default 'y', + `puser` varchar(255) default NULL, + `pgroup` varchar(255) default NULL, + `shell` varchar(255) NOT NULL default '/bin/bash', + `dir` varchar(255) default NULL, + `chroot` varchar(255) NOT NULL DEFAULT '', + `ssh_rsa` text, + PRIMARY KEY (`shell_user_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `software_package` +-- + +CREATE TABLE `software_package` ( + `package_id` int(11) unsigned NOT NULL auto_increment, + `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', + `package_name` varchar(64) NOT NULL DEFAULT '', + `package_title` varchar(64) NOT NULL DEFAULT '', + `package_description` text, + `package_version` varchar(8) default NULL, + `package_type` enum('ispconfig','app','web') NOT NULL default 'app', + `package_installable` enum('yes','no','key') NOT NULL default 'yes', + `package_requires_db` enum('no','mysql') NOT NULL default 'no', + `package_remote_functions` text, + `package_key` varchar(255) NOT NULL DEFAULT '', + `package_config` text, + PRIMARY KEY (`package_id`), + UNIQUE KEY `package_name` (`package_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `software_repo` +-- + +CREATE TABLE `software_repo` ( + `software_repo_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `repo_name` varchar(64) default NULL, + `repo_url` varchar(255) default NULL, + `repo_username` varchar(64) default NULL, + `repo_password` varchar(64) default NULL, + `active` enum('n','y') NOT NULL default 'y', + PRIMARY KEY (`software_repo_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `software_update` +-- + +CREATE TABLE `software_update` ( + `software_update_id` int(11) unsigned NOT NULL auto_increment, + `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', + `package_name` varchar(64) NOT NULL DEFAULT '', + `update_url` varchar(255) NOT NULL DEFAULT '', + `update_md5` varchar(255) NOT NULL DEFAULT '', + `update_dependencies` varchar(255) NOT NULL DEFAULT '', + `update_title` varchar(64) NOT NULL DEFAULT '', + `v1` tinyint(1) NOT NULL default '0', + `v2` tinyint(1) NOT NULL default '0', + `v3` tinyint(1) NOT NULL default '0', + `v4` tinyint(1) NOT NULL default '0', + `type` enum('full','update') NOT NULL default 'full', + PRIMARY KEY (`software_update_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `software_update_inst` +-- + +CREATE TABLE `software_update_inst` ( + `software_update_inst_id` int(11) unsigned NOT NULL auto_increment, + `software_update_id` int(11) unsigned NOT NULL default '0', + `package_name` varchar(64) NOT NULL DEFAULT '', + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `status` enum('none','installing','installed','deleting','deleted','failed') NOT NULL default 'none', + PRIMARY KEY (`software_update_inst_id`), + UNIQUE KEY `software_update_id` (`software_update_id`,`package_name`,`server_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `spamfilter_policy` +-- + +CREATE TABLE `spamfilter_policy` ( + `id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `policy_name` varchar(64) default NULL, + `virus_lover` enum('N','Y') default 'N', + `spam_lover` enum('N','Y') default 'N', + `banned_files_lover` enum('N','Y') default 'N', + `bad_header_lover` enum('N','Y') default 'N', + `bypass_virus_checks` enum('N','Y') default 'N', + `bypass_spam_checks` enum('N','Y') default 'N', + `bypass_banned_checks` enum('N','Y') default 'N', + `bypass_header_checks` enum('N','Y') default 'N', + `spam_modifies_subj` enum('N','Y') default 'N', + `virus_quarantine_to` varchar(255) default NULL, + `spam_quarantine_to` varchar(255) default NULL, + `banned_quarantine_to` varchar(255) default NULL, + `bad_header_quarantine_to` varchar(255) default NULL, + `clean_quarantine_to` varchar(255) default NULL, + `other_quarantine_to` varchar(255) default NULL, + `spam_tag_level` DECIMAL(5,2) default NULL, + `spam_tag2_level` DECIMAL(5,2) default NULL, + `spam_kill_level` DECIMAL(5,2) default NULL, + `spam_dsn_cutoff_level` DECIMAL(5,2) default NULL, + `spam_quarantine_cutoff_level` DECIMAL(5,2) default NULL, + `addr_extension_virus` varchar(64) default NULL, + `addr_extension_spam` varchar(64) default NULL, + `addr_extension_banned` varchar(64) default NULL, + `addr_extension_bad_header` varchar(64) default NULL, + `warnvirusrecip` enum('N','Y') default 'N', + `warnbannedrecip` enum('N','Y') default 'N', + `warnbadhrecip` enum('N','Y') default 'N', + `newvirus_admin` varchar(64) default NULL, + `virus_admin` varchar(64) default NULL, + `banned_admin` varchar(64) default NULL, + `bad_header_admin` varchar(64) default NULL, + `spam_admin` varchar(64) default NULL, + `spam_subject_tag` varchar(64) default NULL, + `spam_subject_tag2` varchar(64) default NULL, + `message_size_limit` int(11) unsigned default NULL, + `banned_rulenames` varchar(64) default NULL, + `policyd_quota_in` int(11) NOT NULL DEFAULT '-1', + `policyd_quota_in_period` int(11) NOT NULL DEFAULT '24', + `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', + `policyd_quota_out_period` int(11) NOT NULL DEFAULT '24', + `policyd_greylist` ENUM( 'Y', 'N' ) NOT NULL DEFAULT 'N', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `spamfilter_users` +-- + +CREATE TABLE `spamfilter_users` ( + `id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `priority` tinyint(3) unsigned NOT NULL default '7', + `policy_id` int(11) unsigned NOT NULL default '1', + `email` varchar(255) NOT NULL DEFAULT '', + `fullname` varchar(64) default NULL, + `local` varchar(1) default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `email` (`email`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `spamfilter_wblist` +-- + +CREATE TABLE `spamfilter_wblist` ( + `wblist_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) NOT NULL DEFAULT '', + `sys_perm_group` varchar(5) NOT NULL DEFAULT '', + `sys_perm_other` varchar(5) NOT NULL DEFAULT '', + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `wb` enum('W','B') NOT NULL default 'W', + `rid` int(11) unsigned NOT NULL DEFAULT '0', + `email` varchar(255) NOT NULL DEFAULT '', + `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', + `active` enum('y','n') NOT NULL default 'y', + PRIMARY KEY (`wblist_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `support_message` +-- + +CREATE TABLE `support_message` ( + `support_message_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `recipient_id` int(11) unsigned NOT NULL default '0', + `sender_id` int(11) unsigned NOT NULL default '0', + `subject` varchar(255) default NULL, + `message` text default NULL, + `tstamp` int(11) NOT NULL default '0', + PRIMARY KEY (`support_message_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_config` +-- + +CREATE TABLE `sys_config` ( + `group` varchar(64) NOT NULL DEFAULT '', + `name` varchar(64) NOT NULL DEFAULT '', + `value` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`group`, `name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_cron` +-- + +CREATE TABLE IF NOT EXISTS `sys_cron` ( + `name` varchar(50) NOT NULL DEFAULT '', + `last_run` datetime NULL DEFAULT NULL, + `next_run` datetime NULL DEFAULT NULL, + `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_datalog` +-- + +CREATE TABLE `sys_datalog` ( + `datalog_id` int(11) unsigned NOT NULL auto_increment, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `dbtable` varchar(255) NOT NULL default '', + `dbidx` varchar(255) NOT NULL default '', + `action` char(1) NOT NULL default '', + `tstamp` int(11) NOT NULL default '0', + `user` varchar(255) NOT NULL default '', + `data` longtext, + `status` set('pending','ok','warning','error') NOT NULL default 'ok', + `error` mediumtext, + `session_id` varchar(64) NOT NULL DEFAULT '', + PRIMARY KEY (`datalog_id`), + KEY `server_id` (`server_id`,`status`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_dbsync` +-- + +CREATE TABLE `sys_dbsync` ( + `id` int(11) unsigned NOT NULL auto_increment, + `jobname` varchar(64) NOT NULL default '', + `sync_interval_minutes` int(11) unsigned NOT NULL default '0', + `db_type` varchar(16) NOT NULL default '', + `db_host` varchar(255) NOT NULL default '', + `db_name` varchar(64) NOT NULL default '', + `db_username` varchar(64) NOT NULL default '', + `db_password` varchar(64) NOT NULL default '', + `db_tables` varchar(255) NOT NULL default 'admin,forms', + `empty_datalog` int(11) unsigned NOT NULL default '0', + `sync_datalog_external` int(11) unsigned NOT NULL default '0', + `active` tinyint(1) NOT NULL default '1', + `last_datalog_id` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `last_datalog_id` (`last_datalog_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_filesync` +-- + +CREATE TABLE `sys_filesync` ( + `id` int(11) unsigned NOT NULL auto_increment, + `jobname` varchar(64) NOT NULL default '', + `sync_interval_minutes` int(11) unsigned NOT NULL default '0', + `ftp_host` varchar(255) NOT NULL default '', + `ftp_path` varchar(255) NOT NULL default '', + `ftp_username` varchar(64) NOT NULL default '', + `ftp_password` varchar(64) NOT NULL default '', + `local_path` varchar(255) NOT NULL default '', + `wput_options` varchar(255) NOT NULL default '--timestamping --reupload --dont-continue', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_group` +-- + +CREATE TABLE `sys_group` ( + `groupid` int(11) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL default '', + `description` text, + `client_id` int(11) unsigned NOT NULL default '0', + PRIMARY KEY (`groupid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_ini` +-- + +CREATE TABLE `sys_ini` ( + `sysini_id` int(11) unsigned NOT NULL auto_increment, + `config` longtext, + `default_logo` text NOT NULL, + `custom_logo` text NOT NULL, + PRIMARY KEY (`sysini_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_log` +-- + +CREATE TABLE `sys_log` ( + `syslog_id` int(11) unsigned NOT NULL auto_increment, + `server_id` int(11) unsigned NOT NULL default '0', + `datalog_id` int(11) unsigned NOT NULL default '0', + `loglevel` tinyint(4) NOT NULL default '0', + `tstamp` int(11) unsigned NOT NULL DEFAULT '0', + `message` text, + PRIMARY KEY (`syslog_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_remoteaction` +-- + +CREATE TABLE `sys_remoteaction` ( + `action_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `tstamp` int(11) NOT NULL DEFAULT '0', + `action_type` varchar(20) NOT NULL DEFAULT '', + `action_param` mediumtext, + `action_state` enum('pending','ok','warning','error') NOT NULL DEFAULT 'pending', + `response` mediumtext, + PRIMARY KEY (`action_id`), + KEY `server_id` (`server_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_session` +-- + +CREATE TABLE `sys_session` ( + `session_id` varchar(64) NOT NULL DEFAULT '', + `date_created` datetime NULL DEFAULT NULL, + `last_updated` datetime NULL DEFAULT NULL, + `permanent` enum('n','y') NOT NULL DEFAULT 'n', + `session_data` longtext, + PRIMARY KEY (`session_id`), + KEY `last_updated` (`last_updated`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_theme` +-- + +CREATE TABLE IF NOT EXISTS `sys_theme` ( + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `var_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `tpl_name` varchar(32) NOT NULL DEFAULT '', + `username` varchar(64) NOT NULL DEFAULT '', + `logo_url` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`var_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sys_user` +-- + +CREATE TABLE `sys_user` ( + `userid` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by userid', + `sys_groupid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by groupid', + `sys_perm_user` varchar(5) NOT NULL default 'riud', + `sys_perm_group` varchar(5) NOT NULL default 'riud', + `sys_perm_other` varchar(5) NOT NULL default '', + `username` varchar(64) NOT NULL default '', + `passwort` varchar(64) NOT NULL default '', + `modules` varchar(255) NOT NULL default '', + `startmodule` varchar(255) NOT NULL default '', + `app_theme` varchar(32) NOT NULL default 'default', + `typ` varchar(16) NOT NULL default 'user', + `active` tinyint(1) NOT NULL default '1', + `language` varchar(2) NOT NULL default 'en', + `groups` TEXT, + `default_group` int(11) unsigned NOT NULL default '0', + `client_id` int(11) unsigned NOT NULL default '0', + `id_rsa` VARCHAR( 2000 ) NOT NULL default '', + `ssh_rsa` VARCHAR( 600 ) NOT NULL default '', + `lost_password_function` tinyint(1) NOT NULL default '1', + `lost_password_hash` VARCHAR(50) NOT NULL default '', + `lost_password_reqtime` DATETIME NULL default NULL, + PRIMARY KEY (`userid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `webdav_user` +-- + +CREATE TABLE `webdav_user` ( + `webdav_user_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', + `username` varchar(64) DEFAULT NULL, + `username_prefix` varchar(50) NOT NULL default '', + `password` varchar(64) DEFAULT NULL, + `active` enum('n','y') NOT NULL DEFAULT 'y', + `dir` varchar(255) DEFAULT NULL, + PRIMARY KEY (`webdav_user_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_backup` +-- + +CREATE TABLE `web_backup` ( + `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(10) unsigned NOT NULL DEFAULT '0', + `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0', + `backup_type` enum('web','mysql','mongodb') NOT NULL DEFAULT 'web', + `backup_mode` varchar(64) NOT NULL DEFAULT '', + `tstamp` int(10) unsigned NOT NULL DEFAULT '0', + `filename` varchar(255) NOT NULL DEFAULT '', + `filesize` VARCHAR(20) NOT NULL DEFAULT '', + PRIMARY KEY (`backup_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_database` +-- + +CREATE TABLE `web_database` ( + `database_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) unsigned NOT NULL DEFAULT '0', + `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', + `type` varchar(16) NOT NULL DEFAULT 'y', + `database_name` varchar(64) DEFAULT NULL, + `database_name_prefix` varchar(50) NOT NULL default '', + `database_quota` int(11) DEFAULT NULL, + `quota_exceeded` enum('n','y') NOT NULL DEFAULT 'n', + `last_quota_notification` date NULL default NULL, + `database_user_id` int(11) unsigned DEFAULT NULL, + `database_ro_user_id` int(11) unsigned DEFAULT NULL, + `database_charset` varchar(64) DEFAULT NULL, + `remote_access` enum('n','y') NOT NULL DEFAULT 'y', + `remote_ips` text, + `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none', + `backup_copies` INT NOT NULL DEFAULT '1', + `active` enum('n','y') NOT NULL DEFAULT 'y', + PRIMARY KEY (`database_id`), + KEY `database_user_id` (`database_user_id`), + KEY `database_ro_user_id` (`database_ro_user_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `web_database_user` +-- + +CREATE TABLE IF NOT EXISTS `web_database_user` ( + `database_user_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) UNSIGNED NOT NULL DEFAULT '0', + `database_user` varchar(64) DEFAULT NULL, + `database_user_prefix` varchar(50) NOT NULL default '', + `database_password` varchar(64) DEFAULT NULL, + `database_password_mongo` varchar(32) DEFAULT NULL, + PRIMARY KEY (`database_user_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_domain` +-- + +CREATE TABLE `web_domain` ( + `domain_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `server_id` int(11) unsigned NOT NULL default '0', + `ip_address` varchar(39) default NULL, + `ipv6_address` VARCHAR( 255 ) default NULL, + `domain` varchar(255) default NULL, + `type` varchar(32) default NULL, + `parent_domain_id` int(11) unsigned NOT NULL default '0', + `vhost_type` varchar(32) default NULL, + `document_root` varchar(255) default NULL, + `web_folder` varchar(100) default NULL, + `system_user` varchar(255) default NULL, + `system_group` varchar(255) default NULL, + `hd_quota` bigint(20) NOT NULL default '0', + `traffic_quota` bigint(20) NOT NULL default '-1', + `cgi` enum('n','y') NOT NULL default 'y', + `ssi` enum('n','y') NOT NULL default 'y', + `suexec` enum('n','y') NOT NULL default 'y', + `errordocs` tinyint(1) NOT NULL default '1', + `is_subdomainwww` tinyint(1) NOT NULL default '1', + `subdomain` enum('none','www','*') NOT NULL default 'none', + `php` varchar(32) NOT NULL default 'y', + `ruby` enum('n','y') NOT NULL default 'n', + `python` enum('n','y') NOT NULL default 'n', + `perl` enum('n','y') NOT NULL default 'n', + `redirect_type` varchar(255) default NULL, + `redirect_path` varchar(255) default NULL, + `seo_redirect` varchar(255) default NULL, + `rewrite_to_https` ENUM('y','n') NOT NULL DEFAULT 'n', + `ssl` enum('n','y') NOT NULL default 'n', + `ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', + `ssl_letsencrypt_exclude` enum('n','y') NOT NULL DEFAULT 'n', + `ssl_state` varchar(255) NULL, + `ssl_locality` varchar(255) NULL, + `ssl_organisation` varchar(255) NULL, + `ssl_organisation_unit` varchar(255) NULL, + `ssl_country` varchar(255) NULL, + `ssl_domain` varchar(255) NULL, + `ssl_request` mediumtext NULL, + `ssl_cert` mediumtext NULL, + `ssl_bundle` mediumtext NULL, + `ssl_key` mediumtext NULL, + `ssl_action` varchar(16) NULL, + `stats_password` varchar(255) default NULL, + `stats_type` varchar(255) default 'awstats', + `allow_override` varchar(255) NOT NULL default 'All', + `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', + `pm_min_spare_servers` int(11) NOT NULL DEFAULT '1', + `pm_max_spare_servers` int(11) NOT NULL DEFAULT '5', + `pm_process_idle_timeout` int(11) NOT NULL DEFAULT '10', + `pm_max_requests` int(11) NOT NULL DEFAULT '0', + `php_open_basedir` mediumtext, + `custom_php_ini` mediumtext, + `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none', + `backup_copies` INT NOT NULL DEFAULT '1', + `backup_excludes` mediumtext, + `active` enum('n','y') NOT NULL default 'y', + `traffic_quota_lock` enum('n','y') NOT NULL default 'n', + `fastcgi_php_version` varchar(255) DEFAULT NULL, + `proxy_directives` mediumtext, + `enable_spdy` ENUM('y','n') NULL DEFAULT 'n', + `last_quota_notification` date NULL default NULL, + `rewrite_rules` mediumtext, + `added_date` date NULL DEFAULT NULL, + `added_by` varchar(255) DEFAULT NULL, + `directive_snippets_id` int(11) unsigned NOT NULL default '0', + `enable_pagespeed` ENUM('y','n') NOT NULL DEFAULT 'n', + `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 '10', + PRIMARY KEY (`domain_id`), + UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_folder` +-- + +CREATE TABLE IF NOT EXISTS `web_folder` ( + `web_folder_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `parent_domain_id` int(11) NOT NULL DEFAULT '0', + `path` varchar(255) DEFAULT NULL, + `active` varchar(255) NOT NULL DEFAULT 'y', + PRIMARY KEY (`web_folder_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Dumping data for table `web_folder` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_folder_user` +-- + +CREATE TABLE IF NOT EXISTS `web_folder_user` ( + `web_folder_user_id` bigint(20) NOT NULL AUTO_INCREMENT, + `sys_userid` int(11) NOT NULL DEFAULT '0', + `sys_groupid` int(11) NOT NULL DEFAULT '0', + `sys_perm_user` varchar(5) DEFAULT NULL, + `sys_perm_group` varchar(5) DEFAULT NULL, + `sys_perm_other` varchar(5) DEFAULT NULL, + `server_id` int(11) NOT NULL DEFAULT '0', + `web_folder_id` int(11) NOT NULL DEFAULT '0', + `username` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `active` varchar(255) NOT NULL DEFAULT 'y', + PRIMARY KEY (`web_folder_user_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Dumping data for table `web_folder_user` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `web_traffic` +-- + +CREATE TABLE `web_traffic` ( + `hostname` varchar(255) NOT NULL DEFAULT '', + `traffic_date` date NULL DEFAULT NULL, + `traffic_bytes` bigint(32) unsigned NOT NULL default '0', + UNIQUE KEY (`hostname`,`traffic_date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `xmpp_domain` +-- + +CREATE TABLE `xmpp_domain` ( + `domain_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `domain` varchar(255) NOT NULL default '', + + `management_method` ENUM( 'normal', 'maildomain' ) NOT NULL default 'normal', + `public_registration` ENUM( 'n', 'y' ) NOT NULL default 'n', + `registration_url` varchar(255) NOT NULL DEFAULT '', + `registration_message` varchar(255) NOT NULL DEFAULT '', + `domain_admins` text, + + `use_pubsub` enum('n','y') NOT NULL DEFAULT 'n', + `use_proxy` enum('n','y') NOT NULL DEFAULT 'n', + `use_anon_host` enum('n','y') NOT NULL DEFAULT 'n', + + `use_vjud` enum('n','y') NOT NULL DEFAULT 'n', + `vjud_opt_mode` enum('in', 'out') NOT NULL DEFAULT 'in', + + `use_muc_host` enum('n','y') NOT NULL DEFAULT 'n', + `muc_name` varchar(30) NOT NULL DEFAULT '', + `muc_restrict_room_creation` enum('n', 'y', 'm') NOT NULL DEFAULT 'm', + `muc_admins` text, + `use_pastebin` enum('n','y') NOT NULL DEFAULT 'n', + `pastebin_expire_after` int(3) NOT NULL DEFAULT 48, + `pastebin_trigger` varchar(10) NOT NULL DEFAULT '!paste', + `use_http_archive` enum('n','y') NOT NULL DEFAULT 'n', + `http_archive_show_join` enum('n', 'y') NOT NULL DEFAULT 'n', + `http_archive_show_status` enum('n', 'y') NOT NULL DEFAULT 'n', + `use_status_host` enum('n','y') NOT NULL DEFAULT 'n', + + `ssl_state` varchar(255) NULL, + `ssl_locality` varchar(255) NULL, + `ssl_organisation` varchar(255) NULL, + `ssl_organisation_unit` varchar(255) NULL, + `ssl_country` varchar(255) NULL, + `ssl_email` varchar(255) NULL, + `ssl_request` mediumtext NULL, + `ssl_cert` mediumtext NULL, + `ssl_bundle` mediumtext NULL, + `ssl_key` mediumtext NULL, + `ssl_action` varchar(16) NULL, + + `active` enum('n','y') NOT NULL DEFAULT 'n', + PRIMARY KEY (`domain_id`), + KEY `server_id` (`server_id`,`domain`), + KEY `domain_active` (`domain`,`active`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `xmpp_user` +-- + +CREATE TABLE `xmpp_user` ( + `xmppuser_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `server_id` int(11) unsigned NOT NULL default '0', + `jid` varchar(255) NOT NULL default '', + `password` varchar(255) NOT NULL default '', + `active` enum('n','y') NOT NULL DEFAULT 'n', + PRIMARY KEY (`xmppuser_id`), + KEY `server_id` (`server_id`,`jid`), + KEY `jid_active` (`jid`,`active`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- -------------------------------------------------------- +-- -------------------------------------------------------- +-- DB-DATA +-- -------------------------------------------------------- +-- -------------------------------------------------------- + +-- +-- Dumping data for table `aps_settings` +-- + +INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(1, 'ignore-php-extension', ''); +INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(2, 'ignore-php-configuration', ''); +INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(3, 'ignore-webserver-module', ''); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `country` +-- + +INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`, `eu`) VALUES +('AF', 'AFGHANISTAN', 'Afghanistan', 'AFG', 4, 'n'), +('AL', 'ALBANIA', 'Albania', 'ALB', 8, 'n'), +('DZ', 'ALGERIA', 'Algeria', 'DZA', 12, 'n'), +('AS', 'AMERICAN SAMOA', 'American Samoa', 'ASM', 16, 'n'), +('AD', 'ANDORRA', 'Andorra', 'AND', 20, 'n'), +('AO', 'ANGOLA', 'Angola', 'AGO', 24, 'n'), +('AI', 'ANGUILLA', 'Anguilla', 'AIA', 660, 'n'), +('AQ', 'ANTARCTICA', 'Antarctica', NULL, NULL, 'n'), +('AG', 'ANTIGUA AND BARBUDA', 'Antigua and Barbuda', 'ATG', 28, 'n'), +('AR', 'ARGENTINA', 'Argentina', 'ARG', 32, 'n'), +('AM', 'ARMENIA', 'Armenia', 'ARM', 51, 'n'), +('AW', 'ARUBA', 'Aruba', 'ABW', 533, 'n'), +('AU', 'AUSTRALIA', 'Australia', 'AUS', 36, 'n'), +('AT', 'AUSTRIA', 'Austria', 'AUT', 40, 'y'), +('AZ', 'AZERBAIJAN', 'Azerbaijan', 'AZE', 31, 'n'), +('BS', 'BAHAMAS', 'Bahamas', 'BHS', 44, 'n'), +('BH', 'BAHRAIN', 'Bahrain', 'BHR', 48, 'n'), +('BD', 'BANGLADESH', 'Bangladesh', 'BGD', 50, 'n'), +('BB', 'BARBADOS', 'Barbados', 'BRB', 52, 'n'), +('BY', 'BELARUS', 'Belarus', 'BLR', 112, 'n'), +('BE', 'BELGIUM', 'Belgium', 'BEL', 56, 'y'), +('BZ', 'BELIZE', 'Belize', 'BLZ', 84, 'n'), +('BJ', 'BENIN', 'Benin', 'BEN', 204, 'n'), +('BM', 'BERMUDA', 'Bermuda', 'BMU', 60, 'n'), +('BT', 'BHUTAN', 'Bhutan', 'BTN', 64, 'n'), +('BO', 'BOLIVIA', 'Bolivia', 'BOL', 68, 'n'), +('BA', 'BOSNIA AND HERZEGOVINA', 'Bosnia and Herzegovina', 'BIH', 70, 'n'), +('BW', 'BOTSWANA', 'Botswana', 'BWA', 72, 'n'), +('BV', 'BOUVET ISLAND', 'Bouvet Island', NULL, NULL, 'n'), +('BR', 'BRAZIL', 'Brazil', 'BRA', 76, 'n'), +('IO', 'BRITISH INDIAN OCEAN TERRITORY', 'British Indian Ocean Territory', NULL, NULL, 'n'), +('BN', 'BRUNEI DARUSSALAM', 'Brunei Darussalam', 'BRN', 96, 'n'), +('BG', 'BULGARIA', 'Bulgaria', 'BGR', 100, 'y'), +('BF', 'BURKINA FASO', 'Burkina Faso', 'BFA', 854, 'n'), +('BI', 'BURUNDI', 'Burundi', 'BDI', 108, 'n'), +('KH', 'CAMBODIA', 'Cambodia', 'KHM', 116, 'n'), +('CM', 'CAMEROON', 'Cameroon', 'CMR', 120, 'n'), +('CA', 'CANADA', 'Canada', 'CAN', 124, 'n'), +('CV', 'CAPE VERDE', 'Cape Verde', 'CPV', 132, 'n'), +('KY', 'CAYMAN ISLANDS', 'Cayman Islands', 'CYM', 136, 'n'), +('CF', 'CENTRAL AFRICAN REPUBLIC', 'Central African Republic', 'CAF', 140, 'n'), +('TD', 'CHAD', 'Chad', 'TCD', 148, 'n'), +('CL', 'CHILE', 'Chile', 'CHL', 152, 'n'), +('CN', 'CHINA', 'China', 'CHN', 156, 'n'), +('CX', 'CHRISTMAS ISLAND', 'Christmas Island', NULL, NULL, 'n'), +('CC', 'COCOS (KEELING) ISLANDS', 'Cocos (Keeling) Islands', NULL, NULL, 'n'), +('CO', 'COLOMBIA', 'Colombia', 'COL', 170, 'n'), +('KM', 'COMOROS', 'Comoros', 'COM', 174, 'n'), +('CG', 'CONGO', 'Congo', 'COG', 178, 'n'), +('CD', 'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 'Congo, the Democratic Republic of the', 'COD', 180, 'n'), +('CK', 'COOK ISLANDS', 'Cook Islands', 'COK', 184, 'n'), +('CR', 'COSTA RICA', 'Costa Rica', 'CRI', 188, 'n'), +('CI', 'COTE D''IVOIRE', 'Cote D''Ivoire', 'CIV', 384, 'n'), +('HR', 'CROATIA', 'Croatia', 'HRV', 191, 'y'), +('CU', 'CUBA', 'Cuba', 'CUB', 192, 'n'), +('CY', 'CYPRUS', 'Cyprus', 'CYP', 196, 'y'), +('CZ', 'CZECH REPUBLIC', 'Czech Republic', 'CZE', 203, 'y'), +('DK', 'DENMARK', 'Denmark', 'DNK', 208, 'y'), +('DJ', 'DJIBOUTI', 'Djibouti', 'DJI', 262, 'n'), +('DM', 'DOMINICA', 'Dominica', 'DMA', 212, 'n'), +('DO', 'DOMINICAN REPUBLIC', 'Dominican Republic', 'DOM', 214, 'n'), +('EC', 'ECUADOR', 'Ecuador', 'ECU', 218, 'n'), +('EG', 'EGYPT', 'Egypt', 'EGY', 818, 'n'), +('SV', 'EL SALVADOR', 'El Salvador', 'SLV', 222, 'n'), +('GQ', 'EQUATORIAL GUINEA', 'Equatorial Guinea', 'GNQ', 226, 'n'), +('ER', 'ERITREA', 'Eritrea', 'ERI', 232, 'n'), +('EE', 'ESTONIA', 'Estonia', 'EST', 233, 'y'), +('ET', 'ETHIOPIA', 'Ethiopia', 'ETH', 231, 'n'), +('FK', 'FALKLAND ISLANDS (MALVINAS)', 'Falkland Islands (Malvinas)', 'FLK', 238, 'n'), +('FO', 'FAROE ISLANDS', 'Faroe Islands', 'FRO', 234, 'n'), +('FJ', 'FIJI', 'Fiji', 'FJI', 242, 'n'), +('FI', 'FINLAND', 'Finland', 'FIN', 246, 'y'), +('FR', 'FRANCE', 'France', 'FRA', 250, 'y'), +('GF', 'FRENCH GUIANA', 'French Guiana', 'GUF', 254, 'n'), +('PF', 'FRENCH POLYNESIA', 'French Polynesia', 'PYF', 258, 'n'), +('TF', 'FRENCH SOUTHERN TERRITORIES', 'French Southern Territories', NULL, NULL, 'n'), +('GA', 'GABON', 'Gabon', 'GAB', 266, 'n'), +('GM', 'GAMBIA', 'Gambia', 'GMB', 270, 'n'), +('GE', 'GEORGIA', 'Georgia', 'GEO', 268, 'n'), +('DE', 'GERMANY', 'Germany', 'DEU', 276, 'y'), +('GH', 'GHANA', 'Ghana', 'GHA', 288, 'n'), +('GI', 'GIBRALTAR', 'Gibraltar', 'GIB', 292, 'n'), +('GR', 'GREECE', 'Greece', 'GRC', 300, 'y'), +('GL', 'GREENLAND', 'Greenland', 'GRL', 304, 'n'), +('GD', 'GRENADA', 'Grenada', 'GRD', 308, 'n'), +('GP', 'GUADELOUPE', 'Guadeloupe', 'GLP', 312, 'n'), +('GU', 'GUAM', 'Guam', 'GUM', 316, 'n'), +('GT', 'GUATEMALA', 'Guatemala', 'GTM', 320, 'n'), +('GN', 'GUINEA', 'Guinea', 'GIN', 324, 'n'), +('GW', 'GUINEA-BISSAU', 'Guinea-Bissau', 'GNB', 624, 'n'), +('GY', 'GUYANA', 'Guyana', 'GUY', 328, 'n'), +('HT', 'HAITI', 'Haiti', 'HTI', 332, 'n'), +('HM', 'HEARD ISLAND AND MCDONALD ISLANDS', 'Heard Island and Mcdonald Islands', NULL, NULL, 'n'), +('VA', 'HOLY SEE (VATICAN CITY STATE)', 'Holy See (Vatican City State)', 'VAT', 336, 'n'), +('HN', 'HONDURAS', 'Honduras', 'HND', 340, 'n'), +('HK', 'HONG KONG', 'Hong Kong', 'HKG', 344, 'n'), +('HU', 'HUNGARY', 'Hungary', 'HUN', 348, 'y'), +('IS', 'ICELAND', 'Iceland', 'ISL', 352, 'n'), +('IN', 'INDIA', 'India', 'IND', 356, 'n'), +('ID', 'INDONESIA', 'Indonesia', 'IDN', 360, 'n'), +('IR', 'IRAN, ISLAMIC REPUBLIC OF', 'Iran, Islamic Republic of', 'IRN', 364, 'n'), +('IQ', 'IRAQ', 'Iraq', 'IRQ', 368, 'n'), +('IE', 'IRELAND', 'Ireland', 'IRL', 372, 'y'), +('IL', 'ISRAEL', 'Israel', 'ISR', 376, 'n'), +('IT', 'ITALY', 'Italy', 'ITA', 380, 'y'), +('JM', 'JAMAICA', 'Jamaica', 'JAM', 388, 'n'), +('JP', 'JAPAN', 'Japan', 'JPN', 392, 'n'), +('JO', 'JORDAN', 'Jordan', 'JOR', 400, 'n'), +('KZ', 'KAZAKHSTAN', 'Kazakhstan', 'KAZ', 398, 'n'), +('KE', 'KENYA', 'Kenya', 'KEN', 404, 'n'), +('KI', 'KIRIBATI', 'Kiribati', 'KIR', 296, 'n'), +('KP', 'KOREA, DEMOCRATIC PEOPLE''S REPUBLIC OF', 'Korea, Democratic People''s Republic of', 'PRK', 408, 'n'), +('KR', 'KOREA, REPUBLIC OF', 'Korea, Republic of', 'KOR', 410, 'n'), +('KW', 'KUWAIT', 'Kuwait', 'KWT', 414, 'n'), +('KG', 'KYRGYZSTAN', 'Kyrgyzstan', 'KGZ', 417, 'n'), +('LA', 'LAO PEOPLE''S DEMOCRATIC REPUBLIC', 'Lao People''s Democratic Republic', 'LAO', 418, 'n'), +('LV', 'LATVIA', 'Latvia', 'LVA', 428, 'y'), +('LB', 'LEBANON', 'Lebanon', 'LBN', 422, 'n'), +('LS', 'LESOTHO', 'Lesotho', 'LSO', 426, 'n'), +('LR', 'LIBERIA', 'Liberia', 'LBR', 430, 'n'), +('LY', 'LIBYAN ARAB JAMAHIRIYA', 'Libyan Arab Jamahiriya', 'LBY', 434, 'n'), +('LI', 'LIECHTENSTEIN', 'Liechtenstein', 'LIE', 438, 'n'), +('LT', 'LITHUANIA', 'Lithuania', 'LTU', 440, 'y'), +('LU', 'LUXEMBOURG', 'Luxembourg', 'LUX', 442, 'y'), +('MO', 'MACAO', 'Macao', 'MAC', 446, 'n'), +('MK', 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 'Macedonia, the Former Yugoslav Republic of', 'MKD', 807, 'n'), +('MG', 'MADAGASCAR', 'Madagascar', 'MDG', 450, 'n'), +('MW', 'MALAWI', 'Malawi', 'MWI', 454, 'n'), +('MY', 'MALAYSIA', 'Malaysia', 'MYS', 458, 'n'), +('MV', 'MALDIVES', 'Maldives', 'MDV', 462, 'n'), +('ML', 'MALI', 'Mali', 'MLI', 466, 'n'), +('MT', 'MALTA', 'Malta', 'MLT', 470, 'y'), +('MH', 'MARSHALL ISLANDS', 'Marshall Islands', 'MHL', 584, 'n'), +('MQ', 'MARTINIQUE', 'Martinique', 'MTQ', 474, 'n'), +('MR', 'MAURITANIA', 'Mauritania', 'MRT', 478, 'n'), +('MU', 'MAURITIUS', 'Mauritius', 'MUS', 480, 'n'), +('YT', 'MAYOTTE', 'Mayotte', NULL, NULL, 'n'), +('MX', 'MEXICO', 'Mexico', 'MEX', 484, 'n'), +('FM', 'MICRONESIA, FEDERATED STATES OF', 'Micronesia, Federated States of', 'FSM', 583, 'n'), +('MD', 'MOLDOVA, REPUBLIC OF', 'Moldova, Republic of', 'MDA', 498, 'n'), +('MC', 'MONACO', 'Monaco', 'MCO', 492, 'n'), +('MN', 'MONGOLIA', 'Mongolia', 'MNG', 496, 'n'), +('MS', 'MONTSERRAT', 'Montserrat', 'MSR', 500, 'n'), +('MA', 'MOROCCO', 'Morocco', 'MAR', 504, 'n'), +('MZ', 'MOZAMBIQUE', 'Mozambique', 'MOZ', 508, 'n'), +('MM', 'MYANMAR', 'Myanmar', 'MMR', 104, 'n'), +('NA', 'NAMIBIA', 'Namibia', 'NAM', 516, 'n'), +('NR', 'NAURU', 'Nauru', 'NRU', 520, 'n'), +('NP', 'NEPAL', 'Nepal', 'NPL', 524, 'n'), +('NL', 'NETHERLANDS', 'Netherlands', 'NLD', 528, 'y'), +('AN', 'NETHERLANDS ANTILLES', 'Netherlands Antilles', 'ANT', 530, 'n'), +('NC', 'NEW CALEDONIA', 'New Caledonia', 'NCL', 540, 'n'), +('NZ', 'NEW ZEALAND', 'New Zealand', 'NZL', 554, 'n'), +('NI', 'NICARAGUA', 'Nicaragua', 'NIC', 558, 'n'), +('NE', 'NIGER', 'Niger', 'NER', 562, 'n'), +('NG', 'NIGERIA', 'Nigeria', 'NGA', 566, 'n'), +('NU', 'NIUE', 'Niue', 'NIU', 570, 'n'), +('NF', 'NORFOLK ISLAND', 'Norfolk Island', 'NFK', 574, 'n'), +('MP', 'NORTHERN MARIANA ISLANDS', 'Northern Mariana Islands', 'MNP', 580, 'n'), +('NO', 'NORWAY', 'Norway', 'NOR', 578, 'n'), +('OM', 'OMAN', 'Oman', 'OMN', 512, 'n'), +('PK', 'PAKISTAN', 'Pakistan', 'PAK', 586, 'n'), +('PW', 'PALAU', 'Palau', 'PLW', 585, 'n'), +('PS', 'PALESTINIAN TERRITORY, OCCUPIED', 'Palestinian Territory, Occupied', NULL, NULL, 'n'), +('PA', 'PANAMA', 'Panama', 'PAN', 591, 'n'), +('PG', 'PAPUA NEW GUINEA', 'Papua New Guinea', 'PNG', 598, 'n'), +('PY', 'PARAGUAY', 'Paraguay', 'PRY', 600, 'n'), +('PE', 'PERU', 'Peru', 'PER', 604, 'n'), +('PH', 'PHILIPPINES', 'Philippines', 'PHL', 608, 'n'), +('PN', 'PITCAIRN', 'Pitcairn', 'PCN', 612, 'n'), +('PL', 'POLAND', 'Poland', 'POL', 616, 'y'), +('PT', 'PORTUGAL', 'Portugal', 'PRT', 620, 'y'), +('PR', 'PUERTO RICO', 'Puerto Rico', 'PRI', 630, 'n'), +('QA', 'QATAR', 'Qatar', 'QAT', 634, 'n'), +('RE', 'REUNION', 'Reunion', 'REU', 638, 'n'), +('RO', 'ROMANIA', 'Romania', 'ROM', 642, 'y'), +('RU', 'RUSSIAN FEDERATION', 'Russian Federation', 'RUS', 643, 'n'), +('RW', 'RWANDA', 'Rwanda', 'RWA', 646, 'n'), +('SH', 'SAINT HELENA', 'Saint Helena', 'SHN', 654, 'n'), +('KN', 'SAINT KITTS AND NEVIS', 'Saint Kitts and Nevis', 'KNA', 659, 'n'), +('LC', 'SAINT LUCIA', 'Saint Lucia', 'LCA', 662, 'n'), +('PM', 'SAINT PIERRE AND MIQUELON', 'Saint Pierre and Miquelon', 'SPM', 666, 'n'), +('VC', 'SAINT VINCENT AND THE GRENADINES', 'Saint Vincent and the Grenadines', 'VCT', 670, 'n'), +('WS', 'SAMOA', 'Samoa', 'WSM', 882, 'n'), +('SM', 'SAN MARINO', 'San Marino', 'SMR', 674, 'n'), +('ST', 'SAO TOME AND PRINCIPE', 'Sao Tome and Principe', 'STP', 678, 'n'), +('SA', 'SAUDI ARABIA', 'Saudi Arabia', 'SAU', 682, 'n'), +('SN', 'SENEGAL', 'Senegal', 'SEN', 686, 'n'), +('RS', 'SERBIA', 'Serbia', 'SRB', 381, 'n'), +('SC', 'SEYCHELLES', 'Seychelles', 'SYC', 690, 'n'), +('SL', 'SIERRA LEONE', 'Sierra Leone', 'SLE', 694, 'n'), +('SG', 'SINGAPORE', 'Singapore', 'SGP', 702, 'n'), +('SK', 'SLOVAKIA', 'Slovakia', 'SVK', 703, 'y'), +('SI', 'SLOVENIA', 'Slovenia', 'SVN', 705, 'y'), +('SB', 'SOLOMON ISLANDS', 'Solomon Islands', 'SLB', 90, 'n'), +('SO', 'SOMALIA', 'Somalia', 'SOM', 706, 'n'), +('ZA', 'SOUTH AFRICA', 'South Africa', 'ZAF', 710, 'n'), +('GS', 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS', 'South Georgia and the South Sandwich Islands', NULL, NULL, 'n'), +('ES', 'SPAIN', 'Spain', 'ESP', 724, 'y'), +('LK', 'SRI LANKA', 'Sri Lanka', 'LKA', 144, 'n'), +('SD', 'SUDAN', 'Sudan', 'SDN', 736, 'n'), +('SR', 'SURINAME', 'Suriname', 'SUR', 740, 'n'), +('SJ', 'SVALBARD AND JAN MAYEN', 'Svalbard and Jan Mayen', 'SJM', 744, 'n'), +('SZ', 'SWAZILAND', 'Swaziland', 'SWZ', 748, 'n'), +('SE', 'SWEDEN', 'Sweden', 'SWE', 752, 'y'), +('CH', 'SWITZERLAND', 'Switzerland', 'CHE', 756, 'n'), +('SY', 'SYRIAN ARAB REPUBLIC', 'Syrian Arab Republic', 'SYR', 760, 'n'), +('TW', 'TAIWAN, PROVINCE OF CHINA', 'Taiwan, Province of China', 'TWN', 158, 'n'), +('TJ', 'TAJIKISTAN', 'Tajikistan', 'TJK', 762, 'n'), +('TZ', 'TANZANIA, UNITED REPUBLIC OF', 'Tanzania, United Republic of', 'TZA', 834, 'n'), +('TH', 'THAILAND', 'Thailand', 'THA', 764, 'n'), +('TL', 'TIMOR-LESTE', 'Timor-Leste', NULL, NULL, 'n'), +('TG', 'TOGO', 'Togo', 'TGO', 768, 'n'), +('TK', 'TOKELAU', 'Tokelau', 'TKL', 772, 'n'), +('TO', 'TONGA', 'Tonga', 'TON', 776, 'n'), +('TT', 'TRINIDAD AND TOBAGO', 'Trinidad and Tobago', 'TTO', 780, 'n'), +('TN', 'TUNISIA', 'Tunisia', 'TUN', 788, 'n'), +('TR', 'TURKEY', 'Turkey', 'TUR', 792, 'n'), +('TM', 'TURKMENISTAN', 'Turkmenistan', 'TKM', 795, 'n'), +('TC', 'TURKS AND CAICOS ISLANDS', 'Turks and Caicos Islands', 'TCA', 796, 'n'), +('TV', 'TUVALU', 'Tuvalu', 'TUV', 798, 'n'), +('UG', 'UGANDA', 'Uganda', 'UGA', 800, 'n'), +('UA', 'UKRAINE', 'Ukraine', 'UKR', 804, 'n'), +('AE', 'UNITED ARAB EMIRATES', 'United Arab Emirates', 'ARE', 784, 'n'), +('GB', 'UNITED KINGDOM', 'United Kingdom', 'GBR', 826, 'y'), +('US', 'UNITED STATES', 'United States', 'USA', 840, 'n'), +('UM', 'UNITED STATES MINOR OUTLYING ISLANDS', 'United States Minor Outlying Islands', NULL, NULL, 'n'), +('UY', 'URUGUAY', 'Uruguay', 'URY', 858, 'n'), +('UZ', 'UZBEKISTAN', 'Uzbekistan', 'UZB', 860, 'n'), +('VU', 'VANUATU', 'Vanuatu', 'VUT', 548, 'n'), +('VE', 'VENEZUELA', 'Venezuela', 'VEN', 862, 'n'), +('VN', 'VIET NAM', 'Viet Nam', 'VNM', 704, 'n'), +('VG', 'VIRGIN ISLANDS, BRITISH', 'Virgin Islands, British', 'VGB', 92, 'n'), +('VI', 'VIRGIN ISLANDS, U.S.', 'Virgin Islands, U.s.', 'VIR', 850, 'n'), +('WF', 'WALLIS AND FUTUNA', 'Wallis and Futuna', 'WLF', 876, 'n'), +('EH', 'WESTERN SAHARA', 'Western Sahara', 'ESH', 732, 'n'), +('YE', 'YEMEN', 'Yemen', 'YEM', 887, 'n'), +('ZM', 'ZAMBIA', 'Zambia', 'ZMB', 894, 'n'), +('ZW', 'ZIMBABWE', 'Zimbabwe', 'ZWE', 716, 'n'), +('ME', 'MONTENEGRO', 'Montenegro', 'MNE', 382, 'n'); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `dns_template` +-- + +INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL,DKIM,DNSSEC', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=7200\nretry=540\nexpire=604800\nminimum=3600\nttl=3600\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|3600\nA|www|{IP}|0|3600\nA|mail|{IP}|0|3600\nNS|{DOMAIN}.|{NS1}.|0|3600\nNS|{DOMAIN}.|{NS2}.|0|3600\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600\nTXT|{DOMAIN}.|v=spf1 mx a ~all|0|3600', 'y'); + + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `help_faq` +-- + +INSERT INTO `help_faq` VALUES (1,1,0,'I would like to know ...','Yes, of course.',1,1,'riud','riud','r'); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `help_faq_sections` +-- + +INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `software_repo` +-- + +INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n'); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `spamfilter_policy` +-- + +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM*** ', NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `sys_group` +-- + +INSERT INTO `sys_group` (`groupid`, `name`, `description`, `client_id`) VALUES (1, 'admin', 'Administrators group', 0); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `sys_ini` +-- + +INSERT INTO `sys_ini` (`sysini_id`, `config`, `default_logo`, `custom_logo`) VALUES (1, '', 'data:image/png;base64,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', ''); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `sys_user` +-- + +INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default', 'global', 'themes/default/images/header_logo.png'); +INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default-v2', 'global', 'themes/default-v2/images/header_logo.png'); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `sys_user` +-- + +INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `username`, `passwort`, `modules`, `startmodule`, `app_theme`, `typ`, `active`, `language`, `groups`, `default_group`, `client_id`) VALUES (1, 1, 0, 'riud', 'riud', '', 'admin', '21232f297a57a5a743894a0e4a801fc3', 'dashboard,admin,client,mail,monitor,sites,dns,vm,tools,help', 'dashboard', 'default', 'admin', 1, 'en', '1,2', 1, 0); + +-- -------------------------------------------------------- + +-- +-- Dumping data for table `sys_config` +-- + +INSERT INTO sys_config VALUES ('db','db_version','3.1dev'); +INSERT INTO sys_config VALUES ('interface','session_timeout','0'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/sql/ispconfig3.sql.rej b/install/sql/ispconfig3.sql.rej new file mode 100644 index 0000000000..6c8d2e4a9c --- /dev/null +++ b/install/sql/ispconfig3.sql.rej @@ -0,0 +1,23 @@ +--- install/sql/ispconfig3.sql ++++ install/sql/ispconfig3.sql +@@ -2522,13 +2527,13 @@ INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `s + -- Dumping data for table `spamfilter_policy` + -- + +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +-INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 2.00, 4.00, 'rewrite_subject', 8.00); ++INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 7.00, 10.00, 'rewrite_subject', 20.00); + + -- -------------------------------------------------------- + diff --git a/install/tpl/rspamd_antivirus.conf.master b/install/tpl/rspamd_antivirus.conf.master new file mode 100644 index 0000000000..f88d81ac7c --- /dev/null +++ b/install/tpl/rspamd_antivirus.conf.master @@ -0,0 +1,30 @@ +clamav { + # If set force this action if any virus is found (default unset: no action is forced) + #action = "reject"; + # if `true` only messages with non-image attachments will be checked (default true) + scan_mime_parts = true; + # If `max_size` is set, messages > n bytes in size are not scanned + #max_size = 20000000; + # symbol to add (add it to metric if you want non-zero weight) + symbol = "CLAM_VIRUS"; + # type of scanner: "clamav", "fprot", "sophos" or "savapi" + type = "clamav"; + # For "savapi" you must also specify the following variable + #product_id = 12345; + # You can enable logging for clean messages + #log_clean = true; + # servers to query (if port is unspecified, scanner-specific default is used) + # can be specified multiple times to pool servers + # can be set to a path to a unix socket + # Enable this in local.d/antivirus.conf + #servers = "127.0.0.1:3310"; + servers = "/var/run/clamav/clamd.ctl"; + # if `patterns` is specified virus name will be matched against provided regexes and the related + # symbol will be yielded if a match is found. If no match is found, default symbol is yielded. + patterns { + # symbol_name = "pattern"; + JUST_EICAR = "^Eicar-Test-Signature$"; + } + # `whitelist` points to a map of IP addresses. Mail from these addresses is not scanned. + whitelist = "/etc/rspamd/antivirus.wl"; +} \ No newline at end of file diff --git a/install/tpl/rspamd_classifier-bayes.conf.master b/install/tpl/rspamd_classifier-bayes.conf.master new file mode 100644 index 0000000000..1688d57e21 --- /dev/null +++ b/install/tpl/rspamd_classifier-bayes.conf.master @@ -0,0 +1,3 @@ +autolearn = [-0.01, 5.00]; +per_user = true; +per_language = true; \ No newline at end of file diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master new file mode 100644 index 0000000000..0e55a7ead2 --- /dev/null +++ b/install/tpl/rspamd_dkim_signing.conf.master @@ -0,0 +1,2 @@ +path = "<tmpl_var name='dkim_path'>/$domain.private"; +selector = "default"; \ No newline at end of file diff --git a/install/tpl/rspamd_greylist.conf.master b/install/tpl/rspamd_greylist.conf.master new file mode 100644 index 0000000000..74ea715a22 --- /dev/null +++ b/install/tpl/rspamd_greylist.conf.master @@ -0,0 +1 @@ +servers = "127.0.0.1:6379"; \ No newline at end of file diff --git a/install/tpl/rspamd_groups.conf.master b/install/tpl/rspamd_groups.conf.master new file mode 100644 index 0000000000..62a986533a --- /dev/null +++ b/install/tpl/rspamd_groups.conf.master @@ -0,0 +1,4 @@ +group "antivirus" { + .include(try=true; priority=1; duplicate=merge) "$LOCAL_CONFDIR/local.d/antivirus_group.conf" + .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/antivirus_group.conf" +} diff --git a/install/tpl/rspamd_milter_headers.conf.master b/install/tpl/rspamd_milter_headers.conf.master new file mode 100644 index 0000000000..d399bbf4ec --- /dev/null +++ b/install/tpl/rspamd_milter_headers.conf.master @@ -0,0 +1,2 @@ +use = ["x-spamd-bar", "x-spam-level", "authentication-results"]; +authenticated_headers = ["authentication-results"]; \ No newline at end of file diff --git a/install/tpl/rspamd_mx_check.conf.master b/install/tpl/rspamd_mx_check.conf.master new file mode 100644 index 0000000000..0a628f9c83 --- /dev/null +++ b/install/tpl/rspamd_mx_check.conf.master @@ -0,0 +1,9 @@ +enabled = true; +servers = "localhost"; +key_prefix = "rmx"; +symbol_bad_mx = "MX_INVALID"; +symbol_no_mx = "MX_MISSING"; +symbol_good_mx = "MX_GOOD"; +expire = 86400; +expire_novalid = 7200; +greylist_invalid = false; \ No newline at end of file diff --git a/install/tpl/rspamd_neural.conf.master b/install/tpl/rspamd_neural.conf.master new file mode 100644 index 0000000000..76f8a6d344 --- /dev/null +++ b/install/tpl/rspamd_neural.conf.master @@ -0,0 +1,31 @@ +servers = 127.0.0.1:6379; +enabled = true; + +rules { + "LONG" { + train { + max_trains = 5000; + max_usages = 200; + max_iterations = 25; + learning_rate = 0.01, + spam_score = 10; + ham_score = -2; + } + symbol_spam = "NEURAL_SPAM_LONG"; + symbol_ham = "NEURAL_HAM_LONG"; + ann_expire = 100d; + } + "SHORT" { + train { + max_trains = 100; + max_usages = 2; + max_iterations = 25; + learning_rate = 0.01, + spam_score = 10; + ham_score = -2; + } + symbol_spam = "NEURAL_SPAM_SHORT"; + symbol_ham = "NEURAL_HAM_SHORT"; + ann_expire = 1d; + } +} \ No newline at end of file diff --git a/install/tpl/rspamd_neural_group.conf.master b/install/tpl/rspamd_neural_group.conf.master new file mode 100644 index 0000000000..5aabdefaff --- /dev/null +++ b/install/tpl/rspamd_neural_group.conf.master @@ -0,0 +1,18 @@ +symbols = { + "NEURAL_SPAM_LONG" { + weight = 1.0; # sample weight + description = "Neural network spam (long)"; + } + "NEURAL_HAM_LONG" { + weight = -2.0; # sample weight + description = "Neural network ham (long)"; + } + "NEURAL_SPAM_SHORT" { + weight = 0.5; # sample weight + description = "Neural network spam (short)"; + } + "NEURAL_HAM_SHORT" { + weight = -1.0; # sample weight + description = "Neural network ham (short)"; + } +} diff --git a/install/tpl/rspamd_options.inc.master b/install/tpl/rspamd_options.inc.master new file mode 100644 index 0000000000..69e40365b7 --- /dev/null +++ b/install/tpl/rspamd_options.inc.master @@ -0,0 +1,5 @@ +local_addrs = "127.0.0.0/8, ::1"; + +dns { + nameserver = ["127.0.0.1:53:10"]; +} diff --git a/install/tpl/rspamd_override_rbl.conf.master b/install/tpl/rspamd_override_rbl.conf.master new file mode 100644 index 0000000000..310e722832 --- /dev/null +++ b/install/tpl/rspamd_override_rbl.conf.master @@ -0,0 +1,53 @@ +# RBL +symbols = { + "RBL_SENDERSCORE" { + weight = 4.0; + description = "From address is listed in senderscore.com BL"; + } + "RBL_SPAMHAUS_SBL" { + weight = 2.0; + description = "From address is listed in zen sbl"; + } + "RBL_SPAMHAUS_CSS" { + weight = 2.0; + description = "From address is listed in zen css"; + } + "RBL_SPAMHAUS_XBL" { + weight = 4.0; + description = "From address is listed in zen xbl"; + } + "RBL_SPAMHAUS_XBL_ANY" { + weight = 4.0; + description = "From or receive address is listed in zen xbl (any list)"; + } + "RBL_SPAMHAUS_PBL" { + weight = 2.0; + description = "From address is listed in zen pbl (ISP list)"; + } + "RBL_SPAMHAUS_DROP" { + weight = 7.0; + description = "From address is listed in zen drop bl"; + } + "RECEIVED_SPAMHAUS_XBL" { + weight = 3.0; + description = "Received address is listed in zen xbl"; + one_shot = true; + } + "RBL_MAILSPIKE_WORST" { + weight = 2.0; + description = "From address is listed in RBL - worst possible reputation"; + } + "RBL_MAILSPIKE_VERYBAD" { + weight = 1.5; + description = "From address is listed in RBL - very bad reputation"; + } + "RBL_MAILSPIKE_BAD" { + weight = 1.0; + description = "From address is listed in RBL - bad reputation"; + } + "RBL_SEM" { + weight = 1.0; + description = "Address is listed in Spameatingmonkey RBL"; + } + # /RBL +} diff --git a/install/tpl/rspamd_override_surbl.conf.master b/install/tpl/rspamd_override_surbl.conf.master new file mode 100644 index 0000000000..30676a46fd --- /dev/null +++ b/install/tpl/rspamd_override_surbl.conf.master @@ -0,0 +1,108 @@ +symbols = { + # SURBL + "PH_SURBL_MULTI" { + weight = 5.5; + description = "SURBL: Phishing sites"; + } + "MW_SURBL_MULTI" { + weight = 5.5; + description = "SURBL: Malware sites"; + } + "ABUSE_SURBL" { + weight = 5.5; + description = "SURBL: ABUSE"; + } + "CRACKED_SURBL" { + weight = 4.0; + description = "SURBL: cracked site"; + } + "RAMBLER_URIBL" { + weight = 4.5; + description = "Rambler uribl"; + one_shot = true; + } + "RAMBLER_EMAILBL" { + weight = 9.5; + description = "Rambler emailbl"; + one_shot = true; + } + "MSBL_EBL" { + weight = 7.5; + description = "MSBL emailbl"; + one_shot = true; + } + "SEM_URIBL" { + weight = 3.5; + description = "Spameatingmonkey uribl"; + } + "SEM_URIBL_FRESH15" { + weight = 3.0; + description = "Spameatingmonkey uribl. Domains registered in the last 15 days (.AERO,.BIZ,.COM,.INFO,.NAME,.NET,.PRO,.SK,.TEL,.US)"; + } + "DBL" { + weight = 0.0; + description = "DBL unknown result"; + } + "DBL_SPAM" { + weight = 6.5; + description = "DBL uribl spam"; + } + "DBL_PHISH" { + weight = 6.5; + description = "DBL uribl phishing"; + } + "DBL_MALWARE" { + weight = 6.5; + description = "DBL uribl malware"; + } + "DBL_BOTNET" { + weight = 5.5; + description = "DBL uribl botnet C&C domain"; + } + "DBL_ABUSE" { + weight = 6.5; + description = "DBL uribl abused legit spam"; + } + "DBL_ABUSE_REDIR" { + weight = 1.5; + description = "DBL uribl abused spammed redirector domain"; + } + "DBL_ABUSE_PHISH" { + weight = 7.5; + description = "DBL uribl abused legit phish"; + } + "DBL_ABUSE_MALWARE" { + weight = 7.5; + description = "DBL uribl abused legit malware"; + } + "DBL_ABUSE_BOTNET" { + weight = 5.5; + description = "DBL uribl abused legit botnet C&C"; + } + "URIBL_BLACK" { + weight = 7.5; + description = "uribl.com black url"; + } + "URIBL_RED" { + weight = 3.5; + description = "uribl.com red url"; + } + "URIBL_GREY" { + weight = 1.5; + description = "uribl.com grey url"; + one_shot = true; + } + "URIBL_SBL" { + weight = 6.5; + description = "Spamhaus SBL URIBL"; + } + "URIBL_SBL_CSS" { + weight = 6.5; + description = "Spamhaus SBL CSS URIBL"; + } + "RBL_SARBL_BAD" { + weight = 2.5; + description = "A domain listed in the mail is blacklisted in SARBL"; + } + # /SURBL +} diff --git a/install/tpl/rspamd_redis.conf.master b/install/tpl/rspamd_redis.conf.master new file mode 100644 index 0000000000..b908af9f5e --- /dev/null +++ b/install/tpl/rspamd_redis.conf.master @@ -0,0 +1 @@ +servers = "127.0.0.1"; \ No newline at end of file diff --git a/install/tpl/rspamd_symbols_antivirus.conf.master b/install/tpl/rspamd_symbols_antivirus.conf.master new file mode 100644 index 0000000000..8c2d93d89e --- /dev/null +++ b/install/tpl/rspamd_symbols_antivirus.conf.master @@ -0,0 +1,15 @@ +subject = "***SPAM*** %s"; +symbols = { + "CLAM_VIRUS" { + weight = 50; + description = "Clamav has found a virus."; + } + "JUST_EICAR" { + weight = 50; + description = "Clamav has found a virus."; + } + "R_DUMMY" { + weight = 0.0; + description = "Dummy symbol"; + } +} \ No newline at end of file diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master new file mode 100644 index 0000000000..73d437d6cb --- /dev/null +++ b/install/tpl/rspamd_users.conf.master @@ -0,0 +1,43 @@ +settings { + authenticated { + priority = 10; + authenticated = yes; + #apply "default" { groups_disabled = ["rbl", "spf"]; } + apply "default" { + #symbols_enabled = []; + symbols_disabled = []; + #groups_enabled = []; + groups_disabled = ["rbl"]; + } + } + whitelist { + priority = 10; + rcpt = "postmaster"; + rcpt = "hostmaster"; + rcpt = "abuse"; + want_spam = yes; + } + whitelist-ip { + priority = 10; +<tmpl_loop name="whitelist_ips"> + ip = "<tmpl_var name='ip'>"; +</tmpl_loop> + + want_spam = yes; + } +# whitelist-timmehosting { +# priority = 20; +# from = "@xxx"; +# from = "@xxx"; +# want_spam = yes; +# } + whitelist-ca { + priority = 20; + from = "@comodo.com"; + from = "@geotrust.com"; + from = "@geotrusteurope.com"; + want_spam = yes; + } + .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" +} diff --git a/install/tpl/rspamd_users.inc.conf.master b/install/tpl/rspamd_users.inc.conf.master new file mode 120000 index 0000000000..30bb52fd8e --- /dev/null +++ b/install/tpl/rspamd_users.inc.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_users.inc.conf.master \ No newline at end of file diff --git a/install/tpl/rspamd_wblist.inc.conf.master b/install/tpl/rspamd_wblist.inc.conf.master new file mode 100644 index 0000000000..fc06127eae --- /dev/null +++ b/install/tpl/rspamd_wblist.inc.conf.master @@ -0,0 +1,18 @@ +spamfilter_wblist-<tmpl_var name='record_id'> { + priority = <tmpl_var name='priority'>; + from = "<tmpl_var name='from'>"; + rcpt = "<tmpl_var name='recipient'>"; +<tmpl_if name='wblist' op='==' value='W'> + want_spam = yes; +</tmpl_else> + apply "default" { + R_DUMMY = 999.0; + actions { + reject = 0.2; + add_header = 0.1; + greylist = 0.1; + rewrite_subject = 0.1; + } + } +</tmpl_if> +} \ No newline at end of file diff --git a/install/tpl/rspamd_worker-controller.inc.master b/install/tpl/rspamd_worker-controller.inc.master new file mode 120000 index 0000000000..dae1932369 --- /dev/null +++ b/install/tpl/rspamd_worker-controller.inc.master @@ -0,0 +1 @@ +../../server/conf/rspamd_worker-controller.inc.master \ No newline at end of file diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 6441609cab..36f157d8e6 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -38,6 +38,8 @@ homedir_path=/var/vmail maildir_format=maildir dkim_path=/var/lib/amavis/dkim dkim_strength=1024 +content_filter=amavis +rspamd_password= pop3_imap_daemon=courier mail_filter_syntax=maildrop mailuser_uid=5000 diff --git a/install/update.php b/install/update.php index 104aab57ff..42ddd625f5 100644 --- a/install/update.php +++ b/install/update.php @@ -397,6 +397,12 @@ if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'sel $inst->configure_amavis(); } + //** Configure Rspamd + if($conf['rspamd']['installed'] == true && $inst->reconfigure_app('Rspamd', $reconfigure_services_answer)) { + swriteln('Configuring Rspamd'); + $inst->configure_rspamd(); + } + //** Configure Getmail if ($inst->reconfigure_app('Getmail', $reconfigure_services_answer)) { swriteln('Configuring Getmail'); @@ -532,6 +538,7 @@ if($reconfigure_services_answer == 'yes') { if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); + if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '') system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 6f2e2d00ba..bc217c30b0 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -158,4 +158,5 @@ $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:'; $wb['security_check2_txt'] = 'fehlgeschlagen.'; $wb['select_directive_snippet_txt'] = 'Direktiven Schnipsel'; $wb['select_master_directive_snippet_txt'] = 'Master Direktiven Schnipsel'; -?> +$wb['add_header_txt'] = 'Header (fügt "X-Spam: Yes" hinzu)'; +$wb['rewrite_subject_txt'] = 'Betreff (fügt "***SPAM***" am Anfang hinzu)'; diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 1a6c8070cb..1c19d0928b 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -466,6 +466,29 @@ $form["tabs"]['mail'] = array( 'width' => '40', 'maxlength' => '255' ), + 'content_filter' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'rspamd', + 'value' => array('amavisd' => 'Amavisd', 'rspamd' => 'Rspamd') + ), + 'rspamd_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'TRIM'), + ), + ), + 'rspamd_available' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'dkim_path' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -1953,4 +1976,10 @@ $form["tabs"]['rescue'] = array( //################################# ) ); -?> + +/*$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); +if(!isset($mail_config['rspamd_available']) || $mail_config['rspamd_available'] != 'y') { + $form['tabs']['mail']['fields']['content_filter']['default'] = 'amavisd'; + unset($form['tabs']['mail']['fields']['content_filter']['value']['rspamd']); + unset($form['tabs']['mail']['fields']['rspamd_password']); +}*/ \ No newline at end of file diff --git a/interface/web/admin/form/server_config.tform.php.orig b/interface/web/admin/form/server_config.tform.php.orig new file mode 100644 index 0000000000..1a6c8070cb --- /dev/null +++ b/interface/web/admin/form/server_config.tform.php.orig @@ -0,0 +1,1956 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + + */ + +$form["title"] = "Server Config"; +$form["description"] = ""; +$form["name"] = "server_config"; +$form["action"] = "server_config_edit.php"; +$form["db_table"] = "server"; +$form["db_table_idx"] = "server_id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "server"; +$form["list_default"] = "server_config_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$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 + +$form["tabs"]['server'] = array( + 'title' => "Server", + 'width' => 70, + 'template' => "templates/server_config_server_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'auto_network_configuration' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'ip_address' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '192.168.0.105', + 'validators' => array(0 => array('type' => 'ISIPV4', + 'errmsg' => 'ip_address_error_wrong'), + ), + 'value' => '', + 'width' => '15', + 'maxlength' => '255' + ), + 'netmask' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '255.255.255.0', + 'validators' => array(0 => array('type' => 'ISIPV4', + 'errmsg' => 'netmask_error_wrong'), + ), + 'value' => '', + 'width' => '15', + 'maxlength' => '255' + ), + 'v6_prefix' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'ISV6PREFIX', + 'errmsg' => 'v6_prefix_wrong'), + 1 => array('type' => 'V6PREFIXEND', + 'errmsg' => 'v6_prefix_end'), + 2 => array('type' => 'V6PREFIXLENGTH', + 'errmsg' => 'v6_prefix_length') + ), + 'default' => '' + ), + 'gateway' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '192.168.0.1', + 'validators' => array(0 => array('type' => 'ISIPV4', + 'errmsg' => 'gateway_error_wrong'), + ), + 'value' => '', + 'width' => '15', + 'maxlength' => '255' + ), + 'firewall' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'bastille', + 'value' => array('bastille' => 'bastille', 'ufw' => 'ufw'), + 'width' => '40', + 'maxlength' => '255' + ), + 'hostname' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'server1.domain.tld', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER') + ), + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'hostname_error_empty'), + 1 => array ('type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 'errmsg'=> 'hostname_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'nameservers' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '192.168.0.1,192.168.0.2', + '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' + ), + 'loglevel' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '2', + 'value' => array('0' => 'Debug', '1' => 'Warnings', '2' => 'Errors'), + 'width' => '40', + 'maxlength' => '255' + ), + 'admin_notify_events' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'value' => array('3' => 'no_notifications_txt', '0' => 'Debug', '1' => 'Warnings', '2' => 'Errors'), + 'width' => '40', + 'maxlength' => '255' + ), + 'backup_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '/var/backup', + 'validators' => array( 0 => array ( 'type' => 'REGEX', + 'regex' => "/(|^\\/{1,2}(?:[\\w-]+[.]?\\/?){5,128})$/", + 'errmsg'=> 'backup_dir_error_regex'), + ), + 'value' => '', + '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', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'backup_mode' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'userzip', + 'value' => array('userzip' => 'backup_mode_userzip', 'rootgz' => 'backup_mode_rootgz'), + 'width' => '40', + 'maxlength' => '255' + ), + 'backup_time' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '0:00', + 'value' => array( '0:00' => '0:00h', + '0:15' => '0:15h', + '0:30' => '0:30h', + '0:45' => '0:45h', + '1:00' => '1:00h', + '1:15' => '1:15h', + '1:30' => '1:30h', + '1:45' => '1:45h', + '2:00' => '2:00h', + '2:15' => '2:15h', + '2:30' => '2:30h', + '2:45' => '2:45h', + '3:00' => '3:00h', + '3:15' => '3:15h', + '3:30' => '3:30h', + '3:45' => '3:45h', + '4:00' => '4:00h', + '4:15' => '4:15h', + '4:30' => '4:30h', + '4:45' => '4:45h', + '5:00' => '5:00h', + '5:15' => '5:15h', + '5:30' => '5:30h', + '5:45' => '5:45h', + '6:00' => '6:00h', + '6:15' => '6:15h', + '6:30' => '6:30h', + '6:45' => '6:45h', + '7:00' => '7:00h', + '7:15' => '7:15h', + '7:30' => '7:30h', + '7:45' => '7:45h', + '8:00' => '8:00h', + '8:15' => '8:15h', + '8:30' => '8:30h', + '8:45' => '8:45h', + '9:00' => '9:00h', + '9:15' => '9:15h', + '9:30' => '9:30h', + '9:45' => '9:45h', + '10:00' => '10:00h', + '10:15' => '10:15h', + '10:30' => '10:30h', + '10:45' => '10:45h', + '11:00' => '11:00h', + '11:15' => '11:15h', + '11:30' => '11:30h', + '11:45' => '11:45h', + '12:00' => '12:00h', + '12:15' => '12:15h', + '12:30' => '12:30h', + '12:45' => '12:45h', + '13:00' => '13:00h', + '13:15' => '13:15h', + '13:30' => '13:30h', + '13:45' => '13:45h', + '14:00' => '14:00h', + '14:15' => '14:15h', + '14:30' => '14:30h', + '14:45' => '14:45h', + '15:00' => '15:00h', + '15:15' => '15:15h', + '15:30' => '15:30h', + '15:45' => '15:45h', + '16:00' => '16:00h', + '16:15' => '16:15h', + '16:30' => '16:30h', + '16:45' => '16:45h', + '17:00' => '17:00h', + '17:15' => '17:15h', + '17:30' => '17:30h', + '17:45' => '17:45h', + '18:00' => '18:00h', + '18:15' => '18:15h', + '18:30' => '18:30h', + '18:45' => '18:45h', + '19:00' => '19:00h', + '19:15' => '19:15h', + '19:30' => '19:30h', + '19:45' => '19:45h', + '20:00' => '20:00h', + '20:15' => '20:15h', + '20:30' => '20:30h', + '20:45' => '20:45h', + '21:00' => '21:00h', + '21:15' => '21:15h', + '21:30' => '21:30h', + '21:45' => '21:45h', + '22:00' => '22:00h', + '22:15' => '22:15h', + '22:30' => '22:30h', + '22:45' => '22:45h', + '23:00' => '23:00h', + '23:15' => '23:15h', + '23:30' => '23:30h', + '23:45' => '23:45h', + ), + 'width' => '40', + 'maxlength' => '255' + ), + 'backup_delete' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'monit_url' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', + 'errmsg'=> 'monit_url_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'monit_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'munin_url' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', + 'errmsg'=> 'munin_url_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'munin_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'monitor_system_updates' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + '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', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['mail'] = array( + 'title' => "Mail", + 'width' => 60, + 'template' => "templates/server_config_mail_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'module' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('postfix_mysql' => 'postfix_mysql') + ), + 'maildir_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '/home/vmail/[domain]/[localpart]/', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'maildir_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', + 'errmsg'=> 'maildir_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'maildir_format' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '20', + 'value' => array('maildir' => 'Maildir', 'mdbox' => 'mdbox') + ), + 'homedir_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '/home/vmail/', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'homedir_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'homedir_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'dkim_strength' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '2048', + 'value' => array('1024' => 'weak (1024)', '2048' => 'normal (2048)', '4096' => 'strong (4096)') + ), + 'relayhost_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + + 'pop3_imap_daemon' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '20', + 'value' => array('courier' => 'Courier', 'dovecot' => 'Dovecot') + ), + 'mail_filter_syntax' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '20', + 'value' => array('maildrop' => 'Maildrop', 'sieve' => 'Sieve') + ), + 'mailuser_uid' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '5000', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_uid_error_empty'), + 1 => array('type' => 'RANGE', + 'range' => '1999:', + 'errmsg' => 'mailuser_uid_error_range'), + ), + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'mailuser_gid' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '5000', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_gid_error_empty'), + 1 => array('type' => 'RANGE', + 'range' => '1999:', + 'errmsg' => 'mailuser_gid_error_range'), + ), + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'mailuser_name' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'vmail', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_name_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'mailuser_name_error_regex'), + ), + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'mailuser_group' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'vmail', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'mailuser_group_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'mailuser_group_name_error_regex'), + ), + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'mailbox_virtual_uidgid_maps' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'validators' => array (0 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_server_mail_config', + 'function' => 'mailbox_virtual_uidgid_maps'), + ), + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'relayhost' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'relayhost_password' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'reject_sender_login_mismatch' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailbox_size_limit' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '15' + ), + 'message_size_limit' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '15' + ), + 'mailbox_quota_stats' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'realtime_blackhole_list' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])(,\s*(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))*)?$/', + 'errmsg'=> 'rbl_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'overquota_notify_admin' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_notify_client' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_notify_freq' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '7', + 'value' => '', + 'width' => '20', + 'maxlength' => '255' + ), + 'overquota_notify_onok' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['getmail'] = array( + 'title' => "Getmail", + 'width' => 80, + 'template' => "templates/server_config_getmail_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'getmail_config_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'getmail_config_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'getmail_config_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['web'] = array( + 'title' => "Web", + 'width' => 60, + 'template' => "templates/server_config_web_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'server_type' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'apache', + 'value' => array('apache' => 'Apache', 'nginx' => 'Nginx') + ), + 'website_basedir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'website_basedir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'website_basedir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'website_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array( 'type' => 'NOTEMPTY', + 'errmsg' => 'website_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', + 'errmsg'=> 'website_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'website_symlinks' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'website_symlinks_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]\:]{5,128}$/', + 'errmsg'=> 'website_symlinks_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'website_symlinks_rel' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'network_filesystem' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + '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', + 'maxlength' => '255' + ), + 'vhost_rewrite_v6' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), + 'vhost_conf_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vhost_conf_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'vhost_conf_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'vhost_conf_enabled_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vhost_conf_enabled_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'vhost_conf_enabled_dir_error_regex'), + ), + 'value' => '', + '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', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_vhost_conf_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'nginx_vhost_conf_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'nginx_vhost_conf_enabled_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'nginx_vhost_conf_enabled_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'CA_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{0,128}$/', + 'errmsg'=> 'ca_path_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'CA_pass' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'security_level' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '20', + 'value' => array('10' => 'Medium', '20' => 'High') + ), + 'set_folder_permissions_on_update' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'web_folder_protection' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'add_web_users_to_sshusers_group' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'check_apache_config' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'enable_sni' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'enable_ip_wildcard' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + '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', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overtraffic_notify_client' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_notify_admin' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_notify_client' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_db_notify_admin' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_db_notify_client' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'overquota_notify_freq' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '7', + 'value' => '', + 'width' => '20', + 'maxlength' => '255' + ), + 'overquota_notify_onok' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'user' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'apache_user_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => false, + 'errmsg' => 'invalid_apache_user_txt' + ), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'group' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'apache_group_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => false, + 'errmsg' => 'invalid_apache_group_txt' + ), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'connect_userid_to_webid' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'connect_userid_to_webid_start' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '10000', + 'validators' => array(0 => array('type' => 'ISINT', + 'errmsg' => 'connect_userid_to_webid_startid_isint'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'nginx_user' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_user_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysuser', + 'check_names' => false, + 'errmsg' => 'invalid_nginx_user_txt' + ), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'nginx_group' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_group_error_empty'), + 1 => array( + 'type' => 'CUSTOM', + 'class' => 'validate_systemuser', + 'function' => 'check_sysgroup', + 'check_names' => false, + 'errmsg' => 'invalid_nginx_group_txt' + ), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_ini_path_apache' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_ini_path_apache_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_ini_path_apache_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_ini_path_cgi' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_ini_path_cgi_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_ini_path_cgi_error_regex'), + ), + 'value' => '', + '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', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_init_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_]{1,128}$/', + 'errmsg'=> 'php_fpm_init_script_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_ini_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_ini_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_ini_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_pool_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_pool_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_pool_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_start_port' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array(0 => array('type' => 'ISPOSITIVE', + 'errmsg' => 'php_fpm_start_port_error_empty'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_fpm_socket_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_fpm_socket_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', + 'errmsg'=> 'php_fpm_socket_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'php_open_basedir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_open_basedir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\]\[\:]{1,}$/', + 'errmsg'=> 'php_open_basedir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '4000' + ), + 'php_ini_check_minutes' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '1', + 'validators' => array(0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'php_ini_check_minutes_error_empty'), + ), + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'php_handler' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'fast-cgi', + 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), + 'searchable' => 2 + ), + 'php_fpm_incron_reload' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'nginx_cgi_socket' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'nginx_cgi_socket_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'nginx_cgi_socket_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'htaccess_allow_override' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + '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' + ), + 'enable_spdy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array ( + 0 => 'n', + 1 => 'y' + ) + ), + 'apps_vhost_enabled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array (0 => 'n', 1 => 'y') + ), + 'apps_vhost_port' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '8081', + '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' + ), + 'apps_vhost_ip' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '_default_', + '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' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'awstats_data_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_data_dir_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_data_dir_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'awstats_pl' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_pl_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_pl_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'awstats_buildstaticpages_pl' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'awstats_buildstaticpages_pl_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'awstats_buildstaticpages_pl_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'skip_le_check' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array ( + 0 => 'n', + 1 => 'y' + ) + ), + 'php_fpm_reload_mode' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'reload', + 'value' => array('reload' => 'Reload', 'restart' => 'Restart'), + 'width' => '40', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['dns'] = array( + 'title' => "DNS", + 'width' => 60, + 'template' => "templates/server_config_dns_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'bind_user' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_user_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'invalid_bind_user_txt'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'bind_group' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_group_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', + 'errmsg'=> 'invalid_bind_group_txt'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'bind_zonefiles_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'bind_zonefiles_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'bind_zonefiles_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'named_conf_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'named_conf_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'named_conf_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'named_conf_local_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'named_conf_local_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'named_conf_local_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'disable_bind_log' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['fastcgi'] = array( + 'title' => "FastCGI", + 'width' => 80, + 'template' => "templates/server_config_fastcgi_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'fastcgi_starter_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_starter_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_starter_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_starter_script' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_starter_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'fastcgi_starter_script_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_alias' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_alias_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'fastcgi_alias_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_phpini_path' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_phpini_path_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_phpini_path_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_children' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array(0 => array('type' => 'ISPOSITIVE', + 'errmsg' => 'fastcgi_children_error_empty'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_max_requests' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array( 'type' => 'ISINT', + 'errmsg' => 'fastcgi_max_requests_error_empty'), + 1 => array( 'type' => 'RANGE', + 'range' => '0:', + 'errmsg' => 'fastcgi_max_requests_error_empty'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_bin' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'fastcgi_bin_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'fastcgi_bin_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'fastcgi_config_syntax' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '2', + 'value' => array('1' => 'Old (apache 2.0)', '2' => 'New (apache 2.2)'), + 'width' => '40', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + + +$form["tabs"]['xmpp'] = array( + 'title' => "XMPP", + 'width' => 80, + 'template' => "templates/server_config_xmpp_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'xmpp_use_ipv6' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'xmpp_bosh_max_inactivity' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '30', + 'validators' => array(0 => array('type' => 'ISINT', + 'errmsg' => 'ip_address_error_wrong'), + array('type'=>'RANGE', 'range'=>'15:360', 'errmsg' => 'xmpp_bosh_timeout_range_wrong') + ), + 'value' => '', + 'width' => '15' + ), + + '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' + ), + + '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' => "," + ), + + 'xmpp_port_http' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '5290', + 'validators' => array(0 => array('type' => 'ISINT')), + 'value' => '5290', + 'width' => '15' + ), + 'xmpp_port_https' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '5291', + 'validators' => array(0 => array('type' => 'ISINT')), + 'value' => '5291', + 'width' => '15' + ), + 'xmpp_port_pastebin' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '5292', + 'validators' => array(0 => array('type' => 'ISINT')), + 'value' => '5292', + 'width' => '15' + ), + 'xmpp_port_bosh' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '5280', + 'validators' => array(0 => array('type' => 'ISINT')), + 'value' => '5280', + 'width' => '15' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['jailkit'] = array( + 'title' => "Jailkit", + 'width' => 80, + 'template' => "templates/server_config_jailkit_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'jailkit_chroot_home' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_home_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', + 'errmsg'=> 'jailkit_chroot_home_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'jailkit_chroot_app_sections' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_app_sections_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\ ]{1,128}$/', + 'errmsg'=> 'jailkit_chroot_app_sections_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '1000' + ), + 'jailkit_chroot_app_programs' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_app_programs_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', + 'errmsg'=> 'jailkit_chroot_app_programs_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '1000' + ), + 'jailkit_chroot_cron_programs' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'jailkit_chroot_cron_programs_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', + 'errmsg'=> 'jailkit_chroot_cron_programs_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '1000' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +/* +$form["tabs"]['ufw_firewall'] = array ( + 'title' => "UFW Firewall", + 'width' => 80, + 'template' => "templates/server_config_ufw_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'ufw_enable' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'no', + 'value' => array(0 => 'no',1 => 'yes') + ), + 'ufw_manage_builtins' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'no', + 'value' => array(0 => 'no',1 => 'yes') + ), + 'ufw_ipv6' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'no', + 'value' => array(0 => 'no',1 => 'yes') + ), + 'ufw_default_input_policy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'ACCEPT', + 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') + ), + 'ufw_default_output_policy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'ACCEPT', + 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') + ), + 'ufw_default_forward_policy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'ACCEPT', + 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') + ), + 'ufw_default_application_policy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'DROP', + 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') + ), + 'ufw_log_level' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'low', + 'value' => array('low' => 'low', 'medium' => 'medium', 'high' => 'high') + ) + ################################## + # ENDE Datatable fields + ################################## + ) +); +*/ + +$form["tabs"]['vlogger'] = array( + 'title' => "vlogger", + 'width' => 80, + 'template' => "templates/server_config_vlogger_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'config_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'vlogger_config_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'vlogger_config_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + + + +$form["tabs"]['cron'] = array( + 'title' => "Cron", + 'width' => 80, + 'template' => "templates/server_config_cron_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'init_script' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'cron_init_script_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_]{1,30}$/', + 'errmsg'=> 'cron_init_script_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'crontab_dir' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'crontab_dir_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'crontab_dir_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'wget' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array('type' => 'NOTEMPTY', + 'errmsg' => 'cron_wget_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', + 'errmsg'=> 'cron_wget_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['rescue'] = array( + 'title' => "Rescue", + 'width' => 80, + 'template' => "templates/server_config_rescue_edit.htm", + 'fields' => array( + //################################# + // Begin Datatable fields + //################################# + 'try_rescue' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'do_not_try_rescue_httpd' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'do_not_try_rescue_mongodb' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'do_not_try_rescue_mysql' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'do_not_try_rescue_mail' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); +?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 108bf96de8..50b3514564 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -296,4 +296,7 @@ $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; -?> +$wb['content_filter_txt'] = 'Content-Filter'; +$wb['rspamd_url_txt'] = 'Rspamd-URL'; +$wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; +$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; \ No newline at end of file diff --git a/interface/web/admin/lib/lang/de_server_config.lng.orig b/interface/web/admin/lib/lang/de_server_config.lng.orig new file mode 100644 index 0000000000..108bf96de8 --- /dev/null +++ b/interface/web/admin/lib/lang/de_server_config.lng.orig @@ -0,0 +1,299 @@ +<?php +$wb['jailkit_chroot_home_txt'] = 'Jailkit Chroot home'; +$wb['jailkit_chroot_app_sections_txt'] = 'Jailkit Chroot Anwendungsbereiche'; +$wb['jailkit_chroot_app_programs_txt'] = 'Jailkit Chrooted Anwendungen'; +$wb['jailkit_chroot_cron_programs_txt'] = 'Jailkit Cron Chrooted Anwendungen'; +$wb['website_path_txt'] = 'Webseiten Pfad'; +$wb['website_symlinks_txt'] = 'Webseiten Symlinks'; +$wb['website_symlinks_rel_txt'] = 'Erstelle relative Symlinks'; +$wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis'; +$wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir'; +$wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis'; +$wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad'; +$wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script'; +$wb['fastcgi_alias_txt'] = 'FastCGI Alias'; +$wb['fastcgi_phpini_path_txt'] = 'FastCGI php.ini Pfad'; +$wb['fastcgi_children_txt'] = 'FastCGI Children'; +$wb['fastcgi_max_requests_txt'] = 'FastCGI max. Anfragen'; +$wb['fastcgi_bin_txt'] = 'FastCGI Bin'; +$wb['module_txt'] = 'Modul'; +$wb['maildir_path_txt'] = 'Maildir Pfad'; +$wb['maildir_format_txt'] = 'Maildir Format'; +$wb['homedir_path_txt'] = 'Homedir Pfad'; +$wb['dkim_path_txt'] = 'DKIM Pfad'; +$wb['mailuser_uid_txt'] = 'Mailbenutzer UID'; +$wb['mailuser_gid_txt'] = 'Mailbenutzer GID'; +$wb['mailuser_name_txt'] = 'Mailbenutzer Name'; +$wb['mailuser_group_txt'] = 'Mailbenutzer Gruppe'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'nur für einzel-Server Installationen.'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid kann in Multiserver-Umgebung nicht gemappt werden.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid Mapping funktioniert nur in Verbindung mit dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid Mapping kann nur umgeschaltet werden, wenn noch keine Mailuser angelegt sind.'; +$wb['relayhost_txt'] = 'Relayhost'; +$wb['relayhost_user_txt'] = 'Relayhost Benutzer'; +$wb['relayhost_password_txt'] = 'Relayhost Passwort'; +$wb['reject_sender_login_mismatch_txt'] = 'Zurückweisen von Mails, wenn Sender nicht gleich Login'; +$wb['mailbox_size_limit_txt'] = 'E-Mailkonto Beschränkung'; +$wb['message_size_limit_txt'] = 'E-Mailgrößen Beschränkung'; +$wb['ip_address_txt'] = 'IP Adresse'; +$wb['netmask_txt'] = 'Netzmaske'; +$wb['gateway_txt'] = 'Gateway'; +$wb['hostname_txt'] = 'Hostname'; +$wb['nameservers_txt'] = 'Nameserver'; +$wb['auto_network_configuration_txt'] = 'Netzwerkkonfiguration'; +$wb['website_basedir_txt'] = 'Webseiten basedir'; +$wb['website_autoalias_txt'] = 'Webseiten Autoalias'; +$wb['website_autoalias_note_txt'] = 'Platzhalter:'; +$wb['ip_address_error_wrong'] = 'Ungültiges IP Adressen Format.'; +$wb['netmask_error_wrong'] = 'Ungültiges Netzmasken Format.'; +$wb['gateway_error_wrong'] = 'Ungültiges Gateway Format.'; +$wb['hostname_error_empty'] = 'Hostname ist leer.'; +$wb['nameservers_error_empty'] = 'Nameserver ist leer.'; +$wb['config_dir_txt'] = 'Konfigurationsverzeichnis'; +$wb['init_script_txt'] = 'Cron init Script Name'; +$wb['crontab_dir_txt'] = 'Pfad für individuelle Crontabs'; +$wb['wget_txt'] = 'Pfad zum wget Programm'; +$wb['web_user_txt'] = 'Apache Benutzer'; +$wb['web_group_txt'] = 'Apache Gruppe'; +$wb['security_level_txt'] = 'Sicherheitslevel'; +$wb['loglevel_txt'] = 'Loglevel'; +$wb['apps_vhost_port_txt'] = 'Apps vHost Port'; +$wb['apps_vhost_ip_txt'] = 'Apps vHost IP Adresse'; +$wb['apps_vhost_servername_txt'] = 'Apps vHost Domain'; +$wb['bind_user_txt'] = 'BIND Benutzer'; +$wb['bind_group_txt'] = 'BIND Gruppe'; +$wb['bind_zonefiles_dir_txt'] = 'BIND Zonefiles Verzeichnis'; +$wb['named_conf_path_txt'] = 'BIND named.conf Pfad'; +$wb['bind_user_error_empty'] = 'BIND Benutzer ist leer.'; +$wb['bind_group_error_empty'] = 'BIND Gruppe ist leer.'; +$wb['bind_zonefiles_dir_error_empty'] = 'BIND Zonefiles Verzeichnis ist leer.'; +$wb['named_conf_path_error_empty'] = 'BIND named.conf Pfad ist leer.'; +$wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local Pfad ist leer.'; +$wb['mail_filter_syntax_txt'] = 'E-Mailfilter Syntax'; +$wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Dämon'; +$wb['php_open_basedir_txt'] = 'PHP open_basedir'; +$wb['php_open_basedir_error_empty'] = 'PHP open_basedir ist leer.'; +$wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride'; +$wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride ist leer.'; +$wb['awstats_conf_dir_txt'] = 'AWStats Konfigurationsverzeichnis'; +$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'; +$wb['check_apache_config_txt'] = 'Teste Apache Konfiguration beim Neustart'; +$wb['CA_path_txt'] = 'CA Pfad'; +$wb['CA_pass_txt'] = 'CA Passwort'; +$wb['ufw_enable_txt'] = 'Aktivieren'; +$wb['ufw_manage_builtins_txt'] = 'Verwalte Builtin Rules'; +$wb['ufw_ipv6_txt'] = 'Aktiviere IPv6'; +$wb['ufw_default_input_policy_txt'] = 'Default Input Policy'; +$wb['ufw_default_output_policy_txt'] = 'Default Output Policy'; +$wb['ufw_default_forward_policy_txt'] = 'Default Forward Policy'; +$wb['ufw_default_application_policy_txt'] = 'Default Application Policy'; +$wb['ufw_log_level_txt'] = 'Loglevel'; +$wb['network_config_warning_txt'] = 'Die Netzwerk Konfiguration Option ist nur auf Debian- und Ubuntu Servern verfügbar. Aktivieren Sie diese Option nicht, falls Ihr Netzwerk Interface nicht eth0 heißt.'; +$wb['server_type_txt'] = 'Server Typ'; +$wb['nginx_vhost_conf_dir_txt'] = 'Nginx vHost Konfigurations Verzeichnis'; +$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx vHost config enabled dir'; +$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.'; +$wb['mailuser_gid_error_empty'] = 'Mail Benutzer GID ist leer.'; +$wb['mailuser_name_error_empty'] = 'Mail Benutzer Name ist leer.'; +$wb['mailuser_group_error_empty'] = 'Mail Benutzer Gruppe ist leer.'; +$wb['getmail_config_dir_error_empty'] = 'Getmail config dir ist leer.'; +$wb['website_basedir_error_empty'] = 'Webseiten basedir ist leer.'; +$wb['website_path_error_empty'] = 'Webseiten Pfad ist leer.'; +$wb['website_symlinks_error_empty'] = 'Webseiten Symlinks ist leer.'; +$wb['vhost_conf_dir_error_empty'] = 'vHost config dir ist leer.'; +$wb['vhost_conf_enabled_dir_error_empty'] = 'vHost config enabled dir ist leer.'; +$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx vHost config dir ist leer.'; +$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx vHost config enabled dir ist leer.'; +$wb['apache_user_error_empty'] = 'Apache Benutzer ist leer.'; +$wb['apache_group_error_empty'] = 'Apache Grupp ist leer.'; +$wb['nginx_user_error_empty'] = 'Nginx Benutzer ist leer.'; +$wb['nginx_group_error_empty'] = 'Nginx Gruppe ist leer.'; +$wb['php_ini_path_apache_error_empty'] = 'Apache php.ini Pfad ist leer.'; +$wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini Pfad ist leer.'; +$wb['nginx_cgi_socket_empty'] = 'Nginx CGI Socket ist leer.'; +$wb['apps_vhost_port_error_empty'] = 'Apps vHost Port ist leer.'; +$wb['apps_vhost_ip_error_empty'] = 'Apps vHost IP Adresse ist leer.'; +$wb['fastcgi_starter_path_error_empty'] = 'FastCGI Starter Pfad ist leer.'; +$wb['fastcgi_starter_script_error_empty'] = 'FastCGI Starter Script ist leer.'; +$wb['fastcgi_alias_error_empty'] = 'FastCGI Alias ist leer.'; +$wb['fastcgi_phpini_path_error_empty'] = 'FastCGI php.ini Pfad ist leer.'; +$wb['fastcgi_children_error_empty'] = 'FastCGI Children ist leer.'; +$wb['fastcgi_max_requests_error_empty'] = 'FastCGI max. Requests ist leer.'; +$wb['fastcgi_bin_error_empty'] = 'FastCGI Bin ist leer.'; +$wb['jailkit_chroot_home_error_empty'] = 'Jailkit Chroot home ist leer.'; +$wb['jailkit_chroot_app_sections_error_empty'] = 'Jailkit Chroot Anwendungsbereiche ist leer.'; +$wb['jailkit_chroot_app_programs_error_empty'] = 'Jailkit Chrooted Anwendungen ist leer.'; +$wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit Cron Chrooted Anwendungen ist leer.'; +$wb['vlogger_config_dir_error_empty'] = 'Konfigurationsverzeichnis ist leer.'; +$wb['cron_init_script_error_empty'] = 'Cron Startscript Name ist leer.'; +$wb['crontab_dir_error_empty'] = 'Pfad für individuelle Crontabs ist leer.'; +$wb['cron_wget_error_empty'] = 'Pfad zum wget Programm ist leer.'; +$wb['php_fpm_init_script_txt'] = 'PHP-FPM Init Script'; +$wb['php_fpm_init_script_error_empty'] = 'PHP-FPM Init Script ist leer.'; +$wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini Pfad'; +$wb['php_fpm_ini_path_error_empty'] = 'PHP-FPM php.ini Pfad ist leer.'; +$wb['php_fpm_pool_dir_txt'] = 'PHP-FPM Pool Verzeichnis'; +$wb['php_fpm_pool_dir_error_empty'] = 'PHP-FPM Pool Verzeichnis ist leer.'; +$wb['php_fpm_start_port_txt'] = 'PHP-FPM Start Port'; +$wb['php_fpm_start_port_error_empty'] = 'PHP-FPM Start Port ist leer.'; +$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM Socket Verzeichnis'; +$wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM Socket Verzeichnis ist leer.'; +$wb['fastcgi_config_syntax_txt'] = 'FastCGI Konfigurations Syntax'; +$wb['try_rescue_txt'] = 'Aktiviere Service Monitoring und Neustart bei Unerreichbarkeit'; +$wb['do_not_try_rescue_httpd_txt'] = 'Deaktiviere HTTPD Monitoring'; +$wb['do_not_try_rescue_mongodb_txt'] = 'Deaktiviere MongoDB Monitoring'; +$wb['do_not_try_rescue_mysql_txt'] = 'Deaktiviere MySQL Monitoring'; +$wb['do_not_try_rescue_mail_txt'] = 'Deaktiviere E-Mail Monitoring'; +$wb['rescue_description_txt'] = '<b>Information:</b> Falls Sie MySQL stoppen möchten, wählen Sie die Funktion \'Deaktiviere MySQL Monitoring\' und warten Sie 2 bis 3 Minuten. Wenn Sie nicht 2 bis 3 Minuten warten wird ISPConfig versuchen MySQL wieder zu starten.'; +$wb['enable_sni_txt'] = 'Aktiviere SNI'; +$wb['set_folder_permissions_on_update_txt'] = 'Verzeichnisberechtigungen beim Update setzen'; +$wb['add_web_users_to_sshusers_group_txt'] = 'Webbenutzer zur -sshusers- hinzufügen'; +$wb['connect_userid_to_webid_txt'] = 'Linux Userid mit webid verknüpfen'; +$wb['connect_userid_to_webid_start_txt'] = 'Start ID für userid/webid Verknüpfung'; +$wb['realtime_blackhole_list_txt'] = 'Realtime Blackhole Liste'; +$wb['realtime_blackhole_list_note_txt'] = '(Mehrere Realtime Blackhole Listen mit Kommas trennen)'; +$wb['ssl_settings_txt'] = 'SSL Einstellungen'; +$wb['permissions_txt'] = 'Berechtigungen'; +$wb['php_settings_txt'] = 'PHP Einstellungen'; +$wb['apps_vhost_settings_txt'] = 'Apps vHost Einstellungen'; +$wb['awstats_settings_txt'] = 'AWStats Einstellungen'; +$wb['backup_mode_txt'] = 'Backupmodus'; +$wb['backup_mode_userzip'] = 'Backup Dateien gehören dem Web Benutzer (.zip Datei)'; +$wb['backup_mode_rootgz'] = 'Backup aller Dateien des Webverzeichnisses als Root Benutzer'; +$wb['backup_time_txt'] = 'Backupzeit'; +$wb['firewall_txt'] = 'Firewall'; +$wb['mailbox_quota_stats_txt'] = 'E-Mailkonto Beschränkung Statistiken'; +$wb['enable_ip_wildcard_txt'] = 'IP Adressen Wildcard (*) aktivieren'; +$wb['web_folder_protection_txt'] = 'Webverzeichnis unveränderlich machen (erweiterte Attribute)'; +$wb['overtraffic_notify_admin_txt'] = 'Überschreiten des Datentransfer Limits an den Administrator senden'; +$wb['overtraffic_notify_client_txt'] = 'Überschreiten des Datentransfer Limits an den Kunden senden'; +$wb['rbl_error_regex'] = 'Bitte geben Sie gültige RBL-Hostnamen an.'; +$wb['overquota_notify_admin_txt'] = 'Quota-Warnungen an den Administrator senden'; +$wb['overquota_notify_client_txt'] = 'Quota-Warnungen an den Kunden senden'; +$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Belegung wieder ok'; +$wb['overquota_notify_freq_txt'] = 'Quota-Warnung alle X Tage versenden'; +$wb['overquota_notify_freq_note_txt'] = '0 = Meldung nur einmalig versenden, keine Wiederholung'; +$wb['admin_notify_events_txt'] = 'Sende E-Mail an Administrator ab folgendem Level'; +$wb['no_notifications_txt'] = 'Keine Benachrichtigungen'; +$wb['monit_url_txt'] = 'Monit-URL'; +$wb['monit_user_txt'] = 'Monit-Benutzer'; +$wb['monit_password_txt'] = 'Monit-Passwort'; +$wb['monit_url_error_regex'] = 'Ungültige Monit-URL'; +$wb['monit_url_note_txt'] = 'Platzhalter:'; +$wb['munin_url_txt'] = 'Munin-URL'; +$wb['munin_user_txt'] = 'Munin-Benutzer'; +$wb['munin_password_txt'] = 'Munin-Passwort'; +$wb['munin_url_error_regex'] = 'Ungültige Munin-URL'; +$wb['munin_url_note_txt'] = 'Platzhalter:'; +$wb['backup_dir_is_mount_txt'] = 'Backupverzeichnis ist ein eigener Mount?'; +$wb['backup_dir_mount_cmd_txt'] = 'Mount-Befehl, falls Backupverzeichnis nicht gemountet'; +$wb['backup_delete_txt'] = 'Backups loeschen wenn eine Domain / Webseite geloescht wird'; +$wb['v6_prefix_txt'] = 'IPv6 Prefix'; +$wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror'; +$wb['v6_prefix_length'] = 'Prefix zu lang fuer angegebene IPv6-Adresse '; +$wb['monitor_system_updates_txt'] = 'Suche nach Linux updates'; +$wb['dkim_strength_txt'] = 'DKIM Stärke'; +$wb['hostname_error_regex'] = 'Invalid Hostname.'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir or path too short, min. length 5 chars.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$wb['network_filesystem_txt'] = 'Netzwerk-Dateisystem'; +$wb['overquota_db_notify_admin_txt'] = 'Datenbank-Quota-Warnungen an den Administrator senden'; +$wb['overquota_db_notify_client_txt'] = 'Datenbank-Quota-Warnungen an den Kunden senden'; +$wb['php_ini_check_minutes_txt'] = 'Prüfe php.ini alle X Minuten auf Änderungen'; +$wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.'; +$wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; +$wb['php_handler_txt'] = 'Standard-PHP-Handler'; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; +$wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; +$wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; +$wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; +$wb['disabled_txt'] = 'Disabled'; +$wb['web_settings_txt'] = 'Web Server'; +$wb['xmpp_server_txt'] = 'XMPP Server'; +$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; +$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; +$wb['xmpp_module_saslauth'] = 'saslauth'; +$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; +$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; +$wb['xmpp_ports_txt'] = 'Component ports'; +$wb['xmpp_port_http_txt'] = 'HTTP'; +$wb['xmpp_port_https_txt'] = 'HTTPS'; +$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.'; +$wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; +?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng.rej b/interface/web/admin/lib/lang/de_server_config.lng.rej new file mode 100644 index 0000000000..eeed14711e --- /dev/null +++ b/interface/web/admin/lib/lang/de_server_config.lng.rej @@ -0,0 +1,11 @@ +--- interface/web/admin/lib/lang/de_server_config.lng ++++ interface/web/admin/lib/lang/de_server_config.lng +@@ -295,4 +295,7 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; + $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; + $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; + $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; +-?> ++$wb['content_filter_txt'] = 'Content-Filter'; ++$wb['rspamd_url_txt'] = 'Rspamd-URL'; ++$wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; ++$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index ac0ee42b90..0ba3638a0a 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -297,4 +297,7 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; -?> +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng.orig b/interface/web/admin/lib/lang/en_server_config.lng.orig new file mode 100644 index 0000000000..ac0ee42b90 --- /dev/null +++ b/interface/web/admin/lib/lang/en_server_config.lng.orig @@ -0,0 +1,300 @@ +<?php +$wb["ufw_enable_txt"] = 'Enable'; +$wb["ufw_manage_builtins_txt"] = 'Manage Builtin Rules'; +$wb["ufw_ipv6_txt"] = 'Enable IPv6'; +$wb["ufw_default_input_policy_txt"] = 'Default Input Policy'; +$wb["ufw_default_output_policy_txt"] = 'Default Output Policy'; +$wb["ufw_default_forward_policy_txt"] = 'Default Forward Policy'; +$wb["ufw_default_application_policy_txt"] = 'Default Application Policy'; +$wb["ufw_log_level_txt"] = 'Log Level'; +$wb["jailkit_chroot_home_txt"] = 'Jailkit chroot home'; +$wb["jailkit_chroot_app_sections_txt"] = 'Jailkit chroot app sections'; +$wb["jailkit_chroot_app_programs_txt"] = 'Jailkit chrooted applications'; +$wb["jailkit_chroot_cron_programs_txt"] = 'Jailkit cron chrooted applications'; +$wb["website_path_txt"] = 'Website path'; +$wb["website_symlinks_txt"] = 'Website symlinks'; +$wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; +$wb["website_basedir_txt"] = 'Website basedir'; +$wb["website_autoalias_txt"] = 'Website auto alias'; +$wb["website_autoalias_note_txt"] = 'Placeholders:'; +$wb["vhost_conf_dir_txt"] = 'Vhost config dir'; +$wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir'; +$wb["getmail_config_dir_txt"] = 'Getmail config dir'; +$wb["fastcgi_starter_path_txt"] = 'FastCGI starter path'; +$wb["fastcgi_starter_script_txt"] = 'FastCGI starter script'; +$wb["fastcgi_alias_txt"] = 'FastCGI Alias'; +$wb["fastcgi_phpini_path_txt"] = 'FastCGI php.ini Path'; +$wb["fastcgi_children_txt"] = 'FastCGI Children'; +$wb["fastcgi_max_requests_txt"] = 'FastCGI max. Requests'; +$wb["fastcgi_bin_txt"] = 'FastCGI Bin'; +$wb["module_txt"] = 'Module'; +$wb["maildir_path_txt"] = 'Maildir Path'; +$wb['maildir_format_txt'] = 'Maildir Format'; +$wb["homedir_path_txt"] = 'Homedir Path'; +$wb["dkim_path_txt"] = 'DKIM Path'; +$wb["mailuser_uid_txt"] = 'Mailuser UID'; +$wb["mailuser_gid_txt"] = 'Mailuser GID'; +$wb["mailuser_name_txt"] = 'Mailuser Name'; +$wb["mailuser_group_txt"] = 'Mailuser Group'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; +$wb["relayhost_txt"] = 'Relayhost'; +$wb["relayhost_user_txt"] = 'Relayhost User'; +$wb["relayhost_password_txt"] = 'Relayhost Password'; +$wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb["mailbox_size_limit_txt"] = 'Mailbox Size Limit'; +$wb["message_size_limit_txt"] = 'Message Size Limit'; +$wb["ip_address_txt"] = 'IP Address'; +$wb["netmask_txt"] = 'Netmask'; +$wb["gateway_txt"] = 'Gateway'; +$wb["hostname_txt"] = 'Hostname'; +$wb["nameservers_txt"] = 'Nameservers'; +$wb["auto_network_configuration_txt"] = 'Network Configuration'; +$wb["ip_address_error_wrong"] = 'Invalid IP address format.'; +$wb["netmask_error_wrong"] = 'Invalid Netmask format.'; +$wb["gateway_error_wrong"] = 'Invalid Gateway format.'; +$wb["hostname_error_empty"] = 'Hostname is empty.'; +$wb["hostname_error_regex"] = 'Invalid Hostname.'; +$wb["nameservers_error_empty"] = 'Nameserver is empty.'; +$wb["config_dir_txt"] = 'Config directory'; +$wb["init_script_txt"] = 'Cron init script name'; +$wb["crontab_dir_txt"] = 'Path for individual crontabs'; +$wb["wget_txt"] = 'Path to wget program'; +$wb["web_user_txt"] = 'Apache user'; +$wb["web_group_txt"] = 'Apache group'; +$wb["security_level_txt"] = 'Security level'; +$wb["loglevel_txt"] = 'Loglevel'; +$wb["apps_vhost_port_txt"] = 'Apps-vhost port'; +$wb["apps_vhost_ip_txt"] = 'Apps-vhost IP'; +$wb["apps_vhost_servername_txt"] = 'Apps-vhost Domain'; +$wb["bind_user_txt"] = 'BIND User'; +$wb["bind_group_txt"] = 'BIND Group'; +$wb["bind_zonefiles_dir_txt"] = 'BIND zonefiles directory'; +$wb["named_conf_path_txt"] = 'BIND named.conf path'; +$wb["bind_user_error_empty"] = 'BIND user is empty.'; +$wb["bind_group_error_empty"] = 'BIND group is empty.'; +$wb["bind_zonefiles_dir_error_empty"] = 'BIND zonefiles directory is empty.'; +$wb["named_conf_path_error_empty"] = 'BIND named.conf path is empty.'; +$wb["named_conf_local_path_error_empty"] = 'BIND named.conf.local path is empty.'; +$wb["mail_filter_syntax_txt"] = 'Mailfilter Syntax'; +$wb["pop3_imap_daemon_txt"] = 'POP3/IMAP Daemon'; +$wb["php_open_basedir_txt"] = 'PHP open_basedir'; +$wb["php_open_basedir_error_empty"] = 'PHP open_basedir is empty.'; +$wb["htaccess_allow_override_txt"] = '.htaccess AllowOverride'; +$wb["htaccess_allow_override_error_empty"] = '.htaccess AllowOverride is empty.'; +$wb["awstats_conf_dir_txt"] = 'awstats conf folder'; +$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'; +$wb["check_apache_config_txt"] = 'Test apache configuration on restart'; +$wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.'; +$wb["CA_path_txt"] = 'CA Path'; +$wb["CA_pass_txt"] = 'CA passphrase'; +$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'; +$wb["nginx_vhost_conf_enabled_dir_txt"] = 'Nginx Vhost config enabled dir'; +$wb["nginx_user_txt"] = 'Nginx user'; +$wb["nginx_group_txt"] = 'Nginx group'; +$wb["nginx_cgi_socket_txt"] = 'Nginx CGI Socket'; +$wb["backup_dir_error_empty"] = 'Backup directory is empty.'; +$wb["maildir_path_error_empty"] = 'Maildir Path is empty.'; +$wb["homedir_path_error_empty"] = 'Homedir Path is empty.'; +$wb["mailuser_uid_error_empty"] = 'Mailuser UID is empty.'; +$wb["mailuser_gid_error_empty"] = 'Mailuser GID is empty.'; +$wb["mailuser_name_error_empty"] = 'Mailuser Name is empty.'; +$wb["mailuser_group_error_empty"] = 'Mailuser Group is empty.'; +$wb["getmail_config_dir_error_empty"] = 'Getmail config dir is empty.'; +$wb["website_basedir_error_empty"] = 'Website basedir is empty.'; +$wb["website_path_error_empty"] = 'Website path is empty.'; +$wb["website_symlinks_error_empty"] = 'Website symlinks is empty.'; +$wb["vhost_conf_dir_error_empty"] = 'Vhost config dir is empty.'; +$wb["vhost_conf_enabled_dir_error_empty"] = 'Vhost config enabled dir is empty.'; +$wb["nginx_vhost_conf_dir_error_empty"] = 'Nginx Vhost config dir is empty.'; +$wb["nginx_vhost_conf_enabled_dir_error_empty"] = 'Nginx Vhost config enabled dir is empty.'; +$wb["apache_user_error_empty"] = 'Apache user is empty.'; +$wb["apache_group_error_empty"] = 'Apache group is empty.'; +$wb["nginx_user_error_empty"] = 'Nginx user is empty.'; +$wb["nginx_group_error_empty"] = 'Nginx group is empty.'; +$wb["php_ini_path_apache_error_empty"] = 'Apache php.ini path is empty.'; +$wb["php_ini_path_cgi_error_empty"] = 'CGI php.ini path is empty.'; +$wb["nginx_cgi_socket_empty"] = 'Nginx CGI Socket is empty.'; +$wb["apps_vhost_port_error_empty"] = 'Apps-vhost port is empty.'; +$wb["apps_vhost_ip_error_empty"] = 'Apps-vhost IP is empty.'; +$wb["fastcgi_starter_path_error_empty"] = 'FastCGI starter path is empty.'; +$wb["fastcgi_starter_script_error_empty"] = 'FastCGI starter script is empty.'; +$wb["fastcgi_alias_error_empty"] = 'FastCGI Alias is empty.'; +$wb["fastcgi_phpini_path_error_empty"] = 'FastCGI php.ini Path is empty.'; +$wb["fastcgi_children_error_empty"] = 'FastCGI Children is empty.'; +$wb["fastcgi_max_requests_error_empty"] = 'FastCGI max. Requests is empty.'; +$wb["fastcgi_bin_error_empty"] = 'FastCGI Bin is empty.'; +$wb["jailkit_chroot_home_error_empty"] = 'Jailkit chroot home is empty.'; +$wb["jailkit_chroot_app_sections_error_empty"] = 'Jailkit chroot app sections is empty.'; +$wb["jailkit_chroot_app_programs_error_empty"] = 'Jailkit chrooted applications is empty.'; +$wb["jailkit_chroot_cron_programs_error_empty"] = 'Jailkit cron chrooted applications is empty.'; +$wb["vlogger_config_dir_error_empty"] = 'Config directory is empty.'; +$wb["cron_init_script_error_empty"] = 'Cron init script name is empty.'; +$wb["crontab_dir_error_empty"] = 'Path for individual crontabs is empty.'; +$wb["cron_wget_error_empty"] = 'Path to wget program is empty.'; +$wb["php_fpm_init_script_txt"] = 'PHP-FPM init script'; +$wb["php_fpm_init_script_error_empty"] = 'PHP-FPM init script is empty.'; +$wb["php_fpm_ini_path_txt"] = 'PHP-FPM php.ini path'; +$wb["php_fpm_ini_path_error_empty"] = 'PHP-FPM php.ini path is empty.'; +$wb["php_fpm_pool_dir_txt"] = 'PHP-FPM pool directory'; +$wb["php_fpm_pool_dir_error_empty"] = 'PHP-FPM pool directory is empty.'; +$wb["php_fpm_start_port_txt"] = 'PHP-FPM start port'; +$wb["php_fpm_start_port_error_empty"] = 'PHP-FPM start port is empty.'; +$wb["php_fpm_socket_dir_txt"] = 'PHP-FPM socket directory'; +$wb["php_fpm_socket_dir_error_empty"] = 'PHP-FPM socket directory is empty.'; +$wb["try_rescue_txt"] = 'Enable service monitoring and restart on failure'; +$wb["do_not_try_rescue_httpd_txt"] = 'Disable HTTPD monitoring'; +$wb["do_not_try_rescue_mongodb_txt"] = 'Disable MongoDB monitoring'; +$wb["do_not_try_rescue_mysql_txt"] = 'Disable MySQL monitoring'; +$wb["do_not_try_rescue_mail_txt"] = 'Disable Email monitoring'; +$wb["rescue_description_txt"] = '<b>Information:</b> If you want to shut down mysql you have to select the "Disable MySQL monitor" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; +$wb["enable_sni_txt"] = 'Enable SNI'; +$wb["set_folder_permissions_on_update_txt"] = 'Set folder permissions on update'; +$wb["add_web_users_to_sshusers_group_txt"] = 'Add web users to -sshusers- group'; +$wb["connect_userid_to_webid_txt"] = 'Connect Linux userid to webid'; +$wb["connect_userid_to_webid_start_txt"] = 'Start ID for userid/webid connect'; +$wb["realtime_blackhole_list_txt"] = 'Real-time Blackhole List'; +$wb["realtime_blackhole_list_note_txt"] = '(Separate RBL\'s with commas)'; +$wb["ssl_settings_txt"] = 'SSL Settings'; +$wb["permissions_txt"] = 'Permissions'; +$wb["php_settings_txt"] = 'PHP Settings'; +$wb["apps_vhost_settings_txt"] = 'Apps Vhost Settings'; +$wb["awstats_settings_txt"] = 'AWStats Settings'; +$wb["firewall_txt"] = 'Firewall'; +$wb["mailbox_quota_stats_txt"] = 'Mailbox quota statistics'; +$wb["enable_ip_wildcard_txt"] = 'Enable IP wildcard (*)'; +$wb["web_folder_protection_txt"] = 'Make web folders immutable (extended attributes)'; +$wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin'; +$wb["overtraffic_notify_client_txt"] = 'Send overtraffic notification to client'; +$wb["rbl_error_regex"] = 'Please specify valid RBL hostnames.'; +$wb["overquota_notify_admin_txt"] = 'Send quota warnings to admin'; +$wb["overquota_notify_client_txt"] = 'Send quota warnings to client'; +$wb["overquota_notify_onok_txt"] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; +$wb["v6_prefix_txt"] = 'IPv6 Prefix'; +$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror'; +$wb["v6_prefix_length"] = 'Prefix too long according to defined IPv6 '; +$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; +$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; +$wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; +$wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin'; +$wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client'; +$wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['php_handler_txt'] = "Default PHP Handler"; +$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; +$wb['disabled_txt'] = 'Disabled'; +$wb['dkim_strength_txt'] = 'DKIM strength'; +$wb['monitor_system_updates_txt'] = 'Check for Linux updates'; +$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; +$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; +$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; +$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; +$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; +$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; +$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; +$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; +$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; +$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; +$wb['website_basedir_error_regex'] = 'Invalid website basedir path, min. length 5 chars.'; +$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; +$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; +$wb['ca_path_error_regex'] = 'Invalid CA path.'; +$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; +$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; +$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; +$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; +$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; +$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; +$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; +$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; +$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; +$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; +$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; +$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; +$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; +$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; +$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; +$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; +$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; +$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; +$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; +$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; +$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; +$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; +$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; +$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; +$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; +$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; +$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/HTTP2 available'; +$wb['web_settings_txt'] = 'Web Server'; +$wb['xmpp_server_txt'] = 'XMPP Server'; +$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; +$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; +$wb['xmpp_module_saslauth'] = 'saslauth'; +$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; +$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; +$wb['xmpp_ports_txt'] = 'Component ports'; +$wb['xmpp_port_http_txt'] = 'HTTP'; +$wb['xmpp_port_https_txt'] = 'HTTPS'; +$wb['xmpp_port_pastebin_txt'] = 'Pastebin'; +$wb['xmpp_port_bosh_txt'] = 'BOSH'; +$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN"; +$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled"; +$wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check'; +$wb['migration_mode_txt'] = 'Server Migration Mode'; +$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; +$wb['logging_txt'] = 'Store website access and error logs'; +$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; +$wb['log_retention_txt'] = 'Log retention (days)'; +$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; +$wb['php_default_name_txt'] = 'Description Default PHP-Version'; +$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; +$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng.rej b/interface/web/admin/lib/lang/en_server_config.lng.rej new file mode 100644 index 0000000000..1460249765 --- /dev/null +++ b/interface/web/admin/lib/lang/en_server_config.lng.rej @@ -0,0 +1,11 @@ +--- interface/web/admin/lib/lang/en_server_config.lng ++++ interface/web/admin/lib/lang/en_server_config.lng +@@ -296,4 +296,7 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; + $wb['php_default_name_txt'] = 'Description Default PHP-Version'; + $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; + $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; +-?> ++$wb['content_filter_txt'] = 'Content Filter'; ++$wb['rspamd_url_txt'] = 'Rspamd URL'; ++$wb['rspamd_user_txt'] = 'Rspamd User'; ++$wb['rspamd_password_txt'] = 'Rspamd Password'; \ No newline at end of file diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 523671c0c7..8a7cd770a3 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -52,6 +52,21 @@ $app->load('tform_actions'); class page_action extends tform_actions { + function onShow() { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + + if($web_config['server_type'] == 'nginx'){ + unset($app->tform->formDef["tabs"]["fastcgi"]); + unset($app->tform->formDef["tabs"]["vlogger"]); + } + + parent::onShow(); + } + function onSubmit() { global $app, $conf; @@ -73,11 +88,17 @@ class page_action extends tform_actions { $server_id = $this->id; $this->dataRecord = $app->getconf->get_server_config($server_id, $section); + + if($section == 'mail'){ + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + } } $record = $app->tform->getHTML($this->dataRecord, $this->active_tab, 'EDIT'); $record['id'] = $this->id; + if(isset($rspamd_url)) $record['rspamd_url'] = $rspamd_url; $app->tpl->setVar($record); } @@ -112,6 +133,14 @@ class page_action extends tform_actions { } } + if($section === 'mail') { + if(isset($server_config_array['mail']['rspamd_available']) && $server_config_array['mail']['rspamd_available'] === 'y') { + $this->dataRecord['rspamd_available'] = 'y'; + } else { + $this->dataRecord['rspamd_available'] = 'n'; + } + } + if($app->tform->errorMessage == '') { $server_config_array[$section] = $app->tform->encode($this->dataRecord, $section); $server_config_str = $app->ini_parser->get_ini_string($server_config_array); @@ -123,6 +152,48 @@ class page_action extends tform_actions { } } + function onAfterUpdate() { + global $app; + + if(isset($this->dataRecord['content_filter'])){ + $app->uses('ini_parser'); + $old_config = $app->ini_parser->parse_ini_string(stripslashes($this->oldDataRecord['config'])); + if($this->dataRecord['content_filter'] == 'rspamd' && $old_config['mail']['content_filter'] != $this->dataRecord['content_filter']){ + + $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE server_id = ?", intval($this->id)); + if(is_array($spamfilter_users) && !empty($spamfilter_users)){ + foreach($spamfilter_users as $spamfilter_user){ + $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); + } + } + + $spamfilter_wblists = $app->db->queryAllRecords("SELECT * FROM spamfilter_wblist WHERE server_id = ?", intval($this->id)); + if(is_array($spamfilter_wblists) && !empty($spamfilter_wblists)){ + foreach($spamfilter_wblists as $spamfilter_wblist){ + $app->db->datalogUpdate('spamfilter_wblist', $spamfilter_wblist, 'wblist_id', $spamfilter_wblist["wblist_id"], true); + } + } + + $mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND (autoresponder = 'y' OR move_junk = 'y')", intval($this->id)); + if(is_array($mail_users) && !empty($mail_users)){ + foreach($mail_users as $mail_user){ + if($mail_user['autoresponder'] == 'y'){ + $mail_user['autoresponder'] = 'n'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + $mail_user['autoresponder'] = 'y'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } else { + $mail_user['move_junk'] = 'n'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + $mail_user['move_junk'] = 'y'; + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } + + } + } + } + } + } } $app->tform_actions = new page_action; diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index c1531c654a..6ba37104ef 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -44,6 +44,20 @@ {tmpl_var name='mail_filter_syntax'} </select></div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='content_filter_txt'}</label> + <div class="col-sm-9"><select name="content_filter" id="content_filter" class="form-control"> + {tmpl_var name='content_filter'} + </select></div> + </div> + <div class="form-group rspamd"> + <label for="rspamd_url" class="col-sm-3 control-label col-text">{tmpl_var name='rspamd_url_txt'}</label> + <div class="col-sm-6"><a href="{tmpl_var name='rspamd_url'}" target="_blank">{tmpl_var name='rspamd_url'}</a><a href="{tmpl_var name='rspamd_url'}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow" style="margin-left:20px"><span class="icon icon-link"></span></a></div> + </div> + <div class="form-group rspamd"> + <label for="rspamd_password" class="col-sm-3 control-label">{tmpl_var name='rspamd_password_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_password" id="rspamd_password" value="{tmpl_var name='rspamd_password'}" class="form-control" /></div> + </div> <div class="form-group"> <label for="mailuser_uid" class="col-sm-3 control-label">{tmpl_var name='mailuser_uid_txt'}</label> <div class="col-sm-9"><input type="text" name="mailuser_uid" id="mailuser_uid" value="{tmpl_var name='mailuser_uid'}" class="form-control" /></div></div> @@ -125,3 +139,23 @@ <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_config_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_config_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> +<script> + if($('#rspamd_password').val() == ''){ + var pword = password(8, false, 1); + jQuery('#rspamd_password').val(pword); + } + + if($('#content_filter').val() === 'rspamd'){ + $('.rspamd').show(); + } else { + $('.rspamd').hide(); + } + + $('#content_filter').change(function(){ + if($(this).val() === 'rspamd'){ + $('.rspamd').show(); + } else { + $('.rspamd').hide(); + } + }); +</script> diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index 31e8b8092a..d6ecef9bbc 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -304,6 +304,42 @@ $form["tabs"]['taglevel'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'rspamd_greylisting' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'rspamd_spam_greylisting_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_method' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'rewrite_subject', + 'value' => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt')) + ), + 'rspamd_spam_kill_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/mail/form/spamfilter_policy.tform.php.orig b/interface/web/mail/form/spamfilter_policy.tform.php.orig new file mode 100644 index 0000000000..31e8b8092a --- /dev/null +++ b/interface/web/mail/form/spamfilter_policy.tform.php.orig @@ -0,0 +1,496 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ + +$form["title"] = "Spamfilter policy"; +$form["description"] = ""; +$form["name"] = "spamfilter_policy"; +$form["action"] = "spamfilter_policy_edit.php"; +$form["db_table"] = "spamfilter_policy"; +$form["db_table_idx"] = "id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "policy"; +$form["list_default"] = "spamfilter_policy_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = 'r'; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['policy'] = array ( + 'title' => "Policy", + 'width' => 100, + 'template' => "templates/spamfilter_policy_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'policy_name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + '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' + ), + 'virus_lover' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'spam_lover' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'banned_files_lover' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'bad_header_lover' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'bypass_virus_checks' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'bypass_banned_checks' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'bypass_header_checks' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + + +$form["tabs"]['quarantine'] = array ( + 'title' => "Quarantine", + 'width' => 100, + 'template' => "templates/spamfilter_quarantine_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'virus_quarantine_to' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + +$form["tabs"]['taglevel'] = array ( + 'title' => "Tag-Level", + 'width' => 100, + 'template' => "templates/spamfilter_taglevel_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'spam_tag_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'spam_tag2_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'spam_kill_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'spam_dsn_cutoff_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'spam_quarantine_cutoff_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'spam_modifies_subj' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + + +$form["tabs"]['other'] = array ( + 'title' => "Other", + 'width' => 100, + 'template' => "templates/spamfilter_other_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'addr_extension_virus' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'warnvirusrecip' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'warnbannedrecip' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + 'warnbadhrecip' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'N', + 'value' => array('N' => 'No', 'Y' => 'Yes') + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + + 'message_size_limit' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + + //################################# + // ENDE Datatable fields + //################################# + ) +); + +?> diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng index 32acca4686..04b8274478 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng @@ -35,4 +35,10 @@ $wb['bad_header_admin_txt'] = 'Bad Header Administrator'; $wb['spam_admin_txt'] = 'SPAM Administrator'; $wb['message_size_limit_txt'] = 'Nachrichtengrößen Limit'; $wb['banned_rulenames_txt'] = 'Banned Richtliniennamen'; -?> +$wb['rspamd_greylisting_txt'] = 'Greylisting nutzen'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting-Level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM-Markierungslevel'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level'; +$wb['btn_save_txt'] = 'Speichern'; +$wb['btn_cancel_txt'] = 'Abbrechen'; diff --git a/interface/web/mail/lib/lang/en.lng b/interface/web/mail/lib/lang/en.lng index e5f9e678c7..22c67a286b 100644 --- a/interface/web/mail/lib/lang/en.lng +++ b/interface/web/mail/lib/lang/en.lng @@ -48,4 +48,5 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb["Relay Recipients"] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; -?> \ No newline at end of file +$wb['add_header_txt'] = 'Header (adds "X-Spam: Yes")'; +$wb['rewrite_subject_txt'] = 'Subject (adds "***SPAM***" at the beginning)'; diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy.lng b/interface/web/mail/lib/lang/en_spamfilter_policy.lng index 2e0f05d6c0..f9e8a8e303 100644 --- a/interface/web/mail/lib/lang/en_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/en_spamfilter_policy.lng @@ -35,4 +35,11 @@ $wb["bad_header_admin_txt"] = 'Bad header admin'; $wb["spam_admin_txt"] = 'SPAM admin'; $wb["message_size_limit_txt"] = 'Message size limit'; $wb["banned_rulenames_txt"] = 'Banned rulenames'; -?> +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +?> \ No newline at end of file diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 72877a774d..28d4f40917 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -273,7 +273,10 @@ class page_action extends tform_actions { } //* make sure that the email domain is lowercase - if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + if(isset($this->dataRecord["domain"])){ + $this->dataRecord["domain"] = $app->functions->idn_encode($this->dataRecord["domain"]); + $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + } parent::onSubmit(); @@ -317,7 +320,7 @@ class page_action extends tform_actions { $soaDomain = $this->dataRecord['domain'].'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); - $soaDomain = preg_replace("/^\w+\./","",$soaDomain); + $soaDomain = preg_replace("/^[^\.]+\./","",$soaDomain); } if ( isset($soa) && !empty($soa) ) $this->update_dns($this->dataRecord, $soa); } @@ -450,7 +453,7 @@ class page_action extends tform_actions { $soaDomain = $domain.'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); - $soaDomain = preg_replace("/^[\w\-]+\./","",$soaDomain); + $soaDomain = preg_replace("/^[^\.]+\./","",$soaDomain); } if ( ($selector || $dkim_private || $dkim_active) && $dkim_active ) diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 910d7a096a..263b98ef31 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -295,7 +295,7 @@ class page_action extends tform_actions { "priority" => 10, "policy_id" => $policy_id, "email" => $this->dataRecord["email"], - "fullname" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); @@ -342,7 +342,7 @@ class page_action extends tform_actions { "priority" => 10, "policy_id" => $policy_id, "email" => $this->dataRecord["email"], - "fullname" => $this->dataRecord["email"], + "fullname" => $app->functions->idn_decode($this->dataRecord["email"]), "local" => 'Y' ); $app->db->datalogInsert('spamfilter_users', $insert_data, 'id'); diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 5320506846..55a42fe847 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -49,6 +49,46 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { + + function onShow() { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + $content_filter = 'amavisd'; + if($mail_config['content_filter'] == 'rspamd'){ + $content_filter = 'rspamd'; + unset($app->tform->formDef["tabs"]["policy"]['fields']['banned_files_lover']); + unset($app->tform->formDef["tabs"]["policy"]['fields']['bad_header_lover']); + unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_virus_checks']); + unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_banned_checks']); + unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_header_checks']); + + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag2_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_kill_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_dsn_cutoff_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_quarantine_cutoff_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_modifies_subj']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag2']); + + unset($app->tform->formDef["tabs"]["quarantine"]); + unset($app->tform->formDef["tabs"]["other"]); + } else { + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_greylisting']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_greylisting_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_level']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_method']); + unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_kill_level']); + } + $app->tpl->setVar("content_filter", $content_filter); + + parent::onShow(); + } + function onShowNew() { global $app, $conf; @@ -86,11 +126,37 @@ class page_action extends tform_actions { parent::onSubmit(); } + + function onAfterUpdate() { + global $app, $conf; + + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if($mail_config['content_filter'] == 'rspamd'){ + $record_has_changed = false; + if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) $this->dataRecord['rspamd_greylisting'] = 'n'; + foreach($this->dataRecord as $key => $val) { + if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { + // Record has changed + $record_has_changed = true; + } + } + + if($record_has_changed){ + $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); + + if(is_array($spamfilter_users) && !empty($spamfilter_users)){ + foreach($spamfilter_users as $spamfilter_user){ + $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); + } + } + } + } + } } $app->tform_actions = new page_action; $app->tform_actions->onLoad(); - - -?> +?> \ No newline at end of file diff --git a/interface/web/mail/spamfilter_policy_list.php b/interface/web/mail/spamfilter_policy_list.php index c2ab38d5f7..2aa7c7bec1 100644 --- a/interface/web/mail/spamfilter_policy_list.php +++ b/interface/web/mail/spamfilter_policy_list.php @@ -16,9 +16,28 @@ $list_def_file = "list/spamfilter_policy.list.php"; $app->auth->check_module_permissions('mail'); $app->uses('listform_actions'); -//$app->listform_actions->SQLExtWhere = "wb = 'W'"; -$app->listform_actions->onLoad(); - - -?> +class list_action extends listform_actions { + + function onShow() { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + $content_filter = 'amavisd'; + if($mail_config['content_filter'] == 'rspamd'){ + $content_filter = 'rspamd'; + } + $app->tpl->setVar("content_filter", $content_filter); + + parent::onShow(); + } + +} + +$list = new list_action; +//$list->SQLExtWhere = "wb = 'W'"; +$list->onLoad(); +?> \ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm index 317bbdb822..0496d3a85a 100644 --- a/interface/web/mail/templates/spamfilter_policy_edit.htm +++ b/interface/web/mail/templates/spamfilter_policy_edit.htm @@ -20,6 +20,7 @@ {tmpl_var name='spam_lover'} </select></div> </div> + <tmpl_if name='content_filter' op='==' value='amavisd'> <div class="form-group"> <label for="banned_files_lover" class="col-sm-3 control-label">{tmpl_var name='banned_files_lover_txt'}</label> <div class="col-sm-9"><select name="banned_files_lover" id="banned_files_lover" class="form-control"> @@ -50,7 +51,7 @@ {tmpl_var name='bypass_header_checks'} </select></div> </div> - + </tmpl_if> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/mail/templates/spamfilter_policy_list.htm b/interface/web/mail/templates/spamfilter_policy_list.htm index da1183d75f..0dd72dee54 100644 --- a/interface/web/mail/templates/spamfilter_policy_list.htm +++ b/interface/web/mail/templates/spamfilter_policy_list.htm @@ -19,16 +19,20 @@ <th data-column="policy_name"><tmpl_var name="policy_name_txt"></th> <th data-column="virus_lover"><tmpl_var name="virus_lover_txt"></th> <th data-column="spam_lover"><tmpl_var name="spam_lover_txt"></th> + <tmpl_if name='content_filter' op='==' value='amavisd'> <th data-column="banned_files_lover"><tmpl_var name="banned_files_lover_txt"></th> <th data-column="bad_header_lover"><tmpl_var name="bad_header_lover_txt"></th> + </tmpl_if> <th class="small-col text-right">{tmpl_var name='search_limit'}</th> </tr> <tr> <td><input class="form-control" type="text" name="search_policy_name" value="{tmpl_var name='search_policy_name'}" /></td> <td><select class="form-control" name="search_virus_lover">{tmpl_var name='search_virus_lover'}</select></td> <td><select class="form-control" name="search_spam_lover">{tmpl_var name='search_spam_lover'}</select></td> + <tmpl_if name='content_filter' op='==' value='amavisd'> <td><select class="form-control" name="search_banned_files_lover">{tmpl_var name='search_banned_files_lover'}</select></td> <td><select class="form-control" name="search_bad_header_lover">{tmpl_var name='search_bad_header_lover'}</select></td> + </tmpl_if> <td class="text-right"> <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_list.php"><span class="icon icon-filter"></span></button> </td> @@ -40,8 +44,10 @@ <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="policy_name"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="virus_lover"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="spam_lover"}</a></td> + <tmpl_if name='content_filter' op='==' value='amavisd'> <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="banned_files_lover"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="bad_header_lover"}</a></td> + </tmpl_if> <td class="text-right"> <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_policy_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> @@ -49,14 +55,14 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="6">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="{tmpl_if name='content_filter' op='==' value='amavisd'}6{/tmpl_else}4{/tmpl_if}">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td colspan="6"><tmpl_var name="paging"></td> + <td colspan="{tmpl_if name='content_filter' op='==' value='amavisd'}6{/tmpl_else}4{/tmpl_if}"><tmpl_var name="paging"></td> </tr> </tfoot> </table> diff --git a/interface/web/mail/templates/spamfilter_taglevel_edit.htm b/interface/web/mail/templates/spamfilter_taglevel_edit.htm index ba92662ba6..1b3c3b482c 100644 --- a/interface/web/mail/templates/spamfilter_taglevel_edit.htm +++ b/interface/web/mail/templates/spamfilter_taglevel_edit.htm @@ -4,7 +4,7 @@ <p><tmpl_var name="list_desc_txt"></p> - + <tmpl_if name='content_filter' op='==' value='amavisd'> <div class="form-group"> <label for="spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag_level_txt'}</label> <div class="col-sm-9"><input type="text" name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" class="form-control" /></div></div> @@ -32,6 +32,33 @@ <div class="form-group"> <label for="spam_subject_tag2" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag2_txt'}</label> <div class="col-sm-9"><input type="text" name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" class="form-control" /></div></div> + </tmpl_if> + <tmpl_if name='content_filter' op='==' value='rspamd'> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='rspamd_greylisting'} + </div> + </div> + <div class="form-group"> + <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_tag_level" id="rspamd_spam_tag_level" value="{tmpl_var name='rspamd_spam_tag_level'}" class="form-control" /></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_tag_method" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_method_txt'}</label> + <div class="col-sm-9"><select name="rspamd_spam_tag_method" id="rspamd_spam_tag_method" class="form-control"> + {tmpl_var name='rspamd_spam_tag_method'} + </select></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_kill_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_kill_level" id="rspamd_spam_kill_level" value="{tmpl_var name='rspamd_spam_kill_level'}" class="form-control" /></div> + </div> + </tmpl_if> <input type="hidden" name="id" value="{tmpl_var name='id'}"> @@ -39,4 +66,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index d533f7b3c0..94982a6dc1 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -74,6 +74,16 @@ </Directory> </IfModule> +{tmpl_if name="use_rspamd"} + <Location /rspamd> + Order allow,deny + Allow from all + </Location> + RewriteEngine On + RewriteRule ^/rspamd$ /rspamd/ [R,L] + RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P] +{/tmpl_if} + </VirtualHost> diff --git a/server/conf/autoresponder.master b/server/conf/autoresponder.master index 0126c998d4..114db23d64 100644 --- a/server/conf/autoresponder.master +++ b/server/conf/autoresponder.master @@ -4,7 +4,7 @@ if ($RETURNCODE==1) { if (!/^List-Unsubscribe:.*/:h ) { - if (!/^X-Spam-Flag: YES/:h ) + if (!/^(X-Spam-Flag: YES|X-Spam: Yes|Subject: \*\*\*\s*SPAM\s*\*\*\*.*)/:h ) { NOW=time if ({start_date} lt $NOW && {end_date} gt $NOW) diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index ed5e3a49ae..8a97f82a43 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -199,4 +199,29 @@ server { alias /var/lib/mailman/archives/public; autoindex on; } + + {use_rspamd}location /rspamd/ { + {use_rspamd}proxy_pass http://127.0.0.1:11334/; + {use_rspamd}rewrite ^//(.*) /$1; + {use_rspamd}proxy_set_header X-Forwarded-Proto $scheme; + {use_rspamd}proxy_set_header Host $host; + {use_rspamd}proxy_set_header X-Real-IP $remote_addr; + {use_rspamd}proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + {use_rspamd}proxy_pass_header Authorization; + {use_rspamd}client_max_body_size 0; + {use_rspamd}client_body_buffer_size 1m; + {use_rspamd}proxy_intercept_errors on; + {use_rspamd}proxy_buffering on; + {use_rspamd}proxy_buffer_size 128k; + {use_rspamd}proxy_buffers 256 16k; + {use_rspamd}proxy_busy_buffers_size 256k; + {use_rspamd}proxy_temp_file_write_size 256k; + {use_rspamd}proxy_max_temp_file_size 0; + {use_rspamd}proxy_read_timeout 300; + {use_rspamd} + {use_rspamd}location ~* ^/rspamd/(.+\.(jpg|jpeg|gif|css|png|js|ico|html?|xml|txt))$ { + {use_rspamd}alias /usr/share/rspamd/www/$1; + {use_rspamd}} + {use_rspamd}} + } diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master new file mode 100644 index 0000000000..18934c2760 --- /dev/null +++ b/server/conf/rspamd_users.inc.conf.master @@ -0,0 +1,41 @@ +spamfilter_users-<tmpl_var name='record_id'> { + priority = <tmpl_var name='priority'>; + <tmpl_if name='local' op='==' value='Y'>rcpt<tmpl_else>from</tmpl_if> = "<tmpl_var name='email'>"; +<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_virus_lover'> + want_spam = yes; +</tmpl_if> +<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_NOTvirus_lover'> + apply "default" { + CLAM_VIRUS = 1999.0; + JUST_EICAR = 1999.0; + actions { + reject = 999.0; + } + } +</tmpl_if> +<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_virus_lover'> + apply "default" { + CLAM_VIRUS = -999.0; + JUST_EICAR = -999.0; + actions { + <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> + + <tmpl_var name='rspamd_spam_tag_method'> = <tmpl_var name='rspamd_spam_tag_level'>; + reject = <tmpl_var name='rspamd_spam_kill_level'>; + } + } +</tmpl_if> +<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_NOTvirus_lover'> + apply "default" { + CLAM_VIRUS = <tmpl_var name='rspamd_virus_kill_level'>; + JUST_EICAR = <tmpl_var name='rspamd_virus_kill_level'>; + actions { + <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> + + <tmpl_var name='rspamd_spam_tag_method'> = <tmpl_var name='rspamd_spam_tag_level'>; + reject = <tmpl_var name='rspamd_spam_kill_level'>; + } + } +</tmpl_if> + +} \ No newline at end of file diff --git a/server/conf/rspamd_worker-controller.inc.master b/server/conf/rspamd_worker-controller.inc.master new file mode 100644 index 0000000000..75b744c883 --- /dev/null +++ b/server/conf/rspamd_worker-controller.inc.master @@ -0,0 +1,8 @@ +# Included from top-level .conf file + +type = "controller"; +count = 1; +password = "<tmpl_var name='rspamd_password'>"; +secure_ip = "127.0.0.1"; +secure_ip = "::1"; +static_dir = "${WWWDIR}"; \ No newline at end of file diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index 8e78c6c83a..13c08dd56b 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -1,4 +1,4 @@ -require ["fileinto", "regex", "vacation"]; +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="cc"> # Send a copy of email to @@ -9,7 +9,7 @@ redirect "<tmpl_var name='address'>"; <tmpl_if name="move_junk" op="==" value="y"> # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; @@ -26,7 +26,7 @@ keep; ################################################################# # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index b1f7fcb87d..5244693102 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -1,8 +1,8 @@ -require ["fileinto", "regex", "date", "relational", "vacation"]; +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="move_junk" op="==" value="y"> # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { fileinto "Junk"; # Stop here so that we do not reply on spams stop; @@ -26,7 +26,7 @@ keep; ################################################################# # Move spam to spam folder -if header :contains "X-Spam-Flag" "YES" { +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { # Stop here so that we do not reply on spams stop; } diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php index bc6d290145..14cbbb24e4 100644 --- a/server/mods-available/mail_module.inc.php +++ b/server/mods-available/mail_module.inc.php @@ -55,7 +55,14 @@ class mail_module { 'mail_content_filter_delete', 'mail_mailinglist_insert', 'mail_mailinglist_update', - 'mail_mailinglist_delete'); + 'mail_mailinglist_delete', + 'spamfilter_users_insert', + 'spamfilter_users_update', + 'spamfilter_users_delete', + 'spamfilter_wblist_insert', + 'spamfilter_wblist_update', + 'spamfilter_wblist_delete' + ); //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. @@ -102,7 +109,10 @@ class mail_module { $app->modules->registerTableHook('mail_get', 'mail_module', 'process'); $app->modules->registerTableHook('mail_content_filter', 'mail_module', 'process'); $app->modules->registerTableHook('mail_mailinglist', 'mail_module', 'process'); + $app->modules->registerTableHook('spamfilter_users', 'mail_module', 'process'); + $app->modules->registerTableHook('spamfilter_wblist', 'mail_module', 'process'); + $app->services->registerService('rspamd', 'mail_module', 'restartRspamd'); } /* @@ -154,9 +164,34 @@ class mail_module { if($action == 'u') $app->plugins->raiseEvent('mail_mailinglist_update', $data); if($action == 'd') $app->plugins->raiseEvent('mail_mailinglist_delete', $data); break; + case 'spamfilter_users': + if($action == 'i') $app->plugins->raiseEvent('spamfilter_users_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('spamfilter_users_update', $data); + if($action == 'd') $app->plugins->raiseEvent('spamfilter_users_delete', $data); + break; + case 'spamfilter_wblist': + if($action == 'i') $app->plugins->raiseEvent('spamfilter_wblist_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('spamfilter_wblist_update', $data); + if($action == 'd') $app->plugins->raiseEvent('spamfilter_wblist_delete', $data); + break; } // end switch } // end function + function restartRspamd($action = 'reload') { + global $app; + + $app->uses('system'); + + $daemon = 'rspamd'; + + $retval = array('output' => '', 'retval' => 0); + if($action == 'restart') { + exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); + } else { + exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); + } + return $retval; + } } // end class ?> diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index b843e3c8a4..32a62174ff 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -106,6 +106,16 @@ class apps_vhost_plugin { $vhost_port_listen = '#'; } $tpl->setVar('vhost_port_listen', $vhost_port_listen); + + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] == 'rspamd'){ + $use_rspamd = true; + exec('/usr/sbin/a2enmod proxy'); + exec('/usr/sbin/a2enmod proxy_http'); + } else { + $use_rspamd = false; + } + $tpl->setVar('use_rspamd', $use_rspamd); $content = $tpl->grab(); @@ -184,6 +194,14 @@ class apps_vhost_plugin { $content = str_replace('{use_tcp}', $use_tcp, $content); $content = str_replace('{use_socket}', $use_socket, $content); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] == 'rspamd'){ + $use_rspamd = ''; + } else { + $use_rspamd = '#'; + } + $content = str_replace('{use_rspamd}', $use_rspamd, $content); + // Fix socket path on PHP 7 systems if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); @@ -221,7 +239,3 @@ class apps_vhost_plugin { } // end class - - - -?> diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 6f042e9070..405691d130 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -104,6 +104,9 @@ class mail_plugin_dkim { function check_system($data) { global $app, $mail_config; + /** TODO: FIX IF ONLY RSPAMD IS INSTALLED AND NO AMAVIS! **/ + /** TODO: FIX DKIM FOR RSPAMD, RSPAMD CANNOT READ FILES OF amavis:root **/ + $app->uses('getconf'); $check=true; diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 2b0b1ba67b..bbd1c2546c 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -60,15 +60,11 @@ class postfix_server_plugin { Register for the events */ - $app->plugins->registerEvent('server_insert', 'postfix_server_plugin', 'insert'); - $app->plugins->registerEvent('server_update', 'postfix_server_plugin', 'update'); - - - + $app->plugins->registerEvent('server_insert', $this->plugin_name, 'insert'); + $app->plugins->registerEvent('server_update', $this->plugin_name, 'update'); } function insert($event_name, $data) { - global $app, $conf; $this->update($event_name, $data); @@ -116,7 +112,7 @@ class postfix_server_plugin { if($rbl_hosts != ''){ $rbl_hosts = explode(",", $rbl_hosts); } - $options = explode(", ", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $key => $value) { if (!preg_match('/reject_rbl_client/', $value)) { @@ -162,7 +158,8 @@ class postfix_server_plugin { } if($app->system->is_installed('dovecot')) { - $temp = exec("postconf -n virtual_transport", $out); + $out = null; + exec("postconf -n virtual_transport", $out); if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') { // If dovecot switch to lmtp if($out[0] != "virtual_transport = lmtp:unix:private/dovecot-lmtp") { @@ -182,12 +179,51 @@ class postfix_server_plugin { } } - exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); //TODO : no reload? - exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); //TODO : no reload? + if($mail_config['content_filter'] != $old_ini_data['mail']['content_filter']) { + if($mail_config['content_filter'] == 'rspamd'){ + exec("postconf -X 'receive_override_options'"); + exec("postconf -X 'content_filter'"); + + exec("postconf -e 'smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'non_smtpd_milters = inet:localhost:11332'"); + exec("postconf -e 'milter_protocol = 6'"); + exec("postconf -e 'milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}'"); + exec("postconf -e 'milter_default_action = accept'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); + + $new_options = array(); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + foreach ($options as $key => $value) { + if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + $new_options[] = $value; + } + } + exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + } + if($mail_config['content_filter'] == 'amavisd'){ + exec("postconf -X 'smtpd_milters'"); + exec("postconf -X 'milter_protocol'"); + exec("postconf -X 'milter_mail_macros'"); + exec("postconf -X 'milter_default_action'"); + + exec("postconf -e 'receive_override_options = no_address_mappings'"); + exec("postconf -e 'content_filter = amavis:[127.0.0.1]:10024'"); + + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); + } + } + if($mail_config['content_filter'] == 'rspamd' && ($mail_config['rspamd_password'] != $old_ini_data['mail']['rspamd_password'] || $mail_config['content_filter'] != $old_ini_data['mail']['content_filter'])) { + $tpl = new tpl(); + $tpl->newTemplate('rspamd_worker-controller.inc.master'); + $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); + $app->system->file_put_contents('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); + exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); + $app->services->restartServiceDelayed('postfix', 'reload'); } - } // end class - -?> diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php new file mode 100644 index 0000000000..65f4522ba7 --- /dev/null +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -0,0 +1,255 @@ +<?php + +/* +Copyright (c) 2018, Falko Timme, Timme Hosting GmbH & Co. KG +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. +*/ + +class rspamd_plugin { + + var $plugin_name = 'rspamd_plugin'; + var $class_name = 'rspamd_plugin'; + var $users_config_dir = '/etc/rspamd/local.d/users/'; + + //* This function is called during ispconfig installation to determine + // if a symlink shall be created for this plugin. + function onInstall() { + global $conf; + + if($conf['services']['mail'] == true) { + return true; + } else { + return false; + } + } + + /* + This function is called when the plugin is loaded + */ + + function onLoad() { + global $app; + + /* + Register for the events + */ + + //* spamfilter_users + $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'spamfilter_users_insert'); + $app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'spamfilter_users_update'); + $app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'spamfilter_users_delete'); + + //* spamfilter_wblist + $app->plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert'); + $app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update'); + $app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + + //* server ip + $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip'); + $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip'); + } + + function spamfilter_users_insert($event_name, $data) { + global $app, $conf; + + $this->action = 'insert'; + // just run the spamfilter_users_update function + $this->spamfilter_users_update($event_name, $data); + } + + function spamfilter_users_update($event_name, $data) { + global $app, $conf; + + // get the config + $app->uses('getconf,system,functions'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); + + //* Create the config file + $user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['new']['id']).'.conf'; + + if(is_array($policy) && !empty($policy)){ + if(!is_dir($this->users_config_dir)){ + $app->system->mkdirpath($this->users_config_dir); + } + + $app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.inc.conf.master'); + $tpl->setVar('record_id', intval($data['new']['id'])); + $tpl->setVar('priority', intval($data['new']['priority'])); + $tpl->setVar('email', $app->functions->idn_encode($data['new']['email'])); + $tpl->setVar('local', $data['new']['local']); + + $tpl->setVar('rspamd_greylisting', $policy['rspamd_greylisting']); + $tpl->setVar('rspamd_spam_greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); + + $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); + $tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']); + + $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); + $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); + + $spam_lover_virus_lover = ''; + if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'spam_lover_AND_virus_lover'; + if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'spam_lover_AND_NOTvirus_lover'; + if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_virus_lover'; + if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_NOTvirus_lover'; + + $tpl->setVar('spam_lover_virus_lover', $spam_lover_virus_lover); + + //$groups_disabled = array(); + //if($policy['virus_lover'] == 'Y') $groups_disabled[] = ''; + + $app->system->file_put_contents($user_file, $tpl->grab()); + } else { + if(is_file($user_file)) { + unlink($user_file); + } + } + + if($mail_config['content_filter'] == 'rspamd'){ + if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + function spamfilter_users_delete($event_name, $data) { + global $app, $conf; + + // get the config + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + //* delete the config file + $user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['old']['id']).'.conf'; + if(is_file($user_file)) unlink($user_file); + + } + + if($mail_config['content_filter'] == 'rspamd') { + if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + + function spamfilter_wblist_insert($event_name, $data) { + global $app, $conf; + + $this->action = 'insert'; + // just run the spamfilter_wblist_update function + $this->spamfilter_wblist_update($event_name, $data); + } + + function spamfilter_wblist_update($event_name, $data) { + global $app, $conf; + + $app->uses('getconf,system,functions'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + $recipient = $app->db->queryOneRecord("SELECT email FROM spamfilter_users WHERE id = ?", intval($data['new']['rid'])); + //* Create the config file + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['new']['wblist_id']).'.conf'; + + if($data['new']['active'] == 'y' && is_array($recipient) && !empty($recipient)){ + if(!is_dir($this->users_config_dir)){ + $app->system->mkdirpath($this->users_config_dir); + } + + $app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_wblist.inc.conf.master'); + $tpl->setVar('record_id', intval($data['new']['wblist_id'])); + $tpl->setVar('priority', intval($data['new']['priority'])); + $tpl->setVar('from', $app->functions->idn_encode($data['new']['email'])); + $tpl->setVar('recipient', $app->functions->idn_encode($recipient['email'])); + //$tpl->setVar('action', ($data['new']['wb'] == 'W'? 'want_spam = yes;' : 'action = "reject";')); + $tpl->setVar('wblist', $data['new']['wb']); + + $app->system->file_put_contents($wblist_file, $tpl->grab()); + } else { + if(is_file($wblist_file)) unlink($wblist_file); + } + + if($mail_config['content_filter'] == 'rspamd'){ + if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + function spamfilter_wblist_delete($event_name, $data) { + global $app, $conf; + + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + //* delete the config file + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['old']['wblist_id']).'.conf'; + if(is_file($wblist_file)) unlink($wblist_file); + + if($mail_config['content_filter'] == 'rspamd'){ + if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + + function server_ip($event_name, $data) { + global $app, $conf; + + // get the config + $app->uses("getconf,system"); + $app->load('tpl'); + + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + if(is_dir('/etc/rspamd')) { + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.conf.master'); + + $whitelist_ips = array(); + $ips = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); + if(is_array($ips) && !empty($ips)){ + foreach($ips as $ip){ + $whitelist_ips[] = array('ip' => $ip['ip_address']); + } + } + $tpl->setLoop('whitelist_ips', $whitelist_ips); + $app->system->file_put_contents('/etc/rspamd/local.d/users.conf', $tpl->grab()); + + if($mail_config['content_filter'] == 'rspamd'){ + $app->services->restartServiceDelayed('rspamd', 'reload'); + } + } + } + +} // end class -- GitLab From ae7c9c651284e1fd8d5d4de6a83a4622aa29c354 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Jul 2019 18:05:32 +0200 Subject: [PATCH 050/571] Set the same AllowOverride value for cgi-bin directory that is set for the website. --- server/conf/vhost.conf.master | 1 + 1 file changed, 1 insertion(+) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index ee7dcac076..75f6a72e87 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -215,6 +215,7 @@ <tmpl_if name='cgi' op='==' value='y'> # cgi enabled <Directory {tmpl_var name='document_root'}/cgi-bin> + AllowOverride <tmpl_var name='allow_override'> <tmpl_if name='apache_version' op='>' value='2.2' format='version'> Require all granted <tmpl_else> -- GitLab From 0d8f89bbff775b0c6d2ec243b4297d369193f54c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 8 Jul 2019 18:27:11 +0200 Subject: [PATCH 051/571] - added rspamd conditionals for mail dkim plugin --- install/lib/installer_base.lib.php | 6 + .../mail_plugin_dkim.inc.php | 188 +++++++++++------- 2 files changed, 118 insertions(+), 76 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7221dd7dec..7abd315b84 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1458,6 +1458,12 @@ class installer_base { exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); } + if(is_user('_rspamd') && is_group('amavis')) { + exec("usermod -G amavis _rspamd"); + } elseif(is_user('rspamd') && is_group('amavis')) { + exec("usermod -G amavis rspamd"); + } + if(!is_dir('/etc/rspamd/local.d/')){ mkdir('/etc/rspamd/local.d/', 0755, true); } diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 405691d130..ff649971a9 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -29,6 +29,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @author Florian Schaal, info@schaal-24.de + @author Marius Burkard, m.burkard@ispconfig.org (modified for rspamd) @copyright Florian Schaal, info@schaal-24.de */ @@ -59,8 +60,8 @@ class mail_plugin_dkim { /** * This function is called when the plugin is loaded */ - function onLoad() { - global $app, $conf; + public function onLoad() { + global $app; /* Register for the events */ @@ -73,7 +74,7 @@ class mail_plugin_dkim { * This function gets the amavisd-config file * @return string path to the amavisd-config for dkim-keys */ - function get_amavis_config() { + private function get_amavis_config() { $pos_config=array( '/etc/amavisd.conf/50-user', '/etc/amavis/conf.d/50-user', @@ -101,45 +102,59 @@ class mail_plugin_dkim { * @param array $data mail-settings * @return boolean - true when the amavis-config and the dkim-dir are writeable */ - function check_system($data) { - global $app, $mail_config; + private function check_system() { + global $app, $conf, $mail_config; - /** TODO: FIX IF ONLY RSPAMD IS INSTALLED AND NO AMAVIS! **/ - /** TODO: FIX DKIM FOR RSPAMD, RSPAMD CANNOT READ FILES OF amavis:root **/ - $app->uses('getconf'); - $check=true; - - /* check for amavis-config */ - $amavis_configfile = $this->get_amavis_config(); + $check = true; - //* Create the file if it does not exists. - if (substr_compare($amavis_configfile, '60-dkim', -7) === 0 && !file_exists($amavis_configfile)) - $app->system->touch($amavis_configfile); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if($mail_config['content_filter'] != 'rspamd') { + /* check for amavis-config */ + $amavis_configfile = $this->get_amavis_config(); - if ( $amavis_configfile == '' || !is_writeable($amavis_configfile) ) { - $app->log('Amavis-config not found or not writeable.', LOGLEVEL_ERROR); - $check=false; + //* Create the file if it does not exists. + if (substr_compare($amavis_configfile, '60-dkim', -7) === 0 && !file_exists($amavis_configfile)) { + $app->system->touch($amavis_configfile); + } + + if ( $amavis_configfile == '' || !is_writeable($amavis_configfile) ) { + $app->log('Amavis-config not found or not writeable.', LOGLEVEL_ERROR); + $check = false; + } } /* dir for dkim-keys writeable? */ - $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); if (isset($mail_config['dkim_path']) && !empty($mail_config['dkim_path']) && $mail_config['dkim_path'] != '/') { if (!is_dir($mail_config['dkim_path'])) { $app->log('DKIM Path '.$mail_config['dkim_path'].' not found - (re)created.', LOGLEVEL_DEBUG); if($app->system->is_user('amavis')) { $amavis_user='amavis'; + } elseif($app->system->is_user('_rspamd')) { + $amavis_user = '_rspamd'; + } elseif($app->system->is_user('rspamd')) { + $amavis_user = 'rspamd'; } elseif ($app->system->is_user('vscan')) { - $amavis_user='vscan'; + $amavis_user = 'vscan'; + } else { + $amavis_user = ''; } - else { - $amavis_user=''; + if($app->system->is_user('amavis')) { + $amavis_group='amavis'; + } elseif($app->system->is_user('_rspamd')) { + $amavis_group = '_rspamd'; + } elseif($app->system->is_user('rspamd')) { + $amavis_group = 'rspamd'; + } elseif ($app->system->is_user('vscan')) { + $amavis_group = 'vscan'; + } else { + $amavis_group = ''; } + if(!empty($amavis_user)) { - mkdir($mail_config['dkim_path'], 0750, true); - $app->system->chown($mail_config['dkim_path'], $amavis_user); + $app->system->mkdirpath($mail_config['dkim_path'], 0750, $amavis_user, $amavis_group); } else { - mkdir($mail_config['dkim_path'], 0755, true); + $app->system->mkdirpath($mail_config['dkim_path'], 0755); $app->log('No user amavis or vscan found - using root for '.$mail_config['dkim_path'], LOGLEVEL_WARNING); } } else { @@ -169,12 +184,15 @@ class mail_plugin_dkim { /** * This function restarts amavis */ - function restart_amavis() { + private function restart_amavis() { global $app; + $output = null; $initcommand = $app->system->getinitcommand(array('amavis', 'amavisd'), 'restart'); $app->log('Restarting amavis: '.$initcommand.'.', LOGLEVEL_DEBUG); exec($initcommand, $output); - foreach($output as $logline) $app->log($logline, LOGLEVEL_DEBUG); + foreach($output as $logline) { + $app->log($logline, LOGLEVEL_DEBUG); + } } /** @@ -184,8 +202,8 @@ class mail_plugin_dkim { * @param string $key_domain mail-domain * @return bool - true when the private key was written to disk */ - function write_dkim_key($key_file, $key_value, $key_domain) { - global $app, $mailconfig; + private function write_dkim_key($key_file, $key_value, $key_domain) { + global $app; $success=false; if ($key_file == '' || $key_value == '' || $key_domain == '') { $app->log('DKIM internal error for domain '.$key_domain, LOGLEVEL_ERROR); @@ -194,14 +212,20 @@ class mail_plugin_dkim { if ( $app->system->file_put_contents($key_file.'.private', $key_value) ) { $app->log('Saved DKIM Private-key to '.$key_file.'.private', LOGLEVEL_DEBUG); $success=true; + $pubkey = null; + $result = 0; /* now we get the DKIM Public-key */ exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout 2> /dev/null', $pubkey, $result); $public_key=''; - foreach($pubkey as $values) $public_key=$public_key.$values."\n"; + foreach($pubkey as $values) { + $public_key = $public_key . $values . "\n"; + } /* save the DKIM Public-key in dkim-dir */ - if ( $app->system->file_put_contents($key_file.'.public', $public_key) ) + if($app->system->file_put_contents($key_file.'.public', $public_key)) { $app->log('Saved DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); - else $app->log('Unable to save DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to save DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG); + } } else { $app->log('Unable to save DKIM Private-key to '.$key_file.'.private', LOGLEVEL_ERROR); } @@ -213,26 +237,32 @@ class mail_plugin_dkim { * @param string $key_file full path to the key-file * @param string $key_domain mail-domain */ - function remove_dkim_key($key_file, $key_domain) { + private function remove_dkim_key($key_file, $key_domain) { global $app; if (file_exists($key_file.'.private')) { $app->system->unlink($key_file.'.private'); $app->log('Deleted the DKIM Private-key for '.$key_domain.'.', LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } if (file_exists($key_file.'.public')) { $app->system->unlink($key_file.'.public'); $app->log('Deleted the DKIM Public-key for '.$key_domain.'.', LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } else { + $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).', LOGLEVEL_DEBUG); + } } /** * This function adds the entry to the amavisd-config * @param string $key_domain mail-domain */ - function add_to_amavis($key_domain, $selector, $old_selector) { + private function add_to_amavis($key_domain, $selector, $old_selector) { global $app, $mail_config; - if (empty($selector)) $selector = 'default'; + if (empty($selector)) { + $selector = 'default'; + } $restart = false; $amavis_configfile = $this->get_amavis_config(); @@ -270,7 +300,7 @@ class mail_plugin_dkim { * This function removes the entry from the amavisd-config * @param string $key_domain mail-domain */ - function remove_from_amavis($key_domain) { + private function remove_from_amavis($key_domain) { global $app; $restart = false; @@ -308,14 +338,17 @@ class mail_plugin_dkim { * This function controlls new key-files and amavisd-entries * @param array $data mail-settings */ - function add_dkim($data) { - global $app; + private function add_dkim($data) { + global $app, $conf; if ($data['new']['active'] == 'y') { $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'], $data['new']['dkim_private'], $data['new']['domain'])) { - if ($this->add_to_amavis($data['new']['domain'], $data['new']['dkim_selector'], $data['old']['dkim_selector'] )) { + if($mail_config['content_filter'] == 'rspamd') { + $app->services->restartServiceDelayed('rspamd', 'reload'); + } elseif ($this->add_to_amavis($data['new']['domain'], $data['new']['dkim_selector'], $data['old']['dkim_selector'] )) { $this->restart_amavis(); } else { $this->remove_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'], $data['new']['domain']); @@ -329,86 +362,89 @@ class mail_plugin_dkim { /** * This function controlls the removement of keyfiles (public and private) * and the entry in the amavisd-config - * @param array $data mail-settings + * @param array $_data mail-settings */ - function remove_dkim($_data) { - global $app; + private function remove_dkim($_data) { + global $app, $conf; $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } $this->remove_dkim_key($mail_config['dkim_path']."/".$_data['domain'], $_data['domain']); - if ($this->remove_from_amavis($_data['domain'])) + + if($mail_config['content_filter'] == 'rspamd') { + $app->services->restartServiceDelayed('rspamd', 'reload'); + } elseif ($this->remove_from_amavis($_data['domain'])) { $this->restart_amavis(); + } } /** * Function called by onLoad * deletes dkim-keys */ - function domain_dkim_delete($event_name, $data) { - if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y' && $data['old']['active'] == 'y') + public function domain_dkim_delete($event_name, $data) { + if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y' && $data['old']['active'] == 'y') { $this->remove_dkim($data['old']); + } } /** * Function called by onLoad * insert dkim-keys */ - function domain_dkim_insert($event_name, $data) { - if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system($data)) + public function domain_dkim_insert($event_name, $data) { + if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system()) { $this->add_dkim($data); + } } /** * Function called by onLoad * chang dkim-settings */ - function domain_dkim_update($event_name, $data) { + public function domain_dkim_update($event_name, $data) { global $app; if($data['new']['dkim'] == 'y' || $data['old']['dkim'] == 'y'){ - if ($this->check_system($data)) { + if ($this->check_system()) { /* maildomain disabled */ if ($data['new']['active'] == 'n' && $data['old']['active'] == 'y' && $data['new']['dkim']=='y') { $app->log('Maildomain '.$data['new']['domain'].' disabled - remove DKIM-settings', LOGLEVEL_DEBUG); $this->remove_dkim($data['new']); } /* maildomain re-enabled */ - if ($data['new']['active'] == 'y' && $data['old']['active'] == 'n' && $data['new']['dkim']=='y') + if ($data['new']['active'] == 'y' && $data['old']['active'] == 'n' && $data['new']['dkim']=='y') { $this->add_dkim($data); - + } + /* maildomain active - only dkim changes */ if ($data['new']['active'] == 'y' && $data['old']['active'] == 'y') { /* dkim disabled */ if ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'n') { $this->remove_dkim($data['new']); } - /* dkim enabled */ - elseif ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'y') { - $this->add_dkim($data); - } - /* new private-key */ - if ($data['new']['dkim_private'] != $data['old']['dkim_private'] && $data['new']['dkim'] == 'y') { - $this->add_dkim($data); - } - /* new selector */ - if ($data['new']['dkim_selector'] != $data['old']['dkim_selector'] && $data['new']['dkim'] == 'y') { + /* dkim enabled + * or new private-key + * or new selector + * or new domain-name + */ + elseif ( + ($data['new']['dkim'] != $data['old']['dkim'] && $data['new']['dkim'] == 'y') + || ($data['new']['dkim_private'] != $data['old']['dkim_private'] && $data['new']['dkim'] == 'y') + || ($data['new']['dkim_selector'] != $data['old']['dkim_selector'] && $data['new']['dkim'] == 'y') + || ($data['new']['domain'] != $data['old']['domain']) + ) { + if ($data['new']['domain'] != $data['old']['domain']) { + $this->remove_dkim($data['old']); + } $this->add_dkim($data); } - /* new domain-name */ - if ($data['new']['domain'] != $data['old']['domain']) { - $this->remove_dkim($data['old']); + /* resync */ + elseif($data['new'] == $data['old'] && $data['new']['dkim']=='y') { $this->add_dkim($data); } } - - /* resync */ - if ($data['new']['active'] == 'y' && $data['new'] == $data['old'] && $data['new']['dkim']=='y') { - $this->add_dkim($data); - } } } } - } - -?> -- GitLab From 938676a4ade832320c903deb20c90121e1a839e5 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Jul 2019 20:48:03 +0200 Subject: [PATCH 052/571] Fixed error in internal cron system. --- server/cron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/cron.php b/server/cron.php index ba59ff4049..5e66f51a96 100644 --- a/server/cron.php +++ b/server/cron.php @@ -69,7 +69,7 @@ $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions,plugins'); $app->load('libdatetime,cronjob'); // read all cron jobs -- GitLab From cc8a3e8aae815c62b72fb9ba36ada041fba0e31c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 8 Jul 2019 21:32:49 +0200 Subject: [PATCH 053/571] Missed to remove swriteln function in monitor lib/classes/monitor_tools.inc.php --- server/lib/classes/monitor_tools.inc.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index a15514fd72..1d3dab290b 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -217,21 +217,18 @@ class monitor_tools { $distconfid = 'debian100'; $distid = 'debian60'; $distbaseid = 'debian'; - swriteln("Operating System: Debian 10.0 (Buster) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; $distver = 'Testing'; $distid = 'debian60'; $distconfid = 'debiantesting'; $distbaseid = 'debian'; - swriteln("Operating System: Debian Testing\n"); } else { $distname = 'Debian'; $distver = 'Unknown'; $distid = 'debian60'; $distconfid = 'debian100'; $distbaseid = 'debian'; - swriteln("Operating System: Debian or compatible, unknown version.\n"); } } -- GitLab From 13a54746407ec7bd0d8faefa5c2750ec99da1f91 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jul 2019 11:42:45 +0200 Subject: [PATCH 054/571] - fixed cron lockfile check, fixes #5334 --- server/cron.php | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/server/cron.php b/server/cron.php index ba59ff4049..d82abd3718 100644 --- a/server/cron.php +++ b/server/cron.php @@ -33,21 +33,28 @@ require SCRIPT_PATH."/lib/config.inc.php"; // Check whether another instance of this script is already running $lockFile = $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'; -if (is_file($lockFile)) { +if(is_file($lockFile)) { clearstatcache(); - - // Maybe we hit a deadlock and the lock file is no longer relevant - if(filemtime($lockFile) > time() - 86400) { // 86400 seconds = 1 day - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - The cron lock file is older than one day.' . "\n"; - exit; - } - - // Check if the process id we have in the lock file is still present + +// Check if the process id we have in the lock file is still present $pid = trim(file_get_contents($lockFile)); if(preg_match('/^[0-9]+$/', $pid)) { - if(file_exists('/proc/' . $pid)) { - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of server.php running with pid ' . $pid . '.' . "\n"; - exit; + if(is_dir('/proc/' . $pid)) { + if(file_exists('/proc/' . $pid . '/cmdline')) { + if(strpos(file_get_contents('/proc/' . $pid . '/cmdline'), 'cron.php') !== false) { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . '.' . "\n"; + exit; + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is a process running with pid ' . $pid . ' but it seems not to be cron.php, continuing.' . "\n"; + } + } else { + if(filemtime($lockFile) < time() - 86400) { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . ' but process is older than 1 day. Continuing.' . "\n"; + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already an instance of cron.php running with pid ' . $pid . '.' . "\n"; + exit; + } + } } } if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already a lockfile set, but no process running with this pid (' . $pid . '). Continuing.' . "\n"; -- GitLab From ab82c4dd7d2fabb57f11f9a8a73259be4b2cc66c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jul 2019 13:30:50 +0200 Subject: [PATCH 055/571] - addition for previous commit (moving warning message) --- server/cron.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/cron.php b/server/cron.php index 6d7aa49785..ef13d06e2f 100644 --- a/server/cron.php +++ b/server/cron.php @@ -55,9 +55,11 @@ if(is_file($lockFile)) { exit; } } + } else { + if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already a lockfile set, but no process running with this pid (' . $pid . '). Continuing.' . "\n"; + } } - if($conf['log_priority'] <= LOGLEVEL_WARN) print @date('d.m.Y-H:i').' - WARNING - There is already a lockfile set, but no process running with this pid (' . $pid . '). Continuing.' . "\n"; } // Set Lockfile -- GitLab From e9c89a7a051bee0706820079e80aae310dfdd59d Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 10 Jul 2019 18:03:46 +0200 Subject: [PATCH 056/571] - fixed missing tpl class loading --- server/plugins-available/postfix_server_plugin.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index bbd1c2546c..4ed25fd5d1 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -215,6 +215,8 @@ class postfix_server_plugin { } if($mail_config['content_filter'] == 'rspamd' && ($mail_config['rspamd_password'] != $old_ini_data['mail']['rspamd_password'] || $mail_config['content_filter'] != $old_ini_data['mail']['content_filter'])) { + $app->load('tpl'); + $tpl = new tpl(); $tpl->newTemplate('rspamd_worker-controller.inc.master'); $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); -- GitLab From 7f9a53e50c003c6c1c700340f4fa729ec1139070 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 12 Jul 2019 15:55:34 +0200 Subject: [PATCH 057/571] - missing rspamd conf file on update --- install/tpl/rspamd_wblist.inc.conf.master | 19 +------------------ server/conf/rspamd_wblist.inc.conf.master | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 18 deletions(-) mode change 100644 => 120000 install/tpl/rspamd_wblist.inc.conf.master create mode 100644 server/conf/rspamd_wblist.inc.conf.master diff --git a/install/tpl/rspamd_wblist.inc.conf.master b/install/tpl/rspamd_wblist.inc.conf.master deleted file mode 100644 index fc06127eae..0000000000 --- a/install/tpl/rspamd_wblist.inc.conf.master +++ /dev/null @@ -1,18 +0,0 @@ -spamfilter_wblist-<tmpl_var name='record_id'> { - priority = <tmpl_var name='priority'>; - from = "<tmpl_var name='from'>"; - rcpt = "<tmpl_var name='recipient'>"; -<tmpl_if name='wblist' op='==' value='W'> - want_spam = yes; -</tmpl_else> - apply "default" { - R_DUMMY = 999.0; - actions { - reject = 0.2; - add_header = 0.1; - greylist = 0.1; - rewrite_subject = 0.1; - } - } -</tmpl_if> -} \ No newline at end of file diff --git a/install/tpl/rspamd_wblist.inc.conf.master b/install/tpl/rspamd_wblist.inc.conf.master new file mode 120000 index 0000000000..1ab3744b99 --- /dev/null +++ b/install/tpl/rspamd_wblist.inc.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_wblist.inc.conf.master \ No newline at end of file diff --git a/server/conf/rspamd_wblist.inc.conf.master b/server/conf/rspamd_wblist.inc.conf.master new file mode 100644 index 0000000000..fc06127eae --- /dev/null +++ b/server/conf/rspamd_wblist.inc.conf.master @@ -0,0 +1,18 @@ +spamfilter_wblist-<tmpl_var name='record_id'> { + priority = <tmpl_var name='priority'>; + from = "<tmpl_var name='from'>"; + rcpt = "<tmpl_var name='recipient'>"; +<tmpl_if name='wblist' op='==' value='W'> + want_spam = yes; +</tmpl_else> + apply "default" { + R_DUMMY = 999.0; + actions { + reject = 0.2; + add_header = 0.1; + greylist = 0.1; + rewrite_subject = 0.1; + } + } +</tmpl_if> +} \ No newline at end of file -- GitLab From 49d521e9147ca3e54ed79c6e7991224eef8b810f Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 12 Jul 2019 17:48:41 +0200 Subject: [PATCH 058/571] Fixed #5341 CSS Styles do not load in ISPConfig UI when no SSL is used --- install/tpl/apache_ispconfig.vhost.master | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 55135299f1..d8c56de22d 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -89,11 +89,11 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> <IfModule mod_headers.c> # 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" + <tmpl_var name="ssl_comment">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" + <tmpl_var name="ssl_comment">Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" <IfVersion >= 2.4.7> Header setifempty Strict-Transport-Security "max-age=15768000" </IfVersion> -- GitLab From f5b9582436f59cd6262525330ef003a7907f1a02 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 12 Jul 2019 18:31:50 +0200 Subject: [PATCH 059/571] - use crypted password for rspamd UI if possible --- server/plugins-available/postfix_server_plugin.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 4ed25fd5d1..763a89b4b4 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -217,9 +217,15 @@ class postfix_server_plugin { if($mail_config['content_filter'] == 'rspamd' && ($mail_config['rspamd_password'] != $old_ini_data['mail']['rspamd_password'] || $mail_config['content_filter'] != $old_ini_data['mail']['content_filter'])) { $app->load('tpl'); + $rspamd_password = $mail_config['rspamd_password']; + $crypted_password = trim(exec('rspamadm pw -p ' . escapeshellarg($rspamd_password))); + if($crypted_password) { + $rspamd_password = $crypted_password; + } + $tpl = new tpl(); $tpl->newTemplate('rspamd_worker-controller.inc.master'); - $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); + $tpl->setVar('rspamd_password', $rspamd_password); $app->system->file_put_contents('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); $app->services->restartServiceDelayed('rspamd', 'reload'); } -- GitLab From eae236864fddd9753da68d0dbac622ff68aac55e Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 15 Jul 2019 17:09:30 +0200 Subject: [PATCH 060/571] Fixed #5340 Debian 10 warnings about deprecated dovecot config and missing dh params file. --- install/dist/lib/debian60.lib.php | 26 ++++++++++++++++++++++++ install/tpl/debian6_dovecot2.conf.master | 2 ++ 2 files changed, 28 insertions(+) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 0cd7116568..022d358932 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -116,6 +116,32 @@ class installer extends installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } } else { if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian6_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian6_dovecot.conf.master', $config_dir.'/'.$configfile); diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index db6e0bfbe2..f13bbd53df 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -6,7 +6,9 @@ log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key +ssl_dh = </etc/dovecot/dh.pem ssl_protocols = !SSLv2 !SSLv3 +ssl_min_protocol = TLSv1 mail_max_userip_connections = 100 passdb { args = /etc/dovecot/dovecot-sql.conf -- GitLab From 536e907f55e0405398e70203bc4e1d319162d45b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Jul 2019 18:39:50 +0200 Subject: [PATCH 061/571] - implemented per-domain-dkim, including custom selector --- install/lib/installer_base.lib.php | 14 ++++++++++++++ install/tpl/rspamd_dkim_signing.conf.master | 5 +++-- server/lib/classes/system.inc.php | 18 ++++++++++++++++-- .../plugins-available/mail_plugin_dkim.inc.php | 5 +++++ .../postfix_server_plugin.inc.php | 15 +++++++++++++++ 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7abd315b84..4024e544b7 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1456,6 +1456,20 @@ class installer_base { } } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { + $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } + $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); + $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); + $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); + foreach($dkim_domains as $dkim_domain) { + fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector']); + } + fclose($fpp); + fclose($fps); + unset($dkim_domains); } if(is_user('_rspamd') && is_group('amavis')) { diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master index 0e55a7ead2..a27ee78f91 100644 --- a/install/tpl/rspamd_dkim_signing.conf.master +++ b/install/tpl/rspamd_dkim_signing.conf.master @@ -1,2 +1,3 @@ -path = "<tmpl_var name='dkim_path'>/$domain.private"; -selector = "default"; \ No newline at end of file +try_fallback = false; +path_map = "/etc/rspamd/local.d/dkim_domains.map"; +selector_map = "/etc/rspamd/local.d/dkim_selectors.map";"; \ No newline at end of file diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 5c277ada1a..304701a5f2 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1535,7 +1535,14 @@ class system{ $found = 0; if(is_array($lines)) { foreach($lines as $line) { - if($strict == 0) { + if($strict == 0 && preg_match('/^REGEX:(.*)$/', $search_pattern)) { + if(preg_match(substr($search_pattern, 6), $line)) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } elseif($strict == 0) { if(stristr($line, $search_pattern)) { $out .= $new_line."\n"; $found = 1; @@ -1573,7 +1580,14 @@ class system{ if($lines = @file($filename)) { $out = ''; foreach($lines as $line) { - if($strict == 0) { + if($strict == 0 && preg_match('/^REGEX:(.*)$/', $search_pattern)) { + if(preg_match(substr($search_pattern, 6), $line)) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } elseif($strict == 0) { if(!stristr($line, $search_pattern)) { $out .= $line; } diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index ff649971a9..ebfd6c0ac7 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -347,6 +347,9 @@ class mail_plugin_dkim { } if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'], $data['new']['dkim_private'], $data['new']['domain'])) { if($mail_config['content_filter'] == 'rspamd') { + $app->system->replaceLine('/etc/rspamd/local.d/dkim_domains.map', 'REGEX:/^' . preg_quote($data['new']['domain'], '/') . ' /', $data['new']['domain'] . ' ' . $mail_config['dkim_path']."/".$data['new']['domain'] . '.private'); + $app->system->replaceLine('/etc/rspamd/local.d/dkim_selectors.map', 'REGEX:/^' . preg_quote($data['new']['domain'], '/') . ' /', $data['new']['domain'] . ' ' . $data['new']['dkim_selector']); + $app->services->restartServiceDelayed('rspamd', 'reload'); } elseif ($this->add_to_amavis($data['new']['domain'], $data['new']['dkim_selector'], $data['old']['dkim_selector'] )) { $this->restart_amavis(); @@ -373,6 +376,8 @@ class mail_plugin_dkim { $this->remove_dkim_key($mail_config['dkim_path']."/".$_data['domain'], $_data['domain']); if($mail_config['content_filter'] == 'rspamd') { + $app->system->removeLine('/etc/rspamd/local.d/dkim_domains.map', 'REGEX:/^' . preg_quote($_data['domain'], '/') . ' /'); + $app->system->removeLine('/etc/rspamd/local.d/dkim_selectors.map', 'REGEX:/^' . preg_quote($_data['domain'], '/') . ' /'); $app->services->restartServiceDelayed('rspamd', 'reload'); } elseif ($this->remove_from_amavis($_data['domain'])) { $this->restart_amavis(); diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 763a89b4b4..933db86b3b 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -200,6 +200,21 @@ class postfix_server_plugin { } } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + + // get all domains that have dkim enabled + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { + $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } + $dkim_domains = $app->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); + $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); + $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); + foreach($dkim_domains as $dkim_domain) { + fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector']); + } + fclose($fpp); + fclose($fps); + unset($dkim_domains); } if($mail_config['content_filter'] == 'amavisd'){ exec("postconf -X 'smtpd_milters'"); -- GitLab From 3d54268ee21a4351d45f94090526758e01824b77 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Jul 2019 18:51:10 +0200 Subject: [PATCH 062/571] - problem with missing newlines from previous commit --- install/lib/installer_base.lib.php | 27 ++++++++++--------- .../postfix_server_plugin.inc.php | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 4024e544b7..f752b693d0 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1457,19 +1457,6 @@ class installer_base { } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); - if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { - $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); - } - $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); - $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); - $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); - foreach($dkim_domains as $dkim_domain) { - fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); - fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector']); - } - fclose($fpp); - fclose($fps); - unset($dkim_domains); } if(is_user('_rspamd') && is_group('amavis')) { @@ -1485,6 +1472,20 @@ class installer_base { if(!is_dir('/etc/rspamd/override.d/')){ mkdir('/etc/rspamd/override.d/', 0755, true); } + + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { + $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); + } + $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); + $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); + $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); + foreach($dkim_domains as $dkim_domain) { + fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector'] . "\n"); + } + fclose($fpp); + fclose($fps); + unset($dkim_domains); $tpl = new tpl(); $tpl->newTemplate('rspamd_users.conf.master'); diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 933db86b3b..f66fc40d42 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -210,7 +210,7 @@ class postfix_server_plugin { $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); foreach($dkim_domains as $dkim_domain) { fwrite($fpp, $dkim_domain['domain'] . ' ' . $mail_config['dkim_path'] . '/' . $dkim_domain['domain'] . '.private' . "\n"); - fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector']); + fwrite($fps, $dkim_domain['domain'] . ' ' . $dkim_domain['dkim_selector'] . "\n"); } fclose($fpp); fclose($fps); -- GitLab From 0f15aff2403e6ec8270607e4ce880908833ea644 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Jul 2019 18:59:08 +0200 Subject: [PATCH 063/571] - added missing database name set on update of ISPConfig --- install/update.php | 1 + 1 file changed, 1 insertion(+) diff --git a/install/update.php b/install/update.php index 42ddd625f5..b700219f2e 100644 --- a/install/update.php +++ b/install/update.php @@ -253,6 +253,7 @@ prepareDBDump(); //* initialize the database $inst->db = new db(); +$inst->db->setDBName($conf['mysql']['database']); //* initialize the master DB, if we have a multiserver setup if($conf['mysql']['master_slave_setup'] == 'y') { -- GitLab From 66357f0779da7af83fe1d8310849672db5b08df6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Jul 2019 19:05:45 +0200 Subject: [PATCH 064/571] - still problem with domain selector on update of ISPC --- install/lib/installer_base.lib.php | 2 +- install/update.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index f752b693d0..4db0da1ecf 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1476,7 +1476,7 @@ class installer_base { if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); } - $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM `mail_domain` WHERE `dkim` = ? ORDER BY `domain` ASC', 'y'); + $dkim_domains = $this->db->queryAllRecords('SELECT `dkim_selector`, `domain` FROM ?? WHERE `dkim` = ? ORDER BY `domain` ASC', $conf['mysql']['database'] . '.mail_domain', 'y'); $fpp = fopen('/etc/rspamd/local.d/dkim_domains.map', 'w'); $fps = fopen('/etc/rspamd/local.d/dkim_selectors.map', 'w'); foreach($dkim_domains as $dkim_domain) { diff --git a/install/update.php b/install/update.php index b700219f2e..42ddd625f5 100644 --- a/install/update.php +++ b/install/update.php @@ -253,7 +253,6 @@ prepareDBDump(); //* initialize the database $inst->db = new db(); -$inst->db->setDBName($conf['mysql']['database']); //* initialize the master DB, if we have a multiserver setup if($conf['mysql']['master_slave_setup'] == 'y') { -- GitLab From 78041c8dff476bca0d75d57bdadfe881f4d40512 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 15 Jul 2019 19:09:02 +0200 Subject: [PATCH 065/571] - syntax error in config for rspamd dkim --- install/tpl/rspamd_dkim_signing.conf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tpl/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master index a27ee78f91..ed9abe40ee 100644 --- a/install/tpl/rspamd_dkim_signing.conf.master +++ b/install/tpl/rspamd_dkim_signing.conf.master @@ -1,3 +1,3 @@ try_fallback = false; path_map = "/etc/rspamd/local.d/dkim_domains.map"; -selector_map = "/etc/rspamd/local.d/dkim_selectors.map";"; \ No newline at end of file +selector_map = "/etc/rspamd/local.d/dkim_selectors.map"; \ No newline at end of file -- GitLab From 1eb51aa6feb069c3ff969b95d1e452abae916f78 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 18 Jul 2019 11:00:53 +0200 Subject: [PATCH 066/571] - fixed white/blacklisting for rspamd --- install/lib/update.lib.php | 2 +- server/conf/rspamd_users.inc.conf.master | 16 ++++++++-------- server/conf/rspamd_wblist.inc.conf.master | 14 +++++++++++--- server/plugins-available/rspamd_plugin.inc.php | 3 ++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 3406b760b0..fd1a34b2ca 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -103,7 +103,7 @@ function checkDbHealth() { $notok = array(); echo "Checking ISPConfig database .. "; - exec("mysqlcheck -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -r ".escapeshellarg($conf["mysql"]["database"]), $result); + exec("mysqlcheck -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." --auto-repair ".escapeshellarg($conf["mysql"]["database"]), $result); for( $i=0; $i<sizeof($result);$i++) { if ( substr($result[$i], -2) != "OK" ) { $notok[] = $result[$i]; diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master index 18934c2760..43890e8135 100644 --- a/server/conf/rspamd_users.inc.conf.master +++ b/server/conf/rspamd_users.inc.conf.master @@ -5,34 +5,34 @@ spamfilter_users-<tmpl_var name='record_id'> { want_spam = yes; </tmpl_if> <tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_NOTvirus_lover'> - apply "default" { + apply { CLAM_VIRUS = 1999.0; JUST_EICAR = 1999.0; actions { - reject = 999.0; + reject = null; } } </tmpl_if> <tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_virus_lover'> - apply "default" { + apply { CLAM_VIRUS = -999.0; JUST_EICAR = -999.0; actions { <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> - - <tmpl_var name='rspamd_spam_tag_method'> = <tmpl_var name='rspamd_spam_tag_level'>; + <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> + <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> reject = <tmpl_var name='rspamd_spam_kill_level'>; } } </tmpl_if> <tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_NOTvirus_lover'> - apply "default" { + apply { CLAM_VIRUS = <tmpl_var name='rspamd_virus_kill_level'>; JUST_EICAR = <tmpl_var name='rspamd_virus_kill_level'>; actions { <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> - - <tmpl_var name='rspamd_spam_tag_method'> = <tmpl_var name='rspamd_spam_tag_level'>; + <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> + <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> reject = <tmpl_var name='rspamd_spam_kill_level'>; } } diff --git a/server/conf/rspamd_wblist.inc.conf.master b/server/conf/rspamd_wblist.inc.conf.master index fc06127eae..aaa7d06f67 100644 --- a/server/conf/rspamd_wblist.inc.conf.master +++ b/server/conf/rspamd_wblist.inc.conf.master @@ -4,14 +4,22 @@ spamfilter_wblist-<tmpl_var name='record_id'> { rcpt = "<tmpl_var name='recipient'>"; <tmpl_if name='wblist' op='==' value='W'> want_spam = yes; + apply { + actions { + reject = null; + "add header" = null; + greylist = null; + "rewrite subject" = null; + } + } </tmpl_else> - apply "default" { + apply { R_DUMMY = 999.0; actions { reject = 0.2; - add_header = 0.1; + "add header" = 0.1; greylist = 0.1; - rewrite_subject = 0.1; + "rewrite subject" = 0.1; } } </tmpl_if> diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 65f4522ba7..b6eddc401f 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -189,7 +189,8 @@ class rspamd_plugin { $tpl = new tpl(); $tpl->newTemplate('rspamd_wblist.inc.conf.master'); $tpl->setVar('record_id', intval($data['new']['wblist_id'])); - $tpl->setVar('priority', intval($data['new']['priority'])); + // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists + $tpl->setVar('priority', intval($data['new']['priority']) + 10); $tpl->setVar('from', $app->functions->idn_encode($data['new']['email'])); $tpl->setVar('recipient', $app->functions->idn_encode($recipient['email'])); //$tpl->setVar('action', ($data['new']['wb'] == 'W'? 'want_spam = yes;' : 'action = "reject";')); -- GitLab From f343e169a2afda4512cf64d98b074ded71fbe532 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 23 Jul 2019 19:32:22 +0200 Subject: [PATCH 067/571] Insufficient escaping of whitespace in FTP user paths, fixes #5350 --- interface/web/sites/form/ftp_user.tform.php | 5 ++++- server/plugins-available/ftpuser_base_plugin.inc.php | 6 ++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index 239bfdb858..5e77de4b5f 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -276,7 +276,10 @@ if($app->auth->is_admin()) { 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'directory_error_empty'), - 1 => array ( 'type' => 'CUSTOM', + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', + 'errmsg'=> 'directory_error_regex'), + 2 => array ( 'type' => 'CUSTOM', 'class' => 'validate_ftpuser', 'function' => 'ftp_dir', 'errmsg' => 'directory_error_notinweb'), diff --git a/server/plugins-available/ftpuser_base_plugin.inc.php b/server/plugins-available/ftpuser_base_plugin.inc.php index af5870a4ba..c34371a181 100644 --- a/server/plugins-available/ftpuser_base_plugin.inc.php +++ b/server/plugins-available/ftpuser_base_plugin.inc.php @@ -83,8 +83,7 @@ class ftpuser_base_plugin { } $app->system->web_folder_protection($web['document_root'], false); - exec('mkdir -p '.escapeshellcmd($data['new']['dir'])); - exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']); + $app->system->mkdirpath($data['new']['dir'], 0755, $web["system_user"], $web["system_group"]); $app->system->web_folder_protection($web['document_root'], true); $app->log("Added ftpuser_dir: ".$data['new']['dir'], LOGLEVEL_DEBUG); @@ -109,8 +108,7 @@ class ftpuser_base_plugin { } $app->system->web_folder_protection($web['document_root'], false); - exec('mkdir -p '.escapeshellcmd($data['new']['dir'])); - exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']); + $app->system->mkdirpath($data['new']['dir'], 0755, $web["system_user"], $web["system_group"]); $app->system->web_folder_protection($web['document_root'], true); -- GitLab From 2d6d9eb4ffaaf5371ecfba1734ab1f86873013ea Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sat, 27 Jul 2019 21:18:24 +0200 Subject: [PATCH 068/571] - Support CRYPT-SHA512 and SHA256 for passwords, implements #5353 --- .../sql/incremental/upd_dev_collection.sql | 5 ++++ install/sql/ispconfig3.sql | 10 ++++---- interface/lib/classes/auth.inc.php | 25 +++++++++++++++---- interface/lib/classes/remote.d/client.inc.php | 14 ++++------- interface/lib/classes/remoting.inc.php | 10 ++------ interface/web/admin/users_edit.php | 10 +++----- interface/web/client/reseller_edit.php | 24 +++++++----------- 7 files changed, 49 insertions(+), 49 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index e69de29bb2..d5b7b0e017 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -0,0 +1,5 @@ +ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 2417ef0d21..3f534eedf0 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -243,7 +243,7 @@ CREATE TABLE `client` ( `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', `parent_client_id` int(11) unsigned NOT NULL DEFAULT '0', `username` varchar(64) DEFAULT NULL, - `password` varchar(64) DEFAULT NULL, + `password` varchar(200) DEFAULT NULL, `language` char(2) NOT NULL DEFAULT 'en', `usertheme` varchar(32) NOT NULL DEFAULT 'default', `template_master` int(11) unsigned NOT NULL DEFAULT '0', @@ -705,7 +705,7 @@ CREATE TABLE `ftp_user` ( `parent_domain_id` int(11) unsigned NOT NULL default '0', `username` varchar(64) default NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, + `password` varchar(200) default NULL, `quota_size` bigint(20) NOT NULL default '-1', `active` enum('n','y') NOT NULL default 'y', `uid` varchar(64) default NULL, @@ -1440,7 +1440,7 @@ CREATE TABLE `shell_user` ( `parent_domain_id` int(11) unsigned NOT NULL default '0', `username` varchar(64) default NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, + `password` varchar(200) default NULL, `quota_size` bigint(20) NOT NULL default '-1', `active` enum('n','y') NOT NULL default 'y', `puser` varchar(255) default NULL, @@ -1864,7 +1864,7 @@ CREATE TABLE `sys_user` ( `sys_perm_group` varchar(5) NOT NULL default 'riud', `sys_perm_other` varchar(5) NOT NULL default '', `username` varchar(64) NOT NULL default '', - `passwort` varchar(64) NOT NULL default '', + `passwort` varchar(200) NOT NULL default '', `modules` varchar(255) NOT NULL default '', `startmodule` varchar(255) NOT NULL default '', `app_theme` varchar(32) NOT NULL default 'default', @@ -1899,7 +1899,7 @@ CREATE TABLE `webdav_user` ( `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', `username` varchar(64) DEFAULT NULL, `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) DEFAULT NULL, + `password` varchar(200) DEFAULT NULL, `active` enum('n','y') NOT NULL DEFAULT 'y', `dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`webdav_user_id`) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 6658c4c116..afe50ac692 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -231,12 +231,27 @@ class auth { if($charset != 'UTF-8') { $cleartext_password = mb_convert_encoding($cleartext_password, $charset, 'UTF-8'); } - $salt="$1$"; - $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for ($n=0;$n<8;$n++) { - $salt.=$base64_alphabet[mt_rand(0, 63)]; + + if(defined('CRYPT_SHA512') && CRYPT_SHA512 == 1) { + $salt = '$6$rounds=5000$'; + $salt_length = 16; + } elseif(defined('CRYPT_SHA256') && CRYPT_SHA256 == 1) { + $salt = '$5$rounds=5000$'; + $salt_length = 16; + } else { + $salt = '$1$'; + $salt_length = 12; + } + + if(function_exists('openssl_random_pseudo_bytes')) { + $salt .= substr(bin2hex(openssl_random_pseudo_bytes($salt_length)), 0, $salt_length); + } else { + $base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./'; + for($n = 0; $n < $salt_length; $n++) { + $salt .= $base64_alphabet[mt_rand(0, 63)]; + } } - $salt.="$"; + $salt .= "$"; return crypt($cleartext_password, $salt); } diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php index b91909c9d3..e07e227e60 100644 --- a/interface/lib/classes/remote.d/client.inc.php +++ b/interface/lib/classes/remote.d/client.inc.php @@ -604,11 +604,9 @@ class remoting_client extends remoting { if($user) { $saved_password = stripslashes($user['password']); - if(substr($saved_password, 0, 3) == '$1$') { - //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(preg_match('/^\$[156]\$/', $saved_password)) { + //* The password is crypt encrypted + if(crypt(stripslashes($password), $saved_password) !== $saved_password) { $user = false; } } else { @@ -636,11 +634,9 @@ class remoting_client extends remoting { if($user) { $saved_password = stripslashes($user['passwort']); - if(substr($saved_password, 0, 3) == '$1$') { + if(preg_match('/^\$[156]\$/', $saved_password)) { //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(crypt(stripslashes($password), $saved_password) != $saved_password) { $user = false; } } else { diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 6e551355a6..e1fc1ada86 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -99,28 +99,22 @@ class remoting { if($user) { $saved_password = stripslashes($user['passwort']); - if(substr($saved_password, 0, 3) == '$1$') { + if(preg_match('/^\$[156]\$/', $saved_password)) { //* The password is crypt-md5 encrypted - $salt = '$1$'.substr($saved_password, 3, 8).'$'; - - if(crypt(stripslashes($password), $salt) != $saved_password) { + if(crypt(stripslashes($password), $saved_password) != $saved_password) { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } } else { //* The password is md5 encrypted if(md5($password) != $saved_password) { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } } } else { throw new SoapFault('client_login_failed', 'The login failed. Username or password wrong.'); - return false; } if($user['active'] != 1) { throw new SoapFault('client_login_failed', 'The login failed. User is blocked.'); - return false; } // now we need the client data diff --git a/interface/web/admin/users_edit.php b/interface/web/admin/users_edit.php index 4c5c97409f..7f0c691c42 100644 --- a/interface/web/admin/users_edit.php +++ b/interface/web/admin/users_edit.php @@ -104,6 +104,8 @@ class page_action extends tform_actions { function onAfterUpdate() { global $app, $conf; + $app->uses('auth'); + $client = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = ?", $this->id); $client_id = $app->functions->intval($client['client_id']); $username = $this->dataRecord["username"]; @@ -121,13 +123,7 @@ class page_action extends tform_actions { // password changed if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord["passwort"]) && $this->dataRecord["passwort"] != '') { $password = $this->dataRecord["passwort"]; - $salt="$1$"; - $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for ($n=0;$n<8;$n++) { - $salt.=$base64_alphabet[mt_rand(0, 63)]; - } - $salt.="$"; - $password = crypt(stripslashes($password), $salt); + $password = $app->auth->crypt_password($password); $sql = "UPDATE client SET password = ? WHERE client_id = ? AND username = ?"; $app->db->query($sql, $password, $client_id, $username); } diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 59699ec163..3078e01fbc 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -200,6 +200,9 @@ class page_action extends tform_actions { */ function onAfterInsert() { global $app, $conf; + + $app->uses('auth'); + // Create the group for the reseller $groupid = $app->db->datalogInsert('sys_group', array("name" => $this->dataRecord["username"], "description" => '', "client_id" => $this->id), 'groupid'); $groups = $groupid; @@ -213,14 +216,8 @@ class page_action extends tform_actions { $active = 1; $language = $this->dataRecord["language"]; - $salt="$1$"; - $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for ($n=0;$n<8;$n++) { - $salt.=$base64_alphabet[mt_rand(0, 63)]; - } - $salt.="$"; - $password = crypt(stripslashes($password), $salt); - + $password = $app->auth->crypt_password(stripslashes($password)); + // Create the controlpaneluser for the reseller $sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`, `active`,`language`,`groups`,`default_group`,`client_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; @@ -313,6 +310,8 @@ class page_action extends tform_actions { function onAfterUpdate() { global $app, $conf; + $app->uses('auth'); + // username changed if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) { $username = $this->dataRecord["username"]; @@ -329,13 +328,8 @@ class page_action extends tform_actions { if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') { $password = $this->dataRecord["password"]; $client_id = $this->id; - $salt="$1$"; - $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for ($n=0;$n<8;$n++) { - $salt.=$base64_alphabet[mt_rand(0, 63)]; - } - $salt.="$"; - $password = crypt(stripslashes($password), $salt); + + $password = $app->auth->crypt_password(stripslashes($password)); $sql = "UPDATE sys_user SET passwort = ? WHERE client_id = ?"; $app->db->query($sql, $password, $client_id); } -- GitLab From 2b60a7a979567cb8c4513553f6b78909b4046bf1 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sat, 27 Jul 2019 22:57:40 +0200 Subject: [PATCH 069/571] WIP: change system exec calls to safe variant --- interface/lib/app.inc.php | 2 +- interface/lib/classes/functions.inc.php | 4 +- interface/lib/classes/system.inc.php | 43 +++++++++- interface/lib/classes/validate_dkim.inc.php | 5 +- interface/web/mail/ajax_get_json.php | 10 ++- server/lib/app.inc.php | 16 ++++ server/lib/classes/aps_installer.inc.php | 19 +++-- .../cron.d/100-monitor_email_quota.inc.php | 5 +- server/lib/classes/cron.d/150-awstats.inc.php | 16 ++-- .../lib/classes/cron.d/150-webalizer.inc.php | 14 ++-- .../lib/classes/cron.d/200-logfiles.inc.php | 26 +++--- server/lib/classes/cron.d/500-backup.inc.php | 33 +++++--- .../classes/cron.d/500-backup_mail.inc.php | 30 ++++--- .../cron.d/600-purge_mailboxes.inc.php | 2 +- .../classes/cron.d/900-letsencrypt.inc.php | 2 +- server/lib/classes/functions.inc.php | 4 +- server/lib/classes/letsencrypt.inc.php | 6 +- server/lib/classes/monitor_tools.inc.php | 3 +- server/lib/classes/system.inc.php | 82 +++++++++++++------ .../remoteaction_core_module.inc.php | 19 +++-- .../plugins-available/apache2_plugin.inc.php | 29 ++++--- .../apps_vhost_plugin.inc.php | 6 +- 22 files changed, 246 insertions(+), 130 deletions(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index b02ae8526d..46f7213240 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -78,7 +78,7 @@ class app { $this->uses($prop); if(property_exists($this, $prop)) return $this->{$prop}; - else return null; + else trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); } public function __destruct() { diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 28ab9ce384..03e331f0f1 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -451,9 +451,9 @@ class functions { if(file_exists($id_rsa_file)) unset($id_rsa_file); if(file_exists($id_rsa_pub_file)) unset($id_rsa_pub_file); if(!file_exists($id_rsa_file) && !file_exists($id_rsa_pub_file)) { - exec('ssh-keygen -t rsa -C '.$username.'-rsa-key-'.time().' -f '.$id_rsa_file.' -N ""'); + $app->system->exec_safe('ssh-keygen -t rsa -C ? -f ? -N ""', $username.'-rsa-key-'.time(), $id_rsa_file); $app->db->query("UPDATE client SET created_at = UNIX_TIMESTAMP(), id_rsa = ?, ssh_rsa = ? WHERE client_id = ?", @file_get_contents($id_rsa_file), @file_get_contents($id_rsa_pub_file), $client_id); - exec('rm -f '.$id_rsa_file.' '.$id_rsa_pub_file); + $app->system->exec_safe('rm -f ? ?', $id_rsa_file, $id_rsa_pub_file); } else { $app->log("Failed to create SSH keypair for ".$username, LOGLEVEL_WARN); } diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index cef9424a75..d4d9cccefe 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -31,6 +31,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class system { var $client_service = null; + private $_last_exec_out = null; + private $_last_exec_retcode = null; public function has_service($userid, $service) { global $app; @@ -52,8 +54,43 @@ class system { return false; } } -} //* End Class - -?> + public function last_exec_out() { + return $this->_last_exec_out; + } + + public function last_exec_retcode() { + return $this->_last_exec_retcode; + } + + public function exec_safe($cmd) { + $arg_count = func_num_args(); + if($arg_count > 1) { + $args = func_get_args(); + $pos = 0; + $a = 0; + foreach($args as $value) { + $a++; + + $pos = strpos($cmd, '?', $pos); + if($pos === false) { + break; + } + $value = escapeshellarg($value); + $cmd = substr_replace($cmd, $value, $pos, 1); + $pos += strlen($value); + } + } + + $this->_last_exec_out = null; + $this->_last_exec_retcode = null; + return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + } + + public function system_safe($cmd) { + call_user_func_array(array($this, 'exec_safe'), func_get_args()); + return implode("\n", $this->_last_exec_out); + } + +} //* End Class diff --git a/interface/lib/classes/validate_dkim.inc.php b/interface/lib/classes/validate_dkim.inc.php index 443fe76d7f..3fbc28a0a1 100644 --- a/interface/lib/classes/validate_dkim.inc.php +++ b/interface/lib/classes/validate_dkim.inc.php @@ -49,10 +49,13 @@ class validate_dkim { * Validator function for private DKIM-Key */ function check_private_key($field_name, $field_value, $validator) { + global $app; + $dkim_enabled=$_POST['dkim']; if ($dkim_enabled == 'y') { if (empty($field_value)) return $this->get_error($validator['errmsg']); - exec('echo '.escapeshellarg($field_value).'|openssl rsa -check', $output, $result); + $app->system->exec_safe('echo ?|openssl rsa -check', $field_value); + $result = $app->system->last_exec_retcode(); if($result != 0) return $this->get_error($validator['errmsg']); } } diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index 17fd4cf45a..69705ba6f7 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -54,8 +54,8 @@ if($type == 'create_dkim' && $domain_id != ''){ if ($dkim_strength=='') $dkim_strength = 2048; $rnd_val = $dkim_strength * 10; - exec('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result); - exec('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null', $privkey, $result); + $app->system->exec_safe('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result); + $app->system->exec_safe('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"; @@ -79,12 +79,14 @@ if($type == 'create_dkim' && $domain_id != ''){ $selector = 'invalid domain or selector'; } unset($dkim_public); - exec('echo '.escapeshellarg($dkim_private).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); + $app->system->exec_safe('echo ?|openssl rsa -pubout -outform PEM 2> /dev/null', $dkim_private); + $pubkey = $app->system->last_exec_out(); foreach($pubkey as $values) $dkim_public=$dkim_public.$values."\n"; $selector = $dkim_selector; } else { unset($dkim_public); - exec('echo '.escapeshellarg($dkim_private).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result); + $app->system->exec_safe('echo ?|openssl rsa -pubout -outform PEM 2> /dev/null', $dkim_private); + $pubkey = $app->system->last_exec_out(); foreach($pubkey as $values) $dkim_public=$dkim_public.$values."\n"; $selector = $dkim_selector; } diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index 86df2a86f6..146f2465c0 100644 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -69,6 +69,22 @@ class app { } + public function __get($name) { + $valid_names = array('functions', 'getconf', 'letsencrypt', 'modules', 'plugins', 'services', 'system'); + if(!in_array($name, $valid_names)) { + trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); + } + if(property_exists($this, $name)) { + return $this->{$name}; + } + $this->uses($name); + if(property_exists($this, $name)) { + return $this->{$name}; + } else { + trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); + } + } + function setCaller($caller) { $this->_calling_script = $caller; } diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php index 9b601d90b3..2995b01e07 100644 --- a/server/lib/classes/aps_installer.inc.php +++ b/server/lib/classes/aps_installer.inc.php @@ -395,7 +395,7 @@ class ApsInstaller extends ApsBase mkdir($this->document_root, 0777, true); } } else { - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); + $app->system->exec_safe("rm -Rf ?*", $this->local_installpath); } } else { mkdir($this->local_installpath, 0777, true); @@ -412,7 +412,7 @@ class ApsInstaller extends ApsBase || ($this->extractZip($this->packages_dir.'/'.$task['path'], 'scripts', $this->local_installpath.'install_scripts/') === false) ) { // Clean already extracted data - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); + $app->system->exec_safe("rm -Rf ?*", $this->local_installpath); throw new Exception('Unable to extract the package '.$task['path']); } @@ -423,11 +423,11 @@ class ApsInstaller extends ApsBase $owner_res = $app->db->queryOneRecord("SELECT system_user, system_group FROM web_domain WHERE domain = ?", $main_domain['value']); $this->file_owner_user = $owner_res['system_user']; $this->file_owner_group = $owner_res['system_group']; - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); + $app->system->exec_safe('chown -R ?:? ?', $this->file_owner_user, $this->file_owner_group, $this->local_installpath); //* Chown stats directory back if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); + $app->system->exec_safe('chown -R root:root ?', $this->local_installpath.'stats'); } } } @@ -554,7 +554,9 @@ class ApsInstaller extends ApsBase $shell_retcode = true; $shell_ret = array(); - exec('php '.escapeshellarg($this->local_installpath.'install_scripts/'.$cfgscript).' install 2>&1', $shell_ret, $shell_retcode); + $app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript); + $shell_ret = $app->system->last_exec_out(); + $shell_retcode = $app->system->last_exec_retcode(); $shell_ret = array_filter($shell_ret); $shell_ret_str = implode("\n", $shell_ret); @@ -566,11 +568,11 @@ class ApsInstaller extends ApsBase else { // The install succeeded, chown newly created files too - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); + $app->system->exec_safe('chown -R ?:? ?', $this->file_owner_user, $this->file_owner_group, $this->local_installpath); //* Chown stats directory back if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); + $app->system->exec_safe('chown -R root:root ?', $this->local_installpath.'stats'); } $app->dbmaster->query('UPDATE aps_instances SET instance_status = ? WHERE id = ?', INSTANCE_SUCCESS, $task['instance_id']); @@ -597,8 +599,9 @@ class ApsInstaller extends ApsBase */ private function cleanup($task, $sxe) { + global $app; chdir($this->local_installpath); - exec("rm -Rf ".escapeshellarg($this->local_installpath).'install_scripts'); + $app->system->exec_safe("rm -Rf ?", $this->local_installpath.'install_scripts'); } diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php index 75014c347d..8adf7c7253 100644 --- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php @@ -90,7 +90,7 @@ class cronjob_monitor_email_quota extends cronjob { $email_parts = explode('@', $mb['email']); $filename = $mb['maildir'].'/.quotausage'; if(!file_exists($filename) && $dovecot) { - exec('doveadm quota recalc -u '.$email); + $app->system->exec_safe('doveadm quota recalc -u ?', $email); } if(file_exists($filename) && !is_link($filename)) { $quotafile = file($filename); @@ -99,7 +99,8 @@ class cronjob_monitor_email_quota extends cronjob { $app->log("Mail storage $email: " . $storage_value[1], LOGLEVEL_DEBUG); unset($quotafile); } else { - exec('du -s '.escapeshellcmd($mb['maildir']), $out); + $app->system->exec_safe('du -s ?', $mb['maildir']); + $out = $app->system->last_exec_out(); $parts = explode(' ', $out[0]); $data[$email]['used'] = intval($parts[0])*1024; unset($out); diff --git a/server/lib/classes/cron.d/150-awstats.inc.php b/server/lib/classes/cron.d/150-awstats.inc.php index 2d281c7d39..0b1cbd5a44 100644 --- a/server/lib/classes/cron.d/150-awstats.inc.php +++ b/server/lib/classes/cron.d/150-awstats.inc.php @@ -71,16 +71,16 @@ class cronjob_awstats extends cronjob { $log_folder .= '/' . $subdomain_host; unset($tmp); } - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; if(!@is_file($logfile)) { - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'; if(!@is_file($logfile)) { continue; } } $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web'); - $domain = escapeshellcmd($rec['domain']); - $statsdir = escapeshellcmd($rec['document_root'].'/'.$web_folder.'/stats'); + $domain = $rec['domain']; + $statsdir = $rec['document_root'].'/'.$web_folder.'/stats'; $awstats_pl = $web_config['awstats_pl']; $awstats_buildstaticpages_pl = $web_config['awstats_buildstaticpages_pl']; @@ -117,8 +117,8 @@ class cronjob_awstats extends cronjob { } if(!@is_dir($statsdir)) mkdir($statsdir); - $username = escapeshellcmd($rec['system_user']); - $groupname = escapeshellcmd($rec['system_group']); + $username = $rec['system_user']; + $groupname = $rec['system_group']; chown($statsdir, $username); chgrp($statsdir, $groupname); if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); @@ -138,7 +138,7 @@ class cronjob_awstats extends cronjob { // awstats_buildstaticpages.pl -update -config=mydomain.com -lang=en -dir=/var/www/domain.com/'.$web_folder.'/stats -awstatsprog=/path/to/awstats.pl // $command = "$awstats_buildstaticpages_pl -update -config='$domain' -lang=".$conf['language']." -dir='$statsdir' -awstatsprog='$awstats_pl'"; - $command = "$awstats_buildstaticpages_pl -month='$awmonth' -year='$awyear' -update -config='$domain' -lang=".$conf['language']." -dir='$statsdir' -awstatsprog='$awstats_pl'"; + $command = escapeshellcmd($awstats_buildstaticpages_pl) . ' -month=' . escapeshellarg($awmonth) . ' -year=' . escapeshellarg($awyear) . ' -update -config=' . escapeshellarg($domain) . ' -lang=' . escapeshellarg($conf['language']) . ' -dir=' . escapeshellarg($statsdir) . ' -awstatsprog=' . escapeshellarg($awstats_pl); if (date("d") == 2) { $awmonth = date("m")-1; @@ -178,7 +178,7 @@ class cronjob_awstats extends cronjob { chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); } - exec('chown -R '.$username.':'.$groupname.' '.$statsdir); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); } diff --git a/server/lib/classes/cron.d/150-webalizer.inc.php b/server/lib/classes/cron.d/150-webalizer.inc.php index 0ae05dd682..5d341cefe7 100644 --- a/server/lib/classes/cron.d/150-webalizer.inc.php +++ b/server/lib/classes/cron.d/150-webalizer.inc.php @@ -102,11 +102,11 @@ class cronjob_webalizer extends cronjob { } } - $domain = escapeshellcmd($rec['domain']); - $statsdir = escapeshellcmd($rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats'); + $domain = $rec['domain']; + $statsdir = $rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats'; $webalizer = '/usr/bin/webalizer'; $webalizer_conf_main = '/etc/webalizer/webalizer.conf'; - $webalizer_conf = escapeshellcmd($rec['document_root'].'/log/webalizer.conf'); + $webalizer_conf = $rec['document_root'].'/log/webalizer.conf'; if(is_file($statsdir.'/index.php')) unlink($statsdir.'/index.php'); @@ -122,13 +122,13 @@ class cronjob_webalizer extends cronjob { if(!@is_dir($statsdir)) mkdir($statsdir); - $username = escapeshellcmd($rec['system_user']); - $groupname = escapeshellcmd($rec['system_group']); + $username = $rec['system_user']; + $groupname = $rec['system_group']; chown($statsdir, $username); chgrp($statsdir, $groupname); - exec("$webalizer -c $webalizer_conf -n $domain -s $domain -r $domain -q -T -p -o $statsdir $logfile"); + $app->system->exec_safe("$webalizer -c ? -n ? -s ? -r ? -q -T -p -o ? ?", $webalizer_conf, $domain, $domain, $domain, $statsdir, $logfile); - exec('chown -R '.$username.':'.$groupname.' '.$statsdir); + exec('chown -R ?:? ?', $username, $groupname, $statsdir); } diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index 6f38f0b403..d1dbf94291 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -54,7 +54,7 @@ class cronjob_logfiles extends cronjob { $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); if($server_config['log_retention'] > 0) { - $max_syslog = $server_config['log_retention']; + $max_syslog = $app->functions->intval($server_config['log_retention']); } else { $max_syslog = 10; } @@ -113,18 +113,18 @@ class cronjob_logfiles extends cronjob { } $yesterday2 = date('Ymd', time() - 86400*2); - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log'; //* Compress logfile if(@is_file($logfile)) { // Compress yesterdays logfile - exec("gzip -c $logfile > $logfile.gz"); + $app->system->exec_safe("gzip -c ? > ?", $logfile, $logfile . '.gz'); unlink($logfile); } $cron_logfiles = array('cron.log', 'cron_error.log', 'cron_wget.log'); foreach($cron_logfiles as $cron_logfile) { - $cron_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/' . $cron_logfile); + $cron_logfile = $rec['document_root'].'/' . $log_folder . '/' . $cron_logfile; // rename older files (move up by one) $num = $log_retention; @@ -135,8 +135,8 @@ class cronjob_logfiles extends cronjob { // compress current logfile if(is_file($cron_logfile)) { - exec("gzip -c $cron_logfile > $cron_logfile.1.gz"); - exec("cat /dev/null > $cron_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $cron_logfile, $cron_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $cron_logfile); } // remove older logs $num = $log_retention; @@ -156,8 +156,8 @@ class cronjob_logfiles extends cronjob { } // compress current logfile if(is_file($error_logfile)) { - exec("gzip -c $error_logfile > $error_logfile.1.gz"); - exec("cat /dev/null > $error_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $error_logfile, $error_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $error_logfile); } // delete logfiles after x days (default 10) @@ -175,7 +175,7 @@ class cronjob_logfiles extends cronjob { //* Delete old logfiles in /var/log/ispconfig/httpd/ that were created by vlogger for the hostname of the server exec('hostname -f', $tmp_hostname); if($tmp_hostname[0] != '' && is_dir('/var/log/ispconfig/httpd/'.$tmp_hostname[0])) { - exec('cd /var/log/ispconfig/httpd/'.$tmp_hostname[0]."; find . -mtime +$max_syslog -name '*.log' | xargs rm > /dev/null 2> /dev/null"); + $app->system->exec_safe("cd ?; find . -mtime +$max_syslog -name '*.log' | xargs rm > /dev/null 2> /dev/null", '/var/log/ispconfig/httpd/'.$tmp_hostname[0]); } unset($tmp_hostname); @@ -195,8 +195,8 @@ class cronjob_logfiles extends cronjob { } // compress current logfile if(is_file($ispconfig_logfile)) { - exec("gzip -c $ispconfig_logfile > $ispconfig_logfile.1.gz"); - exec("cat /dev/null > $ispconfig_logfile"); + $app->system->exec_safe("gzip -c ? > ?", $ispconfig_logfile, $ispconfig_logfile . '.1.gz'); + $app->system->exec_safe("cat /dev/null > ?", $ispconfig_logfile); } // remove older logs $num = $max_syslog; @@ -215,9 +215,9 @@ class cronjob_logfiles extends cronjob { $app->uses('system'); if(is_array($records)) { foreach($records as $rec){ - $tmp_path = realpath(escapeshellcmd($rec['document_root'].'/tmp')); + $tmp_path = realpath($rec['document_root'].'/tmp'); if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){ - exec('cd '.$tmp_path."; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null"); + exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); } } } diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index 77b355fe6e..579e0174ba 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -69,9 +69,9 @@ class cronjob_backup extends cronjob { } if(!is_dir($backup_dir)) { - mkdir(escapeshellcmd($backup_dir), $backup_dir_permissions, true); + mkdir($backup_dir, $backup_dir_permissions, true); } else { - chmod(escapeshellcmd($backup_dir), $backup_dir_permissions); + chmod($backup_dir, $backup_dir_permissions); } $run_backups = true; //* mount backup directory, if necessary @@ -127,16 +127,20 @@ class cronjob_backup extends cronjob { if($backup_mode == 'userzip') { //* Create a .zip backup as web user and include also files owned by apache / nginx user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.zip'; - exec('cd '.escapeshellarg($web_path).' && sudo -u '.escapeshellarg($web_user).' find . -group '.escapeshellarg($web_group).' -print 2> /dev/null | zip -b '.escapeshellarg($backup_tmp).' --exclude=./backup\*'.$backup_excludes.' --symlinks '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' -@', $tmp_output, $retval); - if($retval == 0 || $retval == 12) exec('cd '.escapeshellarg($web_path).' && sudo -u '.escapeshellarg($web_user).' find . -user '.escapeshellarg($http_server_user).' -print 2> /dev/null | zip -b '.escapeshellarg($backup_tmp).' --exclude=./backup\*'.$backup_excludes.' --update --symlinks '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' -@', $tmp_output, $retval); + $app->system->exec_safe('cd ? && sudo -u ? find . -group ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); + if($retval == 0 || $retval == 12) $app->system->exec_safe('cd ? && sudo -u ? find . -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --update --symlinks ? -@', $web_path, $web_user, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); } else { //* Create a tar.gz backup as root user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($web_path).' . --exclude=./backup\*'.$backup_excludes.' | pigz > '.escapeshellarg($web_backup_dir.'/'.$web_backup_file), $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --directory ? . --exclude=./backup\*'.$backup_excludes.' | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file); + $retval = $app->system->last_exec_retcode(); } else { - exec('tar pczf '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' --exclude=./backup\*'.$backup_excludes.' --directory '.escapeshellarg($web_path).' .', $tmp_output, $retval); -} + $app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path); + $retval = $app->system->last_exec_retcode(); + } } if($retval == 0 || ($backup_mode != 'userzip' && $retval == 1) || ($backup_mode == 'userzip' && $retval == 12)) { // tar can return 1, zip can return 12(due to harmless warings) and still create valid backups if(is_file($web_backup_dir.'/'.$web_backup_file)){ @@ -256,13 +260,16 @@ class cronjob_backup extends cronjob { $db_id = $rec['database_id']; $db_name = $rec['database_name']; $db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql'; - //$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --max_allowed_packet=512M ".$mysqldump_routines." --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; - exec($command, $tmp_output, $retval); - + $command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M ".$mysqldump_routines." --result-file=? ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir.'/'.$db_backup_file, $db_name); + $retval = $app->system->last_exec_retcode(); + //* Compress the backup with gzip / pigz - if($retval == 0) exec("$zip_cmd -c '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file)."' > '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".gz'", $tmp_output, $retval); - + if($retval == 0) { + $app->system->exec_safe("$zip_cmd -c ? > ?", $db_backup_dir.'/'.$db_backup_file, $db_backup_dir.'/'.$db_backup_file . '.gz'); + $retval = $app->system->last_exec_retcode(); + } + if($retval == 0){ if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')){ chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750); diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php index b05caf70d7..6cd689edca 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -122,24 +122,28 @@ class cronjob_backup_mail extends cronjob { if ($rec['maildir_format'] == 'mdbox') { if (empty($this->tmp_backup_dir)) $this->tmp_backup_dir = $rec['maildir']; // Create temporary backup-mailbox - exec("su -c 'dsync backup -u \"".$rec["email"]."\" mdbox:".$this->tmp_backup_dir."/backup'", $tmp_output, $retval); + exec("su -c ?", 'dsync backup -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; - exec('cd '.$this->tmp_backup_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b '.escapeshellarg($backup_tmp).' -r backup > /dev/null && rm -rf backup', $tmp_output, $retval); - } - else { + $app->system->exec_safe('cd ? && zip ? -b ? -r backup > /dev/null && rm -rf backup', $this->tmp_backup_dir, $mail_backup_dir.'/'.$mail_backup_file, $backup_tmp); + $retval = $app->system->last_exec_retcode(); + } else { $mail_backup_file.='.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($this->tmp_backup_dir).' backup | pigz > '.$mail_backup_dir.'/'.$mail_backup_file.' && rm -rf '.$this->tmp_backup_dir.'/backup', $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --directory ? backup | pigz > ? && rm -rf ?', $this->tmp_backup_dir, $mail_backup_dir.'/'.$mail_backup_file, $this->tmp_backup_dir.'/backup'); + $retval = $app->system->last_exec_retcode(); } else { - exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$this->tmp_backup_dir.' backup && rm -rf '.$this->tmp_backup_dir.'/backup'), $tmp_output, $retval); + $app->system->exec_safe('tar pczf ? --directory ? backup && rm -rf ?', $mail_backup_dir.'/'.$mail_backup_file, $this->tmp_backup_dir, $this->tmp_backup_dir.'/backup'); + $retval = $app->system->last_exec_retcode(); } } if ($retval != 0) { // Cleanup - if (file_exists($this->tmp_backup_dir.'/backup')) exec('rm -rf '.$this->tmp_backup_dir.'/backup'); + if(file_exists($this->tmp_backup_dir . '/backup')) { + $app->system->exec_safe('rm -rf ?', $this->tmp_backup_dir . '/backup'); + } } } else { @@ -154,15 +158,17 @@ class cronjob_backup_mail extends cronjob { //* create archives if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; - exec('cd '.$domain_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b '.escapeshellarg($backup_tmp).' -r '.$source_dir.' > /dev/null', $tmp_output, $retval); + $app->system->exec_safe('cd ? && zip ? -b ? -r ? > /dev/null', $domain_dir, $mail_backup_dir.'/'.$mail_backup_file, $backup_tmp, $source_dir); + $retval = $app->system->last_exec_retcode(); } else { /* Create a tar.gz backup */ $mail_backup_file.='.tar.gz'; if ($use_pigz) { - exec('tar pcf - --directory '.escapeshellarg($domain_dir).' '.escapeshellarg($source_dir).' | pigz > '.$mail_backup_dir.'/'.$mail_backup_file, $tmp_output, $retval); + $app->system->exec_safe('tar pcf - --directory ? ? | pigz > ?', $domain_dir, $source_dir, $mail_backup_dir.'/'.$mail_backup_file); } else { - exec(escapeshellcmd('tar pczf '.$mail_backup_dir.'/'.$mail_backup_file.' --directory '.$domain_dir.' '.$source_dir), $tmp_output, $retval); + $app->system->exec_safe('tar pczf ? --directory ? ?', $mail_backup_dir.'/'.$mail_backup_file, $domain_dir, $source_dir); } + $retval = $app->system->last_exec_retcode(); } } @@ -181,7 +187,9 @@ class cronjob_backup_mail extends cronjob { if(is_file($mail_backup_dir.'/'.$mail_backup_file)) unlink($mail_backup_dir.'/'.$mail_backup_file); // And remove backup-mdbox if ($rec['maildir_format'] == 'mdbox') { - if(file_exists($rec['maildir'].'/backup')) exec("su -c 'rm -rf ".$rec['maildir']."/backup'"); + if(file_exists($rec['maildir'] . '/backup')) { + $app->system->exec_safe('rm -rf ?', $rec['maildir'] . '/backup'); + } } $app->log($mail_backup_file.' NOK:'.implode('',$tmp_output), LOGLEVEL_WARN); } diff --git a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php b/server/lib/classes/cron.d/600-purge_mailboxes.inc.php index 59775fb7be..451eb56642 100644 --- a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php +++ b/server/lib/classes/cron.d/600-purge_mailboxes.inc.php @@ -58,7 +58,7 @@ class cronjob_purge_mailboxes extends cronjob { if(is_array($records)) { foreach($records as $rec){ - exec("su -c 'doveadm purge -u \"".$rec["email"]."\"'"); + $app->system->exec_safe("su -c ?", 'doveadm purge -u "' . $rec["email"] . '"'); } } diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php index 30a23fe973..3e2c9190c6 100644 --- a/server/lib/classes/cron.d/900-letsencrypt.inc.php +++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php @@ -66,7 +66,7 @@ class cronjob_letsencrypt extends cronjob { } else { $marker_file = '/usr/local/ispconfig/server/le.restart'; $cmd = "echo '1' > " . $marker_file; - exec($letsencrypt . ' -n renew --post-hook ' . escapeshellarg($cmd)); + $app->system->exec_safe($letsencrypt . ' -n renew --post-hook ?', $cmd); if(file_exists($marker_file) && trim(file_get_contents($marker_file)) == '1') { unlink($marker_file); $app->services->restartServiceDelayed('httpd', 'force-reload'); diff --git a/server/lib/classes/functions.inc.php b/server/lib/classes/functions.inc.php index e36ed5b04f..1d9dd67569 100644 --- a/server/lib/classes/functions.inc.php +++ b/server/lib/classes/functions.inc.php @@ -425,9 +425,9 @@ class functions { if(file_exists($id_rsa_file)) unset($id_rsa_file); if(file_exists($id_rsa_pub_file)) unset($id_rsa_pub_file); if(!file_exists($id_rsa_file) && !file_exists($id_rsa_pub_file)) { - exec('ssh-keygen -t rsa -C '.$username.'-rsa-key-'.time().' -f '.$id_rsa_file.' -N ""'); + $app->system->exec_safe('ssh-keygen -t rsa -C ? -f ? -N ""', $username.'-rsa-key-'.time(), $id_rsa_file); $app->db->query("UPDATE client SET created_at = UNIX_TIMESTAMP(), id_rsa = ?, ssh_rsa = ? WHERE client_id = ?", $app->system->file_get_contents($id_rsa_file), $app->system->file_get_contents($id_rsa_pub_file), $client_id); - exec('rm -f '.$id_rsa_file.' '.$id_rsa_pub_file); + $app->system->exec_safe('rm -f ? ?', $id_rsa_file, $id_rsa_pub_file); } else { $app->log("Failed to create SSH keypair for ".$username, LOGLEVEL_WARN); } diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 583e1c25bb..62080e29b4 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -389,7 +389,7 @@ class letsencrypt { } if(@is_link($key_file)) $app->system->unlink($key_file); - if(@file_exists($key_tmp_file)) exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file)); + if(@file_exists($key_tmp_file)) $app->system->exec_safe("ln -s ? ?", $key_tmp_file, $key_file); if(is_file($crt_file)) { $app->system->copy($crt_file, $crt_file.'.old.'.$date); @@ -398,7 +398,7 @@ class letsencrypt { } if(@is_link($crt_file)) $app->system->unlink($crt_file); - if(@file_exists($crt_tmp_file))exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file)); + if(@file_exists($crt_tmp_file))$app->system->exec_safe("ln -s ? ?", $crt_tmp_file, $crt_file); if(is_file($bundle_file)) { $app->system->copy($bundle_file, $bundle_file.'.old.'.$date); @@ -407,7 +407,7 @@ class letsencrypt { } if(@is_link($bundle_file)) $app->system->unlink($bundle_file); - if(@file_exists($bundle_tmp_file)) exec("ln -s ".escapeshellcmd($bundle_tmp_file)." ".escapeshellcmd($bundle_file)); + if(@file_exists($bundle_tmp_file)) $app->system->exec_safe("ln -s ? ?", $bundle_tmp_file, $bundle_file); return true; } else { diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 1d3dab290b..fefdbcd681 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -593,13 +593,12 @@ class monitor_tools { // Getting the logfile content if ($logfile != '') { - $logfile = escapeshellcmd($logfile); if (stristr($logfile, ';') or substr($logfile, 0, 9) != '/var/log/' or stristr($logfile, '..')) { $log = 'Logfile path error.'; } else { $log = ''; if (is_readable($logfile)) { - $fd = popen('tail -n 100 ' . $logfile, 'r'); + $fd = popen('tail -n 100 ' . escapeshellarg($logfile), 'r'); if ($fd) { while (!feof($fd)) { $log .= fgets($fd, 4096); diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 5c277ada1a..9f3e963eea 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -37,6 +37,9 @@ class system{ var $min_uid = 500; var $min_gid = 500; + private $_last_exec_out = null; + private $_last_exec_retcode = null; + /** * Construct for this class * @@ -716,8 +719,10 @@ class system{ function posix_getgrnam($group) { if(!function_exists('posix_getgrnam')){ $group_datei = $this->server_conf['group_datei']; - $cmd = 'grep -m 1 "^'.$group.':" '.$group_datei; - exec($cmd, $output, $return_var); + $cmd = 'grep -m 1 ? ?'; + $this->exec_safe($cmd, '^'.$group.':', $group_datei); + $output = $this->last_exec_out(); + $return_var = $this->last_exec_retcode(); if($return_var != 0 || !$output[0]) return false; list($f1, $f2, $f3, $f4) = explode(':', $output[0]); $f2 = trim($f2); @@ -1073,10 +1078,10 @@ class system{ } else { // Linux if(substr($dist, 0, 4) == 'suse'){ if($action == 'on'){ - exec("chkconfig --add $service &> /dev/null"); + $this->exec_safe("chkconfig --add ? &> /dev/null", $service); } if($action == 'off'){ - exec("chkconfig --del $service &> /dev/null"); + $this->exec_safe("chkconfig --del ? &> /dev/null", $service); } } else { $runlevels = explode(',', $rl); @@ -1375,7 +1380,7 @@ class system{ if(!empty($ifconfig['IP'])){ foreach($ifconfig['IP'] as $key => $val){ if(!strstr($val, 'lo') && !strstr($val, 'lp') && strstr($val, $main_interface)){ - exec('ifconfig '.$val.' down &> /dev/null'); + $this->exec_safe('ifconfig ? down &> /dev/null', $val); unset($ifconfig['INTERFACE'][$val]); } } @@ -1391,7 +1396,7 @@ class system{ $i = -1; } } - exec('ifconfig '.$new_interface.' '.$to.' netmask '.$this->server_conf['server_netzmaske'].' up &> /dev/null'); + $this->exec_safe('ifconfig ? ? netmask ? up &> /dev/null', $new_interface, $to, $this->server_conf['server_netzmaske']); $ifconfig['INTERFACE'][$new_interface] = $to; } } @@ -1627,15 +1632,6 @@ class system{ chmod($dir, 0700); - /* - if($user != '' && $this->is_user($user) && $user != 'root') { - $user = escapeshellcmd($user); - // I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3 - $group = $user; - exec("chown $user:$group $dir $dir_cur $dir_new $dir_tmp"); - } - */ - //* Add the subfolder to the subscriptions and courierimapsubscribed files if($subfolder != '') { @@ -1698,7 +1694,9 @@ class system{ //* Check if a application is installed function is_installed($appname) { - exec('which '.escapeshellcmd($appname).' 2> /dev/null', $out, $returncode); + $this->exec_safe('which ? 2> /dev/null', $appname); + $out = $this->last_exec_out(); + $returncode = $this->last_exec_retcode(); if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) { return true; } else { @@ -1720,10 +1718,10 @@ class system{ if($protect == true && $web_config['web_folder_protection'] == 'y') { //* Add protection - if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr +i '.escapeshellcmd($document_root)); + if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) $this->exec_safe('chattr +i ?', $document_root); } else { //* Remove protection - if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) exec('chattr -i '.escapeshellcmd($document_root)); + if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root, '..')) $this->exec_safe('chattr -i ?', $document_root); } } @@ -1835,8 +1833,9 @@ class system{ function is_mounted($mountpoint){ //$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"'; - $cmd = 'mount 2>/dev/null | grep " on '.$mountpoint.' type "'; - exec($cmd, $output, $return_var); + $cmd = 'mount 2>/dev/null | grep ?'; + exec($cmd, ' on '. $mountpoint . ' type '); + $return_var = $this->last_exec_retcode(); return $return_var == 0 ? true : false; } @@ -1908,7 +1907,8 @@ class system{ // systemd if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ if ($check_service) { - exec("systemctl is-enabled ".$servicename." 2>&1", $out, $ret_val); + $this->exec_safe("systemctl is-enabled ? 2>&1", $servicename); + $ret_val = $this->last_exec_retcode(); } if ($ret_val == 0 || !$check_service) { return 'systemctl '.$action.' '.$servicename.'.service'; @@ -2049,6 +2049,42 @@ class system{ return true; } + public function last_exec_out() { + return $this->_last_exec_out; + } + + public function last_exec_retcode() { + return $this->_last_exec_retcode; + } + + public function exec_safe($cmd) { + $arg_count = func_num_args(); + if($arg_count > 1) { + $args = func_get_args(); + + $pos = 0; + $a = 0; + foreach($args as $value) { + $a++; + + $pos = strpos($cmd, '?', $pos); + if($pos === false) { + break; + } + $value = escapeshellarg($value); + $cmd = substr_replace($cmd, $value, $pos, 1); + $pos += strlen($value); + } + } + + $this->_last_exec_out = null; + $this->_last_exec_retcode = null; + return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + } + + public function system_safe($cmd) { + call_user_func_array(array($this, 'exec_safe'), func_get_args()); + return implode("\n", $this->_last_exec_out); + } + } - -?> diff --git a/server/mods-available/remoteaction_core_module.inc.php b/server/mods-available/remoteaction_core_module.inc.php index 807de5060a..e0ce33a5e4 100644 --- a/server/mods-available/remoteaction_core_module.inc.php +++ b/server/mods-available/remoteaction_core_module.inc.php @@ -152,10 +152,10 @@ class remoteaction_core_module { $template_cache_dir = '/vz/template/cache/'; $template_name = escapeshellcmd($parts[1]); if($veid > 0 && $template_name != '' && is_dir($template_cache_dir)) { - $command = "vzdump --suspend --compress --stdexcludes --dumpdir $template_cache_dir $veid"; - exec($command); - exec("mv ".$template_cache_dir."vzdump-openvz-".$veid."*.tgz ".$template_cache_dir.$template_name.".tar.gz"); - exec("rm -f ".$template_cache_dir."vzdump-openvz-".$veid."*.log"); + $command = "vzdump --suspend --compress --stdexcludes --dumpdir ? ?"; + $app->system->exec_safe($command, $template_cache_dir, $veid); + $app->system->exec_safe("mv ?*.tgz ?", $template_cache_dir."vzdump-openvz-".$veid, $template_cache_dir.$template_name.".tar.gz"); + $app->system->exec_safe("rm -f ?*.log", $template_cache_dir."vzdump-openvz-".$veid); } $this->_actionDone($action['action_id'], 'ok'); /* this action takes so much time, @@ -191,7 +191,8 @@ class remoteaction_core_module { } private function _doIspCUpdate($action) { - + global $app; + // Ensure that this code is not executed twice as this would cause a loop in case of a failure $this->_actionDone($action['action_id'], 'ok'); @@ -210,14 +211,14 @@ class remoteaction_core_module { chdir("/tmp"); /* delete the old files (if there are any...) */ - exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("rm ?", "/tmp/ISPConfig-" . $new_version . ".tar.gz"); exec("rm /tmp/ispconfig3_install -R"); /* get the newest version */ - exec("wget http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("wget ?", "http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz"); /* extract the files */ - exec("tar xvfz ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("tar xvfz ?", "ISPConfig-" . $new_version . ".tar.gz"); /* * Initialize the automated update @@ -229,7 +230,7 @@ class remoteaction_core_module { /* * do some clean-up */ - exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz"); + $app->system->exec_safe("rm ?", "/tmp/ISPConfig-" . $new_version . ".tar.gz"); /* * go back to the "old path" diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 7ecbb76109..28a3c4d5d6 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -332,36 +332,38 @@ class apache2_plugin { $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); - $rand_file = escapeshellcmd($rand_file); - $key_file2 = escapeshellcmd($key_file2); + $rand_file = $rand_file; + $key_file2 = $key_file2; $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = escapeshellcmd($key_file); + $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = escapeshellcmd($csr_file); + $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate - $config_file = escapeshellcmd($ssl_cnf_file); - $crt_file = escapeshellcmd($crt_file); + $config_file = $ssl_cnf_file; + $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file2 2048"); - exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file2 -out $openssl_cmd_key_file"); + $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); + $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); + $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + if(filesize($crt_file) == 0 || !file_exists($crt_file)) { + $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + } }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); + $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ? ", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -402,7 +404,8 @@ class apache2_plugin { if($data["new"]["ssl_action"] == 'save') { $tmp = array(); $crt_data = ''; - exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $app->system->exec_safe('openssl x509 -noout -text -in ?', $crt_file); + $tmp = $app->system->last_exec_out(); $crt_data = implode("\n",$tmp); if(stristr($crt_data,'.acme.invalid')) { $data["new"]["ssl_action"] = ''; diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index b843e3c8a4..41e3cdd82c 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -156,11 +156,11 @@ class apps_vhost_plugin { $apps_vhost_ip = $web_config['apps_vhost_ip'].':'; } - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); + if(!is_dir($socket_dir)) $app->system->exec_safe('mkdir -p ?', $socket_dir); $fpm_socket = $socket_dir.'apps.sock'; - $cgi_socket = escapeshellcmd($web_config['nginx_cgi_socket']); + $cgi_socket = $web_config['nginx_cgi_socket']; $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); $content = str_replace('{apps_vhost_port}', $web_config['apps_vhost_port'], $content); -- GitLab From 0c815b5661849d3755f62fd20a249e95d6b9328f Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Mon, 29 Jul 2019 09:35:06 +0200 Subject: [PATCH 070/571] add parameter-option to ispconfig_patch for unattended patches --- server/scripts/ispconfig_patch | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/server/scripts/ispconfig_patch b/server/scripts/ispconfig_patch index 6ed2a3f5ae..a3361f507d 100644 --- a/server/scripts/ispconfig_patch +++ b/server/scripts/ispconfig_patch @@ -87,6 +87,13 @@ function is_installed($appname) { } } +$cmd_opt = getopt('', array('patch_id::')); +$auto = false; +if(isset($cmd_opt['patch_id'])) { + $patch_id = $cmd_opt['patch_id']; + $auto = true; +} + echo "\n\n".str_repeat('-',80)."\n"; echo " _____ ___________ _____ __ _ |_ _/ ___| ___ \ / __ \ / _(_) @@ -98,14 +105,14 @@ echo " _____ ___________ _____ __ _ |___/ "; echo "\n".str_repeat('-',80)."\n"; echo "\n\n>> Patch tool \n\n"; -echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; +if(!$auto) echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; if(!is_installed('patch')) { swriteln("The program 'patch' is missing on your server. Please install it and try again."); exit; } -$patch_id = simple_query('Enter patch id', false, ''); +if(!$auto) $patch_id = simple_query('Enter patch id', false, ''); if($patch_id == '') { swriteln("Patch terminated by user.\n"); die(); @@ -122,7 +129,7 @@ if(!$patch_data) { $patch_text = @file_get_contents('http://ispconfig.org/downloads/patches/' . $patch_id . '.txt'); if($patch_text) { - $ok = simple_query("Patch description:\n".str_repeat("-", 80)."\n".$patch_text."\n".str_repeat("-", 80)."\nDo you really want to apply this patch now?", array('y','n'), 'y'); + if($auto) $ok = 'y'; else $ok = simple_query("Patch description:\n".str_repeat("-", 80)."\n".$patch_text."\n".str_repeat("-", 80)."\nDo you really want to apply this patch now?", array('y','n'), 'y'); if($ok != 'y') { swriteln("Patch terminated by user.\n"); die(); @@ -140,4 +147,4 @@ unlink($temp_file); exit; -?> \ No newline at end of file +?> -- GitLab From e2a6024bc078e75b3e554972fd4952f42071df9a Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 14:08:34 +0200 Subject: [PATCH 071/571] Implement a more secure way to use exec, system and shell_exec, fixes #5355 --- interface/lib/classes/system.inc.php | 4 + server/lib/classes/aps_installer.inc.php | 1 - .../lib/classes/cron.d/150-webalizer.inc.php | 4 +- .../lib/classes/cron.d/200-logfiles.inc.php | 4 +- .../classes/cron.d/500-backup_mail.inc.php | 6 +- server/lib/classes/system.inc.php | 14 +- .../remoteaction_core_module.inc.php | 2 +- .../plugins-available/apache2_plugin.inc.php | 281 ++++++++---------- .../apps_vhost_plugin.inc.php | 4 +- .../plugins-available/backup_plugin.inc.php | 56 ++-- server/plugins-available/bind_plugin.inc.php | 37 ++- .../cron_jailkit_plugin.inc.php | 72 ++--- server/plugins-available/cron_plugin.inc.php | 24 +- .../plugins-available/firewall_plugin.inc.php | 28 +- .../plugins-available/getmail_plugin.inc.php | 4 +- server/plugins-available/mail_plugin.inc.php | 137 +++------ .../mail_plugin_dkim.inc.php | 3 +- .../plugins-available/mailman_plugin.inc.php | 8 +- .../mysql_clientdb_plugin.inc.php | 22 +- .../network_settings_plugin.inc.php | 4 +- server/plugins-available/nginx_plugin.inc.php | 256 ++++++++-------- .../nginx_reverseproxy_plugin.inc.php | 35 +-- .../plugins-available/openvz_plugin.inc.php | 20 +- .../postfix_server_plugin.inc.php | 12 +- .../plugins-available/powerdns_plugin.inc.php | 12 +- .../shelluser_base_plugin.inc.php | 134 ++++----- .../shelluser_jailkit_plugin.inc.php | 97 ++---- .../software_update_plugin.inc.php | 33 +- server/plugins-available/xmpp_plugin.inc.php | 12 +- 29 files changed, 574 insertions(+), 752 deletions(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index d4d9cccefe..ede53034d3 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -65,6 +65,10 @@ class system { public function exec_safe($cmd) { $arg_count = func_num_args(); + if($arg_count != substr_count($cmd, '?') + 1) { + trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); + return false; + } if($arg_count > 1) { $args = func_get_args(); diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php index 2995b01e07..922f32e612 100644 --- a/server/lib/classes/aps_installer.inc.php +++ b/server/lib/classes/aps_installer.inc.php @@ -544,7 +544,6 @@ class ApsInstaller extends ApsBase chmod($this->local_installpath.'install_scripts/'.$cfgscript, 0755); // Change to the install folder (import for the exec() below!) - //exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); chdir($this->local_installpath.'install_scripts/'); // Set the enviroment variables diff --git a/server/lib/classes/cron.d/150-webalizer.inc.php b/server/lib/classes/cron.d/150-webalizer.inc.php index 5d341cefe7..42aa125e0f 100644 --- a/server/lib/classes/cron.d/150-webalizer.inc.php +++ b/server/lib/classes/cron.d/150-webalizer.inc.php @@ -94,9 +94,9 @@ class cronjob_webalizer extends cronjob { $log_folder .= '/' . $subdomain_host; unset($tmp); } - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; if(!@is_file($logfile)) { - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'; if(!@is_file($logfile)) { continue; } diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index d1dbf94291..b229c76a8a 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -147,7 +147,7 @@ class cronjob_logfiles extends cronjob { } // rotate and compress the error.log - $error_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log'); + $error_logfile = $rec['document_root'].'/' . $log_folder . '/error.log'; // rename older files (move up by one) $num = $log_retention; while($num >= 1) { @@ -187,7 +187,7 @@ class cronjob_logfiles extends cronjob { $ispconfig_logfiles = array('ispconfig.log', 'cron.log', 'auth.log'); foreach($ispconfig_logfiles as $ispconfig_logfile) { $num = $max_syslog; - $ispconfig_logfile = escapeshellcmd($conf['ispconfig_log_dir'].'/'.$ispconfig_logfile); + $ispconfig_logfile = $conf['ispconfig_log_dir'].'/'.$ispconfig_logfile; // rename older files (move up by one) while($num >= 1) { if(is_file($ispconfig_logfile . '.' . $num . '.gz')) rename($ispconfig_logfile . '.' . $num . '.gz', $ispconfig_logfile . '.' . ($num + 1) . '.gz'); 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 6cd689edca..234f02771d 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -69,9 +69,9 @@ class cronjob_backup_mail extends cronjob { $records = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND maildir != ''", intval($conf['server_id'])); if(is_array($records) && $run_backups) { if(!is_dir($backup_dir)) { - mkdir(escapeshellcmd($backup_dir), $backup_dir_permissions, true); + mkdir($backup_dir, $backup_dir_permissions, true); } else { - chmod(escapeshellcmd($backup_dir), $backup_dir_permissions); + chmod($backup_dir, $backup_dir_permissions); } system('which pigz > /dev/null', $ret); if($ret === 0) { @@ -122,7 +122,7 @@ class cronjob_backup_mail extends cronjob { if ($rec['maildir_format'] == 'mdbox') { if (empty($this->tmp_backup_dir)) $this->tmp_backup_dir = $rec['maildir']; // Create temporary backup-mailbox - exec("su -c ?", 'dsync backup -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); + $app->system->exec_safe("su -c ?", 'dsync backup -u "'.$rec["email"].'" mdbox:' . $this->tmp_backup_dir . '/backup'); if($backup_mode == 'userzip') { $mail_backup_file.='.zip'; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 9f3e963eea..051f3554a6 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1601,22 +1601,20 @@ class system{ $mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail'); if($subfolder != '') { - $dir = escapeshellcmd($maildir_path.'/.'.$subfolder); + $dir = $maildir_path.'/.'.$subfolder; } else { - $dir = escapeshellcmd($maildir_path); + $dir = $maildir_path; } if(!is_dir($dir)) mkdir($dir, 0700, true); if($user != '' && $user != 'root' && $this->is_user($user)) { - $user = escapeshellcmd($user); if(is_dir($dir)) $this->chown($dir, $user); $chown_mdsub = true; } if($group != '' && $group != 'root' && $this->is_group($group)) { - $group = escapeshellcmd($group); if(is_dir($dir)) $this->chgrp($dir, $group); $chgrp_mdsub = true; @@ -1638,7 +1636,7 @@ class system{ // Courier if($mail_config['pop3_imap_daemon'] == 'courier') { if(!is_file($maildir_path.'/courierimapsubscribed')) { - $tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed'); + $tmp_file = $maildir_path.'/courierimapsubscribed'; touch($tmp_file); chmod($tmp_file, 0744); chown($tmp_file, 'vmail'); @@ -1650,7 +1648,7 @@ class system{ // Dovecot if($mail_config['pop3_imap_daemon'] == 'dovecot') { if(!is_file($maildir_path.'/subscriptions')) { - $tmp_file = escapeshellcmd($maildir_path.'/subscriptions'); + $tmp_file = $maildir_path.'/subscriptions'; touch($tmp_file); chmod($tmp_file, 0744); chown($tmp_file, 'vmail'); @@ -2059,6 +2057,10 @@ class system{ public function exec_safe($cmd) { $arg_count = func_num_args(); + if($arg_count != substr_count($cmd, '?') + 1) { + trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); + return false; + } if($arg_count > 1) { $args = func_get_args(); diff --git a/server/mods-available/remoteaction_core_module.inc.php b/server/mods-available/remoteaction_core_module.inc.php index e0ce33a5e4..3b6bb9fb49 100644 --- a/server/mods-available/remoteaction_core_module.inc.php +++ b/server/mods-available/remoteaction_core_module.inc.php @@ -150,7 +150,7 @@ class remoteaction_core_module { $parts = explode(':', $action['action_param']); $veid = intval($parts[0]); $template_cache_dir = '/vz/template/cache/'; - $template_name = escapeshellcmd($parts[1]); + $template_name = $parts[1]; if($veid > 0 && $template_name != '' && is_dir($template_cache_dir)) { $command = "vzdump --suspend --compress --stdexcludes --dumpdir ? ?"; $app->system->exec_safe($command, $template_cache_dir, $veid); diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 28a3c4d5d6..2183e96eb4 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -476,7 +476,7 @@ class apache2_plugin { if($data['new']['ssl_action'] == 'del') { if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); + $app->system->exec_safe("openssl ca -batch -config ? -passin pass:? -revoke ?", $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $crt_file); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); @@ -594,31 +594,31 @@ class apache2_plugin { //* Check if a ispconfigend user and group exists and create them if(!$app->system->is_group('ispconfigend')) { - exec('groupadd --gid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('groupadd --gid ? ispconfigend', $connect_userid_to_webid_start + 10000); } if(!$app->system->is_user('ispconfigend')) { - exec('useradd -g ispconfigend -d /usr/local/ispconfig --uid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('useradd -g ispconfigend -d /usr/local/ispconfig --uid ? ispconfigend', $connect_userid_to_webid_start + 10000); } } else { $fixed_uid_param = ''; $fixed_gid_param = ''; } - $groupname = escapeshellcmd($data['new']['system_group']); + $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - exec('groupadd '.$fixed_gid_param.' '.$groupname); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); + $app->system->exec_safe('groupadd ? ?', $fixed_gid_param, $groupname); + if($apache_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } - $username = escapeshellcmd($data['new']['system_user']); + $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); } else { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ? ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } @@ -641,7 +641,7 @@ class apache2_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // create the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -668,13 +668,12 @@ class apache2_plugin { } //* Unmount the old log directory bfore we move the log dir - //exec('fuser -km '.escapeshellcmd($old_dir.'/log')); - exec('umount '.escapeshellcmd($data['old']['document_root'].'/log')); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/log'); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); $app->system->web_folder_protection($data['old']['document_root'], false); - exec('mv '.escapeshellarg($data['old']['document_root']).' '.escapeshellarg($new_dir)); + $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); @@ -682,17 +681,17 @@ class apache2_plugin { $data['new']['php_open_basedir'] = str_replace($data['old']['document_root'], $data['new']['document_root'], $data['old']['php_open_basedir']); //* Change the owner of the website files to the new website owner - exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir); + $app->system->exec_safe('chown --recursive --from=?:? ?:? ?', $data['old']['system_user'], $data['old']['system_group'], $data['new']['system_user'], $data['new']['system_group'], $new_dir); //* Change the home directory and group of the website user - $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' ; usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['document_root']); - $command .= ' --gid '.escapeshellcmd($data['new']['system_group']); - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - exec($command); + $command = 'killall -u ? ; usermod'; + $command .= ' --home ?'; + $command .= ' --gid ?'; + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user'], $data['new']['document_root'], $data['new']['system_group'], $data['new']['system_user']); } - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + if($apache_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount /* @@ -714,7 +713,7 @@ class apache2_plugin { $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); } @@ -726,7 +725,6 @@ class apache2_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder)) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); - //if(!is_dir($data['new']['document_root'].'/'.$log_folder)) exec('mkdir -p '.$data['new']['document_root'].'/'.$log_folder); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); @@ -750,7 +748,7 @@ class apache2_plugin { // Remove the symlink for the site, if site is renamed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/httpd/'.$data['old']['domain']); if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder); //* remove old log mount @@ -758,19 +756,18 @@ class apache2_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); //* Unmount log directory - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/'.$old_log_folder); } //* Create the log dir if nescessary and mount it if(!is_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) { if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder); - if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/httpd/'.$data['new']['domain']); $app->system->mkdirpath($data['new']['document_root'].'/'.$log_folder); $app->system->chown($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chgrp($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; @@ -795,7 +792,7 @@ class apache2_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // remove the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -816,11 +813,10 @@ class apache2_plugin { } // create the symlinks, if not exist if(!is_link($tmp_symlink)) { - // exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($data["new"]["document_root"]), escapeshellcmd($tmp_symlink)); + $app->system->create_relative_link($data["new"]["document_root"], $tmp_symlink); } else { - exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); + $app->system->exec_safe("ln -s ? ?", $data["new"]["document_root"]."/", $tmp_symlink); } $app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/ '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -840,69 +836,67 @@ class apache2_plugin { // Copy the error pages if($data['new']['errordocs']) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp '. $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { - if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2))) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { + if(!file_exists($data['new']['document_root'] . '/' . $web_folder . '/index.html')) { + $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_' . substr($conf['language'], 0, 2), $data['new']['document_root'] . '/' . $web_folder . '/index.html'); + } if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf-custom/index/robots.txt')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { - // exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - //} } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); } else { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } } } - exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); - exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); + $app->system->exec_safe('chown -R ?:? ?', $data['new']['system_user'], $data['new']['system_group'], $error_page_path); } // end copy error docs // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias @@ -917,39 +911,39 @@ class apache2_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($data['new']['document_root']) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $data['new']['document_root'])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if($file_system == 'xfs') { - exec("xfs_quota -x -c " . escapeshellarg("limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username) . " " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username, $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); } else { if($app->system->is_installed('setquota')) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } } } if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) { // Chown and chmod the directories below the document root - $app->system->_exec('chown -R '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); // The document root itself has to be owned by root in normal level and by the web owner in security level 20 if($web_config['security_level'] == 20) { - $app->system->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); } else { - $app->system->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown root:root ?', $data['new']['document_root'].'/' . $web_folder); } } //* add the Apache user to the client group if this is a vhost and security level is set to high, no matter if this is an insert or update and regardless of set_folder_permissions_on_update - if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user'])); + if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, $web_config['user']); //* If the security level is set to high if(($this->action == 'insert' && $data['new']['type'] == 'vhost') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhost')) { @@ -978,18 +972,18 @@ class apache2_plugin { if($web_config['add_web_users_to_sshusers_group'] == 'y') { $command = 'usermod'; $command .= ' --groups sshusers'; - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - $app->system->_exec($command); + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user']); } //* if we have a chrooted Apache environment if($apache_chrooted) { - $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* add the apache user to the client group in the chroot environment $tmp_groupfile = $app->system->server_conf['group_datei']; $app->system->server_conf['group_datei'] = $web_config['website_basedir'].'/etc/group'; - $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user'])); + $app->system->add_user_to_group($groupname, $web_config['user']); $app->system->server_conf['group_datei'] = $tmp_groupfile; unset($tmp_groupfile); } @@ -1092,7 +1086,9 @@ class apache2_plugin { if($data['new']['type'] == 'vhost') { // Change the ownership of the error log to the root user - if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) exec('touch '.escapeshellcmd('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')); + if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) { + $app->system->exec_safe('touch ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log'); + } $app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } @@ -1165,7 +1161,7 @@ class apache2_plugin { $vhost_data['php_open_basedir'] = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $vhost_data['ssl_domain'] = $data['new']['ssl_domain']; $vhost_data['has_custom_php_ini'] = $has_custom_php_ini; - $vhost_data['custom_php_ini_dir'] = escapeshellcmd($custom_php_ini_dir); + $vhost_data['custom_php_ini_dir'] = $custom_php_ini_dir; $vhost_data['logging'] = $web_config['logging']; // Custom Apache directives @@ -1455,13 +1451,10 @@ class apache2_plugin { if (!is_dir($fastcgi_starter_path)) { $app->system->mkdirpath($fastcgi_starter_path); - //exec('chown '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.escapeshellcmd($fastcgi_starter_path)); - $app->log('Creating fastcgi starter script directory: '.$fastcgi_starter_path, LOGLEVEL_DEBUG); } - //exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.escapeshellcmd($fastcgi_starter_path)); $app->system->chown($fastcgi_starter_path, $data['new']['system_user']); $app->system->chgrp($fastcgi_starter_path, $data['new']['system_group']); if($web_config['security_level'] == 10) { @@ -1483,29 +1476,29 @@ class apache2_plugin { } if($has_custom_php_ini) { - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_php_ini_dir)); + $fcgi_tpl->setVar('php_ini_path', $custom_php_ini_dir); } else { if($default_fastcgi_php){ - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($fastcgi_config['fastcgi_phpini_path'])); + $fcgi_tpl->setVar('php_ini_path', $fastcgi_config['fastcgi_phpini_path']); } else { - $fcgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_fastcgi_php_ini_dir)); + $fcgi_tpl->setVar('php_ini_path', $custom_fastcgi_php_ini_dir); } } - $fcgi_tpl->setVar('document_root', escapeshellcmd($data['new']['document_root'])); - $fcgi_tpl->setVar('php_fcgi_children', escapeshellcmd($fastcgi_config['fastcgi_children'])); - $fcgi_tpl->setVar('php_fcgi_max_requests', escapeshellcmd($fastcgi_config['fastcgi_max_requests'])); + $fcgi_tpl->setVar('document_root', $data['new']['document_root']); + $fcgi_tpl->setVar('php_fcgi_children', $fastcgi_config['fastcgi_children']); + $fcgi_tpl->setVar('php_fcgi_max_requests', $fastcgi_config['fastcgi_max_requests']); if($default_fastcgi_php){ - $fcgi_tpl->setVar('php_fcgi_bin', escapeshellcmd($fastcgi_config['fastcgi_bin'])); + $fcgi_tpl->setVar('php_fcgi_bin', $fastcgi_config['fastcgi_bin']); } else { - $fcgi_tpl->setVar('php_fcgi_bin', escapeshellcmd($custom_fastcgi_php_executable)); + $fcgi_tpl->setVar('php_fcgi_bin', $custom_fastcgi_php_executable); } $fcgi_tpl->setVar('security_level', intval($web_config['security_level'])); - $fcgi_tpl->setVar('domain', escapeshellcmd($data['new']['domain'])); + $fcgi_tpl->setVar('domain', $data['new']['domain']); $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; - $fcgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); + $fcgi_tpl->setVar('open_basedir', $php_open_basedir); - $fcgi_starter_script = escapeshellcmd($fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '')); + $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); $app->system->file_put_contents($fcgi_starter_script, $fcgi_tpl->grab()); unset($fcgi_tpl); @@ -1565,14 +1558,13 @@ class apache2_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); - } else { + $pool_dir = $web_config['php_fpm_pool_dir']; $pool_dir = $custom_php_fpm_pool_dir; } $pool_dir = trim($pool_dir); if(substr($pool_dir, -1) != '/') $pool_dir .= '/'; $pool_name = 'web'.$data['new']['domain_id']; - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if($data['new']['php_fpm_use_socket'] == 'y'){ @@ -1625,8 +1617,8 @@ class apache2_plugin { // This works because PHP "rewrites" a symlink to the physical path $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; - $cgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir)); - $cgi_tpl->setVar('document_root', escapeshellcmd($data['new']['document_root'])); + $cgi_tpl->setVar('open_basedir', $php_open_basedir); + $cgi_tpl->setVar('document_root', $data['new']['document_root']); // This will NOT work! //$cgi_tpl->setVar('open_basedir', '/var/www/' . $data['new']['domain']); @@ -1635,12 +1627,12 @@ class apache2_plugin { $cgi_tpl->setVar('has_custom_php_ini', $has_custom_php_ini); if($has_custom_php_ini) { - $cgi_tpl->setVar('php_ini_path', escapeshellcmd($custom_php_ini_dir)); + $cgi_tpl->setVar('php_ini_path', $custom_php_ini_dir); } else { - $cgi_tpl->setVar('php_ini_path', escapeshellcmd($fastcgi_config['fastcgi_phpini_path'])); + $cgi_tpl->setVar('php_ini_path', $fastcgi_config['fastcgi_phpini_path']); } - $cgi_starter_script = escapeshellcmd($cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '')); + $cgi_starter_script = $cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); $app->system->file_put_contents($cgi_starter_script, $cgi_tpl->grab()); unset($cgi_tpl); @@ -1660,7 +1652,7 @@ class apache2_plugin { } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file if(file_exists($vhost_file)) $app->system->copy($vhost_file, $vhost_file.'~'); @@ -1753,17 +1745,17 @@ class apache2_plugin { //* Set the symlink to enable the vhost //* First we check if there is a old type of symlink and remove it - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) $app->system->unlink($vhost_symlink); //* Remove old or changed symlinks if($data['new']['subdomain'] != $data['old']['subdomain'] or $data['new']['active'] == 'n') { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -1772,9 +1764,9 @@ class apache2_plugin { //* New symlink if($data['new']['subdomain'] == '*') { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; } else { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; } if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); @@ -1783,22 +1775,22 @@ class apache2_plugin { // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; $app->system->unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); } @@ -2032,14 +2024,10 @@ class apache2_plugin { if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){ if(is_array($log_folders) && !empty($log_folders)){ foreach($log_folders as $log_folder){ - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } } else { - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } // remove letsencrypt if it exists (renew will always fail otherwise) @@ -2079,19 +2067,19 @@ class apache2_plugin { } else { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -2101,11 +2089,11 @@ class apache2_plugin { $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') { - $docroot = escapeshellcmd($data['old']['document_root']); + $docroot = $data['old']['document_root']; if($docroot != '' && !stristr($docroot, '..')) { if($data['old']['type'] == 'vhost') { // this is a vhost - we delete everything in here. - exec('rm -rf '.$docroot); + $app->system->exec_safe('rm -rf ?', $docroot); } elseif(!stristr($data['old']['web_folder'], '..')) { // this is a vhost subdomain // IMPORTANT: do some folder checks before we delete this! @@ -2155,7 +2143,7 @@ class apache2_plugin { unset($used_paths); } - if($do_delete === true && $delete_folder !== '') exec('rm -rf '.$docroot.'/'.$delete_folder); + if($do_delete === true && $delete_folder !== '') $app->system->exec_safe('rm -rf ?', $docroot.'/'.$delete_folder); unset($delete_folder); unset($path_elements); @@ -2167,12 +2155,12 @@ class apache2_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $fastcgi_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { - exec('rm -rf '.$fastcgi_starter_path); + $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { - exec('rm -f '.$fcgi_starter_script); + $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } } @@ -2192,12 +2180,12 @@ class apache2_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { - exec('rm -rf '.$cgi_starter_path); + $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { - exec('rm -f '.$cgi_starter_script); + $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } } @@ -2226,16 +2214,15 @@ class apache2_plugin { } // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/httpd/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost') { //delete the web user - $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' ; userdel'; - $command .= ' '.escapeshellcmd($data['old']['system_user']); - exec($command); - if($apache_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $command = 'killall -u ? ; userdel ?'; + $app->system->exec_safe($command, $data['old']['system_user'], $data['old']['system_user']); + if($apache_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); } @@ -2267,7 +2254,7 @@ class apache2_plugin { if($mount_backup){ $web_backup_dir = $backup_dir.'/web'.$data_old['domain_id']; //** do not use rm -rf $web_backup_dir because database(s) may exits - exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*'); + $app->system->exec_safe('rm -f ?*', $web_backup_dir.'/web'.$data_old['domain_id'].'_'); //* cleanup database $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?"; $app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%"); @@ -2322,7 +2309,7 @@ class apache2_plugin { $tpl->setLoop('ip_adresses', $records_out); } - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'].'/ispconfig.conf'); + $vhost_file = $web_config['vhost_conf_dir'].'/ispconfig.conf'; $app->system->file_put_contents($vhost_file, $tpl->grab()); $app->log('Writing the conf file: '.$vhost_file, LOGLEVEL_DEBUG); unset($tpl); @@ -2355,7 +2342,7 @@ class apache2_plugin { //* Get the folder path. if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1); if(substr($folder['path'], -1) == '/') $folder['path'] = substr($folder['path'], 0, -1); - $folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$folder['path']); + $folder_path = $website['document_root'].'/' . $web_folder . '/'.$folder['path']; if(substr($folder_path, -1) != '/') $folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2501,7 +2488,7 @@ class apache2_plugin { if(substr($data['new']['path'], 0, 1) == '/') $data['new']['path'] = substr($data['new']['path'], 1); if(substr($data['new']['path'], -1) == '/') $data['new']['path'] = substr($data['new']['path'], 0, -1); - $new_folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$data['new']['path']); + $new_folder_path = $website['document_root'].'/' . $web_folder . '/'.$data['new']['path']; if(substr($new_folder_path, -1) != '/') $new_folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2681,8 +2668,6 @@ class apache2_plugin { /* * The webdav - Root needs the group/user as owner and the apache as read and write */ - //$app->system->_exec('chown ' . $user . ':' . $group . ' ' . escapeshellcmd($documentRoot . '/webdav/')); - //$app->system->_exec('chmod 770 ' . escapeshellcmd($documentRoot . '/webdav/')); $app->system->chown($documentRoot . '/webdav', $user); $app->system->chgrp($documentRoot . '/webdav', $group); $app->system->chmod($documentRoot . '/webdav', 0770); @@ -2691,8 +2676,6 @@ class apache2_plugin { * The webdav folder (not the webdav-root!) needs the same (not in ONE step, because the * pwd-files are owned by root) */ - //$app->system->_exec('chown ' . $user . ':' . $group . ' ' . escapeshellcmd($webdav_user_dir.' -R')); - //$app->system->_exec('chmod 770 ' . escapeshellcmd($webdav_user_dir.' -R')); $app->system->chown($webdav_user_dir, $user); $app->system->chgrp($webdav_user_dir, $group); $app->system->chmod($webdav_user_dir, 0770); @@ -2712,7 +2695,7 @@ class apache2_plugin { /* * Next step, patch the vhost - file */ - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'); + $vhost_file = $web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'; $this->_patchVhostWebdav($vhost_file, $documentRoot . '/webdav'); /* @@ -2744,7 +2727,7 @@ class apache2_plugin { /* * Next step, patch the vhost - file */ - $vhost_file = escapeshellcmd($web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'); + $vhost_file = $web_config['vhost_conf_dir'] . '/' . $domain . '.vhost'; $this->_patchVhostWebdav($vhost_file, $documentRoot . '/webdav'); /* @@ -3004,9 +2987,9 @@ class apache2_plugin { $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content); file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content); - exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1'); - exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); + $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('? restart >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); @@ -3017,8 +3000,8 @@ class apache2_plugin { } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ - exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1'); + $app->system->exec_safe('? stop >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['old']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? remove >/dev/null 2>&1', 'hhvm_' . $data['old']['system_user']); unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } @@ -3117,7 +3100,7 @@ class apache2_plugin { $tpl->setVar('document_root', $data['new']['document_root']); $tpl->setVar('security_level', $web_config['security_level']); $tpl->setVar('domain', $data['new']['domain']); - $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']); + $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $tpl->setVar('php_open_basedir', $php_open_basedir); if($php_open_basedir != ''){ $tpl->setVar('enable_php_open_basedir', ''); @@ -3204,7 +3187,7 @@ class apache2_plugin { unset($tpl); // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -3258,7 +3241,7 @@ class apache2_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } @@ -3275,7 +3258,7 @@ class apache2_plugin { } // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -3335,7 +3318,7 @@ class apache2_plugin { } if($app->system->is_group('client'.$client_id)){ - $app->system->_exec('groupdel client'.$client_id); + $app->system->exec_safe('groupdel ?', 'client'.$client_id); $app->log('Removed group client'.$client_id, LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index 41e3cdd82c..ea2359d602 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -121,7 +121,7 @@ class apps_vhost_plugin { $app->system->file_put_contents("$vhost_conf_dir/apps.vhost", $content); // enabled / disable apps-vhost - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'; if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') { $app->system->unlink($vhost_symlink); } @@ -207,7 +207,7 @@ class apps_vhost_plugin { file_put_contents("$vhost_conf_dir/apps.vhost", $content); // enabled / disable apps-vhost - $vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'); + $vhost_symlink = $web_config['vhost_conf_enabled_dir'].'/000-apps.vhost'; if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') { $app->system->unlink($vhost_symlink); } diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 6ce8c98939..3308289d41 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -104,13 +104,13 @@ class backup_plugin { // extract tar.gz archive $dump_directory = str_replace(".tar.gz", "", $backup['filename']); $extracted = "/usr/local/ispconfig/server/temp"; - exec("tar -xzvf ".escapeshellarg($backup_dir.'/'.$backup['filename'])." --directory=".escapeshellarg($extracted)); + $app->system->exec_safe("tar -xzvf ? --directory=?", $backup_dir.'/'.$backup['filename'], $extracted); $restore_directory = $extracted."/".$dump_directory."/".$db_name; // mongorestore -h 127.0.0.1 -u root -p 123456 --authenticationDatabase admin -d c1debug --drop ./toRestore - $command = "mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ".$db_name." --drop ".escapeshellarg($restore_directory); - exec($command); - exec("rm -rf ".escapeshellarg($extracted."/".$dump_directory)); + $command = "mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ? --drop ?"; + $app->system->exec_safe($command, $db_name, $restore_directory); + $app->system->exec_safe("rm -rf ?", $extracted."/".$dump_directory); } unset($clientdb_host); @@ -129,8 +129,8 @@ class backup_plugin { //$db_name = $parts[1]; preg_match('@^db_(.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql\.gz$@', $backup['filename'], $matches); $db_name = $matches[1]; - $command = "gunzip --stdout ".escapeshellarg($backup_dir.'/'.$backup['filename'])." | mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".escapeshellarg($db_name); - exec($command); + $command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?"; + $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $clientdb_host, $clientdb_user, $clientdb_password, $db_name); } unset($clientdb_host); unset($clientdb_user); @@ -147,8 +147,8 @@ class backup_plugin { copy($backup_dir.'/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename']); chgrp($web['document_root'].'/backup/'.$backup['filename'], $web['system_group']); //chown($web['document_root'].'/backup/'.$backup['filename'],$web['system_user']); - $command = 'sudo -u '.escapeshellarg($web['system_user']).' unzip -qq -o '.escapeshellarg($web['document_root'].'/backup/'.$backup['filename']).' -d '.escapeshellarg($web['document_root']).' 2> /dev/null'; - exec($command); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $web['system_user'], $web['document_root'].'/backup/'.$backup['filename'], $web['document_root']); unlink($web['document_root'].'/backup/'.$backup['filename']); if(file_exists($web['document_root'].'/backup/'.$backup['filename'].'.bak')) rename($web['document_root'].'/backup/'.$backup['filename'].'.bak', $web['document_root'].'/backup/'.$backup['filename']); $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); @@ -156,8 +156,8 @@ class backup_plugin { } if($backup['backup_mode'] == 'rootgz') { if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) { - $command = 'tar xzf '.escapeshellarg($backup_dir.'/'.$backup['filename']).' --directory '.escapeshellarg($web['document_root']); - exec($command); + $command = 'tar xzf ? --directory ?'; + $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $web['document_root']); $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); } } @@ -237,22 +237,24 @@ class backup_plugin { if($mail_backup['backup_mode'] == 'userzip') { copy($mail_backup_file, $record['maildir'].'/'.$mail_backup['filename']); chgrp($record['maildir'].'/'.$mail_backup['filename'], $mail_config['mailuser_group']); - $command = 'sudo -u '.$mail_config['mailuser_name'].' unzip -qq -o '.escapeshellarg($record['maildir'].'/'.$mail_backup['filename']).' -d '.escapeshellarg($record['maildir']).' 2> /dev/null'; - exec($command,$tmp_output, $retval); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $mail_config['mailuser_name'], $record['maildir'].'/'.$mail_backup['filename'], $record['maildir']); + $retval = $app->system->last_exec_retcode(); unlink($record['maildir'].'/'.$mail_backup['filename']); - } - if($mail_backup['backup_mode'] == 'rootgz') { - $command='tar xfz '.escapeshellarg($mail_backup_file).' --directory '.escapeshellarg($record['maildir']); - exec($command,$tmp_output, $retval); + } elseif($mail_backup['backup_mode'] == 'rootgz') { + $command='tar xfz ? --directory ?'; + $app->system->exec_safe($command, $mail_backup_file, $record['maildir']); + $retval = $app->system->last_exec_retcode(); } if($retval == 0) { // Now import backup-mailbox into special backup-folder $backupname = "backup-".date("Y-m-d", $mail_backup['tstamp']); - exec("doveadm mailbox create -u \"".$record["email"]."\" $backupname"); - exec("doveadm import -u \"".$record["email"]."\" mdbox:".$record['maildir']."/backup $backupname all", $tmp_output, $retval); - exec("for f in `doveadm mailbox list -u \"".$record["email"]."\" $backupname*`; do doveadm mailbox subscribe -u \"".$record["email"]."\" \$f; done", $tmp_output, $retval); - exec('rm -rf '.$record['maildir'].'/backup'); + $app->system->exec_safe("doveadm mailbox create -u ? ?", $record["email"], $backupname); + $app->system->exec_safe("doveadm import -u ? mdbox:? ? all", $record["email"], $record['maildir']."/backup", $backupname); + $app->system->exec_safe("for f in `doveadm mailbox list -u ? ?*`; do doveadm mailbox subscribe -u ? \$f; done", $record["email"], $backupname, $record["email"]); + $retval = $app->system->last_exec_retcode(); + $app->system->exec_safe('rm -rf ?', $record['maildir'].'/backup'); } if($retval == 0){ @@ -260,7 +262,7 @@ class backup_plugin { } else { // cleanup if (file_exists($record['maildir'].'/'.$mail_backup['filename'])) unlink($record['maildir'].'/'.$mail_backup['filename']); - if (file_exists($record['maildir']."/backup")) exec('rm -rf '.$record['maildir']."/backup"); + if (file_exists($record['maildir']."/backup")) $app->system->exec_safe('rm -rf ?', $record['maildir']."/backup"); $app->log('Unable to restore Mail backup '.$mail_backup_file.' '.$tmp_output,LOGLEVEL_ERROR); } @@ -269,8 +271,10 @@ class backup_plugin { if($mail_backup['backup_mode'] == 'userzip') { copy($mail_backup_file, $domain_dir.'/'.$mail_backup['filename']); chgrp($domain_dir.'/'.$mail_backup['filename'], $mail_config['mailuser_group']); - $command = 'sudo -u '.$mail_config['mailuser_name'].' unzip -qq -o '.escapeshellarg($domain_dir.'/'.$mail_backup['filename']).' -d '.escapeshellarg($domain_dir).' 2> /dev/null'; - exec($command,$tmp_output, $retval); + $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $mail_config['mailuser_name'], $domain_dir.'/'.$mail_backup['filename'], $domain_dir); + $retval = $app->system->last_exec_retcode(); + $tmp_output = $app->system->last_exec_out(); unlink($domain_dir.'/'.$mail_backup['filename']); if($retval == 0){ $app->log('Restored Mail backup '.$mail_backup_file,LOGLEVEL_DEBUG); @@ -279,8 +283,10 @@ class backup_plugin { } } if($mail_backup['backup_mode'] == 'rootgz') { - $command='tar xfz '.escapeshellarg($mail_backup_file).' --directory '.escapeshellarg($domain_dir); - exec($command,$tmp_output, $retval); + $command='tar xfz ? --directory ?'; + $app->system->exec_safe($command, $mail_backup_file, $domain_dir); + $retval = $app->system->last_exec_retcode(); + $tmp_output = $app->system->last_exec_out(); if($retval == 0){ $app->log('Restored Mail backup '.$mail_backup_file,LOGLEVEL_DEBUG); } else { diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index edf7b93d9f..29d841ef8a 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -114,9 +114,7 @@ class bind_plugin { } //Do some magic... - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE '.escapeshellcmd($domain).';'. - 'dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE '.escapeshellcmd($domain)); + $app->system->exec_safe('cd ?; dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE ?; dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE ?', $dns_config['bind_zonefiles_dir'], $domain, $domain); $this->soa_dnssec_sign($data); //Now sign the zone for the first time $data['new']['dnssec_initialized']='Y'; @@ -148,8 +146,7 @@ class bind_plugin { file_put_contents($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain, $zonefile); //Sign the zone and set it valid for max. 16 days - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'dnssec-signzone -A -e +1382400 -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N increment -o '.escapeshellcmd($domain).' -t '.$filespre.escapeshellcmd($domain)); + $app->system->exec_safe('cd ?; dnssec-signzone -A -e +1382400 -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N increment -o ? -t ?', $dns_config['bind_zonefiles_dir'], $domain, $filespre.$domain); //Write Data back ino DB $dnssecdata = "DS-Records:\n".file_get_contents($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.'); @@ -187,8 +184,8 @@ class bind_plugin { if (!$new && !file_exists($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.')) $this->soa_dnssec_create($data); $dbdata = $app->db->queryOneRecord('SELECT id,serial FROM dns_soa WHERE id=?', intval($data['new']['id'])); - exec('cd '.escapeshellcmd($dns_config['bind_zonefiles_dir']).';'. - 'named-checkzone '.escapeshellcmd($domain).' '.escapeshellcmd($dns_config['bind_zonefiles_dir']).'/'.$filespre.escapeshellcmd($domain).' | egrep -ho \'[0-9]{10}\'', $serial, $retState); + $app->system->exec_safe('cd ?; named-checkzone ? ? | egrep -ho \'[0-9]{10}\'', $dns_config['bind_zonefiles_dir'], $domain, $dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain); + $retState = $app->system->last_exec_retcode(); if ($retState != 0) { $app->log('DNSSEC Error: Error in Zonefile for '.$domain, LOGLEVEL_ERR); return false; @@ -283,20 +280,22 @@ class bind_plugin { //TODO : change this when distribution information has been integrated into server record if (file_exists('/etc/gentoo-release')) { - $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1))); + $filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1)); } else { - $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1))); + $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1)); } $old_zonefile = @file_get_contents($filename); file_put_contents($filename, $tpl->grab()); - chown($filename, escapeshellcmd($dns_config['bind_user'])); - chgrp($filename, escapeshellcmd($dns_config['bind_group'])); + chown($filename, $dns_config['bind_user']); + chgrp($filename, $dns_config['bind_group']); //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $app->system->exec_safe('named-checkzone ? ?', $zone['origin'], $filename); + $out = $app->system->last_exec_out(); + $return_status = $app->system->last_exec_retcode(); if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); } else { @@ -309,8 +308,8 @@ class bind_plugin { if ($old_zonefile != '') { rename($filename, $filename.'.err'); file_put_contents($filename, $old_zonefile); - chown($filename, escapeshellcmd($dns_config['bind_user'])); - chgrp($filename, escapeshellcmd($dns_config['bind_group'])); + chown($filename, $dns_config['bind_user']); + chgrp($filename, $dns_config['bind_group']); } else { rename($filename, $filename.'.err'); } @@ -392,7 +391,10 @@ class bind_plugin { $app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG); //* DNSSEC-Implementation - if ($data['old']['dnssec_initialized'] == 'Y') exec('/usr/local/ispconfig/server/scripts/dnssec-delete.sh '.$data['old']['origin']); //delete keys + if($data['old']['dnssec_initialized'] == 'Y') { + //delete keys + $app->system->exec_safe('/usr/local/ispconfig/server/scripts/dnssec-delete.sh ?', $data['old']['origin']); + } //* Reload bind nameserver $app->services->restartServiceDelayed('bind', 'reload'); @@ -582,11 +584,6 @@ class bind_plugin { 'zonefile_path' => $sec_zonefiles_path.str_replace("/", "_", substr($tmp['origin'], 0, -1)), 'options' => $options ); - - // $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/slave/sec.'.substr($tmp['origin'],0,-1)); - // $app->log("Writing BIND domain file: ".$filename,LOGLEVEL_DEBUG); - - } $tpl_sec = new tpl(); diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index c652f299eb..f8f6640444 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -103,20 +103,6 @@ class cron_jailkit_plugin { if ($data['new']['type'] == "chrooted") { // load the server configuration options - /* - $app->uses("getconf"); - $this->data = $data; - $this->app = $app; - $this->jailkit_config = $app->getconf->get_server_config($conf["server_id"], 'jailkit'); - $this->parent_domain = $parent_domain; - - $this->_setup_jailkit_chroot(); - - //$command .= 'usermod -U '.escapeshellcmd($parent_domain['system_user']); - //exec($command); - - $this->_add_jailkit_user(); - */ $app->uses("getconf"); $this->data = $data; $this->app = $app; @@ -130,8 +116,8 @@ class cron_jailkit_plugin { $this->_add_jailkit_user(); - $command .= 'usermod -U '.escapeshellcmd($parent_domain["system_user"]).' 2>/dev/null'; - exec($command); + $command .= 'usermod -U ? 2>/dev/null'; + $app->system->exec_safe($command, $parent_domain["system_user"]); $this->_update_website_security_level(); @@ -231,14 +217,12 @@ class cron_jailkit_plugin { 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'); + $command .= ' ?'; + $command .= ' ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']); $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(); @@ -248,7 +232,7 @@ class cron_jailkit_plugin { $tpl->setVar('domain', $this->parent_domain['domain']); $tpl->setVar('home_dir', $this->_get_home_dir("")); - $bashrc = escapeshellcmd($this->parent_domain['document_root']).'/etc/bash.bashrc'; + $bashrc = $this->parent_domain['document_root'].'/etc/bash.bashrc'; if(@is_file($bashrc) || @is_link($bashrc)) unlink($bashrc); $app->system->file_put_contents($bashrc, $tpl->grab()); @@ -261,7 +245,7 @@ class cron_jailkit_plugin { $tpl->setVar('domain', $this->parent_domain['domain']); - $motd = escapeshellcmd($this->parent_domain['document_root']).'/var/run/motd'; + $motd = $this->parent_domain['document_root'].'/var/run/motd'; if(@is_file($motd) || @is_link($motd)) unlink($motd); $app->system->file_put_contents($motd, $tpl->grab()); @@ -276,16 +260,16 @@ class cron_jailkit_plugin { //copy over further programs and its libraries $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_app_programs'].'\''; - exec($command.' 2>/dev/null'); + $command .= ' ?'; + $command .= ' ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']); $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'); + $command .= ' ?'; + $command .= ' ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']); $this->app->log("Added cron programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); } @@ -298,30 +282,30 @@ class cron_jailkit_plugin { $jailkit_chroot_userhome = $this->_get_home_dir($this->parent_domain['system_user']); if(!is_dir($this->parent_domain['document_root'].'/etc')) mkdir($this->parent_domain['document_root'].'/etc'); - if(!is_file($this->parent_domain['document_root'].'/etc/passwd')) exec('touch '.$this->parent_domain['document_root'].'/etc/passwd'); + if(!is_file($this->parent_domain['document_root'].'/etc/passwd')) $app->system->exec_safe('touch ?', $this->parent_domain['document_root'].'/etc/passwd'); // IMPORTANT! // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh'; - $command .= ' '.escapeshellcmd($this->parent_domain['system_user']); - $command .= ' '.escapeshellcmd($this->parent_domain['document_root']); - $command .= ' '.$jailkit_chroot_userhome; - $command .= ' '.escapeshellcmd("/bin/bash"); - exec($command.' 2>/dev/null'); + $command .= ' ?'; + $command .= ' ?'; + $command .= ' ?'; + $command .= ' /bin/bash'; + $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome); $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'])); + $app->system->mkdir($this->parent_domain['document_root'].$jailkit_chroot_userhome, 0755, true); + $app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']); + $app->system->chgrp($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_group']); } function _get_home_dir($username) { - return str_replace("[username]", escapeshellcmd($username), $this->jailkit_config["jailkit_chroot_home"]); + return str_replace("[username]", $username, $this->jailkit_config["jailkit_chroot_home"]); } //* Update the website root directory permissions depending on the security level @@ -345,15 +329,5 @@ class cron_jailkit_plugin { } } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - - - } // end class -?> diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index fb623b9213..af4e24d974 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -112,15 +112,15 @@ class cron_plugin { // Create group and user, if not exist $app->uses("system"); - $groupname = escapeshellcmd($parent_domain["system_group"]); + $groupname = $parent_domain["system_group"]; if($parent_domain["system_group"] != '' && !$app->system->is_group($parent_domain["system_group"])) { - exec("groupadd $groupname"); + $app->system->exec_safe("groupadd ?", $groupname); $app->log("Adding the group: $groupname", LOGLEVEL_DEBUG); } - $username = escapeshellcmd($parent_domain["system_user"]); + $username = $parent_domain["system_user"]; if($parent_domain["system_user"] != '' && !$app->system->is_user($parent_domain["system_user"])) { - exec("useradd -d ".escapeshellcmd($parent_domain["document_root"])." -g $groupname $username -s /bin/false"); + $app->system->exec_safe("useradd -d ? -g ? ? -s /bin/false", $parent_domain["document_root"], $groupname, $username); $app->log("Adding the user: $username", LOGLEVEL_DEBUG); } @@ -136,19 +136,19 @@ class cron_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($parent_domain["document_root"]) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $parent_domain["document_root"])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if ( in_array($file_system , array('ext2','ext3','ext4'),true) ) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } elseif ($file_system == 'xfs') { - exec("xfs_quota -x -c 'limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username' $primitive_root"); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username", $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' $primitive_root"); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); @@ -164,7 +164,7 @@ class cron_plugin { } // make temp directory writable for the apache and website users - $app->system->chmod(escapeshellcmd($parent_domain["document_root"].'/tmp'), 0777); + $app->system->chmod($parent_domain["document_root"].'/tmp', 0777); /** TODO READ CRON MASTER **/ @@ -272,7 +272,7 @@ class cron_plugin { } } - $cron_file = escapeshellcmd($cron_config["crontab_dir"].'/ispc_'.$this->parent_domain["system_user"]); + $cron_file = $cron_config["crontab_dir"].'/ispc_'.$this->parent_domain["system_user"]; //TODO : change this when distribution information has been integrated into server record //* Gentoo vixie-cron requires files to end with .cron in the cron.d directory if (file_exists('/etc/gentoo-release')) { @@ -287,7 +287,7 @@ class cron_plugin { $app->log("Deleted Cron file $cron_file", LOGLEVEL_DEBUG); } - $cron_file = escapeshellcmd($cron_config["crontab_dir"].'/ispc_chrooted_'.$this->parent_domain["system_user"]); + $cron_file = $cron_config["crontab_dir"].'/ispc_chrooted_'.$this->parent_domain["system_user"]; if($chr_cmd_count > 0) { $app->system->file_put_contents($cron_file, $chr_cron_content); $app->log("Wrote Cron file $cron_file with content:\n$chr_cron_content", LOGLEVEL_DEBUG); diff --git a/server/plugins-available/firewall_plugin.inc.php b/server/plugins-available/firewall_plugin.inc.php index 67ed2379fb..b924f43a26 100644 --- a/server/plugins-available/firewall_plugin.inc.php +++ b/server/plugins-available/firewall_plugin.inc.php @@ -145,7 +145,7 @@ class firewall_plugin { //* add tcp ports foreach($tcp_ports_new_array as $port) { if(!in_array($port, $tcp_ports_old_array) && $port > 0) { - exec('ufw allow '.$port.'/tcp'); + $app->system->exec_safe('ufw allow ?', $port.'/tcp'); $app->log('ufw allow '.$port.'/tcp', LOGLEVEL_DEBUG); sleep(1); } @@ -154,7 +154,7 @@ class firewall_plugin { //* remove tcp ports foreach($tcp_ports_old_array as $port) { if(!in_array($port, $tcp_ports_new_array) && $port > 0) { - exec('ufw delete allow '.$port.'/tcp'); + $app->system->exec_safe('ufw delete allow ?', $port.'/tcp'); $app->log('ufw delete allow '.$port.'/tcp', LOGLEVEL_DEBUG); sleep(1); } @@ -163,7 +163,7 @@ class firewall_plugin { //* add udp ports foreach($udp_ports_new_array as $port) { if(!in_array($port, $udp_ports_old_array) && $port > 0) { - exec('ufw allow '.$port.'/udp'); + $app->system->exec_safe('ufw allow ?', $port.'/udp'); $app->log('ufw allow '.$port.'/udp', LOGLEVEL_DEBUG); sleep(1); } @@ -172,32 +172,12 @@ class firewall_plugin { //* remove udp ports foreach($udp_ports_old_array as $port) { if(!in_array($port, $udp_ports_new_array) && $port > 0) { - exec('ufw delete allow '.$port.'/udp'); + $app->system->exec_safe('ufw delete allow ?', $port.'/udp'); $app->log('ufw delete allow '.$port.'/udp', LOGLEVEL_DEBUG); sleep(1); } } - /* - if($tcp_ports_new != $tcp_ports_old) { - exec('ufw allow to any proto tcp port '.$tcp_ports_new); - $app->log('ufw allow to any proto tcp port '.$tcp_ports_new,LOGLEVEL_DEBUG); - if($event_name == 'firewall_update') { - exec('ufw delete allow to any proto tcp port '.$tcp_ports_old); - $app->log('ufw delete allow to any proto tcp port '.$tcp_ports_old,LOGLEVEL_DEBUG); - } - } - - if($udp_ports_new != $udp_ports_old) { - exec('ufw allow to any proto udp port '.$udp_ports_new); - $app->log('ufw allow to any proto udp port '.$udp_ports_new,LOGLEVEL_DEBUG); - if($event_name == 'firewall_update') { - exec('ufw delete allow to any proto udp port '.$udp_ports_old); - $app->log('ufw delete allow to any proto udp port '.$udp_ports_old,LOGLEVEL_DEBUG); - } - } - */ - if($data['new']['active'] == 'y') { if($data['new']['active'] == $data['old']['active']) { exec('ufw reload'); diff --git a/server/plugins-available/getmail_plugin.inc.php b/server/plugins-available/getmail_plugin.inc.php index a4481037f7..c3f4f7e1dc 100644 --- a/server/plugins-available/getmail_plugin.inc.php +++ b/server/plugins-available/getmail_plugin.inc.php @@ -94,7 +94,7 @@ class getmail_plugin { $this->delete($event_name, $data); // Get the new config file path - $config_file_path = escapeshellcmd($this->getmail_config_dir.'/'.$this->_clean_path($data["new"]["source_server"]).'_'.$this->_clean_path($data["new"]["source_username"]).'.conf'); + $config_file_path = $this->getmail_config_dir.'/'.$this->_clean_path($data["new"]["source_server"]).'_'.$this->_clean_path($data["new"]["source_username"]).'.conf'; if(stristr($config_file_path, "..") or stristr($config_file_path, "|") or stristr($config_file_path, ";") or stristr($config_file_path, '$')) { $app->log("Possibly faked path for getmail config file: '$config_file_path'. File is not written.", LOGLEVEL_ERROR); return false; @@ -162,7 +162,7 @@ class getmail_plugin { $getmail_config = $app->getconf->get_server_config($conf["server_id"], 'getmail'); $this->getmail_config_dir = $getmail_config["getmail_config_dir"]; - $config_file_path = escapeshellcmd($this->getmail_config_dir.'/'.$this->_clean_path($data["old"]["source_server"]).'_'.$this->_clean_path($data["old"]["source_username"]).'.conf'); + $config_file_path = $this->getmail_config_dir.'/'.$this->_clean_path($data["old"]["source_server"]).'_'.$this->_clean_path($data["old"]["source_username"]).'.conf'; if(stristr($config_file_path, "..") || stristr($config_file_path, "|") || stristr($config_file_path, ";") || stristr($config_file_path, '$')) { $app->log("Possibly faked path for getmail config file: '$config_file_path'. File is not written.", LOGLEVEL_ERROR); return false; diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index 8275696620..4d5ac826d3 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -125,23 +125,22 @@ class mail_plugin { $group = $app->system->getgroup($data['new']['gid']); //* Create the mail domain directory, if it does not exist if(!empty($base_path) && !is_dir($base_path)) { - //exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']); $app->system->mkdirpath($base_path, 0770, $mail_config['mailuser_name'], $mail_config['mailuser_group']); // needs group-access because users of subfolders may differ from vmail $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); } if ($data['new']['maildir_format'] == 'mdbox') { - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Drafts'", $data["new"]["email"]); } else { // Dovecot uses a different mail layout with a separate 'Maildir' subdirectory. @@ -154,53 +153,44 @@ class mail_plugin { //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); - exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); - $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + $app->system->exec_safe("su -c ? vmail", "mv -f " . $data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path)) { - //exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); $app->system->maildirmake($maildomain_path, $user, '', $group); //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { - if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user); // Avoid maildirmake quota bug, see debian bug #214911 - $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 + $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } } if(!is_dir($data['new']['maildir'].'/.Sent')) { - //exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } if(!is_dir($data['new']['maildir'].'/.Drafts')) { - //exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Drafts', $group); } if(!is_dir($data['new']['maildir'].'/.Trash')) { - //exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Trash', $group); } if(!is_dir($data['new']['maildir'].'/.Junk')) { - //exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } // Set permissions now recursive - exec('chown -R '.$user.':'.$group.' '.escapeshellcmd($data['new']['maildir'])); - $app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_DEBUG); + $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); + $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); //* Set the maildir quota if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user); - $app->log('Set Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($data['new']['maildir'])) $app->system->exec_safe("su -c ? ? ", "maildirmake -q ".$data['new']['quota']."S ". $data['new']['maildir'], $user); + $app->log('Set Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir']."' ".$user, LOGLEVEL_DEBUG); } } } @@ -269,19 +259,6 @@ class mail_plugin { $app->uses('getconf,system'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - // convert to lower case - it could cause problems if some directory above has upper case name - // $data['new']['maildir'] = strtolower($data['new']['maildir']); - - // Create the maildir, if it does not exist - /* - if(!is_dir($data['new']['maildir'])) { - mkdir(escapeshellcmd($data['new']['maildir']), 0, true); - chown(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_name']); - chgrp(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_group']); - $app->log('Created Maildir: '.$data['new']['maildir'],LOGLEVEL_DEBUG); - } - */ - // Maildir-Format must not be changed on this way !! $data['new']['maildir_format'] = $data['old']['maildir_format']; @@ -324,7 +301,6 @@ class mail_plugin { //* Create the mail domain directory, if it does not exist if(!empty($base_path) && !is_dir($base_path)) { - //exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']); $app->system->mkdirpath($base_path, 0770, $mail_config['mailuser_name'], $mail_config['mailuser_group']); // needs group-access because users of subfolders may differ from vmail $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); } @@ -333,29 +309,26 @@ class mail_plugin { // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { - exec("rm -fr ".escapeshellcmd($data['new']['maildir'])); + $app->system->exec_safe("rm -fr ?", $data['new']['maildir']); //rmdir($data['new']['maildir']); } - exec('mv -f '.escapeshellcmd($data['old']['maildir']).' '.escapeshellcmd($data['new']['maildir'])); - // exec('mv -f '.escapeshellcmd($data['old']['maildir']).'/* '.escapeshellcmd($data['new']['maildir'])); - // if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir'])); - // rmdir($data['old']['maildir']); + $app->system->exec_safe('mv -f ? ?'. $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!is_dir($data['new']['maildir'].'/mdbox')) { - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox create -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" INBOX'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Sent'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Trash'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Junk'"); - exec("su -c 'doveadm mailbox subscribe -u \"".$data["new"]["email"]."\" Drafts'"); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Junk'", $data["new"]["email"]); + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Drafts'", $data["new"]["email"]); } } else { @@ -369,21 +342,19 @@ class mail_plugin { //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); - exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail"); - $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN); + $app->system->exec_safe("su -c ? ?", "mv -f ".$data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 'vmail'); + $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path.'/new')) { - //exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log("Created Maildir "."su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, '', $group); //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user); // Avoid maildirmake quota bug, see debian bug #214911 - $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 + $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } else { if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize'); $app->log('Set Maildir quota to unlimited.', LOGLEVEL_DEBUG); @@ -392,48 +363,36 @@ class mail_plugin { } if(!is_dir($data['new']['maildir'].'/.Sent')) { - //exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } if(!is_dir($data['new']['maildir'].'/.Drafts')) { - //exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Drafts', $group); } if(!is_dir($data['new']['maildir'].'/.Trash')) { - //exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Trash', $group); } if(!is_dir($data['new']['maildir'].'/.Junk')) { - //exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); - //$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG); $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } // Set permissions now recursive - exec('chown -R '.$user.':'.$group.' '.escapeshellcmd($data['new']['maildir'])); - $app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_DEBUG); + $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); + $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { - exec("rm -fr ".escapeshellcmd($data['new']['maildir'])); - //rmdir($data['new']['maildir']); + $app->system->exec_safe("rm -fr ?", $data['new']['maildir']); } - exec('mv -f '.escapeshellcmd($data['old']['maildir']).' '.escapeshellcmd($data['new']['maildir'])); - // exec('mv -f '.escapeshellcmd($data['old']['maildir']).'/* '.escapeshellcmd($data['new']['maildir'])); - // if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir'])); - // rmdir($data['old']['maildir']); + $app->system->exec_safe('mv -f ? ?', $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } //This is to fix the maildrop quota not being rebuilt after the quota is changed. // Courier Layout if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { - if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user); - $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$user, LOGLEVEL_DEBUG); + if(is_dir($data['new']['maildir'])) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir'], $user); + $app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$data['new']['maildir']."' ".$user, LOGLEVEL_DEBUG); } else { if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize'); $app->log('Set Maildir quota to unlimited.', LOGLEVEL_DEBUG); @@ -450,9 +409,9 @@ class mail_plugin { $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); $maildir_path_deleted = false; - $old_maildir_path = escapeshellcmd($data['old']['maildir']); + $old_maildir_path = $data['old']['maildir']; if($old_maildir_path != $mail_config['homedir_path'] && strlen($old_maildir_path) > strlen($mail_config['homedir_path']) && !stristr($old_maildir_path, '//') && !stristr($old_maildir_path, '..') && !stristr($old_maildir_path, '*') && strlen($old_maildir_path) >= 10) { - exec('rm -rf '.escapeshellcmd($old_maildir_path)); + $app->system->exec_safe('rm -rf ?', $old_maildir_path); $app->log('Deleted the Maildir: '.$data['old']['maildir'], LOGLEVEL_DEBUG); $maildir_path_deleted = true; } else { @@ -474,7 +433,7 @@ class mail_plugin { if (is_array($domain_rec)) { $mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id']; $mail_backup_files = 'mail'.$data['old']['mailuser_id']; - exec(escapeshellcmd('rm -f '.$mail_backup_dir.'/'.$mail_backup_files).'*'); + $app->system->exec_safe('rm -f ?*', $mail_backup_dir.'/'.$mail_backup_files); //* cleanup database $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?"; $app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']); @@ -494,9 +453,9 @@ class mail_plugin { $maildomain_path_deleted = false; //* Delete maildomain path - $old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/'.$data['old']['domain']); + $old_maildomain_path = $mail_config['homedir_path'].'/'.$data['old']['domain']; if($old_maildomain_path != $mail_config['homedir_path'] && !stristr($old_maildomain_path, '//') && !stristr($old_maildomain_path, '..') && !stristr($old_maildomain_path, '*') && !stristr($old_maildomain_path, '&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) { - exec('rm -rf '.escapeshellcmd($old_maildomain_path)); + $app->system->exec_safe('rm -rf ?', $old_maildomain_path); $app->log('Deleted the mail domain directory: '.$old_maildomain_path, LOGLEVEL_DEBUG); $maildomain_path_deleted = true; } else { @@ -504,9 +463,9 @@ class mail_plugin { } //* Delete mailfilter path - $old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/mailfilters/'.$data['old']['domain']); + $old_maildomain_path = $mail_config['homedir_path'].'/mailfilters/'.$data['old']['domain']; if($old_maildomain_path != $mail_config['homedir_path'].'/mailfilters/' && !stristr($old_maildomain_path, '//') && !stristr($old_maildomain_path, '..') && !stristr($old_maildomain_path, '*') && !stristr($old_maildomain_path, '&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) { - exec('rm -rf '.escapeshellcmd($old_maildomain_path)); + $app->system->exec_safe('rm -rf ?', $old_maildomain_path); $app->log('Deleted the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_DEBUG); } else { $app->log('Possible security violation when deleting the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_ERROR); @@ -521,7 +480,7 @@ class mail_plugin { if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false; if($mount_backup){ $mail_backup_dir = $backup_dir.'/mail'.$data['old']['domain_id']; - exec(escapeshellcmd('rm -rf '.$mail_backup_dir)); + $app->system->exec_safe('rm -rf ?', $mail_backup_dir); //* cleanup database $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ?"; $app->db->query($sql, $conf['server_id'], $data['old']['domain_id']); diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 6f042e9070..b54f4f56c7 100755 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -192,7 +192,8 @@ class mail_plugin_dkim { $app->log('Saved DKIM Private-key to '.$key_file.'.private', LOGLEVEL_DEBUG); $success=true; /* now we get the DKIM Public-key */ - exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout 2> /dev/null', $pubkey, $result); + $app->system->exec_safe('cat ?|openssl rsa -pubout 2> /dev/null', $key_file.'.private'); + $pubkey = $app->system->last_exec_out(); $public_key=''; foreach($pubkey as $values) $public_key=$public_key.$values."\n"; /* save the DKIM Public-key in dkim-dir */ diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php index 99ac9db7d2..e6251aedf1 100644 --- a/server/plugins-available/mailman_plugin.inc.php +++ b/server/plugins-available/mailman_plugin.inc.php @@ -73,7 +73,7 @@ class mailman_plugin { $this->update_config(); - $pid = exec("nohup /usr/lib/mailman/bin/newlist -u ".escapeshellcmd($data["new"]["domain"])." -e ".escapeshellcmd($data["new"]["domain"])." ".escapeshellcmd($data["new"]["listname"])." ".escapeshellcmd($data["new"]["email"])." ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 & echo $!;"); + $pid = $app->system->exec_safe("nohup /usr/lib/mailman/bin/newlist -u ? -e ? ? ? ? >/dev/null 2>&1 & echo $!;", $data["new"]["domain"], $data["new"]["domain"], $data["new"]["listname"], $data["new"]["email"], $data["new"]["password"]); // wait for /usr/lib/mailman/bin/newlist-call $running = true; do { @@ -91,7 +91,7 @@ class mailman_plugin { exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); // Fix list URL - exec('/usr/sbin/withlist -l -r fix_url '.escapeshellcmd($data["new"]["listname"])); + $app->system->exec_safe('/usr/sbin/withlist -l -r fix_url ?', $data["new"]["listname"]); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); @@ -104,7 +104,7 @@ class mailman_plugin { $this->update_config(); if($data["new"]["password"] != $data["old"]["password"] && $data["new"]["password"] != '') { - exec("nohup /usr/lib/mailman/bin/change_pw -l ".escapeshellcmd($data["new"]["listname"])." -p ".escapeshellcmd($data["new"]["password"])." >/dev/null 2>&1 &"); + $app->system->exec_safe("nohup /usr/lib/mailman/bin/change_pw -l ? -p ? >/dev/null 2>&1 &", $data["new"]["listname"], $data["new"]["password"]); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); } @@ -118,7 +118,7 @@ class mailman_plugin { $this->update_config(); - exec("nohup /usr/lib/mailman/bin/rmlist -a ".escapeshellcmd($data["old"]["listname"])." >/dev/null 2>&1 &"); + $app->system->exec_safe("nohup /usr/lib/mailman/bin/rmlist -a ? >/dev/null 2>&1 &", $data["old"]["listname"]); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index efe7142c8d..a26129eed9 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -344,15 +344,15 @@ class mysql_clientdb_plugin { $triggers_array[] = $row; } $app->log('Dumping triggers from '.$old_name, LOGLEVEL_DEBUG); - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$old_name." -d -t -R -E > ".$timestamp.$old_name.'.triggers'; - exec($command, $out, $ret); + $command = "mysqldump -h ? -u ? -p? ? -d -t -R -E > ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $old_name, $timestamp.$old_name.'.triggers'); + $ret = $app->system->last_exec_retcode(); $app->system->chmod($timestamp.$old_name.'.triggers', 0600); if ($ret != 0) { unset($triggers_array); $app->system->unlink($timestamp.$old_name.'.triggers'); $app->log('Unable to dump triggers from '.$old_name, LOGLEVEL_ERROR); } - unset($out); } //* save views @@ -366,15 +366,15 @@ class mysql_clientdb_plugin { } $app->log('Dumping views from '.$old_name, LOGLEVEL_DEBUG); $temp_views = implode(' ', $temp); - $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$old_name." ".$temp_views." > ".$timestamp.$old_name.'.views'; - exec($command, $out, $ret); + $command = "mysqldump -h ? -u ? -p? ? ? > ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $old_name, $temp_views, $timestamp.$old_name.'.views'); + $ret = $app->system->last_exec_retcode(); $app->system->chmod($timestamp.$old_name.'.views', 0600); if ($ret != 0) { unset($views_array); $app->system->unlink($timestamp.$old_name.'.views'); $app->log('Unable to dump views from '.$old_name, LOGLEVEL_ERROR); } - unset($out); unset($temp); unset($temp_views); } @@ -405,8 +405,9 @@ class mysql_clientdb_plugin { unset($_trigger); } //* update triggers, routines and events - $command = "mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$new_name." < ".$timestamp.$old_name.'.triggers'; - exec($command, $out, $ret); + $command = "mysql -h ? -u ? -p? ? < ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $new_name, $timestamp.$old_name.'.triggers'); + $ret = $app->system->last_exec_retcode(); if ($ret != 0) { $app->log('Unable to import triggers for '.$new_name, LOGLEVEL_ERROR); } else { @@ -416,8 +417,9 @@ class mysql_clientdb_plugin { //* loading views if (@is_array($views_array)) { - $command = "mysql -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." ".$new_name." < ".$timestamp.$old_name.'.views'; - exec($command, $out, $ret); + $command = "mysql -h ? -u ? -p? ? < ?"; + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $new_name, $timestamp.$old_name.'.views'); + $ret = $app->system->last_exec_retcode(); if ($ret != 0) { $app->log('Unable to import views for '.$new_name, LOGLEVEL_ERROR); } else { diff --git a/server/plugins-available/network_settings_plugin.inc.php b/server/plugins-available/network_settings_plugin.inc.php index 5ce6f934b8..1ed12f3a1c 100644 --- a/server/plugins-available/network_settings_plugin.inc.php +++ b/server/plugins-available/network_settings_plugin.inc.php @@ -280,8 +280,8 @@ class network_settings_plugin { //* Executing the postconf commands foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - exec($command); + $command = "postconf -e ?"; + $app->system->exec_safe($command, $cmd); } $app->log('Changed changed myhostname and mydestination in postfix main.cf to '.$new_hostname, LOGLEVEL_DEBUG); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 30f9501505..9913299aa5 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -105,7 +105,6 @@ class nginx_plugin { //* Only vhosts can have a ssl cert if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") return; - // if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/ssl') && !is_dir($data['old']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); $ssl_dir = $data['new']['document_root'].'/ssl'; @@ -170,36 +169,36 @@ class nginx_plugin { $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); - $rand_file = escapeshellcmd($rand_file); - $key_file2 = escapeshellcmd($key_file2); + $rand_file = $rand_file; + $key_file2 = $key_file2; $openssl_cmd_key_file2 = $key_file2; if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate - $key_file = escapeshellcmd($key_file); + $key_file = $key_file; $openssl_cmd_key_file = $key_file; if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate $ssl_days = 3650; - $csr_file = escapeshellcmd($csr_file); + $csr_file = $csr_file; $openssl_cmd_csr_file = $csr_file; if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate - $config_file = escapeshellcmd($ssl_cnf_file); - $crt_file = escapeshellcmd($crt_file); + $config_file = $ssl_cnf_file; + $crt_file = $crt_file; $openssl_cmd_crt_file = $crt_file; if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) { - exec("openssl genrsa -des3 -rand $rand_file -passout pass:$ssl_password -out $openssl_cmd_key_file2 2048"); - exec("openssl req -new -sha256 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -out $openssl_cmd_csr_file -days $ssl_days -config $config_file"); - exec("openssl rsa -passin pass:$ssl_password -in $openssl_cmd_key_file2 -out $openssl_cmd_key_file"); + $app->system->exec_safe("openssl genrsa -des3 -rand ? -passout pass:? -out ? 2048", $rand_file, $ssl_password, $openssl_cmd_key_file2); + $app->system->exec_safe("openssl req -new -sha256 -passin pass:? -passout pass:? -key ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $ssl_days, $config_file); + $app->system->exec_safe("openssl rsa -passin pass:? -in ? -out ?", $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_key_file); if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file"); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ - exec("openssl req -x509 -passin pass:$ssl_password -passout pass:$ssl_password -key $openssl_cmd_key_file2 -in $openssl_cmd_csr_file -out $openssl_cmd_crt_file -days $ssl_days -config $config_file "); + $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); $app->log("Creating self-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; @@ -240,7 +239,8 @@ class nginx_plugin { if($data["new"]["ssl_action"] == 'save') { $tmp = array(); $crt_data = ''; - exec('openssl x509 -noout -text -in '.escapeshellarg($crt_file),$tmp); + $app->system->exec_safe('openssl x509 -noout -text -in ?', $crt_file); + $tmp = $app->system->last_exec_out(); $crt_data = implode("\n",$tmp); if(stristr($crt_data,'.acme.invalid')) { $data["new"]["ssl_action"] = ''; @@ -303,7 +303,7 @@ class nginx_plugin { if($data['new']['ssl_action'] == 'del') { if(file_exists($web_config['CA_path'].'/openssl.cnf') && !is_link($web_config['CA_path'].'/openssl.cnf')) { - exec("openssl ca -batch -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -revoke ".escapeshellcmd($crt_file)); + $app->system->exec_safe("openssl ca -batch -config ? -passin pass:? -revoke ?", $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $crt_file); $app->log("Revoking CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); }; $app->system->unlink($csr_file); @@ -439,31 +439,31 @@ class nginx_plugin { //* Check if a ispconfigend user and group exists and create them if(!$app->system->is_group('ispconfigend')) { - exec('groupadd --gid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('groupadd --gid ? ispconfigend', $connect_userid_to_webid_start + 10000); } if(!$app->system->is_user('ispconfigend')) { - exec('useradd -g ispconfigend -d /usr/local/ispconfig --uid '.($connect_userid_to_webid_start + 10000).' ispconfigend'); + $app->system->exec_safe('useradd -g ispconfigend -d /usr/local/ispconfig --uid ? ispconfigend', $connect_userid_to_webid_start + 10000); } } else { $fixed_uid_param = ''; $fixed_gid_param = ''; } - $groupname = escapeshellcmd($data['new']['system_group']); + $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - exec('groupadd '.$fixed_gid_param.' '.$groupname); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); + $app->system->exec_safe('groupadd ? ?', $fixed_gid_param, $groupname); + if($nginx_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } - $username = escapeshellcmd($data['new']['system_user']); + $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param -G sshusers $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); } else { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname $fixed_uid_param $username -s /bin/false"); + $app->system->exec_safe('useradd -d ? -g ? ? ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } @@ -486,7 +486,7 @@ class nginx_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // create the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -510,12 +510,12 @@ class nginx_plugin { } //* Unmount the old log directory bfore we move the log dir - exec('umount '.escapeshellcmd($old_dir.'/log')); + $app->system->exec_safe('umount ?', $old_dir.'/log'); //* Create new base directory, if it does not exist yet if(!is_dir($new_dir)) $app->system->mkdirpath($new_dir); $app->system->web_folder_protection($data['old']['document_root'], false); - exec('mv '.escapeshellarg($data['old']['document_root']).' '.escapeshellarg($new_dir)); + $app->system->exec_safe('mv ? ?', $data['old']['document_root'], $new_dir); //$app->system->rename($data['old']['document_root'],$new_dir); $app->log('Moving site to new document root: mv '.$data['old']['document_root'].' '.$new_dir, LOGLEVEL_DEBUG); @@ -523,17 +523,17 @@ class nginx_plugin { $data['new']['php_open_basedir'] = str_replace($data['old']['document_root'], $data['new']['document_root'], $data['old']['php_open_basedir']); //* Change the owner of the website files to the new website owner - exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir); + $app->system->exec_safe('chown --recursive --from=?:? ?:? ?', $data['old']['system_user'], $data['old']['system_group'], $data['new']['system_user'], $data['new']['system_group'], $new_dir); //* Change the home directory and group of the website user - $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' ; usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['document_root']); - $command .= ' --gid '.escapeshellcmd($data['new']['system_group']); - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - exec($command); + $command = 'killall -u ? ; usermod'; + $command .= ' --home ?'; + $command .= ' --gid ?'; + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user'], $data['new']['document_root'], $data['new']['system_group'], $data['new']['system_user']); } - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + if($nginx_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* Change the log mount /* @@ -555,7 +555,7 @@ class nginx_plugin { $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); } - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); } @@ -567,11 +567,9 @@ class nginx_plugin { if(!is_dir($data['new']['document_root'].'/' . $web_folder)) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); - //if(!is_dir($data['new']['document_root'].'/'.$log_folder)) exec('mkdir -p '.$data['new']['document_root'].'/'.$log_folder); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); - //if(!is_dir($data['new']['document_root'].'/webdav')) $app->system->mkdirpath($data['new']['document_root'].'/webdav'); if(!is_dir($data['new']['document_root'].'/.ssh')) { $app->system->mkdirpath($data['new']['document_root'].'/.ssh'); @@ -591,7 +589,7 @@ class nginx_plugin { // Remove the symlink for the site, if site is renamed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/httpd/'.$data['old']['domain']); if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder); //* remove old log mount @@ -599,19 +597,18 @@ class nginx_plugin { $app->system->removeLine('/etc/fstab', $fstab_line); //* Unmount log directory - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder)); + $app->system->exec_safe('umount ?', $data['old']['document_root'].'/'.$old_log_folder); } //* Create the log dir if nescessary and mount it if(!is_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) { if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder); - if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/httpd/'.$data['new']['domain']); $app->system->mkdirpath($data['new']['document_root'].'/'.$log_folder); $app->system->chown($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chgrp($data['new']['document_root'].'/'.$log_folder, 'root'); $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); - exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder)); + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; @@ -636,7 +633,7 @@ class nginx_plugin { if(substr($tmp_symlink, -1, 1) == '/') $tmp_symlink = substr($tmp_symlink, 0, -1); // remove the symlinks, if not exist if(is_link($tmp_symlink)) { - exec('rm -f '.escapeshellcmd($tmp_symlink)); + $app->system->exec_safe('rm -f ?', $tmp_symlink); $app->log('Removed symlink: rm -f '.$tmp_symlink, LOGLEVEL_DEBUG); } } @@ -657,11 +654,10 @@ class nginx_plugin { } // create the symlinks, if not exist if(!is_link($tmp_symlink)) { - // exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); if ($web_config["website_symlinks_rel"] == 'y') { - $app->system->create_relative_link(escapeshellcmd($data["new"]["document_root"]), escapeshellcmd($tmp_symlink)); + $app->system->create_relative_link($data["new"]["document_root"], $tmp_symlink); } else { - exec("ln -s ".escapeshellcmd($data["new"]["document_root"])."/ ".escapeshellcmd($tmp_symlink)); + $app->system->exec_safe("ln -s ? ?", $data["new"]["document_root"]."/", $tmp_symlink); } $app->log('Creating symlink: ln -s '.$data['new']['document_root'].'/ '.$tmp_symlink, LOGLEVEL_DEBUG); @@ -681,69 +677,65 @@ class nginx_plugin { // Copy the error pages if($data['new']['errordocs']) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp '. $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { - if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2))) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language']), 0, 2)) { + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf-custom/index/robots.txt')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf-custom/index/.htaccess')) { - // exec('cp ' . $conf['rootpath'] . '/conf-custom/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); - //} } else { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html')) { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf-custom/index/standard_index.html '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html', $data['new']['document_root'].'/' . $web_folder . '/index.html'); } else { - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html')) exec('cp ' . $conf['rootpath'] . '/conf/index/standard_index.html_'.substr(escapeshellcmd($conf['language']), 0, 2).' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/index.html'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf/index/favicon.ico')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/favicon.ico')) exec('cp ' . $conf['rootpath'] . '/conf/index/favicon.ico '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/favicon.ico')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/favicon.ico', $data['new']['document_root'].'/' . $web_folder . '/'); } if(is_file($conf['rootpath'] . '/conf/index/robots.txt')){ - if(!file_exists(escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/robots.txt')) exec('cp ' . $conf['rootpath'] . '/conf/index/robots.txt '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/robots.txt')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf/index/robots.txt', $data['new']['document_root'].'/' . $web_folder . '/'); } - //if(is_file($conf['rootpath'] . '/conf/index/.htaccess')) exec('cp ' . $conf['rootpath'] . '/conf/index/.htaccess '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); } } } - exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/'); + $app->system->exec_safe('chmod -R a+r ?', $data['new']['document_root'].'/' . $web_folder . '/'); //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) { - $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/'; - if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $error_page_path = $data['new']['document_root'].'/' . $web_folder . '/error/'; + if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2))) { + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf-custom/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } else { if (file_exists($conf['rootpath'] . '/conf-custom/error/400.html')) { - exec('cp ' . $conf['rootpath'] . '/conf-custom/error/*.html '.$error_page_path); + $app->system->exec_safe('cp ?*.html ?', $conf['rootpath'] . '/conf-custom/error/', $error_page_path); } else { - exec('cp ' . $conf['rootpath'] . '/conf/error/'.substr(escapeshellcmd($conf['language']), 0, 2).'/* '.$error_page_path); + $app->system->exec_safe('cp ?* ?', $conf['rootpath'] . '/conf/error/'.substr($conf['language'], 0, 2).'/', $error_page_path); } } - exec('chmod -R a+r '.$error_page_path); - exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path); + $app->system->exec_safe('chmod -R a+r ?', $error_page_path); + $app->system->exec_safe('chown -R ?:? ?', $data['new']['system_user'], $data['new']['system_group'], $error_page_path); } // end copy error docs // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias @@ -758,39 +750,39 @@ class nginx_plugin { } // get the primitive folder for document_root and the filesystem, will need it later. - $df_output=explode(" ", exec("df -T " . escapeshellarg($data['new']['document_root']) . "|awk 'END{print \$2,\$NF}'")); + $df_output=explode(" ", $app->system->exec_safe("df -T ?|awk 'END{print \$2,\$NF}'", $data['new']['document_root'])); $file_system = $df_output[0]; $primitive_root = $df_output[1]; if($file_system == 'xfs') { - exec("xfs_quota -x -c " . escapeshellarg("limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username) . " " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " " . $username, $primitive_root); // xfs only supports timers globally, not per user. - exec("xfs_quota -x -c 'timer -bir -i 604800' " . escapeshellarg($primitive_root)); + $app->system->exec_safe("xfs_quota -x -c 'timer -bir -i 604800' ?", $primitive_root); unset($project_uid, $username_position, $xfs_projects); unset($primitive_root, $df_output, $mb_hard, $mb_soft); } else { if($app->system->is_installed('setquota')) { - exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null'); - exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null'); + $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); + $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } } } if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) { // Chown and chmod the directories below the document root - $app->system->_exec('chown -R '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); // The document root itself has to be owned by root in normal level and by the web owner in security level 20 if($web_config['security_level'] == 20) { - $app->system->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown ?:? ?', $username, $groupname, $data['new']['document_root'].'/' . $web_folder); } else { - $app->system->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder); + $app->system->exec_safe('chown root:root ?', $data['new']['document_root'].'/' . $web_folder); } } //* add the nginx user to the client group if this is a vhost and security level is set to high, no matter if this is an insert or update and regardless of set_folder_permissions_on_update - if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['nginx_user'])); + if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, $web_config['nginx_user']); //* If the security level is set to high if(($this->action == 'insert' && $data['new']['type'] == 'vhost') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhost') or ($web_folder != $old_web_folder && $data['new']['type'] == 'vhost')) { @@ -820,18 +812,18 @@ class nginx_plugin { if($web_config['add_web_users_to_sshusers_group'] == 'y') { $command = 'usermod'; $command .= ' --groups sshusers'; - $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null'; - $app->system->_exec($command); + $command .= ' ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['system_user']); } //* if we have a chrooted nginx environment if($nginx_chrooted) { - $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); //* add the nginx user to the client group in the chroot environment $tmp_groupfile = $app->system->server_conf['group_datei']; $app->system->server_conf['group_datei'] = $web_config['website_basedir'].'/etc/group'; - $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['nginx_user'])); + $app->system->add_user_to_group($groupname, $web_config['nginx_user']); $app->system->server_conf['group_datei'] = $tmp_groupfile; unset($tmp_groupfile); } @@ -945,7 +937,7 @@ class nginx_plugin { if($data['new']['type'] == 'vhost') { // Change the ownership of the error log to the root user - if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) exec('touch '.escapeshellcmd('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')); + if(!@is_file('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log')) $app->system->exec_safe('touch ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log'); $app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } @@ -1023,14 +1015,14 @@ class nginx_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } $pool_dir = trim($pool_dir); if(substr($pool_dir, -1) != '/') $pool_dir .= '/'; $pool_name = 'web'.$data['new']['domain_id']; - $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']); + $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if($data['new']['php_fpm_use_socket'] == 'y'){ @@ -1814,7 +1806,7 @@ class nginx_plugin { $basic_auth_locations = $this->_create_web_folder_auth_configuration($data['new']); if(is_array($basic_auth_locations) && !empty($basic_auth_locations)) $tpl->setLoop('basic_auth_locations', $basic_auth_locations); - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file if(file_exists($vhost_file)) copy($vhost_file, $vhost_file.'~'); @@ -1825,17 +1817,17 @@ class nginx_plugin { //* Set the symlink to enable the vhost //* First we check if there is a old type of symlink and remove it - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) $app->system->unlink($vhost_symlink); //* Remove old or changed symlinks if($data['new']['subdomain'] != $data['old']['subdomain'] or $data['new']['active'] == 'n') { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -1844,9 +1836,9 @@ class nginx_plugin { //* New symlink if($data['new']['subdomain'] == '*') { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['new']['domain'].'.vhost'; } else { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['new']['domain'].'.vhost'; } if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); @@ -1855,22 +1847,22 @@ class nginx_plugin { // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)) { $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; $app->system->unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); } @@ -2062,14 +2054,10 @@ class nginx_plugin { if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){ if(is_array($log_folders) && !empty($log_folders)){ foreach($log_folders as $log_folder){ - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } } else { - //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder)); - //exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); - exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null'); + $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } // remove letsencrypt if it exists (renew will always fail otherwise) @@ -2109,19 +2097,19 @@ class nginx_plugin { } else { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - $vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost'; if(is_link($vhost_symlink)){ $app->system->unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -2131,11 +2119,11 @@ class nginx_plugin { $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') { - $docroot = escapeshellcmd($data['old']['document_root']); + $docroot = $data['old']['document_root']; if($docroot != '' && !stristr($docroot, '..')) { if($data['old']['type'] == 'vhost') { // this is a vhost - we delete everything in here. - exec('rm -rf '.$docroot); + $app->system->exec_safe('rm -rf ?', $docroot); } elseif(!stristr($data['old']['web_folder'], '..')) { // this is a vhost subdomain // IMPORTANT: do some folder checks before we delete this! @@ -2185,7 +2173,7 @@ class nginx_plugin { unset($used_paths); } - if($do_delete === true && $delete_folder !== '') exec('rm -rf '.$docroot.'/'.$delete_folder); + if($do_delete === true && $delete_folder !== '') $app->system->exec_safe('rm -rf ?', $docroot.'/'.$delete_folder); unset($delete_folder); unset($path_elements); @@ -2198,12 +2186,12 @@ class nginx_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { - exec('rm -rf '.$fastcgi_starter_path); + $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$web_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { - exec('rm -f '.$fcgi_starter_script); + $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } } @@ -2224,12 +2212,12 @@ class nginx_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { - exec('rm -rf '.$cgi_starter_path); + $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { - exec('rm -f '.$cgi_starter_script); + $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } } @@ -2258,16 +2246,16 @@ class nginx_plugin { } // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/httpd/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/httpd/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); if($data['old']['type'] == 'vhost') { //delete the web user - $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' ; userdel'; - $command .= ' '.escapeshellcmd($data['old']['system_user']); - exec($command); - if($nginx_chrooted) $app->system->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command); + $command = 'killall -u ? ; userdel'; + $command .= ' ?'; + $app->system->exec_safe($command, $data['old']['system_user'], $data['old']['system_user']); + if($nginx_chrooted) $app->system->exec_safe('chroot ? ?', $web_config['website_basedir'], $command); } @@ -2288,7 +2276,7 @@ class nginx_plugin { if($mount_backup){ $web_backup_dir = $backup_dir.'/web'.$data_old['domain_id']; //** do not use rm -rf $web_backup_dir because database(s) may exits - exec(escapeshellcmd('rm -f '.$web_backup_dir.'/web'.$data_old['domain_id'].'_').'*'); + $app->system->exec_safe('rm -f ?*', $web_backup_dir.'/web'.$data_old['domain_id'].'_'); //* cleanup database $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename LIKE ?"; $app->db->query($sql, $conf['server_id'], $data_old['domain_id'], "web".$data_old['domain_id']."_%"); @@ -2338,7 +2326,7 @@ class nginx_plugin { //* Get the folder path. if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1); if(substr($folder['path'], -1) == '/') $folder['path'] = substr($folder['path'], 0, -1); - $folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$folder['path']); + $folder_path = $website['document_root'].'/' . $web_folder . '/'.$folder['path']; if(substr($folder_path, -1) != '/') $folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2444,7 +2432,7 @@ class nginx_plugin { if(substr($data['new']['path'], 0, 1) == '/') $data['new']['path'] = substr($data['new']['path'], 1); if(substr($data['new']['path'], -1) == '/') $data['new']['path'] = substr($data['new']['path'], 0, -1); - $new_folder_path = escapeshellcmd($website['document_root'].'/' . $web_folder . '/'.$data['new']['path']); + $new_folder_path = $website['document_root'].'/' . $web_folder . '/'.$data['new']['path']; if(substr($new_folder_path, -1) != '/') $new_folder_path .= '/'; //* Check if the resulting path is inside the docroot @@ -2491,7 +2479,7 @@ class nginx_plugin { //* Create the domain.auth file which is included in the vhost configuration file $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - $basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth'); + $basic_auth_file = $web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth'; //$app->load('tpl'); //$tpl = new tpl(); //$tpl->newTemplate('nginx_http_authentication.auth.master'); @@ -2616,9 +2604,9 @@ class nginx_plugin { $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content); file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content); - exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1'); - exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); + $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); + $app->system->exec_safe('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); @@ -2630,7 +2618,7 @@ class nginx_plugin { } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1'); - exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1'); + $app->system->exec_safe('/usr/sbin/update-rc.d remove >/dev/null 2>&1', 'hhvm_' . $data['old']['system_user']); unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } @@ -2743,7 +2731,7 @@ class nginx_plugin { $tpl->setVar('document_root', $data['new']['document_root']); $tpl->setVar('security_level', $web_config['security_level']); $tpl->setVar('domain', $data['new']['domain']); - $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']); + $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir']; $tpl->setVar('php_open_basedir', $php_open_basedir); if($php_open_basedir != ''){ $tpl->setVar('enable_php_open_basedir', ''); @@ -2830,7 +2818,7 @@ class nginx_plugin { unset($tpl); // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -2875,7 +2863,7 @@ class nginx_plugin { } if($default_php_fpm){ - $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']); + $pool_dir = $web_config['php_fpm_pool_dir']; } else { $pool_dir = $custom_php_fpm_pool_dir; } @@ -2890,7 +2878,7 @@ class nginx_plugin { } // delete pool in all other PHP versions - $default_pool_dir = trim(escapeshellcmd($web_config['php_fpm_pool_dir'])); + $default_pool_dir = trim($web_config['php_fpm_pool_dir']); if(substr($default_pool_dir, -1) != '/') $default_pool_dir .= '/'; if($default_pool_dir != $pool_dir){ if ( @is_file($default_pool_dir.$pool_name.'.conf') ) { @@ -3093,7 +3081,7 @@ class nginx_plugin { } if($app->system->is_group('client'.$client_id)){ - $app->system->_exec('groupdel client'.$client_id); + $app->system->exec_safe('groupdel ?', 'client'.$client_id); $app->log('Removed group client'.$client_id, LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/nginx_reverseproxy_plugin.inc.php b/server/plugins-available/nginx_reverseproxy_plugin.inc.php index b5881dbf24..1013042254 100644 --- a/server/plugins-available/nginx_reverseproxy_plugin.inc.php +++ b/server/plugins-available/nginx_reverseproxy_plugin.inc.php @@ -176,7 +176,7 @@ class nginx_reverseproxy_plugin { } - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost'; //* Make a backup copy of vhost file copy($vhost_file, $vhost_file.'~'); @@ -187,7 +187,7 @@ class nginx_reverseproxy_plugin { // Set the symlink to enable the vhost - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['new']['domain'].'.vhost'; if($data['new']['active'] == 'y' && !is_link($vhost_symlink)) { symlink($vhost_file, $vhost_symlink); $app->log('Creating symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); @@ -199,18 +199,18 @@ class nginx_reverseproxy_plugin { $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); } - if(!is_dir('/var/log/ispconfig/nginx/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/nginx/'.$data['new']['domain']); + if(!is_dir('/var/log/ispconfig/nginx/'.$data['new']['domain'])) $app->system->exec_safe('mkdir -p ?', '/var/log/ispconfig/nginx/'.$data['new']['domain']); // remove old symlink and vhost file, if domain name of the site has changed if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) { - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_file); $app->log('Removing file: '.$vhost_file, LOGLEVEL_DEBUG); - if(is_dir('/var/log/ispconfig/nginx/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/nginx/'.$data['old']['domain']); + if(is_dir('/var/log/ispconfig/nginx/'.$data['old']['domain'])) $app->system->exec_safe('rm -rf ?', '/var/log/ispconfig/nginx/'.$data['old']['domain']); } // request a httpd reload when all records have been processed @@ -232,7 +232,7 @@ class nginx_reverseproxy_plugin { function ssl($event_name, $data) { global $app, $conf; - if(!is_dir($conf['nginx']['config_dir'].'/ssl')) exec('mkdir -p '.$conf['nginx']['config_dir'].'/ssl'); + if(!is_dir($conf['nginx']['config_dir'].'/ssl')) $app->system->exec_safe('mkdir -p ?', $conf['nginx']['config_dir'].'/ssl'); $ssl_dir = $conf['nginx']['config_dir'].'/ssl'; $domain = $data['new']['ssl_domain']; $key_file = $ssl_dir.'/'.$domain.'.key.org'; @@ -250,7 +250,7 @@ class nginx_reverseproxy_plugin { //$csr_file = $ssl_dir.'/'.$domain.".csr"; //$crt_file = $ssl_dir.'/'.$domain.".crt"; //$bundle_file = $ssl_dir.'/'.$domain.".bundle"; - $this->_exec('rsync -v -e ssh root@'.$web['ip_address'].':~/$src_ssl_dir '.$ssl_dir); + $app->system->exec_safe('rsync -v -e ssh root@?:? ?', $web['ip_address'], '~/'.$src_ssl_dir, $ssl_dir); $app->log('Syncing SSL Cert for: '.$domain, LOGLEVEL_DEBUG); } @@ -284,31 +284,24 @@ class nginx_reverseproxy_plugin { //* This is a website // Deleting the vhost file, symlink and the data directory - $vhost_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_symlink); $app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file, LOGLEVEL_DEBUG); - $vhost_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'); + $vhost_file = $nginx_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost'; unlink($vhost_file); $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG); // Delete the log file directory - $vhost_logfile_dir = escapeshellcmd('/var/log/ispconfig/nginx/'.$data['old']['domain']); - if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) exec('rm -rf '.$vhost_logfile_dir); + $vhost_logfile_dir = '/var/log/ispconfig/nginx/'.$data['old']['domain']; + if($data['old']['domain'] != '' && !stristr($vhost_logfile_dir, '..')) $app->system->exec_safe('rm -rf ?', $vhost_logfile_dir); $app->log('Removing website logfile directory: '.$vhost_logfile_dir, LOGLEVEL_DEBUG); } } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - function rewrite_insert($event_name, $data) { global $app, $conf; @@ -329,7 +322,7 @@ class nginx_reverseproxy_plugin { $tpl->newTemplate("nginx_reverseproxy_rewrites.conf.master"); if (!empty($rules))$tpl->setLoop('nginx_rewrite_rules', $rules); - $rewrites_file = escapeshellcmd($nginx_config['nginx_vhost_conf_dir'].'/default.rewrites.conf'); + $rewrites_file = $nginx_config['nginx_vhost_conf_dir'].'/default.rewrites.conf'; //* Make a backup copy of vhost file copy($rewrites_file, $rewrites_file.'~'); @@ -340,7 +333,7 @@ class nginx_reverseproxy_plugin { // Set the symlink to enable the vhost - $rewrite_symlink = escapeshellcmd($nginx_config['nginx_vhost_conf_enabled_dir'].'/default.rewrites.conf'); + $rewrite_symlink = $nginx_config['nginx_vhost_conf_enabled_dir'].'/default.rewrites.conf'; if(!is_link($rewrite_symlink)) { symlink($rewrites_file, $rewrite_symlink); diff --git a/server/plugins-available/openvz_plugin.inc.php b/server/plugins-available/openvz_plugin.inc.php index 5cc4bf6522..f17edb7b8c 100644 --- a/server/plugins-available/openvz_plugin.inc.php +++ b/server/plugins-available/openvz_plugin.inc.php @@ -86,11 +86,11 @@ class openvz_plugin { } $tmp = $app->db->queryOneRecord("SELECT template_file FROM openvz_ostemplate WHERE ostemplate_id = ?", $data['new']['ostemplate_id']); - $ostemplate = escapeshellcmd($tmp['template_file']); + $ostemplate = $tmp['template_file']; unset($tmp); //* Create the virtual machine - exec("vzctl create $veid --ostemplate $ostemplate"); + $app->system->exec_safe("vzctl create ? --ostemplate ?", $veid, $ostemplate); $app->log("Create OpenVZ VM: vzctl create $veid --ostemplate $ostemplate", LOGLEVEL_DEBUG); //* Write the configuration of the VM @@ -103,7 +103,7 @@ class openvz_plugin { } //* Set the root password in the virtual machine - exec("vzctl set $veid --userpasswd root:".escapeshellcmd($data['new']['vm_password'])); + $app->system->exec_safe("vzctl set ? --userpasswd root:?", $veid, $data['new']['vm_password']); } @@ -123,7 +123,7 @@ class openvz_plugin { //* new diskspace for ploop-containers requieres "vzctl set" if($data['new']['diskspace'] != $data['old']['diskspace']) { - exec("vzctl set ".$veid." --diskspace ".$data['new']['diskspace']."G --save"); + escapeshell("vzctl set ? --diskspace ? --save", $veid, $data['new']['diskspace']."G"); } //* Apply config changes to the VM @@ -140,7 +140,7 @@ class openvz_plugin { //* Set the root password in the virtual machine if($data['new']['vm_password'] != $data['old']['vm_password']) { - exec("vzctl set $veid --userpasswd root:".escapeshellcmd($data['new']['vm_password'])); + $app->system->exec_safe("vzctl set ? --userpasswd root:?", $veid, $data['new']['vm_password']); } @@ -193,12 +193,12 @@ class openvz_plugin { $parts = explode(':', $data); $veid = intval($parts[0]); $template_cache_dir = '/vz/template/cache/'; - $template_name = escapeshellcmd($parts[1]); + $template_name = $parts[1]; if($veid > 0 && $template_name != '' && is_dir($template_cache_dir)) { - $command = "vzdump --suspend --compress --stdexcludes --dumpdir $template_cache_dir $veid"; - exec($command); - exec("mv ".$template_cache_dir."vzdump-openvz-".$veid."*.tgz ".$template_cache_dir.$template_name.".tar.gz"); - exec("rm -f ".$template_cache_dir."vzdump-openvz-".$veid."*.log"); + $command = "vzdump --suspend --compress --stdexcludes --dumpdir ? ?"; + $app->system->exec_safe($command, $template_cache_dir, $veid); + $app->system->exec_safe("mv ?*.tgz ?", $template_cache_dir."vzdump-openvz-".$veid, $template_cache_dir.$template_name.".tar.gz"); + $app->system->exec_safe("rm -f ?*.log", $template_cache_dir."vzdump-openvz-".$veid); } $app->log("Created OpenVZ OStemplate $template_name from VM $veid", LOGLEVEL_DEBUG); return 'ok'; diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 2b0b1ba67b..569959b84f 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -99,7 +99,7 @@ class postfix_server_plugin { exec("postconf -e 'smtp_sasl_auth_enable = no'"); } - exec("postconf -e 'relayhost = ".$mail_config['relayhost']."'"); + $app->system->exec_safe("postconf -e ?", 'relayhost = '.$mail_config['relayhost']); file_put_contents('/etc/postfix/sasl_passwd', $content); chmod('/etc/postfix/sasl_passwd', 0600); chown('/etc/postfix/sasl_passwd', 'root'); @@ -138,7 +138,7 @@ class postfix_server_plugin { if($value != '') $new_options[] = "reject_rbl_client ".$value; } } - exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + $app->system->exec_safe("postconf -e ?", 'smtpd_recipient_restrictions = '.implode(", ", $new_options)); exec('postfix reload'); } @@ -157,7 +157,7 @@ class postfix_server_plugin { while (isset($new_options[$i]) && substr($new_options[$i], 0, 19) == 'check_sender_access') ++$i; array_splice($new_options, $i, 0, array('reject_authenticated_sender_login_mismatch')); } - exec("postconf -e 'smtpd_sender_restrictions = ".implode(", ", $new_options)."'"); + $app->system->exec_safe("postconf -e ?", 'smtpd_sender_restrictions = '.implode(", ", $new_options)); exec('postfix reload'); } @@ -182,9 +182,9 @@ class postfix_server_plugin { } } - exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); //TODO : no reload? - exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); //TODO : no reload? - + exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); + exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); + exec('postfix reload'); } diff --git a/server/plugins-available/powerdns_plugin.inc.php b/server/plugins-available/powerdns_plugin.inc.php index 1ecdfaf501..2e44e014d5 100644 --- a/server/plugins-available/powerdns_plugin.inc.php +++ b/server/plugins-available/powerdns_plugin.inc.php @@ -448,16 +448,20 @@ class powerdns_plugin { } function notifySlave($data) { + global $app; + $pdns_control = $this->find_pdns_control(); if ( $pdns_control != false ) { - exec($pdns_control . ' notify ' . rtrim($data["new"]["origin"],".")); + $app->system->exec_safe($pdns_control . ' notify ?', rtrim($data["new"]["origin"],".")); } } function fetchFromMaster($data) { + global $app; + $pdns_control = $this->find_pdns_control(); if ( $pdns_control != false ) { - exec($pdns_control . ' retrieve ' . rtrim($data["new"]["origin"],".")); + $app->system->exec_safe($pdns_control . ' retrieve ?', rtrim($data["new"]["origin"],".")); } } @@ -693,11 +697,11 @@ class powerdns_plugin { if ( $pdns_pdnssec != false ) { if (isset($data["new"]["origin"])) { //* data has origin field only for SOA recordtypes - exec($pdns_pdnssec . ' rectify-zone ' . rtrim($data["new"]["origin"],".")); + $app->system->exec_safe($pdns_pdnssec . ' rectify-zone ?', rtrim($data["new"]["origin"],".")); } else { // get origin from DB for all other recordtypes $zn = $app->db->queryOneRecord("SELECT d.name AS name FROM powerdns.domains d, powerdns.records r WHERE r.ispconfig_id=? AND r.domain_id = d.id", $data["new"]["id"]); - exec($pdns_pdnssec . ' rectify-zone ' . trim($zn["name"])); + $app->system->exec_safe($pdns_pdnssec . ' rectify-zone ?', trim($zn["name"])); } } } diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 9c4568901d..90e3293ad7 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -115,34 +115,28 @@ class shelluser_base_plugin { // Create home base directory if it does not exist if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0755'); + $app->file->mkdirs($data['new']['dir'].'/home', '0755'); } // Change ownership of home base dir to root user - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chmod(escapeshellcmd($data['new']['dir'].'/home'),0755); + $app->system->chown($data['new']['dir'].'/home','root'); + $app->system->chgrp($data['new']['dir'].'/home','root'); + $app->system->chmod($data['new']['dir'].'/home',0755); if(!is_dir($homedir)){ - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser']),false); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup']),false); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser'],false); + $app->system->chgrp($homedir,$data['new']['pgroup'],false); } - $command = 'useradd'; - $command .= ' -d '.escapeshellcmd($homedir); - $command .= ' -g '.escapeshellcmd($data['new']['pgroup']); - $command .= ' -o '; // non unique - if($data['new']['password'] != '') $command .= ' -p '.escapeshellcmd($data['new']['password']); - $command .= ' -s '.escapeshellcmd($data['new']['shell']); - $command .= ' -u '.escapeshellcmd($uid); - $command .= ' '.escapeshellcmd($data['new']['username']); - - exec($command); + $command = 'useradd -d ? -g ? -o ?'; // non unique + if($data['new']['password'] != '') $command .= ' -p ?'; + $command .= ' -s ? -u ? ?'; + $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['password'], $data['new']['shell'], $uid, $data['new']['username']); $app->log("Executed command: ".$command, LOGLEVEL_DEBUG); $app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG); - $app->system->chown(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['username']),false); - $app->system->chgrp(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['pgroup']),false); + $app->system->chown($data['new']['dir'],$data['new']['username'],false); + $app->system->chgrp($data['new']['dir'],$data['new']['pgroup'],false); // call the ssh-rsa update function @@ -152,21 +146,21 @@ class shelluser_base_plugin { $this->_setup_ssh_rsa(); //* Create .bash_history file - $app->system->touch(escapeshellcmd($homedir).'/.bash_history'); - $app->system->chmod(escapeshellcmd($homedir).'/.bash_history', 0750); - $app->system->chown(escapeshellcmd($homedir).'/.bash_history', $data['new']['username']); - $app->system->chgrp(escapeshellcmd($homedir).'/.bash_history', $data['new']['pgroup']); + $app->system->touch($homedir.'/.bash_history'); + $app->system->chmod($homedir.'/.bash_history', 0750); + $app->system->chown($homedir.'/.bash_history', $data['new']['username']); + $app->system->chgrp($homedir.'/.bash_history', $data['new']['pgroup']); //* Create .profile file - $app->system->touch(escapeshellcmd($homedir).'/.profile'); - $app->system->chmod(escapeshellcmd($homedir).'/.profile', 0644); - $app->system->chown(escapeshellcmd($homedir).'/.profile', $data['new']['username']); - $app->system->chgrp(escapeshellcmd($homedir).'/.profile', $data['new']['pgroup']); + $app->system->touch($homedir.'/.profile'); + $app->system->chmod($homedir.'/.profile', 0644); + $app->system->chown($homedir.'/.profile', $data['new']['username']); + $app->system->chgrp($homedir.'/.profile', $data['new']['pgroup']); //* Disable shell user temporarily if we use jailkit if($data['new']['chroot'] == 'jailkit') { - $command = 'usermod -s /bin/false -L '.escapeshellcmd($data['new']['username']).' 2>/dev/null'; - exec($command); + $command = 'usermod -s /bin/false -L ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['username']); $app->log("Disabling shelluser temporarily: ".$command, LOGLEVEL_DEBUG); } @@ -233,55 +227,32 @@ class shelluser_base_plugin { if($app->system->is_user($data['old']['username'])) { //* Remove webfolder protection $app->system->web_folder_protection($web['document_root'], false); - - /* - $command = 'usermod'; - $command .= ' --home '.escapeshellcmd($data['new']['dir']); - $command .= ' --gid '.escapeshellcmd($data['new']['pgroup']); - // $command .= ' --non-unique '; - $command .= ' --password '.escapeshellcmd($data['new']['password']); - if($data['new']['chroot'] != 'jailkit') $command .= ' --shell '.escapeshellcmd($data['new']['shell']); - // $command .= ' --uid '.escapeshellcmd($uid); - $command .= ' --login '.escapeshellcmd($data['new']['username']); - $command .= ' '.escapeshellcmd($data['old']['username']); - - exec($command); - $app->log("Executed command: $command ",LOGLEVEL_DEBUG); - */ - //$groupinfo = $app->system->posix_getgrnam($data['new']['pgroup']); + if($homedir != $homedir_old){ $app->system->web_folder_protection($web['document_root'], false); // Rename dir, in case the new directory exists already. if(is_dir($homedir)) { $app->log("New Homedir exists, renaming it to ".$homedir.'_bak', LOGLEVEL_DEBUG); - $app->system->rename(escapeshellcmd($homedir),escapeshellcmd($homedir.'_bak')); + $app->system->rename($homedir,$homedir.'_bak'); } - /*if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0750'); - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['pgroup'])); - } - $app->file->mkdirs(escapeshellcmd($homedir), '0755'); - $app->system->chown(escapeshellcmd($homedir),'root'); - $app->system->chgrp(escapeshellcmd($homedir),'root');*/ // Move old directory to new path - $app->system->rename(escapeshellcmd($homedir_old),escapeshellcmd($homedir)); - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup'])); + $app->system->rename($homedir_old,$homedir); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser']); + $app->system->chgrp($homedir,$data['new']['pgroup']); $app->system->web_folder_protection($web['document_root'], true); } else { if(!is_dir($homedir)){ $app->system->web_folder_protection($web['document_root'], false); if(!is_dir($data['new']['dir'].'/home')){ - $app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0755'); - $app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),'root'); - $app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),'root'); + $app->file->mkdirs($data['new']['dir'].'/home', '0755'); + $app->system->chown($data['new']['dir'].'/home','root'); + $app->system->chgrp($data['new']['dir'].'/home','root'); } - $app->file->mkdirs(escapeshellcmd($homedir), '0750'); - $app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser'])); - $app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup'])); + $app->file->mkdirs($homedir, '0750'); + $app->system->chown($homedir,$data['new']['puser']); + $app->system->chgrp($homedir,$data['new']['pgroup']); $app->system->web_folder_protection($web['document_root'], true); } } @@ -296,18 +267,18 @@ class shelluser_base_plugin { //* Create .bash_history file if(!is_file($data['new']['dir']).'/.bash_history') { - $app->system->touch(escapeshellcmd($homedir).'/.bash_history'); - $app->system->chmod(escapeshellcmd($homedir).'/.bash_history', 0750); - $app->system->chown(escapeshellcmd($homedir).'/.bash_history', escapeshellcmd($data['new']['username'])); - $app->system->chgrp(escapeshellcmd($homedir).'/.bash_history', escapeshellcmd($data['new']['pgroup'])); + $app->system->touch($homedir.'/.bash_history'); + $app->system->chmod($homedir.'/.bash_history', 0750); + $app->system->chown($homedir.'/.bash_history', $data['new']['username']); + $app->system->chgrp($homedir.'/.bash_history', $data['new']['pgroup']); } //* Create .profile file if(!is_file($data['new']['dir']).'/.profile') { - $app->system->touch(escapeshellcmd($homedir).'/.profile'); - $app->system->chmod(escapeshellcmd($homedir).'/.profile', 0644); - $app->system->chown(escapeshellcmd($homedir).'/.profile', escapeshellcmd($data['new']['username'])); - $app->system->chgrp(escapeshellcmd($homedir).'/.profile', escapeshellcmd($data['new']['pgroup'])); + $app->system->touch($homedir.'/.profile'); + $app->system->chmod($homedir.'/.profile', 0644); + $app->system->chown($homedir.'/.profile', $data['new']['username']); + $app->system->chgrp($homedir.'/.profile', $data['new']['pgroup']); } //* Add webfolder protection again @@ -362,7 +333,7 @@ class shelluser_base_plugin { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } foreach($dirs as $deldir) { - if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) $app->system->exec_safe('rm -rf ?', $homedir . $deldir); } $empty = true; $dirres = opendir($homedir); @@ -401,9 +372,8 @@ class shelluser_base_plugin { $app->services->restartService('php-fpm', 'stop:'.$conf['init_scripts'].'/'.$web_config['php_fpm_init_script']); } } - $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; userdel -f'; - $command .= ' '.escapeshellcmd($data['old']['username']).' &> /dev/null'; - exec($command); + $command = 'killall -u ? ; userdel -f ? &> /dev/null'; + $app->system->exec_safe($command, $data['old']['username'], $data['old']['username']); $app->log("Deleted shelluser: ".$data['old']['username'], LOGLEVEL_DEBUG); // start PHP-FPM again if($web['php'] == 'php-fpm'){ @@ -447,12 +417,10 @@ class shelluser_base_plugin { } } $sshrsa = trim($sshrsa); - $usrdir = escapeshellcmd($this->data['new']['dir']); + $usrdir = $this->data['new']['dir']; //* Home directory of the new shell user - if($this->data['new']['chroot'] == 'jailkit') { - $usrdir = escapeshellcmd($this->data['new']['dir']); - } else { - $usrdir = escapeshellcmd($this->data['new']['dir'].'/home/'.$this->data['new']['username']); + if($this->data['new']['chroot'] != 'jailkit') { + $usrdir = $this->data['new']['dir'].'/home/'.$this->data['new']['username']; } $sshdir = $usrdir.'/.ssh'; $sshkeys= $usrdir.'/.ssh/authorized_keys'; @@ -528,8 +496,8 @@ class shelluser_base_plugin { $this->app->log("ssh-rsa key updated in ".$sshkeys, LOGLEVEL_DEBUG); // set proper file permissions - exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir); - exec("chmod 600 '$sshkeys'"); + $app->system->exec_safe("chown -R ?:? ?", $this->data['new']['puser'], $this->data['new']['pgroup'], $sshdir); + $app->system->exec_safe("chmod 600 ?", $sshkeys); } diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index c7112c497a..1f3a08face 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -121,13 +121,11 @@ class shelluser_jailkit_plugin { //* call the ssh-rsa update function $this->_setup_ssh_rsa(); - //$command .= 'usermod -s /usr/sbin/jk_chrootsh -U '.escapeshellcmd($data['new']['username']); - //exec($command); $app->system->usermod($data['new']['username'], 0, 0, '', '/usr/sbin/jk_chrootsh', '', ''); //* Unlock user - $command = 'usermod -U '.escapeshellcmd($data['new']['username']).' 2>/dev/null'; - exec($command); + $command = 'usermod -U ? 2>/dev/null'; + $app->system->exec_safe($command, $data['new']['username']); $this->_update_website_security_level(); $app->system->web_folder_protection($web['document_root'], true); @@ -242,15 +240,12 @@ class shelluser_jailkit_plugin { $jailkit_chroot_userhome = $this->_get_home_dir($data['old']['username']); - //commented out proved to be dangerous on config errors - //exec('rm -rf '.$data['old']['dir'].$jailkit_chroot_userhome); - $app->system->web_folder_protection($web['document_root'], false); $userid = intval($app->system->getuid($data['old']['username'])); - $command = 'killall -u '.escapeshellcmd($data['old']['username']).' ; '; - $command .= 'userdel -f '.escapeshellcmd($data['old']['username']).' &> /dev/null'; - exec($command); + $command = 'killall -u ? ; '; + $command .= 'userdel -f ? &> /dev/null'; + $app->system->exec_safe($command, $data['old']['username'], $data['old']['username']); // Remove the jailed user from passwd and shadow file inside the jail $app->system->removeLine($data['old']['dir'].'/etc/passwd', $data['old']['username']); @@ -278,10 +273,8 @@ class shelluser_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->data['new']['dir'].'/etc/jailkit')) { - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' \''.$this->jailkit_config['jailkit_chroot_app_sections'].'\''; - exec($command.' 2>/dev/null'); + $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh ? ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']); $this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); @@ -300,7 +293,7 @@ class shelluser_jailkit_plugin { $tpl->setVar('domain', $web['domain']); $tpl->setVar('home_dir', $this->_get_home_dir("")); - $bashrc = escapeshellcmd($this->data['new']['dir']).'/etc/bash.bashrc'; + $bashrc = $this->data['new']['dir'].'/etc/bash.bashrc'; if(@is_file($bashrc) || @is_link($bashrc)) unlink($bashrc); file_put_contents($bashrc, $tpl->grab()); @@ -313,7 +306,7 @@ class shelluser_jailkit_plugin { $tpl->setVar('domain', $web['domain']); - $motd = escapeshellcmd($this->data['new']['dir']).'/var/run/motd'; + $motd = $this->data['new']['dir'].'/var/run/motd'; if(@is_file($motd) || @is_link($motd)) unlink($motd); $app->system->file_put_contents($motd, $tpl->grab()); @@ -323,16 +316,15 @@ class shelluser_jailkit_plugin { function _add_jailkit_programs() { + global $app; $jailkit_chroot_app_programs = preg_split("/[\s,]+/", $this->jailkit_config['jailkit_chroot_app_programs']); if(is_array($jailkit_chroot_app_programs) && !empty($jailkit_chroot_app_programs)){ foreach($jailkit_chroot_app_programs as $jailkit_chroot_app_program){ $jailkit_chroot_app_program = trim($jailkit_chroot_app_program); if(is_file($jailkit_chroot_app_program) || is_dir($jailkit_chroot_app_program)){ //copy over further programs and its libraries - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' '.$jailkit_chroot_app_program; - exec($command.' 2>/dev/null'); + $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh ? ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $jailkit_chroot_app_program); $this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); } @@ -342,7 +334,7 @@ class shelluser_jailkit_plugin { function _get_home_dir($username) { - return str_replace("[username]", escapeshellcmd($username), $this->jailkit_config['jailkit_chroot_home']); + return str_replace("[username]", $username, $this->jailkit_config['jailkit_chroot_home']); } function _add_jailkit_user() @@ -365,36 +357,8 @@ class shelluser_jailkit_plugin { // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh'; - $command .= ' '.escapeshellcmd($this->data['new']['username']); - $command .= ' '.escapeshellcmd($this->data['new']['dir']); - $command .= ' '.$jailkit_chroot_userhome; - $command .= ' '.escapeshellcmd($this->data['new']['shell']); - $command .= ' '.$this->data['new']['puser']; - $command .= ' '.$jailkit_chroot_puserhome; - exec($command.' 2>/dev/null'); - - //* Change the homedir of the shell user and parent user - //* We have to do this manually as the usermod command fails - //* when the user is logged in or a command is running under that user - /* - $passwd_file_array = file('/etc/passwd'); - $passwd_out = ''; - if(is_array($passwd_file_array)) { - foreach($passwd_file_array as $line) { - $line = trim($line); - $parts = explode(':',$line); - if($parts[0] == $this->data['new']['username']) { - $parts[5] = escapeshellcmd($this->data['new']['dir'].'/.'.$jailkit_chroot_userhome); - $parts[6] = escapeshellcmd('/usr/sbin/jk_chrootsh'); - $new_line = implode(':',$parts); - copy('/etc/passwd','/etc/passwd~'); - chmod('/etc/passwd~',0600); - $app->uses('system'); - $app->system->replaceLine('/etc/passwd',$line,$new_line,1,0); - } - } - }*/ + $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh ? ? ? ? ? ?'; + $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome); $shell = '/usr/sbin/jk_chrootsh'; if($this->data['new']['active'] != 'y') $shell = '/bin/false'; @@ -406,19 +370,19 @@ class shelluser_jailkit_plugin { if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) { if(is_dir($this->data['old']['dir'].$jailkit_chroot_userhome_old)) { - $app->system->rename(escapeshellcmd($this->data['old']['dir'].$jailkit_chroot_userhome_old),escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome)); + $app->system->rename($this->data['old']['dir'].$jailkit_chroot_userhome_old,$this->data['new']['dir'].$jailkit_chroot_userhome); } else { - mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), 0750, true); + mkdir($this->data['new']['dir'].$jailkit_chroot_userhome, 0750, true); } } - $app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['username']); - $app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['pgroup']); + $app->system->chown($this->data['new']['dir'].$jailkit_chroot_userhome, $this->data['new']['username']); + $app->system->chgrp($this->data['new']['dir'].$jailkit_chroot_userhome, $this->data['new']['pgroup']); $this->app->log("Added created jailkit user home in : ".$this->data['new']['dir'].$jailkit_chroot_userhome, LOGLEVEL_DEBUG); - if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), 0750, true); - $app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['puser']); - $app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['pgroup']); + if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir($this->data['new']['dir'].$jailkit_chroot_puserhome, 0750, true); + $app->system->chown($this->data['new']['dir'].$jailkit_chroot_puserhome, $this->data['new']['puser']); + $app->system->chgrp($this->data['new']['dir'].$jailkit_chroot_puserhome, $this->data['new']['pgroup']); $this->app->log("Added jailkit parent user home in : ".$this->data['new']['dir'].$jailkit_chroot_puserhome, LOGLEVEL_DEBUG); @@ -447,13 +411,6 @@ class shelluser_jailkit_plugin { } - //* Wrapper for exec function for easier debugging - private function _exec($command) { - global $app; - $app->log('exec: '.$command, LOGLEVEL_DEBUG); - exec($command); - } - private function _setup_ssh_rsa() { global $app; $this->app->log("ssh-rsa setup shelluser_jailkit", LOGLEVEL_DEBUG); @@ -469,7 +426,7 @@ class shelluser_jailkit_plugin { // ssh-rsa authentication variables $sshrsa = $this->data['new']['ssh_rsa']; - $usrdir = escapeshellcmd($this->data['new']['dir']).'/'.$this->_get_home_dir($this->data['new']['username']); + $usrdir = $this->data['new']['dir'].'/'.$this->_get_home_dir($this->data['new']['username']); $sshdir = $usrdir.'/.ssh'; $sshkeys= $usrdir.'/.ssh/authorized_keys'; @@ -545,9 +502,9 @@ class shelluser_jailkit_plugin { $this->app->log("ssh-rsa key updated in ".$sshkeys, LOGLEVEL_DEBUG); // set proper file permissions - exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir); - exec("chmod 700 ".$sshdir); - exec("chmod 600 '$sshkeys'"); + $app->system->exec_safe("chown -R ?:? ?", $this->data['new']['puser'], $this->data['new']['pgroup'], $sshdir); + $app->system->exec_safe("chmod 700 ?", $sshdir); + $app->system->exec_safe("chmod 600 ?", $sshkeys); } @@ -569,7 +526,7 @@ class shelluser_jailkit_plugin { if(is_file($homedir . $delfile) && fileowner($homedir . $delfile) == $userid) unlink($homedir . $delfile); } foreach($dirs as $deldir) { - if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) exec('rm -rf ' . escapeshellarg($homedir . $deldir)); + if(is_dir($homedir . $deldir) && fileowner($homedir . $deldir) == $userid) $app->system->exec_safe('rm -rf ?', $homedir . $deldir); } $empty = true; $dirres = opendir($homedir); diff --git a/server/plugins-available/software_update_plugin.inc.php b/server/plugins-available/software_update_plugin.inc.php index 587bd4f09a..2626d1e756 100644 --- a/server/plugins-available/software_update_plugin.inc.php +++ b/server/plugins-available/software_update_plugin.inc.php @@ -111,11 +111,12 @@ class software_update_plugin { $software_update["update_url"] = str_replace('{key}', $software_package['package_key'], $software_update["update_url"]); //* Download the update package - $cmd = "cd $temp_dir && wget ".$software_update["update_url"]; if($installuser == '') { - exec($cmd); + $cmd = "cd ? && wget ?"; + $app->system->exec_safe($cmd, $temp_dir, $software_update["update_url"]); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = "cd $temp_dir && wget ".$software_update["update_url"]; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } $app->log("Downloading the update file from: ".$software_update["update_url"], LOGLEVEL_DEBUG); @@ -135,7 +136,7 @@ class software_update_plugin { if($update_filename == '') { $app->log("No package file found. Download failed? Installation aborted.", LOGLEVEL_WARN); - exec("rm -rf $temp_dir"); + $app->system->exec_safe("rm -rf ?", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); return false; @@ -148,7 +149,7 @@ class software_update_plugin { //* Checking the md5sum if(md5_file($temp_dir.'/'.$update_filename) != $software_update["update_md5"]) { $app->log("The md5 sum of the downloaded file is incorrect. Update aborted.", LOGLEVEL_WARN); - exec("rm -rf $temp_dir"); + $app->system->exec_safe("rm -rf ", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); return false; @@ -158,11 +159,13 @@ class software_update_plugin { //* unpacking the update - $cmd = "cd $temp_dir && unzip $update_filename"; + if($installuser == '') { - exec($cmd); + $cmd = "cd ? && unzip ?"; + $app->system->exec_safe($cmd, $temp_dir, $update_filename); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = "cd $temp_dir && unzip $update_filename"; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } //* Create a database, if the package requires one @@ -181,7 +184,7 @@ class software_update_plugin { $db_config['database_password'] != '' && $db_config['database_name'] != '' && $db_config['database_host'] != '') { - system("mysql --default-character-set=utf8 --force -h '".$db_config['database_host']."' -u '".$db_config['database_user']."' ".$db_config['database_name']." < ".escapeshellcmd($temp_dir.'/setup.sql')); + $app->system->exec_safe("mysql --default-character-set=utf8 --force -h ? -u ? ? < ?", $db_config['database_host'], $db_config['database_user'], $db_config['database_name'], $temp_dir.'/setup.sql'); $app->log("Loading setup.sql dump into the app db.", LOGLEVEL_DEBUG); } } @@ -196,13 +199,15 @@ class software_update_plugin { if(is_file($temp_dir.'/setup.sh')) { // Execute the setup script - exec('chmod +x '.$temp_dir.'/setup.sh'); + $app->system->exec_safe('chmod +x ?', $temp_dir.'/setup.sh'); $app->log("Executing setup.sh file in directory $temp_dir", LOGLEVEL_DEBUG); - $cmd = 'cd '.$temp_dir.' && ./setup.sh > package_install.log'; + if($installuser == '') { - exec($cmd); + $cmd = 'cd ? && ./setup.sh > package_install.log'; + $app->system->exec_safe($cmd, $temp_dir); } else { - exec("su -c ".escapeshellarg($cmd)." $installuser"); + $cmd = 'cd '.$temp_dir.' && ./setup.sh > package_install.log'; + $app->system->exec_safe("su -c ? ?", $cmd, $installuser); } $log_data = @file_get_contents("{$temp_dir}/package_install.log"); @@ -223,7 +228,7 @@ class software_update_plugin { $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); } - if($temp_dir != '' && $temp_dir != '/') exec("rm -rf $temp_dir"); + if($temp_dir != '' && $temp_dir != '/') $app->system->exec_safe("rm -rf ?", $temp_dir); $app->log("Deleting the temp directory $temp_dir", LOGLEVEL_DEBUG); } diff --git a/server/plugins-available/xmpp_plugin.inc.php b/server/plugins-available/xmpp_plugin.inc.php index 128a88ebb4..c680e62f0e 100644 --- a/server/plugins-available/xmpp_plugin.inc.php +++ b/server/plugins-available/xmpp_plugin.inc.php @@ -240,8 +240,8 @@ class xmpp_plugin { $app->system->unlink("/etc/metronome/certs/$domain.csr"); // Remove all stored data var_dump('rm -rf /var/lib/metronome/'.$folder); - exec('rm -rf /var/lib/metronome/'.$folder); - exec('rm -rf /var/lib/metronome/*%2e'.$folder); + $app->system->exec_safe('rm -rf ?', '/var/lib/metronome/'.$folder); + $app->system->exec_safe('rm -rf ?*?', '/var/lib/metronome/', '%2e'.$folder); $app->services->restartServiceDelayed('metronome', 'reload'); } @@ -264,7 +264,7 @@ class xmpp_plugin { // Don't allow manual user deletion for mailaccount controlled domains // Remove account from metronome - exec('metronomectl deluser '.$data['old']['jid']); + $app->system->exec_safe('metronomectl deluser ?', $data['old']['jid']); } // Handle the creation of SSL certificates @@ -311,9 +311,9 @@ class xmpp_plugin { $app->system->file_put_contents($cnf_file, $tpl->grab()); // Generate new key, csr and cert - exec("(cd /etc/metronome/certs && make $domain.key)"); - exec("(cd /etc/metronome/certs && make $domain.csr)"); - exec("(cd /etc/metronome/certs && make $domain.cert)"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.key"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.csr"); + $app->system->exec_safe("(cd /etc/metronome/certs && make ?)", "$domain.cert"); $ssl_key = $app->system->file_get_contents($key_file); $app->system->chmod($key_file, 0400); -- GitLab From 709638f18ed87b5df3703c8d879001dfb05a10e3 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 14:10:11 +0200 Subject: [PATCH 072/571] - Coding guidelines --- server/scripts/ispconfig_patch | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/server/scripts/ispconfig_patch b/server/scripts/ispconfig_patch index a3361f507d..4470552c13 100644 --- a/server/scripts/ispconfig_patch +++ b/server/scripts/ispconfig_patch @@ -79,7 +79,9 @@ function simple_query($query, $answers, $default) } function is_installed($appname) { - exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out,$returncode); + $out = array(); + $returncode = null; + exec('which '.escapeshellarg($appname).' 2> /dev/null',$out,$returncode); if(isset($out[0]) && stristr($out[0],$appname) && $returncode == 0) { return true; } else { @@ -105,14 +107,18 @@ echo " _____ ___________ _____ __ _ |___/ "; echo "\n".str_repeat('-',80)."\n"; echo "\n\n>> Patch tool \n\n"; -if(!$auto) echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; +if(!$auto) { + echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n"; +} if(!is_installed('patch')) { swriteln("The program 'patch' is missing on your server. Please install it and try again."); exit; } -if(!$auto) $patch_id = simple_query('Enter patch id', false, ''); +if(!$auto) { + $patch_id = simple_query('Enter patch id', false, ''); +} if($patch_id == '') { swriteln("Patch terminated by user.\n"); die(); @@ -129,8 +135,12 @@ if(!$patch_data) { $patch_text = @file_get_contents('http://ispconfig.org/downloads/patches/' . $patch_id . '.txt'); if($patch_text) { - if($auto) $ok = 'y'; else $ok = simple_query("Patch description:\n".str_repeat("-", 80)."\n".$patch_text."\n".str_repeat("-", 80)."\nDo you really want to apply this patch now?", array('y','n'), 'y'); - if($ok != 'y') { + if($auto) { + $ok = 'y'; + } else { + $ok = simple_query("Patch description:\n" . str_repeat("-", 80) . "\n" . $patch_text . "\n" . str_repeat("-", 80) . "\nDo you really want to apply this patch now?", array('y', 'n'), 'y'); + } + if($ok != 'y') { swriteln("Patch terminated by user.\n"); die(); } @@ -146,5 +156,3 @@ passthru('patch -p0 < ' . escapeshellarg($temp_file)); unlink($temp_file); exit; - -?> -- GitLab From 0c5140ab1f60f13e5e1b8e2fae9cf4115b34d66c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 15:16:22 +0200 Subject: [PATCH 073/571] - fixed syntax error from previous commits --- server/lib/classes/system.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 051f3554a6..dafae52c85 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1832,7 +1832,7 @@ class system{ function is_mounted($mountpoint){ //$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"'; $cmd = 'mount 2>/dev/null | grep ?'; - exec($cmd, ' on '. $mountpoint . ' type '); + $this->exec_safe($cmd, ' on '. $mountpoint . ' type '); $return_var = $this->last_exec_retcode(); return $return_var == 0 ? true : false; } -- GitLab From c7e0c3fc89a6024b4b6fa1101475ba59f6a38f17 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 17:37:17 +0200 Subject: [PATCH 074/571] - implemented rspamd version of "global black/whitelist" --- server/conf/rspamd_wblist.inc.conf.master | 12 +- .../plugins-available/rspamd_plugin.inc.php | 103 ++++++++++++++---- 2 files changed, 94 insertions(+), 21 deletions(-) diff --git a/server/conf/rspamd_wblist.inc.conf.master b/server/conf/rspamd_wblist.inc.conf.master index aaa7d06f67..b614244515 100644 --- a/server/conf/rspamd_wblist.inc.conf.master +++ b/server/conf/rspamd_wblist.inc.conf.master @@ -1,7 +1,17 @@ -spamfilter_wblist-<tmpl_var name='record_id'> { +<tmpl_var name='list_scope'>_wblist-<tmpl_var name='record_id'> { priority = <tmpl_var name='priority'>; +<tmpl_if name="from"> from = "<tmpl_var name='from'>"; +</tmpl_if> +<tmpl_if name="recipient"> rcpt = "<tmpl_var name='recipient'>"; +</tmpl_if> +<tmpl_if name="ip"> + ip = "<tmpl_var name='ip'>"; +</tmpl_if> +<tmpl_if name="hostname"> + hostname = "<tmpl_var name='hostname'>"; +</tmpl_if> <tmpl_if name='wblist' op='==' value='W'> want_spam = yes; apply { diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index b6eddc401f..7fd3ebf773 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -71,11 +71,14 @@ class rspamd_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'); + + //* global mail access filters + $app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert'); + $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); + $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); } function spamfilter_users_insert($event_name, $data) { - global $app, $conf; - $this->action = 'insert'; // just run the spamfilter_users_update function $this->spamfilter_users_update($event_name, $data); @@ -161,8 +164,6 @@ class rspamd_plugin { } function spamfilter_wblist_insert($event_name, $data) { - global $app, $conf; - $this->action = 'insert'; // just run the spamfilter_wblist_update function $this->spamfilter_wblist_update($event_name, $data); @@ -175,34 +176,78 @@ class rspamd_plugin { $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); if(is_dir('/etc/rspamd')) { - $recipient = $app->db->queryOneRecord("SELECT email FROM spamfilter_users WHERE id = ?", intval($data['new']['rid'])); + $global_filter = false; //* Create the config file - $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['new']['wblist_id']).'.conf'; + $filter = null; + if($event_name === 'mail_access_insert' || $event_name === 'mail_access_update') { + $global_filter = true; + $record_id = intval($data['new']['access_id']); + $wblist_file = $this->users_config_dir.'global_wblist_'.$record_id.'.conf'; + $filter = array( + 'wb' => ($data['new']['access'] === 'OK' ? 'W' : 'B'), + 'from' => ($data['new']['type'] === 'sender' ? $app->functions->idn_encode($data['new']['source']) : ''), + 'rcpt' => ($data['new']['type'] === 'recipient' ? $app->functions->idn_encode($data['new']['source']) : ''), + 'ip' => ($data['new']['type'] === 'client' && $this->_is_valid_ip_address($data['new']['source']) ? $data['new']['source'] : ''), + 'hostname' => ($data['new']['type'] === 'client' && !$this->_is_valid_ip_address($data['new']['source']) ? $data['new']['source'] : '') + ); + } else { + $record_id = intval($data['new']['wblist_id']); + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.$record_id.'.conf'; + $tmp = $app->db->queryOneRecord("SELECT email FROM spamfilter_users WHERE id = ?", intval($data['new']['rid'])); + if($tmp && !empty($tmp)) { + $filter = array( + 'wb' => $data['new']['wb'], + 'from' => $app->functions->idn_encode($data['new']['email']), + 'rcpt' => $app->functions->idn_encode($tmp['email']), + 'ip' => '', + 'hostname' => '' + ); + } + } - if($data['new']['active'] == 'y' && is_array($recipient) && !empty($recipient)){ + if($data['new']['active'] == 'y' && is_array($filter) && !empty($filter)){ if(!is_dir($this->users_config_dir)){ $app->system->mkdirpath($this->users_config_dir); } $app->load('tpl'); + $filter_from = $filter['from']; + if($filter_from != '') { + if(strpos($filter_from, '@') === false) { + $filter_from = '@' . $filter_from; + } elseif(substr($filter_from, 0, 2) === '*@') { + $filter_from = substr($filter_from, 1); + } + } + $filter_rcpt = $filter['rcpt']; + if($filter_rcpt != '') { + if(strpos($filter_rcpt, '@') === false) { + $filter_rcpt = '@' . $filter_rcpt; + } elseif(substr($filter_rcpt, 0, 2) === '*@') { + $filter_rcpt = substr($filter_rcpt, 1); + } + } + $tpl = new tpl(); $tpl->newTemplate('rspamd_wblist.inc.conf.master'); - $tpl->setVar('record_id', intval($data['new']['wblist_id'])); + $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); + $tpl->setVar('record_id', $record_id); // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists - $tpl->setVar('priority', intval($data['new']['priority']) + 10); - $tpl->setVar('from', $app->functions->idn_encode($data['new']['email'])); - $tpl->setVar('recipient', $app->functions->idn_encode($recipient['email'])); - //$tpl->setVar('action', ($data['new']['wb'] == 'W'? 'want_spam = yes;' : 'action = "reject";')); - $tpl->setVar('wblist', $data['new']['wb']); + $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 20 : 10)); + $tpl->setVar('from', $filter_from); + $tpl->setVar('recipient', $filter_rcpt); + $tpl->setVar('hostname', $filter['hostname']); + $tpl->setVar('ip', $filter['ip']); + $tpl->setVar('wblist', $filter['wb']); $app->system->file_put_contents($wblist_file, $tpl->grab()); - } else { - if(is_file($wblist_file)) unlink($wblist_file); + } elseif(is_file($wblist_file)) { + unlink($wblist_file); } - if($mail_config['content_filter'] == 'rspamd'){ - if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + if($mail_config['content_filter'] == 'rspamd' && is_file('/etc/init.d/rspamd')) { + $app->services->restartServiceDelayed('rspamd', 'reload'); } } } @@ -215,9 +260,15 @@ class rspamd_plugin { if(is_dir('/etc/rspamd')) { //* delete the config file - $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['old']['wblist_id']).'.conf'; - if(is_file($wblist_file)) unlink($wblist_file); - + if($event_name === 'mail_access_delete') { + $wblist_file = $this->users_config_dir.'global_wblist_'.intval($data['old']['access_id']).'.conf'; + } else { + $wblist_file = $this->users_config_dir.'spamfilter_wblist_'.intval($data['old']['wblist_id']).'.conf'; + } + if(is_file($wblist_file)) { + unlink($wblist_file); + } + if($mail_config['content_filter'] == 'rspamd'){ if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); } @@ -253,4 +304,16 @@ class rspamd_plugin { } } + private function _is_valid_ip_address($ip) { + if(function_exists('filter_var')) { + if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) { + return false; + } else { + return true; + } + } else { + return false; + } + } + } // end class -- GitLab From c5bdf04515c2db52ccad6e887b1d2966954164a6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 22:22:21 +0200 Subject: [PATCH 075/571] - removed ENGINE=MyISAM from sql files, fixes #5342 --- install/sql/incremental/upd_0002.sql | 2 +- install/sql/incremental/upd_0004.sql | 4 +- install/sql/incremental/upd_0007.sql | 2 +- install/sql/incremental/upd_0009.sql | 6 +- install/sql/incremental/upd_0012.sql | 10 +- install/sql/incremental/upd_0013.sql | 2 +- install/sql/incremental/upd_0019.sql | 8 +- install/sql/incremental/upd_0028.sql | 2 +- install/sql/incremental/upd_0031.sql | 2 +- install/sql/incremental/upd_0033.sql | 2 +- install/sql/incremental/upd_0034.sql | 8 +- install/sql/incremental/upd_0035.sql | 2 +- install/sql/incremental/upd_0039.sql | 2 +- install/sql/incremental/upd_0040.sql | 2 +- install/sql/incremental/upd_0050.sql | 2 +- install/sql/incremental/upd_0056.sql | 2 +- install/sql/incremental/upd_0057.sql | 2 +- install/sql/incremental/upd_0062.sql | 2 +- install/sql/incremental/upd_0063.sql | 2 +- install/sql/incremental/upd_0075.sql | 2 +- install/sql/incremental/upd_0081.sql | 8 +- install/sql/incremental/upd_0087.sql | 2 +- install/sql/ispconfig3.sql | 160 +++++++++++++-------------- 23 files changed, 118 insertions(+), 118 deletions(-) diff --git a/install/sql/incremental/upd_0002.sql b/install/sql/incremental/upd_0002.sql index e71e111826..7802dfa160 100644 --- a/install/sql/incremental/upd_0002.sql +++ b/install/sql/incremental/upd_0002.sql @@ -5,4 +5,4 @@ CREATE TABLE IF NOT EXISTS `sys_session` ( `session_data` longtext, PRIMARY KEY (`session_id`), KEY `last_updated` (`last_updated`) -) ENGINE=MyISAM; \ No newline at end of file +); \ No newline at end of file diff --git a/install/sql/incremental/upd_0004.sql b/install/sql/incremental/upd_0004.sql index 3bba2461a6..6153fc7732 100644 --- a/install/sql/incremental/upd_0004.sql +++ b/install/sql/incremental/upd_0004.sql @@ -11,7 +11,7 @@ CREATE TABLE `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); @@ -27,7 +27,7 @@ CREATE TABLE `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; INSERT INTO `help_faq` VALUES (1,1,0,'I\'d like to know ...','Yes, of course.',1,1,'riud','riud','r'); diff --git a/install/sql/incremental/upd_0007.sql b/install/sql/incremental/upd_0007.sql index cea3813229..0cdf99e2bc 100644 --- a/install/sql/incremental/upd_0007.sql +++ b/install/sql/incremental/upd_0007.sql @@ -14,6 +14,6 @@ CREATE TABLE IF NOT EXISTS `mail_mailinglist` ( `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`mailinglist_id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; +) AUTO_INCREMENT=1; DROP TABLE `mail_mailman_domain`; \ No newline at end of file diff --git a/install/sql/incremental/upd_0009.sql b/install/sql/incremental/upd_0009.sql index 5be069c735..43262d65b9 100644 --- a/install/sql/incremental/upd_0009.sql +++ b/install/sql/incremental/upd_0009.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `proxy_reverse` ( `rewrite_url_dst` varchar(100) NOT NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`rewrite_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `firewall_filter` ( @@ -38,7 +38,7 @@ CREATE TABLE IF NOT EXISTS `firewall_filter` ( `active` enum('n','y') NOT NULL default 'y', `client_id` int(11) NOT NULL, PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `firewall_forward` ( `firewall_id` int(11) unsigned NOT NULL auto_increment, @@ -59,7 +59,7 @@ CREATE TABLE IF NOT EXISTS `firewall_forward` ( `active` enum('n','y') NOT NULL default 'y', `client_id` int(11) NOT NULL, PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; alter table `server` add column `proxy_server` tinyint(1) not null after `vserver_server`; alter table `server` add column `firewall_server` tinyint(1) not null after `proxy_server`; diff --git a/install/sql/incremental/upd_0012.sql b/install/sql/incremental/upd_0012.sql index 2ba957f8d9..1fd355160c 100644 --- a/install/sql/incremental/upd_0012.sql +++ b/install/sql/incremental/upd_0012.sql @@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ip` ( `vm_id` int(11) NOT NULL DEFAULT '0', `reserved` varchar(255) NOT NULL DEFAULT 'n', PRIMARY KEY (`ip_address_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ip` @@ -40,7 +40,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( `active` varchar(255) NOT NULL DEFAULT 'y', `description` text, PRIMARY KEY (`ostemplate_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ostemplate` @@ -100,7 +100,7 @@ CREATE TABLE IF NOT EXISTS `openvz_template` ( `create_dns` varchar(1) NOT NULL DEFAULT 'n', `capability` varchar(255) DEFAULT NULL, PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_template` @@ -119,7 +119,7 @@ CREATE TABLE IF NOT EXISTS `openvz_traffic` ( `traffic_date` date NOT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`veid`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -- Dumping data for table `openvz_traffic` @@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` ( `capability` text NOT NULL, `config` mediumtext NOT NULL, PRIMARY KEY (`vm_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_vm` diff --git a/install/sql/incremental/upd_0013.sql b/install/sql/incremental/upd_0013.sql index 9b43d33616..bc38241bb4 100644 --- a/install/sql/incremental/upd_0013.sql +++ b/install/sql/incremental/upd_0013.sql @@ -16,5 +16,5 @@ CREATE TABLE `iptables` ( `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`iptables_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; diff --git a/install/sql/incremental/upd_0019.sql b/install/sql/incremental/upd_0019.sql index 60c464cea7..1bd990c5d0 100644 --- a/install/sql/incremental/upd_0019.sql +++ b/install/sql/incremental/upd_0019.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `help_faq_sections` ( `hfs_id` int(11) NOT NULL AUTO_INCREMENT, @@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `web_folder` ( `web_folder_id` bigint(20) NOT NULL AUTO_INCREMENT, @@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS `web_folder` ( `path` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `web_folder_user` ( `web_folder_user_id` bigint(20) NOT NULL AUTO_INCREMENT, @@ -50,7 +50,7 @@ CREATE TABLE IF NOT EXISTS `web_folder_user` ( `password` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; DROP TABLE `mail_greylist`; DROP TABLE `firewall_filter`; diff --git a/install/sql/incremental/upd_0028.sql b/install/sql/incremental/upd_0028.sql index 0020cdd9ac..67023de067 100644 --- a/install/sql/incremental/upd_0028.sql +++ b/install/sql/incremental/upd_0028.sql @@ -9,4 +9,4 @@ CREATE TABLE `web_backup` ( `tstamp` int(10) unsigned NOT NULL, `filename` varchar(255) NOT NULL, PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0031.sql b/install/sql/incremental/upd_0031.sql index 0fb25a5d40..7ebdef95c0 100644 --- a/install/sql/incremental/upd_0031.sql +++ b/install/sql/incremental/upd_0031.sql @@ -14,5 +14,5 @@ CREATE TABLE `server_php` ( `php_fpm_ini_dir` varchar(255) DEFAULT NULL, `php_fpm_pool_dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`server_php_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `web_domain` ADD `fastcgi_php_version` VARCHAR( 255 ) NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/incremental/upd_0033.sql b/install/sql/incremental/upd_0033.sql index d4b3c0d6a2..5d2b93cdba 100644 --- a/install/sql/incremental/upd_0033.sql +++ b/install/sql/incremental/upd_0033.sql @@ -10,4 +10,4 @@ CREATE TABLE IF NOT EXISTS `client_circle` ( `description` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`circle_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; \ No newline at end of file +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; \ No newline at end of file diff --git a/install/sql/incremental/upd_0034.sql b/install/sql/incremental/upd_0034.sql index 8ae098c011..85e49f70bb 100644 --- a/install/sql/incremental/upd_0034.sql +++ b/install/sql/incremental/upd_0034.sql @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances` ( `package_id` int(4) NOT NULL, `instance_status` int(4) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -31,7 +31,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( `name` varchar(255) NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `aps_packages` ( `package_url` TEXT NOT NULL, `package_status` int(1) NOT NULL DEFAULT '2', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -63,7 +63,7 @@ CREATE TABLE IF NOT EXISTS `aps_settings` ( `value` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0035.sql b/install/sql/incremental/upd_0035.sql index 5f8031c514..1a453e5875 100644 --- a/install/sql/incremental/upd_0035.sql +++ b/install/sql/incremental/upd_0035.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( `username` varchar(64) NOT NULL, `logo_url` varchar(255) NOT NULL, PRIMARY KEY (`var_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0039.sql b/install/sql/incremental/upd_0039.sql index af8a5afc5a..b090db4f74 100644 --- a/install/sql/incremental/upd_0039.sql +++ b/install/sql/incremental/upd_0039.sql @@ -15,7 +15,7 @@ CREATE TABLE IF NOT EXISTS `web_database_user` ( `database_user` varchar(64) DEFAULT NULL, `database_password` varchar(64) DEFAULT NULL, PRIMARY KEY (`database_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- diff --git a/install/sql/incremental/upd_0040.sql b/install/sql/incremental/upd_0040.sql index b39e8f11ff..f572a6e73b 100644 --- a/install/sql/incremental/upd_0040.sql +++ b/install/sql/incremental/upd_0040.sql @@ -21,4 +21,4 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( `snippet` mediumtext, `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`directive_snippets_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0050.sql b/install/sql/incremental/upd_0050.sql index bc31868a70..0ce01b9b45 100644 --- a/install/sql/incremental/upd_0050.sql +++ b/install/sql/incremental/upd_0050.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS `dns_slave` ( PRIMARY KEY (`id`), KEY `origin` (`origin`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `dns_slave` DROP INDEX `origin`; ALTER TABLE `dns_slave` ADD CONSTRAINT `slave` UNIQUE (`origin`,`server_id`); \ No newline at end of file diff --git a/install/sql/incremental/upd_0056.sql b/install/sql/incremental/upd_0056.sql index c7cb5285ce..d9e1e02289 100644 --- a/install/sql/incremental/upd_0056.sql +++ b/install/sql/incremental/upd_0056.sql @@ -4,7 +4,7 @@ CREATE TABLE `client_template_assigned` ( `client_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`assigned_template_id`), KEY `client_id` (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `client` ADD `gender` enum('','m','f') NOT NULL DEFAULT '' AFTER `company_id`, ADD `locked` enum('n','y') NOT NULL DEFAULT 'n' AFTER `created_at`, diff --git a/install/sql/incremental/upd_0057.sql b/install/sql/incremental/upd_0057.sql index b8452fe6e9..01b2c58de0 100644 --- a/install/sql/incremental/upd_0057.sql +++ b/install/sql/incremental/upd_0057.sql @@ -4,4 +4,4 @@ CREATE TABLE IF NOT EXISTS `sys_cron` ( `next_run` datetime NULL DEFAULT NULL, `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; diff --git a/install/sql/incremental/upd_0062.sql b/install/sql/incremental/upd_0062.sql index cee5ff93cc..039a0bd005 100644 --- a/install/sql/incremental/upd_0062.sql +++ b/install/sql/incremental/upd_0062.sql @@ -8,7 +8,7 @@ CREATE TABLE `mail_backup` ( `filename` varchar(255) NOT NULL, `filesize` VARCHAR(10) NOT NULL, PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `mail_user` ADD `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none'; ALTER TABLE `mail_user` ADD `backup_copies` INT NOT NULL DEFAULT '1'; diff --git a/install/sql/incremental/upd_0063.sql b/install/sql/incremental/upd_0063.sql index fc2534ac24..08e2f04f93 100644 --- a/install/sql/incremental/upd_0063.sql +++ b/install/sql/incremental/upd_0063.sql @@ -12,7 +12,7 @@ CREATE TABLE `client_message_template` ( `subject` varchar(255) DEFAULT NULL, `message` text, PRIMARY KEY (`client_message_template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `spamfilter_policy` ADD `policyd_quota_in` int(11) NOT NULL DEFAULT '-1', ADD `policyd_quota_in_period` int(11) NOT NULL DEFAULT '24', ADD `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', diff --git a/install/sql/incremental/upd_0075.sql b/install/sql/incremental/upd_0075.sql index acca4e6ac8..ce1bacf2d1 100644 --- a/install/sql/incremental/upd_0075.sql +++ b/install/sql/incremental/upd_0075.sql @@ -77,4 +77,4 @@ CREATE TABLE IF NOT EXISTS `dns_slave` ( PRIMARY KEY (`id`), UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/install/sql/incremental/upd_0081.sql b/install/sql/incremental/upd_0081.sql index 69236784c7..d24ce19ce9 100644 --- a/install/sql/incremental/upd_0081.sql +++ b/install/sql/incremental/upd_0081.sql @@ -126,7 +126,7 @@ CREATE TABLE `xmpp_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Table structure for table `xmpp_user` @@ -146,7 +146,7 @@ CREATE TABLE `xmpp_user` ( PRIMARY KEY (`xmppuser_id`), KEY `server_id` (`server_id`,`jid`), KEY `jid_active` (`jid`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -176,7 +176,7 @@ CREATE TABLE `server_ip_map` ( `destination_ip` varchar(35) DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_ip_map_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `web_domain` ADD COLUMN `rewrite_to_https` ENUM('y','n') NOT NULL DEFAULT 'n' AFTER `seo_redirect`; @@ -199,7 +199,7 @@ CREATE TABLE `ftp_traffic` ( `in_bytes` bigint(32) unsigned NOT NULL, `out_bytes` bigint(32) unsigned NOT NULL, UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `mail_forwarding` ADD COLUMN `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `active`; UPDATE `mail_forwarding` SET `allow_send_as` = 'y' WHERE `type` = 'alias'; diff --git a/install/sql/incremental/upd_0087.sql b/install/sql/incremental/upd_0087.sql index 55e3b846d7..4d392cc441 100644 --- a/install/sql/incremental/upd_0087.sql +++ b/install/sql/incremental/upd_0087.sql @@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( `ca_critical` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY (`ca_issue`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 3f534eedf0..c7e170ca58 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -69,7 +69,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances` ( `package_id` int(4) NOT NULL DEFAULT '0', `instance_status` int(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -84,7 +84,7 @@ CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( `name` varchar(255) NOT NULL DEFAULT '', `value` text, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -102,7 +102,7 @@ CREATE TABLE IF NOT EXISTS `aps_packages` ( `package_url` TEXT, `package_status` int(1) NOT NULL DEFAULT '2', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `aps_settings` ( `value` text, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -128,7 +128,7 @@ CREATE TABLE `attempts_login` ( `ip` varchar(39) NOT NULL DEFAULT '', `times` int(11) DEFAULT NULL, `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -264,7 +264,7 @@ CREATE TABLE `client` ( `risk_score` int(10) unsigned NOT NULL DEFAULT '0', `activation_code` varchar(10) NOT NULL DEFAULT '', PRIMARY KEY (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -284,7 +284,7 @@ CREATE TABLE `client_circle` ( `description` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`circle_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -369,7 +369,7 @@ CREATE TABLE `client_template` ( `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -383,7 +383,7 @@ CREATE TABLE `client_template_assigned` ( `client_template_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`assigned_template_id`), KEY `client_id` (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- @@ -402,7 +402,7 @@ CREATE TABLE `client_message_template` ( `subject` varchar(255) DEFAULT NULL, `message` text, PRIMARY KEY (`client_message_template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `invoice_message_template` @@ -422,7 +422,7 @@ CREATE TABLE `country` ( `numcode` smallint(6) DEFAULT NULL, `eu` enum('n','y') NOT NULL DEFAULT 'n', PRIMARY KEY (`iso`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -448,7 +448,7 @@ CREATE TABLE `cron` ( `log` enum('n','y') NOT NULL default 'n', `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -471,7 +471,7 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( `active` enum('n','y') NOT NULL DEFAULT 'y', `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`directive_snippets_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -497,7 +497,7 @@ CREATE TABLE `dns_rr` ( `serial` int(10) unsigned default NULL, PRIMARY KEY (`id`), KEY `rr` (`zone`,`type`,`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -520,7 +520,7 @@ CREATE TABLE `dns_slave` ( PRIMARY KEY (`id`), UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -543,7 +543,7 @@ CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( `ca_critical` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY (`ca_issue`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); @@ -630,7 +630,7 @@ CREATE TABLE `dns_soa` ( PRIMARY KEY (`id`), UNIQUE KEY `origin` (`origin`), KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -650,7 +650,7 @@ CREATE TABLE `dns_template` ( `template` text, `visible` enum('N','Y') NOT NULL default 'Y', PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Table structure for table `domain` @@ -666,7 +666,7 @@ CREATE TABLE `domain` ( `domain` varchar(255) NOT NULL default '', PRIMARY KEY (`domain_id`), UNIQUE KEY `domain` (`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -686,7 +686,7 @@ CREATE TABLE `firewall` ( `udp_port` text, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -724,7 +724,7 @@ CREATE TABLE `ftp_user` ( KEY `server_id` (`server_id`), KEY `username` (`username`), KEY `quota_files` (`quota_files`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -738,7 +738,7 @@ CREATE TABLE `ftp_traffic` ( `in_bytes` bigint(32) unsigned NOT NULL, `out_bytes` bigint(32) unsigned NOT NULL, UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -758,7 +758,7 @@ CREATE TABLE `help_faq` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -776,7 +776,7 @@ CREATE TABLE `help_faq_sections` ( `sys_perm_group` varchar(5) DEFAULT NULL, `sys_perm_other` varchar(5) DEFAULT NULL, PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -797,7 +797,7 @@ CREATE TABLE `iptables` ( `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`iptables_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -819,7 +819,7 @@ CREATE TABLE `mail_access` ( `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`access_id`), KEY `server_id` (`server_id`,`source`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -837,7 +837,7 @@ CREATE TABLE `mail_backup` ( `filename` varchar(255) NOT NULL DEFAULT '', `filesize` VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -859,7 +859,7 @@ CREATE TABLE `mail_content_filter` ( `action` varchar(255) default NULL, `active` varchar(255) NOT NULL default 'y', PRIMARY KEY (`content_filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -884,7 +884,7 @@ CREATE TABLE `mail_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -909,7 +909,7 @@ CREATE TABLE `mail_forwarding` ( PRIMARY KEY (`forwarding_id`), KEY `server_id` (`server_id`,`source`), KEY `type` (`type`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -934,7 +934,7 @@ CREATE TABLE `mail_get` ( `destination` varchar(255) default NULL, `active` varchar(255) NOT NULL default 'y', PRIMARY KEY (`mailget_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -955,7 +955,7 @@ CREATE TABLE `mail_mailinglist` ( `email` varchar(255) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`mailinglist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -975,7 +975,7 @@ CREATE TABLE IF NOT EXISTS `mail_relay_recipient` ( `access` varchar(255) NOT NULL DEFAULT 'OK', `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`relay_recipient_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -990,7 +990,7 @@ CREATE TABLE `mail_traffic` ( `traffic` bigint(20) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`traffic_id`), KEY `mailuser_id` (`mailuser_id`,`month`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1013,7 +1013,7 @@ CREATE TABLE `mail_transport` ( PRIMARY KEY (`transport_id`), KEY `server_id` (`server_id`,`transport`), KEY `server_id_2` (`server_id`,`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1066,7 +1066,7 @@ CREATE TABLE `mail_user` ( PRIMARY KEY (`mailuser_id`), KEY `server_id` (`server_id`,`email`), KEY `email_access` (`email`,`access`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1090,7 +1090,7 @@ CREATE TABLE `mail_user_filter` ( `target` varchar(255) default NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1105,7 +1105,7 @@ CREATE TABLE `monitor_data` ( `data` mediumtext, `state` enum('no_state','unknown','ok','info','warning','critical','error') NOT NULL DEFAULT 'unknown', PRIMARY KEY (`server_id`,`type`,`created`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1126,7 +1126,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ip` ( `reserved` varchar(255) NOT NULL DEFAULT 'n', `additional` varchar(255) NOT NULL DEFAULT 'n', PRIMARY KEY (`ip_address_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ip` @@ -1152,7 +1152,7 @@ CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( `active` varchar(255) NOT NULL DEFAULT 'y', `description` text, PRIMARY KEY (`ostemplate_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_ostemplate` @@ -1215,7 +1215,7 @@ CREATE TABLE IF NOT EXISTS `openvz_template` ( `iptables` varchar(255) DEFAULT NULL, `custom` text, PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_template` @@ -1234,7 +1234,7 @@ CREATE TABLE IF NOT EXISTS `openvz_traffic` ( `traffic_date` date NULL DEFAULT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', UNIQUE KEY (`veid`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -- Dumping data for table `openvz_traffic` @@ -1283,7 +1283,7 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` ( `config` mediumtext, `custom` text, PRIMARY KEY (`vm_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -- Dumping data for table `openvz_vm` @@ -1302,7 +1302,7 @@ CREATE TABLE `remote_session` ( `client_login` tinyint(1) unsigned NOT NULL default '0', `tstamp` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`remote_session`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1323,7 +1323,7 @@ CREATE TABLE `remote_user` ( `remote_ips` TEXT, `remote_functions` text, PRIMARY KEY (`remote_userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1354,7 +1354,7 @@ CREATE TABLE `server` ( `dbversion` int(11) unsigned NOT NULL default '1', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1376,7 +1376,7 @@ CREATE TABLE `server_ip` ( `virtualhost` enum('n','y') NOT NULL default 'y', `virtualhost_port` varchar(255) default '80,443', PRIMARY KEY (`server_ip_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1396,7 +1396,7 @@ CREATE TABLE `server_ip_map` ( `destination_ip` varchar(35) DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_ip_map_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1421,7 +1421,7 @@ CREATE TABLE `server_php` ( `php_fpm_pool_dir` varchar(255) DEFAULT NULL, `active` enum('n','y') NOT NULL DEFAULT 'y', PRIMARY KEY (`server_php_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1450,7 +1450,7 @@ CREATE TABLE `shell_user` ( `chroot` varchar(255) NOT NULL DEFAULT '', `ssh_rsa` text, PRIMARY KEY (`shell_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1473,7 +1473,7 @@ CREATE TABLE `software_package` ( `package_config` text, PRIMARY KEY (`package_id`), UNIQUE KEY `package_name` (`package_name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1494,7 +1494,7 @@ CREATE TABLE `software_repo` ( `repo_password` varchar(64) default NULL, `active` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`software_repo_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1516,7 +1516,7 @@ CREATE TABLE `software_update` ( `v4` tinyint(1) NOT NULL default '0', `type` enum('full','update') NOT NULL default 'full', PRIMARY KEY (`software_update_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1532,7 +1532,7 @@ CREATE TABLE `software_update_inst` ( `status` enum('none','installing','installed','deleting','deleted','failed') NOT NULL default 'none', PRIMARY KEY (`software_update_inst_id`), UNIQUE KEY `software_update_id` (`software_update_id`,`package_name`,`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1590,7 +1590,7 @@ CREATE TABLE `spamfilter_policy` ( `policyd_quota_out_period` int(11) NOT NULL DEFAULT '24', `policyd_greylist` ENUM( 'Y', 'N' ) NOT NULL DEFAULT 'N', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1613,7 +1613,7 @@ CREATE TABLE `spamfilter_users` ( `local` varchar(1) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1635,7 +1635,7 @@ CREATE TABLE `spamfilter_wblist` ( `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', `active` enum('y','n') NOT NULL default 'y', PRIMARY KEY (`wblist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1656,7 +1656,7 @@ CREATE TABLE `support_message` ( `message` text default NULL, `tstamp` int(11) NOT NULL default '0', PRIMARY KEY (`support_message_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1669,7 +1669,7 @@ CREATE TABLE `sys_config` ( `name` varchar(64) NOT NULL DEFAULT '', `value` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`group`, `name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -1684,7 +1684,7 @@ CREATE TABLE IF NOT EXISTS `sys_cron` ( `next_run` datetime NULL DEFAULT NULL, `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -1707,7 +1707,7 @@ CREATE TABLE `sys_datalog` ( `session_id` varchar(64) NOT NULL DEFAULT '', PRIMARY KEY (`datalog_id`), KEY `server_id` (`server_id`,`status`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1731,7 +1731,7 @@ CREATE TABLE `sys_dbsync` ( `last_datalog_id` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `last_datalog_id` (`last_datalog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1751,7 +1751,7 @@ CREATE TABLE `sys_filesync` ( `wput_options` varchar(255) NOT NULL default '--timestamping --reupload --dont-continue', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1765,7 +1765,7 @@ CREATE TABLE `sys_group` ( `description` text, `client_id` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`groupid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1779,7 +1779,7 @@ CREATE TABLE `sys_ini` ( `default_logo` text NOT NULL, `custom_logo` text NOT NULL, PRIMARY KEY (`sysini_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1795,7 +1795,7 @@ CREATE TABLE `sys_log` ( `tstamp` int(11) unsigned NOT NULL DEFAULT '0', `message` text, PRIMARY KEY (`syslog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1813,7 +1813,7 @@ CREATE TABLE `sys_remoteaction` ( `response` mediumtext, PRIMARY KEY (`action_id`), KEY `server_id` (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1829,7 +1829,7 @@ CREATE TABLE `sys_session` ( `session_data` longtext, PRIMARY KEY (`session_id`), KEY `last_updated` (`last_updated`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1848,7 +1848,7 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( `username` varchar(64) NOT NULL DEFAULT '', `logo_url` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`var_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -1880,7 +1880,7 @@ CREATE TABLE `sys_user` ( `lost_password_hash` VARCHAR(50) NOT NULL default '', `lost_password_reqtime` DATETIME NULL default NULL, PRIMARY KEY (`userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1903,7 +1903,7 @@ CREATE TABLE `webdav_user` ( `active` enum('n','y') NOT NULL DEFAULT 'y', `dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`webdav_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1921,7 +1921,7 @@ CREATE TABLE `web_backup` ( `filename` varchar(255) NOT NULL DEFAULT '', `filesize` VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1955,7 +1955,7 @@ CREATE TABLE `web_database` ( PRIMARY KEY (`database_id`), KEY `database_user_id` (`database_user_id`), KEY `database_ro_user_id` (`database_ro_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -1976,7 +1976,7 @@ CREATE TABLE IF NOT EXISTS `web_database_user` ( `database_password` varchar(64) DEFAULT NULL, `database_password_mongo` varchar(32) DEFAULT NULL, PRIMARY KEY (`database_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2068,7 +2068,7 @@ CREATE TABLE `web_domain` ( `log_retention` int(11) NOT NULL DEFAULT '10', PRIMARY KEY (`domain_id`), UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2088,7 +2088,7 @@ CREATE TABLE IF NOT EXISTS `web_folder` ( `path` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `web_folder` @@ -2114,7 +2114,7 @@ CREATE TABLE IF NOT EXISTS `web_folder_user` ( `password` varchar(255) DEFAULT NULL, `active` varchar(255) NOT NULL DEFAULT 'y', PRIMARY KEY (`web_folder_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Dumping data for table `web_folder_user` @@ -2131,7 +2131,7 @@ CREATE TABLE `web_traffic` ( `traffic_date` date NULL DEFAULT NULL, `traffic_bytes` bigint(32) unsigned NOT NULL default '0', UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; +) DEFAULT CHARSET=utf8 ; -- -------------------------------------------------------- @@ -2190,7 +2190,7 @@ CREATE TABLE `xmpp_domain` ( PRIMARY KEY (`domain_id`), KEY `server_id` (`server_id`,`domain`), KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- @@ -2212,7 +2212,7 @@ CREATE TABLE `xmpp_user` ( PRIMARY KEY (`xmppuser_id`), KEY `server_id` (`server_id`,`jid`), KEY `jid_active` (`jid`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- GitLab From 3c2f3189ce3f56cc1c6d48b285b748df50a40d05 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 30 Jul 2019 22:23:26 +0200 Subject: [PATCH 076/571] - removed files from failed patches (orig/rej) --- install/dist/conf/debiantesting.conf.php.orig | 234 -- install/lib/installer_base.lib.php.orig | 2962 ----------------- .../incremental/upd_dev_collection.sql.orig | 0 .../incremental/upd_dev_collection.sql.rej | 40 - install/sql/ispconfig3.sql.orig | 2570 -------------- install/sql/ispconfig3.sql.rej | 23 - .../admin/form/server_config.tform.php.orig | 1956 ----------- .../admin/lib/lang/de_server_config.lng.orig | 299 -- .../admin/lib/lang/de_server_config.lng.rej | 11 - .../admin/lib/lang/en_server_config.lng.orig | 300 -- .../admin/lib/lang/en_server_config.lng.rej | 11 - .../form/spamfilter_policy.tform.php.orig | 496 --- 12 files changed, 8902 deletions(-) delete mode 100644 install/dist/conf/debiantesting.conf.php.orig delete mode 100644 install/lib/installer_base.lib.php.orig delete mode 100644 install/sql/incremental/upd_dev_collection.sql.orig delete mode 100644 install/sql/incremental/upd_dev_collection.sql.rej delete mode 100644 install/sql/ispconfig3.sql.orig delete mode 100644 install/sql/ispconfig3.sql.rej delete mode 100644 interface/web/admin/form/server_config.tform.php.orig delete mode 100644 interface/web/admin/lib/lang/de_server_config.lng.orig delete mode 100644 interface/web/admin/lib/lang/de_server_config.lng.rej delete mode 100644 interface/web/admin/lib/lang/en_server_config.lng.orig delete mode 100644 interface/web/admin/lib/lang/en_server_config.lng.rej delete mode 100644 interface/web/mail/form/spamfilter_policy.tform.php.orig diff --git a/install/dist/conf/debiantesting.conf.php.orig b/install/dist/conf/debiantesting.conf.php.orig deleted file mode 100644 index 5e5e32f474..0000000000 --- a/install/dist/conf/debiantesting.conf.php.orig +++ /dev/null @@ -1,234 +0,0 @@ -<?php - -/* -Copyright (c) 2016, Till Brehm, ISPConfig UG -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. -*/ - -//*** Debian Testing default settings - -//* Main -$conf['language'] = 'en'; -$conf['distname'] = 'debian100'; -$conf['hostname'] = 'server1.domain.tld'; // Full hostname -$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; -$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; -$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error -$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; -$conf['server_id'] = 1; -$conf['init_scripts'] = '/etc/init.d'; -$conf['runlevel'] = '/etc'; -$conf['shells'] = '/etc/shells'; -$conf['pam'] = '/etc/pam.d'; - -//* Services provided by this server, this selection will be overridden by the expert mode -$conf['services']['mail'] = true; -$conf['services']['web'] = true; -$conf['services']['dns'] = true; -$conf['services']['file'] = true; -$conf['services']['db'] = true; -$conf['services']['vserver'] = true; -$conf['services']['proxy'] = false; -$conf['services']['firewall'] = false; - -//* MySQL -$conf['mysql']['installed'] = false; // will be detected automatically during installation -$conf['mysql']['init_script'] = 'mysql'; -$conf['mysql']['host'] = 'localhost'; -$conf['mysql']['ip'] = '127.0.0.1'; -$conf['mysql']['port'] = '3306'; -$conf['mysql']['database'] = 'dbispconfig'; -$conf['mysql']['admin_user'] = 'root'; -$conf['mysql']['admin_password'] = ''; -$conf['mysql']['charset'] = 'utf8'; -$conf['mysql']['ispconfig_user'] = 'ispconfig'; -$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); -$conf['mysql']['master_slave_setup'] = 'n'; -$conf['mysql']['master_host'] = ''; -$conf['mysql']['master_database'] = 'dbispconfig'; -$conf['mysql']['master_admin_user'] = 'root'; -$conf['mysql']['master_admin_password'] = ''; -$conf['mysql']['master_ispconfig_user'] = ''; -$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); - -//* Apache -$conf['apache']['installed'] = false; // will be detected automatically during installation -$conf['apache']['user'] = 'www-data'; -$conf['apache']['group'] = 'www-data'; -$conf['apache']['init_script'] = 'apache2'; -$conf['apache']['version'] = '2.4'; -$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; -$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; -$conf['apache']['vhost_port'] = '8080'; -$conf['apache']['php_ini_path_apache'] = '/etc/php/7.3/apache2/php.ini'; -$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.3/cgi/php.ini'; - -//* Website base settings -$conf['web']['website_basedir'] = '/var/www'; -$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; -$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; - -//* Apps base settings -$conf['web']['apps_vhost_ip'] = '_default_'; -$conf['web']['apps_vhost_port'] = '8081'; -$conf['web']['apps_vhost_servername'] = ''; -$conf['web']['apps_vhost_user'] = 'ispapps'; -$conf['web']['apps_vhost_group'] = 'ispapps'; - -//* Fastcgi -$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.3/cgi/'; -$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; -$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; - -//* Postfix -$conf['postfix']['installed'] = false; // will be detected automatically during installation -$conf['postfix']['config_dir'] = '/etc/postfix'; -$conf['postfix']['init_script'] = 'postfix'; -$conf['postfix']['user'] = 'postfix'; -$conf['postfix']['group'] = 'postfix'; -$conf['postfix']['vmail_userid'] = '5000'; -$conf['postfix']['vmail_username'] = 'vmail'; -$conf['postfix']['vmail_groupid'] = '5000'; -$conf['postfix']['vmail_groupname'] = 'vmail'; -$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; - -//* Mailman -$conf['mailman']['installed'] = false; // will be detected automatically during installation -$conf['mailman']['config_dir'] = '/etc/mailman'; -$conf['mailman']['init_script'] = 'mailman'; - -//* mlmmj -$conf['mlmmj']['installed'] = false; // will be detected automatically during installation -$conf['mlmmj']['config_dir'] = '/etc/mlmmj'; - -//* Getmail -$conf['getmail']['installed'] = false; // will be detected automatically during installation -$conf['getmail']['config_dir'] = '/etc/getmail'; -$conf['getmail']['program'] = '/usr/bin/getmail'; - -//* Courier -$conf['courier']['installed'] = false; // will be detected automatically during installation -$conf['courier']['config_dir'] = '/etc/courier'; -$conf['courier']['courier-authdaemon'] = 'courier-authdaemon'; -$conf['courier']['courier-imap'] = 'courier-imap'; -$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl'; -$conf['courier']['courier-pop'] = 'courier-pop'; -$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl'; - -//* Dovecot -$conf['dovecot']['installed'] = false; // will be detected automatically during installation -$conf['dovecot']['config_dir'] = '/etc/dovecot'; -$conf['dovecot']['init_script'] = 'dovecot'; - -//* SASL -$conf['saslauthd']['installed'] = false; // will be detected automatically during installation -$conf['saslauthd']['config'] = '/etc/default/saslauthd'; -$conf['saslauthd']['init_script'] = 'saslauthd'; - -//* Amavisd -$conf['amavis']['installed'] = false; // will be detected automatically during installation -$conf['amavis']['config_dir'] = '/etc/amavis'; -$conf['amavis']['init_script'] = 'amavis'; - -//* ClamAV -$conf['clamav']['installed'] = false; // will be detected automatically during installation -$conf['clamav']['init_script'] = 'clamav-daemon'; - -//* Pureftpd -$conf['pureftpd']['installed'] = false; // will be detected automatically during installation -$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; -$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql'; - -//* MyDNS -$conf['mydns']['installed'] = false; // will be detected automatically during installation -$conf['mydns']['config_dir'] = '/etc'; -$conf['mydns']['init_script'] = 'mydns'; - -//* PowerDNS -$conf['powerdns']['installed'] = false; // will be detected automatically during installation -$conf['powerdns']['database'] = 'powerdns'; -$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; -$conf['powerdns']['init_script'] = 'pdns'; - -//* BIND DNS Server -$conf['bind']['installed'] = false; // will be detected automatically during installation -$conf['bind']['bind_user'] = 'root'; -$conf['bind']['bind_group'] = 'bind'; -$conf['bind']['bind_zonefiles_dir'] = '/etc/bind'; -$conf['bind']['named_conf_path'] = '/etc/bind/named.conf'; -$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local'; -$conf['bind']['init_script'] = 'bind9'; - -//* Jailkit -$conf['jailkit']['installed'] = false; // will be detected automatically during installation -$conf['jailkit']['config_dir'] = '/etc/jailkit'; -$conf['jailkit']['jk_init'] = 'jk_init.ini'; -$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; -$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch'; -$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; - -//* Squid -$conf['squid']['installed'] = false; // will be detected automatically during installation -$conf['squid']['config_dir'] = '/etc/squid'; -$conf['squid']['init_script'] = 'squid'; - -//* Nginx -$conf['nginx']['installed'] = false; // will be detected automatically during installation -$conf['nginx']['user'] = 'www-data'; -$conf['nginx']['group'] = 'www-data'; -$conf['nginx']['config_dir'] = '/etc/nginx'; -$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; -$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; -$conf['nginx']['init_script'] = 'nginx'; -$conf['nginx']['vhost_port'] = '8080'; -$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; -$conf['nginx']['php_fpm_init_script'] = 'php7.3-fpm'; -$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.3/fpm/php.ini'; -$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.3/fpm/pool.d'; -$conf['nginx']['php_fpm_start_port'] = 9010; -$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.3-fpm'; - -//* OpenVZ -$conf['openvz']['installed'] = false; - -//*Bastille-Firwall -$conf['bastille']['installed'] = false; -$conf['bastille']['config_dir'] = '/etc/Bastille'; - -//* vlogger -$conf['vlogger']['config_dir'] = '/etc'; - -//* cron -$conf['cron']['init_script'] = 'cron'; -$conf['cron']['crontab_dir'] = '/etc/cron.d'; -$conf['cron']['wget'] = '/usr/bin/wget'; - -//* Metronome XMPP -$conf['xmpp']['installed'] = false; -$conf['xmpp']['init_script'] = 'metronome'; - - -?> diff --git a/install/lib/installer_base.lib.php.orig b/install/lib/installer_base.lib.php.orig deleted file mode 100644 index 8d0456ef5b..0000000000 --- a/install/lib/installer_base.lib.php.orig +++ /dev/null @@ -1,2962 +0,0 @@ -<?php - -/* -Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh -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. -*/ - -class installer_base { - - var $wb = array(); - var $language = 'en'; - var $db; - public $conf; - public $install_ispconfig_interface = true; - public $is_update = false; // true if it is an update, falsi if it is a new install - public $min_php = '5.3.3'; // minimal php-version for update / install - protected $mailman_group = 'list'; - - - public function __construct() { - global $conf; //TODO: maybe $conf should be passed to constructor - //$this->conf = $conf; - } - - //: TODO Implement the translation function and language files for the installer. - public function lng($text) { - return $text; - } - - public function error($msg) { - die('ERROR: '.$msg."\n"); - } - - public function warning($msg) { - echo 'WARNING: '.$msg."\n"; - } - - public function simple_query($query, $answers, $default, $name = '') { - global $autoinstall, $autoupdate; - $finished = false; - do { - if($name != '' && $autoinstall[$name] != '') { - if($autoinstall[$name] == 'default') { - $input = $default; - } else { - $input = $autoinstall[$name]; - } - } elseif($name != '' && $autoupdate[$name] != '') { - if($autoupdate[$name] == 'default') { - $input = $default; - } else { - $input = $autoupdate[$name]; - } - } else { - $answers_str = implode(',', $answers); - swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: '); - $input = sread(); - } - - //* Stop the installation - if($input == 'quit') { - swriteln($this->lng("Installation terminated by user.\n")); - die(); - } - - //* Select the default - if($input == '') { - $answer = $default; - $finished = true; - } - - //* Set answer id valid - if(in_array($input, $answers)) { - $answer = $input; - $finished = true; - } - - } while ($finished == false); - swriteln(); - return $answer; - } - - public function free_query($query, $default, $name = '') { - global $autoinstall, $autoupdate; - if($name != '' && $autoinstall[$name] != '') { - if($autoinstall[$name] == 'default') { - $input = $default; - } else { - $input = $autoinstall[$name]; - } - } elseif($name != '' && $autoupdate[$name] != '') { - if($autoupdate[$name] == 'default') { - $input = $default; - } else { - $input = $autoupdate[$name]; - } - } else { - swrite($this->lng($query).' ['.$default.']: '); - $input = sread(); - } - - //* Stop the installation - if($input == 'quit') { - swriteln($this->lng("Installation terminated by user.\n")); - die(); - } - - $answer = ($input == '') ? $default : $input; - swriteln(); - return $answer; - } - - /* - // TODO: this function is not used atmo I think - pedro - function request_language(){ - - swriteln(lng('Enter your language')); - swriteln(lng('de, en')); - - } - */ - - //** Detect PHP-Version - public function get_php_version() { - if(version_compare(PHP_VERSION, $this->min_php, '<')) return false; - else return true; - } - - //** Detect installed applications - public function find_installed_apps() { - global $conf; - - if(is_installed('mysql') || is_installed('mysqld')) $conf['mysql']['installed'] = true; - if(is_installed('postfix')) $conf['postfix']['installed'] = true; - if(is_installed('postgrey')) $conf['postgrey']['installed'] = true; - if(is_installed('mailman') || is_installed('mmsitepass')) $conf['mailman']['installed'] = true; - if(is_installed('apache') || is_installed('apache2') || is_installed('httpd') || is_installed('httpd2')) $conf['apache']['installed'] = true; - if(is_installed('getmail')) $conf['getmail']['installed'] = true; - if(is_installed('courierlogger')) $conf['courier']['installed'] = true; - if(is_installed('dovecot')) $conf['dovecot']['installed'] = true; - if(is_installed('saslauthd')) $conf['saslauthd']['installed'] = true; - if(is_installed('amavisd-new') || is_installed('amavisd')) $conf['amavis']['installed'] = true; - if(is_installed('clamdscan')) $conf['clamav']['installed'] = true; - if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true; - if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true; - if(is_installed('jk_chrootsh')) $conf['jailkit']['installed'] = true; - if(is_installed('pdns_server') || is_installed('pdns_control')) $conf['powerdns']['installed'] = true; - if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true; - if(is_installed('squid')) $conf['squid']['installed'] = true; - if(is_installed('nginx')) $conf['nginx']['installed'] = true; - if(is_installed('iptables') && is_installed('ufw')) { - $conf['ufw']['installed'] = true; - } elseif(is_installed('iptables')) { - $conf['firewall']['installed'] = true; - } - 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('spamassassin')) $conf['spamassassin']['installed'] = true; - // if(is_installed('vlogger')) $conf['vlogger']['installed'] = true; - // ISPConfig ships with vlogger, so it is always installed. - $conf['vlogger']['installed'] = true; - if(is_installed('cron') || is_installed('anacron')) $conf['cron']['installed'] = true; - - 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) { - $force = false; - if(AUTOINSTALL == true) return false; - if($enable_force == true) { - swriteln("[WARN] autodetect for $service failed"); - } else { - swriteln("[INFO] service $service not detected"); - } - if($enable_force) { - 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; - if ($reconfigure_services_answer != 'selected') { - $reconfigure = true; - } else { - if(strtolower($this->simple_query("Reconfigure $service", array('y', 'n'), 'y') ) == 'y') { - $reconfigure = true; - } else { - swriteln("Skip reconfigure $service\n"); - } - } - return $reconfigure; - } - - /** Create the database for ISPConfig */ - - - public function configure_database() { - global $conf; - - //* 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'); - $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];"; - die(); - } - - //** Create the database - if(!$this->db->query('CREATE DATABASE IF NOT EXISTS ?? DEFAULT CHARACTER SET ?', $conf['mysql']['database'], $conf['mysql']['charset'])) { - $this->error('Unable to create MySQL database: '.$conf['mysql']['database'].'.'); - } - - //* Set the database name in the DB library - $this->db->setDBName($conf['mysql']['database']); - - //* Load the database dump into the database, if database contains no tables - $db_tables = $this->db->getTables(); - if(count($db_tables) > 0) { - $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'])." -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'])." -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(); - if(count($db_tables) == 0) { - $this->error('Unable to load SQL-Dump into database table.'); - } - - //* Load system.ini into the sys_ini table - $system_ini = rf('tpl/system.ini.master'); - $this->db->query("UPDATE sys_ini SET config = ? WHERE sysini_id = 1", $system_ini); - - } - } - - //** Create the server record in the database - public function add_database_server_record() { - - global $conf; - - if($conf['mysql']['host'] == 'localhost') { - $from_host = 'localhost'; - } else { - $from_host = $conf['hostname']; - } - - // Delete ISPConfig user in the local database, in case that it exists - $this->db->query("DROP USER ?@?", $conf['mysql']['ispconfig_user'], $from_host); - $this->db->query("DROP DATABASE IF EXISTS ?", $conf['mysql']['database']); - - //* Create the ISPConfig database user and grant permissions in the local database - $query = 'CREATE USER ?@? IDENTIFIED BY ?'; - if(!$this->db->query($query, $conf['mysql']['ispconfig_user'], $from_host, $conf['mysql']['ispconfig_password'])) { - $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); - } - $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON ?? TO ?@?'; - if(!$this->db->query($query, $conf['mysql']['database'] . ".*", $conf['mysql']['ispconfig_user'], $from_host)) { - $this->error('Unable to grant databse permissions to user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage); - } - - //* Set the database name in the DB library - $this->db->setDBName($conf['mysql']['database']); - - $tpl_ini_array = ini_to_array(rf('tpl/server.ini.master')); - - //* Update further distribution specific parameters for server config here - //* HINT: Every line added here has to be added in update.lib.php too!! - $tpl_ini_array['web']['vhost_conf_dir'] = $conf['apache']['vhost_conf_dir']; - $tpl_ini_array['web']['vhost_conf_enabled_dir'] = $conf['apache']['vhost_conf_enabled_dir']; - $tpl_ini_array['jailkit']['jailkit_chroot_app_programs'] = $conf['jailkit']['jailkit_chroot_app_programs']; - $tpl_ini_array['fastcgi']['fastcgi_phpini_path'] = $conf['fastcgi']['fastcgi_phpini_path']; - $tpl_ini_array['fastcgi']['fastcgi_starter_path'] = $conf['fastcgi']['fastcgi_starter_path']; - $tpl_ini_array['fastcgi']['fastcgi_bin'] = $conf['fastcgi']['fastcgi_bin']; - $tpl_ini_array['server']['hostname'] = $conf['hostname']; - $tpl_ini_array['server']['ip_address'] = @gethostbyname($conf['hostname']); - $tpl_ini_array['server']['firewall'] = ($conf['ufw']['installed'] == true)?'ufw':'bastille'; - $tpl_ini_array['web']['website_basedir'] = $conf['web']['website_basedir']; - $tpl_ini_array['web']['website_path'] = $conf['web']['website_path']; - $tpl_ini_array['web']['website_symlinks'] = $conf['web']['website_symlinks']; - $tpl_ini_array['cron']['crontab_dir'] = $conf['cron']['crontab_dir']; - $tpl_ini_array['web']['security_level'] = 20; - $tpl_ini_array['web']['user'] = $conf['apache']['user']; - $tpl_ini_array['web']['group'] = $conf['apache']['group']; - $tpl_ini_array['web']['php_ini_path_apache'] = $conf['apache']['php_ini_path_apache']; - $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; - $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; - $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; - $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; - $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; - $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir']; - $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path']; - $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path']; - - $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; - $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; - $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; - $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; - $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; - $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; - $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; - $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; - $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']; - - if ($conf['nginx']['installed'] == true) { - $tpl_ini_array['web']['server_type'] = 'nginx'; - $tpl_ini_array['global']['webserver'] = 'nginx'; - } - - if (array_key_exists('awstats', $conf)) { - foreach ($conf['awstats'] as $aw_sett => $aw_value) { - $tpl_ini_array['web']['awstats_'.$aw_sett] = $aw_value; - } - } - - $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; - $file_server_enabled = ($conf['services']['file'])?1:0; - $db_server_enabled = ($conf['services']['db'])?1:0; - $vserver_server_enabled = ($conf['openvz']['installed'])?1:0; - $proxy_server_enabled = (isset($conf['services']['proxy']) && $conf['services']['proxy'])?1:0; - $firewall_server_enabled = (isset($conf['services']['firewall']) && $conf['services']['firewall'])?1:0; - - //** Get the database version number based on the patchfiles - $found = true; - $current_db_version = 1; - while($found == true) { - $next_db_version = intval($current_db_version + 1); - $patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql'; - if(is_file($patch_filename)) { - $current_db_version = $next_db_version; - } else { - $found = false; - } - } - $current_db_version = intval($current_db_version); - - - if($conf['mysql']['master_slave_setup'] == 'y') { - - //* Insert the server record in master DB - $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; - $this->dbmaster->query($sql, $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); - $conf['server_id'] = $this->dbmaster->insertID(); - $conf['server_id'] = $conf['server_id']; - - //* Insert the same record in the local DB - $sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (?,1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; - $this->db->query($sql, $conf['server_id'], $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); - - //* username for the ispconfig user - $conf['mysql']['master_ispconfig_user'] = 'ispcsrv'.$conf['server_id']; - - $this->grant_master_database_rights(); - - } else { - //* Insert the server, if its not a mster / slave setup - $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`,`firewall_server`,`proxy_server`) VALUES (1, 1, 'riud', 'riud', 'r', ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?);"; - $this->db->query($sql, $conf['hostname'], $mail_server_enabled, $web_server_enabled, $dns_server_enabled, $file_server_enabled, $db_server_enabled, $vserver_server_enabled, $server_ini_content, $current_db_version, $proxy_server_enabled, $firewall_server_enabled); - $conf['server_id'] = $this->db->insertID(); - $conf['server_id'] = $conf['server_id']; - } - - - } - - 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){ - $line = trim($line); - $ip_type = ''; - if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - $ip_type = 'IPv4'; - } - if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $ip_type = 'IPv6'; - } - if($ip_type == '') continue; - if($this->db->dbHost != $this->dbmaster->dbHost){ - $this->dbmaster->query('INSERT INTO server_ip ( - sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $conf['server_id'], $ip_type, $line); - $server_ip_id = $this->dbmaster->insertID(); - $this->db->query('INSERT INTO server_ip ( - server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - ?, - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $server_ip_id, $conf['server_id'], $ip_type, $line); - } else { - $this->db->query('INSERT INTO server_ip ( - sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $conf['server_id'], $ip_type, $line); - } - } - } - } - } - - public function grant_master_database_rights($verbose = false) { - global $conf; - - /* - * The following code is a little bit tricky: - * * If we HAVE a master-slave - Setup then the client has to grant the rights for himself - * at the master. - * * If we DO NOT have a master-slave - Setup then we have two possibilities - * 1) it is a single server - * 2) it is the MASTER of n clients - */ - $hosts = array(); - - if($conf['mysql']['master_slave_setup'] == 'y') { - /* - * it is a master-slave - Setup so the slave has to grant its rights in the master - * database - */ - - //* insert the ispconfig user in the remote server - $from_host = $conf['hostname']; - $from_ip = gethostbyname($conf['hostname']); - - $hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user']; - $hosts[$from_host]['db'] = $conf['mysql']['master_database']; - $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password']; - - $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user']; - $hosts[$from_ip]['db'] = $conf['mysql']['master_database']; - $hosts[$from_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 - * host - */ - $query = "SELECT Host, User FROM mysql.user WHERE User like 'ispcsrv%' ORDER BY User, Host"; - $data = $this->dbmaster->queryAllRecords($query); - if($data === false) { - $this->error('Unable to get the user rights: '.$value['db'].' Error: '.$this->dbmaster->errorMessage); - } - foreach ($data as $item){ - $hosts[$item['Host']]['user'] = $item['User']; - $hosts[$item['Host']]['db'] = $conf['mysql']['master_database']; - $hosts[$item['Host']]['pwd'] = ''; // the user already exists, so we need no pwd! - } - } - - if(count($hosts) > 0) { - foreach($hosts as $host => $value) { - /* - * If a pwd exists, this means, we have to add the new user (and his pwd). - * if not, the user already exists and we do not need the pwd - */ - if ($value['pwd'] != ''){ - $query = "CREATE USER ?@? IDENTIFIED BY ?"; - if ($verbose){ - echo "\n\n" . $query ."\n"; - } - $this->dbmaster->query($query, $value['user'], $host, $value['pwd']); // ignore the error - } - - /* - * Try to delete all rights of the user in case that it exists. - * In Case that it will not exist, do nothing (ignore the error!) - */ - $query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM ?@?"; - if ($verbose){ - echo "\n\n" . $query ."\n"; - } - $this->dbmaster->query($query, $value['user'], $host); // ignore the error - - //* Create the ISPConfig database user in the remote database - $query = "GRANT SELECT ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.server', $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 ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.sys_log', $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(`status`, `error`) ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.sys_datalog', $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(`status`) ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.software_update_inst', $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(`updated`) ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.server', $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 (`ssl`, `ssl_letsencrypt`, `ssl_request`, `ssl_cert`, `ssl_action`, `ssl_key`) ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.web_domain', $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 ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.sys_group', $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 (`action_state`, `response`) ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.sys_remoteaction', $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 , DELETE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.monitor_data', $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"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.mail_traffic', $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"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.web_traffic', $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, DELETE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - 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"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.aps_instances_settings', $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, DELETE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.web_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, INSERT, DELETE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - 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"; - } - 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"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.ftp_traffic', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } - - } - - } - - } - - //** writes postfix configuration files - public function process_postfix_config($configfile) { - global $conf; - - $config_dir = $conf['postfix']['config_dir'].'/'; - $full_file_name = $config_dir.$configfile; - //* Backup exiting file - if(is_file($full_file_name)) { - copy($full_file_name, $config_dir.$configfile.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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); - } - - public function configure_jailkit() { - global $conf; - - $cf = $conf['jailkit']; - $config_dir = $cf['config_dir']; - $jk_init = $cf['jk_init']; - $jk_chrootsh = $cf['jk_chrootsh']; - - if (is_dir($config_dir)) { - if(is_file($config_dir.'/'.$jk_init)) copy($config_dir.'/'.$jk_init, $config_dir.'/'.$jk_init.'~'); - if(is_file($config_dir.'/'.$jk_chrootsh.'.master')) copy($config_dir.'/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh.'~'); - - if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_init.'.master')) { - copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_init.'.master', $config_dir.'/'.$jk_init); - } else { - copy('tpl/'.$jk_init.'.master', $config_dir.'/'.$jk_init); - } - if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_chrootsh.'.master')) { - copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh); - } else { - copy('tpl/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh); - } - } - - //* help jailkit fo find its ini files - if(!is_link('/usr/jk_socketd.ini')) exec('ln -s /etc/jailkit/jk_socketd.ini /usr/jk_socketd.ini'); - if(!is_link('/usr/jk_init.ini')) exec('ln -s /etc/jailkit/jk_init.ini /usr/jk_init.ini'); - - } - - public function configure_mailman($status = 'insert') { - global $conf; - - $config_dir = $conf['mailman']['config_dir'].'/'; - $full_file_name = $config_dir.'mm_cfg.py'; - //* Backup exiting file - if(is_file($full_file_name)) { - copy($full_file_name, $config_dir.'mm_cfg.py~'); - } - - // load files - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/mm_cfg.py.master', 'tpl/mm_cfg.py.master'); - $old_file = rf($full_file_name); - - $old_options = array(); - $lines = explode("\n", $old_file); - foreach ($lines as $line) - { - if (trim($line) != '' && substr($line, 0, 1) != '#') - { - @list($key, $value) = @explode("=", $line); - if (isset($value) && $value !== '') - { - $key = rtrim($key); - $old_options[$key] = trim($value); - } - } - } - - $virtual_domains = ''; - if($status == 'update') - { - // create virtual_domains list - $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain"); - - if(is_array($domainAll)) { - foreach($domainAll as $domain) - { - if ($domainAll[0]['domain'] == $domain['domain']) - $virtual_domains .= "'".$domain['domain']."'"; - else - $virtual_domains .= ", '".$domain['domain']."'"; - } - } - } - else - $virtual_domains = "' '"; - - $content = str_replace('{hostname}', $conf['hostname'], $content); - if(!isset($old_options['DEFAULT_SERVER_LANGUAGE']) || $old_options['DEFAULT_SERVER_LANGUAGE'] == '') $old_options['DEFAULT_SERVER_LANGUAGE'] = "'en'"; - $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content); - $content = str_replace('{virtual_domains}', $virtual_domains, $content); - - wf($full_file_name, $content); - - //* Write virtual_to_transport.sh script - $config_dir = $conf['mailman']['config_dir'].'/'; - $full_file_name = $config_dir.'virtual_to_transport.sh'; - - //* Backup exiting virtual_to_transport.sh script - if(is_file($full_file_name)) { - copy($full_file_name, $config_dir.'virtual_to_transport.sh~'); - } - - if(is_dir('/etc/mailman')) { - if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/mailman-virtual_to_transport.sh')) { - copy($conf['ispconfig_install_dir'].'/server/conf-custom/install/mailman-virtual_to_transport.sh', $full_file_name); - } else { - copy('tpl/mailman-virtual_to_transport.sh', $full_file_name); - } - chgrp($full_file_name, $this->mailman_group); - chmod($full_file_name, 0755); - } - - //* Create aliasaes - if($status == 'install') exec('/usr/lib/mailman/bin/genaliases 2>/dev/null'); - - if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); - exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); - } - - public function get_postfix_service($service, $type) { - global $conf; - - exec("postconf -M 2> /dev/null", $out, $ret); - - 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 - if (!isset($out[0])) { //* try Postfix 2.9 - exec ("postconf -M $service.$type 2> /dev/null", $out, $ret); - } - $postfix_service = @($out[0]=='')?false:true; - } else { //* fallback - Postfix < 2.9 - $content = rf($conf['postfix']['config_dir'].'/master.cf'); - $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; - $postfix_service = @(preg_match($regex, $content))?true:false; - } - - return $postfix_service; - } - - public function configure_postfix($options = '') { - global $conf,$autoinstall; - $cf = $conf['postfix']; - $config_dir = $cf['config_dir']; - - if(!is_dir($config_dir)) { - $this->error("The postfix configuration directory '$config_dir' does not exist."); - } - - //* mysql-virtual_domains.cf - $this->process_postfix_config('mysql-virtual_domains.cf'); - - //* mysql-virtual_forwardings.cf - $this->process_postfix_config('mysql-virtual_forwardings.cf'); - - //* mysql-virtual_mailboxes.cf - $this->process_postfix_config('mysql-virtual_mailboxes.cf'); - - //* mysql-virtual_email2email.cf - $this->process_postfix_config('mysql-virtual_email2email.cf'); - - //* mysql-virtual_transports.cf - $this->process_postfix_config('mysql-virtual_transports.cf'); - - //* mysql-virtual_recipient.cf - $this->process_postfix_config('mysql-virtual_recipient.cf'); - - //* mysql-virtual_sender.cf - $this->process_postfix_config('mysql-virtual_sender.cf'); - - //* mysql-virtual_sender_login_maps.cf - $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - - //* mysql-virtual_client.cf - $this->process_postfix_config('mysql-virtual_client.cf'); - - //* mysql-virtual_relaydomains.cf - $this->process_postfix_config('mysql-virtual_relaydomains.cf'); - - //* 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'); - - //* mysql-virtual_policy_greylist.cf - $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); - - //* mysql-virtual_gids.cf.master - $this->process_postfix_config('mysql-virtual_gids.cf'); - - //* mysql-virtual_uids.cf - $this->process_postfix_config('mysql-virtual_uids.cf'); - - //* postfix-dkim - $filename='tag_as_originating.re'; - $full_file_name=$config_dir.'/'.$filename; - if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); - wf($full_file_name, $content); - - $filename='tag_as_foreign.re'; - $full_file_name=$config_dir.'/'.$filename; - if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); - wf($full_file_name, $content); - - //* Changing mode and group of the new created config files. - caselog('chmod u=rw,g=r,o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); - caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed'); - - //* Creating virtual mail user and group - $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname']; - if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'useradd -g '.$cf['vmail_groupname'].' -u '.$cf['vmail_userid'].' '.$cf['vmail_username'].' -d '.$cf['vmail_mailbox_base'].' -m'; - if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* These postconf commands will be executed on installation and update - $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']); - $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); - unset($server_ini_rec); - - //* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removeal after an update - $rbl_list = ''; - if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') { - $rbl_hosts = explode(",", str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list'])); - foreach ($rbl_hosts as $key => $value) { - $rbl_list .= ", reject_rbl_client ". $value; - } - } - unset($rbl_hosts); - - //* If Postgrey is installed, configure it - $greylisting = ''; - 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, - '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], - '{vmail_userid}' => $cf['vmail_userid'], - '{vmail_groupid}' => $cf['vmail_groupid'], - '{rbl_list}' => $rbl_list, - '{greylisting}' => $greylisting, - '{reject_slm}' => $reject_sender_login_mismatch, - '{myhostname}' => $tmp, - ); - - $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_postfix.conf.master', 'tpl/debian_postfix.conf.master'); - $postconf_tpl = strtr($postconf_tpl, $postconf_placeholders); - $postconf_commands = array_filter(explode("\n", $postconf_tpl)); // read and remove empty lines - - //* These postconf commands will be executed on installation only - if($this->is_update == false) { - $postconf_commands = array_merge($postconf_commands, array( - 'myhostname = '.$conf['hostname'], - 'mydestination = '.$conf['hostname'].', localhost, localhost.localdomain', - 'mynetworks = 127.0.0.0/8 [::1]/128' - )); - } - - //* Create the header and body check files - touch($config_dir.'/header_checks'); - touch($config_dir.'/mime_header_checks'); - touch($config_dir.'/nested_header_checks'); - touch($config_dir.'/body_checks'); - - //* Create the mailman files - if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data'); - if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases'); - exec('postalias /var/lib/mailman/data/aliases'); - if(!is_file('/var/lib/mailman/data/virtual-mailman')) touch('/var/lib/mailman/data/virtual-mailman'); - exec('postmap /var/lib/mailman/data/virtual-mailman'); - if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); - exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); - - //* Create auxillary postfix conf files - $configfile = 'helo_access'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - chmod($config_dir.'/'.$configfile.'~', 0400); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $content = strtr($content, $postconf_placeholders); - # todo: look up this server's ip addrs and loop through each - # todo: look up domains hosted on this server and loop through each - wf($config_dir.'/'.$configfile, $content); - - $configfile = 'blacklist_helo'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - chmod($config_dir.'/'.$configfile.'~', 0400); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $content = strtr($content, $postconf_placeholders); - wf($config_dir.'/'.$configfile, $content); - - //* Make a backup copy of the main.cf file - copy($config_dir.'/main.cf', $config_dir.'/main.cf~'); - - //* Executing the postconf commands - foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - caselog($command." &> /dev/null", __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - } - - if(!stristr($options, 'dont-create-certs')) { - //* Create the SSL certificate - if(AUTOINSTALL){ - $command = 'cd '.$config_dir.'; ' - ."openssl req -new -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509"; - } else { - $command = 'cd '.$config_dir.'; ' - .'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:4096 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509'; - } - exec($command); - - $command = 'chmod o= '.$config_dir.'/smtpd.key'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - } - - //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop. - $command = 'chmod 755 /var/run/courier/authdaemon/'; - if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); - - //* Check maildrop service in posfix master.cf - $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 2> /dev/null", $out, $ret); - $change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true; - } else { - $change_maildrop_flags = @(preg_match($regex, $configfile))?false:true; - } - if ($change_maildrop_flags) { - //* Change maildrop service in posfix master.cf - if(is_file($config_dir.'/master.cf')) { - copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); - } - 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); - wf($configfile, $content); - } - - //* Writing the Maildrop mailfilter file - $configfile = 'mailfilter'; - if(is_file($cf['vmail_mailbox_base'].'/.'.$configfile)) { - copy($cf['vmail_mailbox_base'].'/.'.$configfile, $cf['vmail_mailbox_base'].'/.'.$configfile.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $content = str_replace('{dist_postfix_vmail_mailbox_base}', $cf['vmail_mailbox_base'], $content); - wf($cf['vmail_mailbox_base'].'/.'.$configfile, $content); - - //* Create the directory for the custom mailfilters - if(!is_dir($cf['vmail_mailbox_base'].'/mailfilters')) { - $command = 'mkdir '.$cf['vmail_mailbox_base'].'/mailfilters'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - //* Chmod and chown the .mailfilter file - $command = 'chown '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base'].'/.mailfilter'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'chmod 600 '.$cf['vmail_mailbox_base'].'/.mailfilter'; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - } - - public function configure_saslauthd() { - global $conf; - - //* Get saslsauthd version - exec('saslauthd -v 2>&1', $out); - $parts = explode(' ', $out[0]); - $saslversion = $parts[1]; - unset($parts); - unset($out); - - if(version_compare($saslversion , '2.1.23', '<=')) { - //* Configfile for saslauthd versions up to 2.1.23 - $configfile = 'sasl_smtpd.conf'; - } else { - //* Configfile for saslauthd versions 2.1.24 and newer - $configfile = 'sasl_smtpd2.conf'; - } - - if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf')) copy($conf['postfix']['config_dir'].'/sasl/smtpd.conf', $conf['postfix']['config_dir'].'/sasl/smtpd.conf~'); - if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf~')) chmod($conf['postfix']['config_dir'].'/sasl/smtpd.conf~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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); - wf($conf['postfix']['config_dir'].'/sasl/smtpd.conf', $content); - - // TODO: Chmod and chown on the config file - - - // Recursively create the spool directory - if(!@is_dir('/var/spool/postfix/var/run/saslauthd')) mkdir('/var/spool/postfix/var/run/saslauthd', 0755, true); - - // Edit the file /etc/default/saslauthd - $configfile = $conf['saslauthd']['config']; - if(is_file($configfile)) copy($configfile, $configfile.'~'); - if(is_file($configfile.'~')) chmod($configfile.'~', 0400); - $content = rf($configfile); - $content = str_replace('START=no', 'START=yes', $content); - // Debian - $content = str_replace('OPTIONS="-c"', 'OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r"', $content); - // Ubuntu - $content = str_replace('OPTIONS="-c -m /var/run/saslauthd"', 'OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"', $content); - wf($configfile, $content); - - // Edit the file /etc/init.d/saslauthd - $configfile = $conf['init_scripts'].'/'.$conf['saslauthd']['init_script']; - $content = rf($configfile); - $content = str_replace('PIDFILE=$RUN_DIR/saslauthd.pid', 'PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"', $content); - wf($configfile, $content); - - // add the postfix user to the sasl group (at least necessary for Ubuntu 8.04 and most likely Debian Lenny as well. - exec('adduser postfix sasl'); - - - } - - public function configure_pam() { - global $conf; - $pam = $conf['pam']; - //* configure pam for SMTP authentication agains the ispconfig database - $configfile = 'pamd_smtp'; - if(is_file($pam.'/smtp')) copy($pam.'/smtp', $pam.'/smtp~'); - if(is_file($pam.'/smtp~')) chmod($pam.'/smtp~', 0400); - - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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); - wf($pam.'/smtp', $content); - // On some OSes smtp is world readable which allows for reading database information. Removing world readable rights should have no effect. - if(is_file($pam.'/smtp')) exec("chmod o= $pam/smtp"); - chmod($pam.'/smtp', 0660); - chown($pam.'/smtp', 'daemon'); - chgrp($pam.'/smtp', 'daemon'); - - } - - public function configure_courier() { - global $conf; - $config_dir = $conf['courier']['config_dir']; - //* authmysqlrc - $configfile = 'authmysqlrc'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - } - chmod($config_dir.'/'.$configfile.'~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - wf($config_dir.'/'.$configfile, $content); - - chmod($config_dir.'/'.$configfile, 0660); - chown($config_dir.'/'.$configfile, 'daemon'); - chgrp($config_dir.'/'.$configfile, 'daemon'); - - //* authdaemonrc - $configfile = $config_dir.'/authdaemonrc'; - if(is_file($configfile)) { - copy($configfile, $configfile.'~'); - } - if(is_file($configfile.'~')) { - chmod($configfile.'~', 0400); - } - $content = rf($configfile); - $content = str_replace('authmodulelist="authpam"', 'authmodulelist="authmysql"', $content); - wf($configfile, $content); - } - - 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; - } - } - - $config_dir = $conf['postfix']['config_dir']; - - //* Configure master.cf and add a line for deliver - if(!$this->get_postfix_service('dovecot', 'unix')) { - //* backup - if(is_file($config_dir.'/master.cf')){ - copy($config_dir.'/master.cf', $config_dir.'/master.cf~2'); - } - if(is_file($config_dir.'/master.cf~')){ - chmod($config_dir.'/master.cf~2', 0400); - } - //* 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"; - af($config_dir.'/master.cf', $deliver_content); - unset($content); - unset($deliver_content); - } - - //* Reconfigure postfix to use dovecot authentication - // Adding the amavisd commands to the postfix configuration - $postconf_commands = array ( - 'dovecot_destination_recipient_limit = 1', - 'virtual_transport = '.$virtual_transport, - 'smtpd_sasl_type = dovecot', - 'smtpd_sasl_path = private/auth' - ); - - // Make a backup copy of the main.cf file - copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~3'); - - // Executing the postconf commands - foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - //* backup dovecot.conf - $config_dir = $conf['dovecot']['config_dir']; - $configfile = 'dovecot.conf'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - } - - //* Get the dovecot version - exec('dovecot --version', $tmp); - $dovecot_version = $tmp[0]; - unset($tmp); - - //* Copy dovecot configuration file - 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 - 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 { - copy('tpl/debian_dovecot2.conf.master', $config_dir.'/'.$configfile); - } - 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); - if(version_compare($dovecot_version, 2.1, '<')) { - 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); - } - } - - //* dovecot-lmtpd - if($configure_lmtp) { - replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); - } - - //* dovecot-sql.conf - $configfile = 'dovecot-sql.conf'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - } - if(is_file($config_dir.'/'.$configfile.'~')) chmod($config_dir.'/'.$configfile.'~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/debian_dovecot-sql.conf.master', 'tpl/debian_dovecot-sql.conf.master'); - $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_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - $content = str_replace('{server_id}', $conf['server_id'], $content); - # enable iterate_query for dovecot2 - if(version_compare($dovecot_version,2, '>=')) { - $content = str_replace('# iterate_query', 'iterate_query', $content); - } - wf($config_dir.'/'.$configfile, $content); - - 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"); - - } - - public function configure_amavis() { - global $conf; - - // amavisd user config file - $configfile = 'amavisd_user_config'; - if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) copy($conf['amavis']['config_dir'].'/conf.d/50-user', $conf['amavis']['config_dir'].'/50-user~'); - if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user~')) chmod($conf['amavis']['config_dir'].'/50-user~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_port}', $conf['mysql']['port'], $content); - $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); - wf($conf['amavis']['config_dir'].'/conf.d/50-user', $content); - chmod($conf['amavis']['config_dir'].'/conf.d/50-user', 0640); - - // TODO: chmod and chown on the config file - - - // Adding the amavisd commands to the postfix configuration - // Add array for no error in foreach and maybe future options - $postconf_commands = array (); - - // Check for amavisd -> pure webserver with postfix for mailing without antispam - if ($conf['amavis']['installed']) { - $postconf_commands[] = 'content_filter = amavis:[127.0.0.1]:10024'; - $postconf_commands[] = 'receive_override_options = no_address_mappings'; - } - - // Make a backup copy of the main.cf file - copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~2'); - - // Executing the postconf commands - foreach($postconf_commands as $cmd) { - $command = "postconf -e '$cmd'"; - caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - $config_dir = $conf['postfix']['config_dir']; - - // Adding amavis-services to the master.cf file if the service does not already exists - $add_amavis = !$this->get_postfix_service('amavis','unix'); - $add_amavis_10025 = !$this->get_postfix_service('127.0.0.1:10025','inet'); - $add_amavis_10027 = !$this->get_postfix_service('127.0.0.1:10027','inet'); - //*TODO: check templates against existing postfix-services to make sure we use the template - - if ($add_amavis || $add_amavis_10025 || $add_amavis_10027) { - //* backup master.cf - if(is_file($config_dir.'/master.cf')) copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); - // adjust amavis-config - if($add_amavis) { - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis.master', 'tpl/master_cf_amavis.master'); - af($config_dir.'/master.cf', $content); - unset($content); - } - if ($add_amavis_10025) { - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis10025.master', 'tpl/master_cf_amavis10025.master'); - af($config_dir.'/master.cf', $content); - unset($content); - } - if ($add_amavis_10027) { - $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 - exec('adduser clamav amavis'); - // get shell-group for amavis - $amavis_group=exec('grep -o "^amavis:\|^vscan:" /etc/group'); - if(!empty($amavis_group)) { - $amavis_group=rtrim($amavis_group, ":"); - } - // get shell-user for amavis - $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd'); - if(!empty($amavis_user)) { - $amavis_user=rtrim($amavis_user, ":"); - } - - // Create the director for DKIM-Keys - if(!is_dir('/var/lib/amavis')) mkdir('/var/lib/amavis', 0750, true); - if(!empty($amavis_user)) exec('chown '.$amavis_user.' /var/lib/amavis'); - if(!empty($amavis_group)) exec('chgrp '.$amavis_group.' /var/lib/amavis'); - if(!is_dir('/var/lib/amavis/dkim')) mkdir('/var/lib/amavis/dkim', 0750); - if(!empty($amavis_user)) exec('chown -R '.$amavis_user.' /var/lib/amavis/dkim'); - if(!empty($amavis_group)) exec('chgrp -R '.$amavis_group.' /var/lib/amavis/dkim'); - - } - - public function configure_spamassassin() { - global $conf; - - //* Enable spamasasssin on debian and ubuntu - $configfile = '/etc/default/spamassassin'; - if(is_file($configfile)) { - copy($configfile, $configfile.'~'); - } - $content = rf($configfile); - $content = str_replace('ENABLED=0', 'ENABLED=1', $content); - wf($configfile, $content); - } - - public function configure_getmail() { - global $conf; - - $config_dir = $conf['getmail']['config_dir']; - - if(!@is_dir($config_dir)) mkdir(escapeshellcmd($config_dir), 0700, true); - - $command = 'useradd -d '.$config_dir.' getmail'; - if(!is_user('getmail')) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = "chown -R getmail $config_dir"; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = "chmod -R 700 $config_dir"; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - - public function configure_pureftpd() { - global $conf; - - $config_dir = $conf['pureftpd']['config_dir']; - - //* configure pure-ftpd for MySQL authentication against the ispconfig database - $configfile = 'db/mysql.conf'; - if(is_file($config_dir.'/'.$configfile)) { - copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); - } - if(is_file($config_dir.'/'.$configfile.'~')) { - chmod($config_dir.'/'.$configfile.'~', 0400); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/pureftpd_mysql.conf.master', 'tpl/pureftpd_mysql.conf.master'); - $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($config_dir.'/'.$configfile, $content); - chmod($config_dir.'/'.$configfile, 0600); - chown($config_dir.'/'.$configfile, 'root'); - chgrp($config_dir.'/'.$configfile, 'root'); - // **enable chrooting - //exec('mkdir -p '.$config_dir.'/conf/ChrootEveryone'); - exec('echo "yes" > '.$config_dir.'/conf/ChrootEveryone'); - exec('echo "yes" > '.$config_dir.'/conf/BrokenClientsCompatibility'); - exec('echo "yes" > '.$config_dir.'/conf/DisplayDotFiles'); - - if(is_file('/etc/default/pure-ftpd-common')) { - replaceLine('/etc/default/pure-ftpd-common', 'STANDALONE_OR_INETD=inetd', 'STANDALONE_OR_INETD=standalone', 1, 0); - replaceLine('/etc/default/pure-ftpd-common', 'VIRTUALCHROOT=false', 'VIRTUALCHROOT=true', 1, 0); - } - - if(is_file('/etc/inetd.conf')) { - replaceLine('/etc/inetd.conf', '/usr/sbin/pure-ftpd-wrapper', '#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper', 0, 0); - exec($this->getinitcommand('openbsd-inetd', 'restart')); - //if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart'); - } - - if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec('echo "yes" > /etc/pure-ftpd/conf/DontResolve'); - } - - public function configure_mydns() { - global $conf; - - // configure pam for SMTP authentication agains the ispconfig database - $configfile = 'mydns.conf'; - if(is_file($conf['mydns']['config_dir'].'/'.$configfile)) copy($conf['mydns']['config_dir'].'/'.$configfile, $conf['mydns']['config_dir'].'/'.$configfile.'~'); - if(is_file($conf['mydns']['config_dir'].'/'.$configfile.'~')) chmod($conf['mydns']['config_dir'].'/'.$configfile.'~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - $content = str_replace('{server_id}', $conf['server_id'], $content); - wf($conf['mydns']['config_dir'].'/'.$configfile, $content); - chmod($conf['mydns']['config_dir'].'/'.$configfile, 0600); - chown($conf['mydns']['config_dir'].'/'.$configfile, 'root'); - chgrp($conf['mydns']['config_dir'].'/'.$configfile, 'root'); - - } - - public function configure_powerdns() { - global $conf; - - //* Create the database - if(!$this->db->query('CREATE DATABASE IF NOT EXISTS ?? DEFAULT CHARACTER SET ?', $conf['powerdns']['database'], $conf['mysql']['charset'])) { - $this->error('Unable to create MySQL database: '.$conf['powerdns']['database'].'.'); - } - - //* Create the ISPConfig database user in the local database - $query = "GRANT ALL ON ?? TO ?@'localhost'"; - if(!$this->db->query($query, $conf['powerdns']['database'] . '.*', $conf['mysql']['ispconfig_user'])) { - $this->error('Unable to create user for powerdns database Error: '.$this->db->errorMessage); - } - - //* load the powerdns databse dump - if($conf['mysql']['admin_password'] == '') { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", - __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); - } else { - caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null", - __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql'); - } - - //* Create the powerdns config file - $configfile = 'pdns.local'; - if(is_file($conf['powerdns']['config_dir'].'/'.$configfile)) copy($conf['powerdns']['config_dir'].'/'.$configfile, $conf['powerdns']['config_dir'].'/'.$configfile.'~'); - if(is_file($conf['powerdns']['config_dir'].'/'.$configfile.'~')) chmod($conf['powerdns']['config_dir'].'/'.$configfile.'~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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('{powerdns_database}', $conf['powerdns']['database'], $content); - $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - wf($conf['powerdns']['config_dir'].'/'.$configfile, $content); - chmod($conf['powerdns']['config_dir'].'/'.$configfile, 0600); - chown($conf['powerdns']['config_dir'].'/'.$configfile, 'root'); - chgrp($conf['powerdns']['config_dir'].'/'.$configfile, 'root'); - - - } - - //** 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.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_ispconfig_database}', $conf['mysql']['database'], $content); - $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); - $content = str_replace('{ispconfig_install_dir}', $conf['ispconfig_install_dir'], $content); - $content = str_replace('{dnssec_conffile}', $conf['ispconfig_install_dir'].'/server/scripts/dnssec-config.sh', $content); - wf($full_file_name, $content); - } - - public function configure_bind() { - global $conf; - - //* Check if the zonefile directory has a slash at the end - $content=$conf['bind']['bind_zonefiles_dir']; - if(substr($content, -1, 1) != '/') { - $content .= '/'; - } - - //* Create the slave subdirectory - $content .= 'slave'; - if(!@is_dir($content)) mkdir($content, 02770, true); - - //* Chown the slave subdirectory to $conf['bind']['bind_user'] - 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 = '') { - global $conf; - - if($conf['xmpp']['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()); - unset($tpl); - - $tpl = new tpl('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/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__); - // 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('metronome_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['xmpp']['init_script'], 'restart')); - } - - - public function configure_apache() { - global $conf; - - if($conf['apache']['installed'] == false) return; - //* Create the logging directory for the vhost logfiles - if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true); - - if(is_file('/etc/suphp/suphp.conf')) { - replaceLine('/etc/suphp/suphp.conf', 'php="php:/usr/bin', 'x-httpd-suphp="php:/usr/bin/php-cgi"', 0); - //replaceLine('/etc/suphp/suphp.conf','docroot=','docroot=/var/clients',0); - replaceLine('/etc/suphp/suphp.conf', 'umask=00', 'umask=0022', 0); - } - - if(is_file('/etc/apache2/sites-enabled/000-default')) { - replaceLine('/etc/apache2/sites-available/000-default', 'NameVirtualHost *', 'NameVirtualHost *:80', 1, 0); - replaceLine('/etc/apache2/sites-available/000-default', '<VirtualHost *>', '<VirtualHost *:80>', 1, 0); - } - - 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); - } - - if(is_file('/etc/apache2/apache.conf')) { - if(hasLine('/etc/apache2/apache.conf', 'Include sites-enabled/', 1) == false) { - if(hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.conf', 1) == false && hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/', 1) == false) { - replaceLine('/etc/apache2/apache.conf', 'Include sites-enabled/', 'Include sites-enabled/', 1, 1); - } elseif(hasLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.vhost', 1) == false) { - replaceLine('/etc/apache2/apache.conf', 'IncludeOptional sites-enabled/*.vhost', 'IncludeOptional sites-enabled/', 1, 1); - } - } - } - - 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) { - replaceLine('/etc/apache2/apache2.conf', 'Include sites-enabled/*.conf', 'Include sites-enabled/', 1, 1); - } elseif(hasLine('/etc/apache2/apache2.conf', 'IncludeOptional sites-enabled/*.conf', 1) == true) { - replaceLine('/etc/apache2/apache2.conf', 'IncludeOptional sites-enabled/*.conf', 'IncludeOptional sites-enabled/', 1, 1); - } - } - } - - //* Copy the ISPConfig configuration include - $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; - $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - - $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(); - - if(is_array($records) && count($records) > 0) { - foreach($records as $rec) { - if($rec['ip_type'] == 'IPv6') { - $ip_address = '['.$rec['ip_address'].']'; - } else { - $ip_address = $rec['ip_address']; - } - $ports = explode(',', $rec['virtualhost_port']); - if(is_array($ports)) { - foreach($ports as $port) { - $port = intval($port); - if($port > 0 && $port < 65536 && $ip_address != '') { - $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); - } - } - } - } - } - - if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); - - wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); - unset($tpl); - - if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.conf')) { - symlink($vhost_conf_dir.'/ispconfig.conf', $vhost_conf_enabled_dir.'/000-ispconfig.conf'); - } - - //* make sure that webalizer finds its config file when it is directly in /etc - if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) { - mkdir('/etc/webalizer'); - symlink('/etc/webalizer.conf', '/etc/webalizer/webalizer.conf'); - } - - if(is_file('/etc/webalizer/webalizer.conf')) { - // Change webalizer mode to incremental - replaceLine('/etc/webalizer/webalizer.conf', '#IncrementalName', 'IncrementalName webalizer.current', 0, 0); - replaceLine('/etc/webalizer/webalizer.conf', '#Incremental', 'Incremental yes', 0, 0); - replaceLine('/etc/webalizer/webalizer.conf', '#HistoryName', 'HistoryName webalizer.hist', 0, 0); - } - - // Check the awsatst script - if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools'); - if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl', '/usr/share/awstats/tools/awstats_buildstaticpages.pl'); - if(file_exists('/etc/awstats/awstats.conf.local')) replaceLine('/etc/awstats/awstats.conf.local', 'LogFormat=4', 'LogFormat=1', 0, 1); - - //* 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"); - - } - - public function configure_nginx(){ - global $conf; - - if($conf['nginx']['installed'] == false) return; - //* Create the logging directory for the vhost logfiles - if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true); - - //* make sure that webalizer finds its config file when it is directly in /etc - if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) { - mkdir('/etc/webalizer'); - symlink('/etc/webalizer.conf', '/etc/webalizer/webalizer.conf'); - } - - if(is_file('/etc/webalizer/webalizer.conf')) { - // Change webalizer mode to incremental - replaceLine('/etc/webalizer/webalizer.conf', '#IncrementalName', 'IncrementalName webalizer.current', 0, 0); - replaceLine('/etc/webalizer/webalizer.conf', '#Incremental', 'Incremental yes', 0, 0); - replaceLine('/etc/webalizer/webalizer.conf', '#HistoryName', 'HistoryName webalizer.hist', 0, 0); - } - - // Check the awsatst script - if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools'); - if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl', '/usr/share/awstats/tools/awstats_buildstaticpages.pl'); - if(file_exists('/etc/awstats/awstats.conf.local')) replaceLine('/etc/awstats/awstats.conf.local', 'LogFormat=4', 'LogFormat=1', 0, 1); - - //* 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() { - // To Do - } - - public function configure_squid() - { - global $conf; - $row = $this->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $conf["server_id"]); - $ip_address = gethostbyname($row["server_name"]); - $server_name = $row["server_name"]; - - $configfile = 'squid.conf'; - if(is_file($conf["squid"]["config_dir"].'/'.$configfile)) copy($conf["squid"]["config_dir"].'/'.$configfile, $conf["squid"]["config_dir"].'/'.$configfile.'~'); - if(is_file($conf["squid"]["config_dir"].'/'.$configfile.'~')) exec('chmod 400 '.$conf["squid"]["config_dir"].'/'.$configfile.'~'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', "tpl/".$configfile.".master"); - $content = str_replace('{server_name}', $server_name, $content); - $content = str_replace('{ip_address}', $ip_address, $content); - $content = str_replace('{config_dir}', $conf['squid']['config_dir'], $content); - wf($conf["squid"]["config_dir"].'/'.$configfile, $content); - exec('chmod 600 '.$conf["squid"]["config_dir"].'/'.$configfile); - exec('chown root:root '.$conf["squid"]["config_dir"].'/'.$configfile); - } - - public function configure_ufw_firewall() - { - if($this->is_update == false) { - $configfile = 'ufw.conf'; - if(is_file('/etc/ufw/ufw.conf')) copy('/etc/ufw/ufw.conf', '/etc/ufw/ufw.conf~'); - $content = rf("tpl/".$configfile.".master"); - wf('/etc/ufw/ufw.conf', $content); - exec('chmod 600 /etc/ufw/ufw.conf'); - exec('chown root:root /etc/ufw/ufw.conf'); - } - } - - public function configure_bastille_firewall() { - global $conf; - - $dist_init_scripts = $conf['init_scripts']; - - if(is_dir('/etc/Bastille.backup')) caselog('rm -rf /etc/Bastille.backup', __FILE__, __LINE__); - if(is_dir('/etc/Bastille')) caselog('mv -f /etc/Bastille /etc/Bastille.backup', __FILE__, __LINE__); - @mkdir('/etc/Bastille', 0700); - if(is_dir('/etc/Bastille.backup/firewall.d')) caselog('cp -pfr /etc/Bastille.backup/firewall.d /etc/Bastille/', __FILE__, __LINE__); - if(is_file($conf['ispconfig_install_dir'].'/server/conf-custom/install/bastille-firewall.cfg.master')) { - caselog('cp -f ' . $conf['ispconfig_install_dir'].'/server/conf-custom/install/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); - } else { - caselog('cp -f tpl/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); - } - caselog('chmod 644 /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__); - $content = rf('/etc/Bastille/bastille-firewall.cfg'); - $content = str_replace('{DNS_SERVERS}', '', $content); - - $tcp_public_services = ''; - $udp_public_services = ''; - - $row = $this->db->queryOneRecord('SELECT * FROM ?? WHERE server_id = ?', $conf["mysql"]["database"] . '.firewall', $conf['server_id']); - - if(trim($row['tcp_port']) != '' || trim($row['udp_port']) != '') { - $tcp_public_services = trim(str_replace(',', ' ', $row['tcp_port'])); - $udp_public_services = trim(str_replace(',', ' ', $row['udp_port'])); - } else { - $tcp_public_services = '21 22 25 53 80 110 143 443 3306 8080 10000'; - $udp_public_services = '53'; - } - - if(!stristr($tcp_public_services, $conf['apache']['vhost_port'])) { - $tcp_public_services .= ' '.intval($conf['apache']['vhost_port']); - if($row['tcp_port'] != '') $this->db->query("UPDATE firewall SET tcp_port = tcp_port + ? WHERE server_id = ?", ',' . intval($conf['apache']['vhost_port']), $conf['server_id']); - } - - $content = str_replace('{TCP_PUBLIC_SERVICES}', $tcp_public_services, $content); - $content = str_replace('{UDP_PUBLIC_SERVICES}', $udp_public_services, $content); - - wf('/etc/Bastille/bastille-firewall.cfg', $content); - - if(is_file($dist_init_scripts.'/bastille-firewall')) caselog('mv -f '.$dist_init_scripts.'/bastille-firewall '.$dist_init_scripts.'/bastille-firewall.backup', __FILE__, __LINE__); - caselog('cp -f apps/bastille-firewall '.$dist_init_scripts, __FILE__, __LINE__); - caselog('chmod 700 '.$dist_init_scripts.'/bastille-firewall', __FILE__, __LINE__); - - if(is_file('/sbin/bastille-ipchains')) caselog('mv -f /sbin/bastille-ipchains /sbin/bastille-ipchains.backup', __FILE__, __LINE__); - caselog('cp -f apps/bastille-ipchains /sbin', __FILE__, __LINE__); - caselog('chmod 700 /sbin/bastille-ipchains', __FILE__, __LINE__); - - if(is_file('/sbin/bastille-netfilter')) caselog('mv -f /sbin/bastille-netfilter /sbin/bastille-netfilter.backup', __FILE__, __LINE__); - caselog('cp -f apps/bastille-netfilter /sbin', __FILE__, __LINE__); - caselog('chmod 700 /sbin/bastille-netfilter', __FILE__, __LINE__); - - if(!@is_dir('/var/lock/subsys')) caselog('mkdir /var/lock/subsys', __FILE__, __LINE__); - - exec('which ipchains &> /dev/null', $ipchains_location, $ret_val); - if(!is_file('/sbin/ipchains') && !is_link('/sbin/ipchains') && $ret_val == 0) phpcaselog(@symlink(shell_exec('which ipchains'), '/sbin/ipchains'), 'create symlink', __FILE__, __LINE__); - unset($ipchains_location); - exec('which iptables &> /dev/null', $iptables_location, $ret_val); - if(!is_file('/sbin/iptables') && !is_link('/sbin/iptables') && $ret_val == 0) phpcaselog(@symlink(trim(shell_exec('which iptables')), '/sbin/iptables'), 'create symlink', __FILE__, __LINE__); - unset($iptables_location); - - } - - public function configure_vlogger() { - global $conf; - - //** Configure vlogger to use traffic logging to mysql (master) db - $configfile = 'vlogger-dbi.conf'; - if(is_file($conf['vlogger']['config_dir'].'/'.$configfile)) copy($conf['vlogger']['config_dir'].'/'.$configfile, $conf['vlogger']['config_dir'].'/'.$configfile.'~'); - if(is_file($conf['vlogger']['config_dir'].'/'.$configfile.'~')) chmod($conf['vlogger']['config_dir'].'/'.$configfile.'~', 0400); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - if($conf['mysql']['master_slave_setup'] == 'y') { - $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); - $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); - $content = str_replace('{mysql_server_database}', $conf['mysql']['master_database'], $content); - $content = str_replace('{mysql_server_ip}', $conf['mysql']['master_host'], $content); - } else { - $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); - } - wf($conf['vlogger']['config_dir'].'/'.$configfile, $content); - chmod($conf['vlogger']['config_dir'].'/'.$configfile, 0600); - chown($conf['vlogger']['config_dir'].'/'.$configfile, 'root'); - chgrp($conf['vlogger']['config_dir'].'/'.$configfile, 'root'); - - } - - public function configure_apps_vhost() { - global $conf; - - //* Create the ispconfig apps vhost user and group - if($conf['apache']['installed'] == true){ - $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']); - $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']); - $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps'); - - $command = 'groupadd '.$apps_vhost_user; - if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group; - if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - - //$command = 'adduser '.$conf['apache']['user'].' '.$apps_vhost_group; - $command = 'usermod -a -G '.$apps_vhost_group.' '.$conf['apache']['user']; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - if(!@is_dir($install_dir)){ - mkdir($install_dir, 0755, true); - } else { - chmod($install_dir, 0755); - } - chown($install_dir, $apps_vhost_user); - chgrp($install_dir, $apps_vhost_group); - - //* Copy the apps vhost file - $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(); - } - - // Dont just copy over the virtualhost template but add some custom settings - $tpl = new tpl('apache_apps.vhost.master'); - $tpl->setVar('apps_vhost_ip',$conf['web']['apps_vhost_ip']); - $tpl->setVar('apps_vhost_port',$conf['web']['apps_vhost_port']); - $tpl->setVar('apps_vhost_dir',$conf['web']['website_basedir'].'/apps'); - $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 - if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { - $tpl->setVar('vhost_port_listen','#'); - } else { - $tpl->setVar('vhost_port_listen',''); - } - - wf($vhost_conf_dir.'/apps.vhost', $tpl->grab()); - unset($tpl); - - //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); - //* and create the symlink - if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost'); - if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost') && @is_file($vhost_conf_dir.'/apps.vhost')) { - @symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); - } - - if(!is_file($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter')) { - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_apps_fcgi_starter.master', 'tpl/apache_apps_fcgi_starter.master'); - $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); - $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); - mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true); - //copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); - wf($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', $content); - exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); - exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps'); - - } - } - if($conf['nginx']['installed'] == true){ - $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']); - $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']); - $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps'); - - $command = 'groupadd '.$apps_vhost_user; - if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group; - if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - - //$command = 'adduser '.$conf['nginx']['user'].' '.$apps_vhost_group; - $command = 'usermod -a -G '.$apps_vhost_group.' '.$conf['nginx']['user']; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - if(!@is_dir($install_dir)){ - mkdir($install_dir, 0755, true); - } else { - chmod($install_dir, 0755); - } - chown($install_dir, $apps_vhost_user); - chgrp($install_dir, $apps_vhost_group); - - //* Copy the apps vhost file - $vhost_conf_dir = $conf['nginx']['vhost_conf_dir']; - $vhost_conf_enabled_dir = $conf['nginx']['vhost_conf_enabled_dir']; - $apps_vhost_servername = ($conf['web']['apps_vhost_servername'] == '')?'_':$conf['web']['apps_vhost_servername']; - - // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/nginx_apps.vhost.master', 'tpl/nginx_apps.vhost.master'); - - if($conf['web']['apps_vhost_ip'] == '_default_'){ - $apps_vhost_ip = ''; - } else { - $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; - } - - $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); - if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); - $fpm_socket = $socket_dir.'apps.sock'; - $cgi_socket = escapeshellcmd($conf['nginx']['cgi_socket']); - - $content = str_replace('{apps_vhost_ip}', $apps_vhost_ip, $content); - $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content); - $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content); - $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); - //$content = str_replace('{fpm_port}', ($conf['nginx']['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') - || 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 { - $use_tcp = ''; - $use_socket = '#'; - } - $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}', '', $content); - $content = str_replace('{ssl_comment}', '#', $content); - - // Fix socket path on PHP 7 systems - if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); - if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); - if(file_exists('/var/run/php/php7.2-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content); - - wf($vhost_conf_dir.'/apps.vhost', $content); - - // PHP-FPM - // Dont just copy over the php-fpm pool template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apps_php_fpm_pool.conf.master', 'tpl/apps_php_fpm_pool.conf.master'); - $content = str_replace('{fpm_pool}', 'apps', $content); - //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); - $content = str_replace('{fpm_socket}', $fpm_socket, $content); - $content = str_replace('{fpm_user}', $apps_vhost_user, $content); - $content = str_replace('{fpm_group}', $apps_vhost_group, $content); - wf($conf['nginx']['php_fpm_pool_dir'].'/apps.conf', $content); - - //copy('tpl/nginx_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); - //* and create the symlink - if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost'); - if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) { - symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); - } - - } - } - - public function make_ispconfig_ssl_cert() { - global $conf,$autoinstall; - - $install_dir = $conf['ispconfig_install_dir']; - - $ssl_crt_file = $install_dir.'/interface/ssl/ispserver.crt'; - $ssl_csr_file = $install_dir.'/interface/ssl/ispserver.csr'; - $ssl_key_file = $install_dir.'/interface/ssl/ispserver.key'; - - if(!@is_dir($install_dir.'/interface/ssl')) mkdir($install_dir.'/interface/ssl', 0755, true); - - $ssl_pw = substr(md5(mt_rand()), 0, 6); - exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096"); - if(AUTOINSTALL){ - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -subj '/C=".escapeshellcmd($autoinstall['ssl_cert_country'])."/ST=".escapeshellcmd($autoinstall['ssl_cert_state'])."/L=".escapeshellcmd($autoinstall['ssl_cert_locality'])."/O=".escapeshellcmd($autoinstall['ssl_cert_organisation'])."/OU=".escapeshellcmd($autoinstall['ssl_cert_organisation_unit'])."/CN=".escapeshellcmd($autoinstall['ssl_cert_common_name'])."' -key $ssl_key_file -out $ssl_csr_file"); - } else { - exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file"); - } - exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650"); - 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'); - - } - - public function install_ispconfig() { - global $conf; - - $install_dir = $conf['ispconfig_install_dir']; - - //* Create the ISPConfig installation directory - if(!@is_dir($install_dir)) { - $command = "mkdir $install_dir"; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - //* Create a ISPConfig user and group - $command = 'groupadd ispconfig'; - if(!is_group('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - $command = 'useradd -g ispconfig -d '.$install_dir.' ispconfig'; - if(!is_user('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* copy the ISPConfig interface part - $command = 'cp -rf ../interface '.$install_dir; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* 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~')); - $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); - if(is_array($security_settings_new) && is_array($security_settings_old)) { - foreach($security_settings_new as $section => $sval) { - if(is_array($sval)) { - foreach($sval as $key => $val) { - if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { - $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; - } - } - } - } - file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); - } - } - - //* Create a symlink, so ISPConfig is accessible via web - // Replaced by a separate vhost definition for port 8080 - // $command = "ln -s $install_dir/interface/web/ /var/www/ispconfig"; - // caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* Create the config file for ISPConfig interface - $configfile = 'config.inc.php'; - if(is_file($install_dir.'/interface/lib/'.$configfile)) { - copy($install_dir.'/interface/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - - $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); - $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); - $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content); - $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content); - $content = str_replace('{mysql_master_server_port}', $conf['mysql']['master_port'], $content); - - $content = str_replace('{server_id}', $conf['server_id'], $content); - $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content); - $content = str_replace('{language}', $conf['language'], $content); - $content = str_replace('{timezone}', $conf['timezone'], $content); - $content = str_replace('{theme}', $conf['theme'], $content); - $content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content); - - wf($install_dir.'/interface/lib/'.$configfile, $content); - - //* Create the config file for ISPConfig server - $configfile = 'config.inc.php'; - if(is_file($install_dir.'/server/lib/'.$configfile)) { - copy($install_dir.'/server/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~'); - } - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - $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_host}', $conf['mysql']['host'], $content); - $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); - - $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content); - $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content); - $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content); - $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content); - $content = str_replace('{mysql_master_server_port}', $conf['mysql']['master_port'], $content); - - $content = str_replace('{server_id}', $conf['server_id'], $content); - $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content); - $content = str_replace('{language}', $conf['language'], $content); - $content = str_replace('{timezone}', $conf['timezone'], $content); - $content = str_replace('{theme}', $conf['theme'], $content); - $content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content); - - wf($install_dir.'/server/lib/'.$configfile, $content); - - //* Create the config file for remote-actions (but only, if it does not exist, because - // the value is a autoinc-value and so changed by the remoteaction_core_module - if (!file_exists($install_dir.'/server/lib/remote_action.inc.php')) { - $content = '<?php' . "\n" . '$maxid_remote_action = 0;' . "\n" . '?>'; - wf($install_dir.'/server/lib/remote_action.inc.php', $content); - } - - //* Enable the server modules and plugins. - // TODO: Implement a selector which modules and plugins shall be enabled. - $dir = $install_dir.'/server/mods-available/'; - if (is_dir($dir)) { - if ($dh = opendir($dir)) { - while (($file = readdir($dh)) !== false) { - if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { - include_once $install_dir.'/server/mods-available/'.$file; - $module_name = substr($file, 0, -8); - $tmp = new $module_name; - if($tmp->onInstall()) { - if(!@is_link($install_dir.'/server/mods-enabled/'.$file)) { - @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-enabled/'.$file); - // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-enabled/'.$file); - } - if (strpos($file, '_core_module') !== false) { - if(!@is_link($install_dir.'/server/mods-core/'.$file)) { - @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-core/'.$file); - // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-core/'.$file); - } - } - } - unset($tmp); - } - } - closedir($dh); - } - } - - $dir = $install_dir.'/server/plugins-available/'; - if (is_dir($dir)) { - if ($dh = opendir($dir)) { - while (($file = readdir($dh)) !== false) { - if($conf['apache']['installed'] == true && $file == 'nginx_plugin.inc.php') continue; - if($conf['nginx']['installed'] == true && $file == 'apache2_plugin.inc.php') continue; - if($file != '.' && $file != '..' && substr($file, -8, 8) == '.inc.php') { - include_once $install_dir.'/server/plugins-available/'.$file; - $plugin_name = substr($file, 0, -8); - $tmp = new $plugin_name; - if(method_exists($tmp, 'onInstall') && $tmp->onInstall()) { - if(!@is_link($install_dir.'/server/plugins-enabled/'.$file)) { - @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-enabled/'.$file); - //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-enabled/'.$file); - } - if (strpos($file, '_core_plugin') !== false) { - if(!@is_link($install_dir.'/server/plugins-core/'.$file)) { - @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-core/'.$file); - //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-core/'.$file); - } - } - } - unset($tmp); - } - } - closedir($dh); - } - } - - // Update the server config - $mail_server_enabled = ($conf['services']['mail'])?1:0; - $web_server_enabled = ($conf['services']['web'])?1:0; - $dns_server_enabled = ($conf['services']['dns'])?1:0; - $file_server_enabled = ($conf['services']['file'])?1:0; - $db_server_enabled = ($conf['services']['db'])?1:0; - $vserver_server_enabled = ($conf['openvz']['installed'])?1:0; - $proxy_server_enabled = ($conf['services']['proxy'])?1:0; - $firewall_server_enabled = ($conf['services']['firewall'])?1:0; - $xmpp_server_enabled = ($conf['services']['xmpp'])?1:0; - - $sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled', proxy_server = '$proxy_server_enabled', firewall_server = '$firewall_server_enabled', xmpp_server = '$xmpp_server_enabled' WHERE server_id = ?"; - - $this->db->query($sql, $conf['server_id']); - if($conf['mysql']['master_slave_setup'] == 'y') { - $this->dbmaster->query($sql, $conf['server_id']); - } - - - // chown install dir to root and chmod 755 - $command = 'chown root:root '.$install_dir; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - $command = 'chmod 755 '.$install_dir; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* Chmod the files and directories in the install dir - $command = 'chmod -R 750 '.$install_dir.'/*'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* chown the interface files to the ispconfig user and group - $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - - //* 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"); - $command = 'chown root:ispconfig '.$install_dir.'/security'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; - 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"); - - //* Make the temp directory for language file exports writable - if(is_dir($install_dir.'/interface/web/temp')) exec("chmod -R 770 $install_dir/interface/web/temp"); - - //* Make all interface language file directories group writable - $handle = @opendir($install_dir.'/interface/web'); - while ($file = @readdir($handle)) { - if ($file != '.' && $file != '..') { - if(@is_dir($install_dir.'/interface/web'.'/'.$file.'/lib/lang')) { - $handle2 = opendir($install_dir.'/interface/web'.'/'.$file.'/lib/lang'); - chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang', 0770); - while ($lang_file = @readdir($handle2)) { - if ($lang_file != '.' && $lang_file != '..') { - chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang/'.$lang_file, 0770); - } - } - } - } - } - - //* Make the APS directories group writable - exec("chmod -R 770 $install_dir/interface/web/sites/aps_meta_packages"); - exec("chmod -R 770 $install_dir/server/aps_packages"); - - //* make sure that the server config file (not the interface one) is only readable by the root user - chmod($install_dir.'/server/lib/config.inc.php', 0600); - chown($install_dir.'/server/lib/config.inc.php', 'root'); - chgrp($install_dir.'/server/lib/config.inc.php', 'root'); - - //* Make sure thet the interface config file is readable by user ispconfig only - chmod($install_dir.'/interface/lib/config.inc.php', 0600); - chown($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); - chgrp($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); - - chmod($install_dir.'/server/lib/remote_action.inc.php', 0600); - chown($install_dir.'/server/lib/remote_action.inc.php', 'root'); - chgrp($install_dir.'/server/lib/remote_action.inc.php', 'root'); - - if(@is_file($install_dir.'/server/lib/mysql_clientdb.conf')) { - chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600); - chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); - chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); - } - - if(is_dir($install_dir.'/interface/invoices')) { - 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 - // and must be fixed as this will allow the apache user to read the ispconfig files. - // Later this must run as own apache server or via suexec! - if($conf['apache']['installed'] == true){ - $command = 'adduser '.$conf['apache']['user'].' ispconfig'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - if(is_group('ispapps')){ - $command = 'adduser '.$conf['apache']['user'].' ispapps'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - } - if($conf['nginx']['installed'] == true){ - $command = 'adduser '.$conf['nginx']['user'].' ispconfig'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - if(is_group('ispapps')){ - $command = 'adduser '.$conf['nginx']['user'].' ispapps'; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - } - - //* Make the shell scripts executable - $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 - $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; - $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - - // Dont just copy over the virtualhost template but add some custom settings - $tpl = new tpl('apache_ispconfig.vhost.master'); - $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); - - // comment out the listen directive if port is 80 or 443 - if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $tpl->setVar('vhost_port_listen','#'); - } else { - $tpl->setVar('vhost_port_listen',''); - } - - if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $tpl->setVar('ssl_comment',''); - } else { - $tpl->setVar('ssl_comment','#'); - } - if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $tpl->setVar('ssl_bundle_comment',''); - } else { - $tpl->setVar('ssl_bundle_comment','#'); - } - - $tpl->setVar('apache_version',getapacheversion()); - - wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); - - //* and create the symlink - if($this->is_update == false) { - if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost'); - if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) { - symlink($vhost_conf_dir.'/ispconfig.vhost', $vhost_conf_enabled_dir.'/000-ispconfig.vhost'); - } - } - //if(!is_file('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig_fcgi_starter.master', 'tpl/apache_ispconfig_fcgi_starter.master'); - $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); - $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); - @mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true); - wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); - exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); - @symlink($install_dir.'/interface/web', '/var/www/ispconfig'); - exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); - //} - } - - if($conf['nginx']['installed'] == true && $this->install_ispconfig_interface == true){ - //* Copy the ISPConfig vhost for the controlpanel - $vhost_conf_dir = $conf['nginx']['vhost_conf_dir']; - $vhost_conf_enabled_dir = $conf['nginx']['vhost_conf_enabled_dir']; - - // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/nginx_ispconfig.vhost.master', 'tpl/nginx_ispconfig.vhost.master'); - $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); - - if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_on}', 'ssl', $content); - $content = str_replace('{ssl_comment}', '', $content); - $content = str_replace('{fastcgi_ssl}', 'on', $content); - } else { - $content = str_replace('{ssl_on}', '', $content); - $content = str_replace('{ssl_comment}', '#', $content); - $content = str_replace('{fastcgi_ssl}', 'off', $content); - } - - $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); - if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); - $fpm_socket = $socket_dir.'ispconfig.sock'; - - //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); - $content = str_replace('{fpm_socket}', $fpm_socket, $content); - - wf($vhost_conf_dir.'/ispconfig.vhost', $content); - - unset($content); - - // PHP-FPM - // Dont just copy over the php-fpm pool template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/php_fpm_pool.conf.master', 'tpl/php_fpm_pool.conf.master'); - $content = str_replace('{fpm_pool}', 'ispconfig', $content); - //$content = str_replace('{fpm_port}', $conf['nginx']['php_fpm_start_port'], $content); - $content = str_replace('{fpm_socket}', $fpm_socket, $content); - $content = str_replace('{fpm_user}', 'ispconfig', $content); - $content = str_replace('{fpm_group}', 'ispconfig', $content); - wf($conf['nginx']['php_fpm_pool_dir'].'/ispconfig.conf', $content); - - //copy('tpl/nginx_ispconfig.vhost.master', $vhost_conf_dir.'/ispconfig.vhost'); - //* and create the symlink - if($this->is_update == false) { - if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost'); - if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) { - symlink($vhost_conf_dir.'/ispconfig.vhost', $vhost_conf_enabled_dir.'/000-ispconfig.vhost'); - } - } - } - - //* Install the update script - 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/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'); - if(!is_link('/usr/local/bin/ispconfig_update.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh', '/usr/local/bin/ispconfig_update.sh'); - - //* Make the logs readable for the ispconfig user - if(@is_file('/var/log/mail.log')) exec('chmod +r /var/log/mail.log'); - if(@is_file('/var/log/mail.warn')) exec('chmod +r /var/log/mail.warn'); - if(@is_file('/var/log/mail.err')) exec('chmod +r /var/log/mail.err'); - if(@is_file('/var/log/messages')) exec('chmod +r /var/log/messages'); - if(@is_file('/var/log/clamav/clamav.log')) exec('chmod +r /var/log/clamav/clamav.log'); - if(@is_file('/var/log/clamav/freshclam.log')) exec('chmod +r /var/log/clamav/freshclam.log'); - - //* Create the ispconfig log file and directory - if(!is_file($conf['ispconfig_log_dir'].'/ispconfig.log')) { - if(!is_dir($conf['ispconfig_log_dir'])) mkdir($conf['ispconfig_log_dir'], 0755); - touch($conf['ispconfig_log_dir'].'/ispconfig.log'); - } - - //* Create the ispconfig auth log file and set uid/gid - if(!is_file($conf['ispconfig_log_dir'].'/auth.log')) { - touch($conf['ispconfig_log_dir'].'/auth.log'); - } - exec('chown ispconfig:ispconfig '. $conf['ispconfig_log_dir'].'/auth.log'); - exec('chmod 660 '. $conf['ispconfig_log_dir'].'/auth.log'); - - if(is_user('getmail')) { - rename($install_dir.'/server/scripts/run-getmail.sh', '/usr/local/bin/run-getmail.sh'); - if(is_user('getmail')) chown('/usr/local/bin/run-getmail.sh', 'getmail'); - chmod('/usr/local/bin/run-getmail.sh', 0744); - } - - //* Add Log-Rotation - if (is_dir('/etc/logrotate.d')) { - @unlink('/etc/logrotate.d/logispc3'); // ignore, if the file is not there - /* We rotate these logs in cron_daily.php - $fh = fopen('/etc/logrotate.d/logispc3', 'w'); - fwrite($fh, - "$conf['ispconfig_log_dir']/ispconfig.log { \n" . - " weekly \n" . - " missingok \n" . - " rotate 4 \n" . - " compress \n" . - " delaycompress \n" . - "} \n" . - "$conf['ispconfig_log_dir']/cron.log { \n" . - " weekly \n" . - " missingok \n" . - " rotate 4 \n" . - " compress \n" . - " delaycompress \n" . - "}"); - fclose($fh); - */ - } - - //* 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); - 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 configure_dbserver() { - global $conf; - - //* If this server shall act as database server for client DB's, we configure this here - $install_dir = $conf['ispconfig_install_dir']; - - // Create a file with the database login details which - // are used to create the client databases. - - if(!is_dir($install_dir.'/server/lib')) { - $command = "mkdir $install_dir/server/lib"; - caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - } - - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/mysql_clientdb.conf.master', 'tpl/mysql_clientdb.conf.master'); - $content = str_replace('{hostname}', $conf['mysql']['host'], $content); - $content = str_replace('{username}', $conf['mysql']['admin_user'], $content); - $content = str_replace('{password}', addslashes($conf['mysql']['admin_password']), $content); - wf($install_dir.'/server/lib/mysql_clientdb.conf', $content); - chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600); - chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); - chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root'); - - } - - public function install_crontab() { - global $conf; - - $install_dir = $conf['ispconfig_install_dir']; - - //* Root Crontab - exec('crontab -u root -l > crontab.txt'); - $existing_root_cron_jobs = file('crontab.txt'); - - // remove existing ispconfig cronjobs, in case the syntax has changed - foreach($existing_root_cron_jobs as $key => $val) { - if(stristr($val, $install_dir)) unset($existing_root_cron_jobs[$key]); - } - - $root_cron_jobs = array( - "* * * * * ".$install_dir."/server/server.sh 2>&1 | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done", - "* * * * * ".$install_dir."/server/cron.sh 2>&1 | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done" - ); - - if ($conf['nginx']['installed'] == true) { - $root_cron_jobs[] = "0 0 * * * ".$install_dir."/server/scripts/create_daily_nginx_access_logs.sh &> /dev/null"; - } - - foreach($root_cron_jobs as $cron_job) { - if(!in_array($cron_job."\n", $existing_root_cron_jobs)) { - $existing_root_cron_jobs[] = $cron_job."\n"; - } - } - file_put_contents('crontab.txt', $existing_root_cron_jobs); - exec('crontab -u root crontab.txt &> /dev/null'); - unlink('crontab.txt'); - - //* Getmail crontab - if(is_user('getmail')) { - $cf = $conf['getmail']; - exec('crontab -u getmail -l > crontab.txt'); - $existing_cron_jobs = file('crontab.txt'); - - $cron_jobs = array( - '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null' - ); - - // remove existing ispconfig cronjobs, in case the syntax has changed - foreach($existing_cron_jobs as $key => $val) { - if(stristr($val, 'getmail')) unset($existing_cron_jobs[$key]); - } - - foreach($cron_jobs as $cron_job) { - if(!in_array($cron_job."\n", $existing_cron_jobs)) { - $existing_cron_jobs[] = $cron_job."\n"; - } - } - file_put_contents('crontab.txt', $existing_cron_jobs); - exec('crontab -u getmail crontab.txt &> /dev/null'); - unlink('crontab.txt'); - } - - touch($conf['ispconfig_log_dir'].'/cron.log'); - 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'); - if(is_array($rc_local) && !empty($rc_local)){ - foreach($rc_local as $line){ - $line = trim($line); - if(substr($line, 0, 1) == '#') continue; - if(strpos($line, 'sshfs') !== false && strpos($line, '/var/backup') !== false){ - $mount_command = "#!/bin/sh\n\n"; - $mount_command .= $line."\n\n"; - file_put_contents($mount_script, $mount_command); - chmod($mount_script, 0755); - chown($mount_script, 'root'); - chgrp($mount_script, 'root'); - break; - } - } - } - } - } - - // 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 = ''){ - global $conf; - // upstart - if(is_executable('/sbin/initctl')){ - exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']); - if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action; - } - // systemd - if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){ - return 'systemctl '.$action.' '.$servicename.'.service'; - } - // sysvinit - if($init_script_directory == '') $init_script_directory = $conf['init_scripts']; - if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1); - return $init_script_directory.'/'.$servicename.' '.$action; - } - - /** - * Helper function - get the path to a template file based on - * the local part of the filename. Checks first for the existence - * of a distribution specific file and if not found looks in the - * base template folder. Optionally the behaviour can be changed - * by setting the 2nd parameter which will fetch the contents - * of the template file and return it instead of the path. The 3rd - * parameter further extends this behaviour by filtering the contents - * by inserting the ispconfig database credentials using the {} placeholders. - * - * @param string $tLocal local part of filename - * @param bool $tRf - * @param bool $tDBCred - * @return string Relative path to the chosen template file - */ - protected function get_template_file($tLocal, $tRf=false, $tDBCred=false) { - global $conf, $dist; - - $final_path = ''; - $dist_template = $conf['ispconfig_install_dir'] . '/server/conf-custom/install/' . $tLocal . '.master'; - if (file_exists($dist_template)) { - $final_path = $dist_template; - } else { - $dist_template = 'dist/tpl/'.strtolower($dist['name'])."/$tLocal.master"; - if (file_exists($dist_template)) { - $final_path = $dist_template; - } else { - $final_path = "tpl/$tLocal.master"; - } - } - - if (!$tRf) { - return $final_path; - } else { - return (!$tDBCred) ? rf($final_path) : $this->insert_db_credentials(rf($final_path)); - } - } - - /** - * Helper function - writes the contents to a config file - * and performs a backup if the file exist. Additionally - * if the file exists the new file will be given the - * same rights and ownership as the original. Optionally the - * rights and/or ownership can be overriden by appending umask, - * user and group to the parameters. Providing only uid and gid - * values will result in only a chown. - * - * @param $tConf - * @param $tContents - * @return bool - */ - protected function write_config_file($tConf, $tContents) { - // Backup config file before writing new contents and stat file - if ( is_file($tConf) ) { - $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res); - if ($res == 0) { // stat successfull - list($access, $user, $group) = explode(" ", $stat); - } - - if ( copy($tConf, $tConf.'~') ) { - chmod($tConf.'~', 0400); - } - } - - wf($tConf, $tContents); // write file - - if (func_num_args() >= 4) // override rights and/or ownership - { - $args = func_get_args(); - $output = array_slice($args, 2); - - switch (sizeof($output)) { - case 3: - $umask = array_shift($output); - if (is_numeric($umask) && preg_match('/^0?[0-7]{3}$/', $umask)) { - $access = $umask; - } - case 2: - if (is_user($output[0]) && is_group($output[1])) { - list($user, $group) = $output; - } - break; - } - } - - if (!empty($user) && !empty($group)) { - chown($tConf, $user); - chgrp($tConf, $group); - } - - if (!empty($access)) { - exec("chmod $access $tConf"); - } - } - - /** - * Helper function - filter the contents of a config - * file by inserting the common ispconfig database - * credentials. - * - * @param $tContents - * @return string - */ - protected function insert_db_credentials($tContents) { - global $conf; - - $tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents); - $tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents); - $tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents); - $tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents); - $tContents = str_replace('{mysql_server_host}', $conf['mysql']['host'], $tContents); - $tContents = str_replace('{mysql_server_port}', $conf['mysql']['port'], $tContents); - $tContents = str_replace('{mysql_server_port}', $conf["mysql"]["port"], $tContents); - - return $tContents; - } - -} - -?> diff --git a/install/sql/incremental/upd_dev_collection.sql.orig b/install/sql/incremental/upd_dev_collection.sql.orig deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/install/sql/incremental/upd_dev_collection.sql.rej b/install/sql/incremental/upd_dev_collection.sql.rej deleted file mode 100644 index 4c57d840ab..0000000000 --- a/install/sql/incremental/upd_dev_collection.sql.rej +++ /dev/null @@ -1,40 +0,0 @@ ---- install/sql/incremental/upd_dev_collection.sql -+++ install/sql/incremental/upd_dev_collection.sql -@@ -80,4 +80,37 @@ INSERT IGNORE INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us - - ALTER TABLE `dns_soa` CHANGE `xfer` `xfer` TEXT NULL; - ALTER TABLE `dns_soa` CHANGE `also_notify` `also_notify` TEXT NULL; --ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL;+ALTER TABLE `dns_slave` CHANGE `xfer` `xfer` TEXT NULL; -+ -+-- rspamd -+ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; -+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; -+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; -+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; -+ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; -+ -+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; -+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; -+UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; -+ -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; -+UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; -+ -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; -+UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; -+ -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; -+UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; -+-- end of rspamd diff --git a/install/sql/ispconfig3.sql.orig b/install/sql/ispconfig3.sql.orig deleted file mode 100644 index 2417ef0d21..0000000000 --- a/install/sql/ispconfig3.sql.orig +++ /dev/null @@ -1,2570 +0,0 @@ -/* -Copyright (c) 2007-2012, Till Brehm, projektfarm Gmbh -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. -*/ - --- Includes --- --- iso_country_list.sql --- --- This will create and then populate a MySQL table with a list of the names and --- ISO 3166 codes for countries in existence as of the date below. --- --- For updates to this file, see http://27.org/isocountrylist/ --- For more about ISO 3166, see http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html --- --- Created by getisocountrylist.pl on Sun Nov 2 14:59:20 2003. --- Wm. Rhodes <iso_country_list@27.org> --- - --- --- ISPConfig 3 --- DB-Version: 3.0.0.9 --- - -SET FOREIGN_KEY_CHECKS = 0; - --- -------------------------------------------------------- --- -------------------------------------------------------- --- DB-STRUCTURE --- -------------------------------------------------------- --- -------------------------------------------------------- - --- --- Table structure for table `aps_instances` --- - -CREATE TABLE IF NOT EXISTS `aps_instances` ( - `id` int(4) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `customer_id` int(4) NOT NULL DEFAULT '0', - `package_id` int(4) NOT NULL DEFAULT '0', - `instance_status` int(4) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `aps_instances_settings` --- - -CREATE TABLE IF NOT EXISTS `aps_instances_settings` ( - `id` int(4) NOT NULL AUTO_INCREMENT, - `server_id` int(11) NOT NULL DEFAULT '0', - `instance_id` int(4) NOT NULL DEFAULT '0', - `name` varchar(255) NOT NULL DEFAULT '', - `value` text, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `aps_packages` --- - -CREATE TABLE IF NOT EXISTS `aps_packages` ( - `id` int(4) NOT NULL AUTO_INCREMENT, - `path` varchar(255) NOT NULL DEFAULT '', - `name` varchar(255) NOT NULL DEFAULT '', - `category` varchar(255) NOT NULL DEFAULT '', - `version` varchar(20) NOT NULL DEFAULT '', - `release` int(4) NOT NULL DEFAULT '0', - `package_url` TEXT, - `package_status` int(1) NOT NULL DEFAULT '2', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `aps_settings` --- - -CREATE TABLE IF NOT EXISTS `aps_settings` ( - `id` int(4) NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL DEFAULT '', - `value` text, - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `attempts_login` --- - -CREATE TABLE `attempts_login` ( - `ip` varchar(39) NOT NULL DEFAULT '', - `times` int(11) DEFAULT NULL, - `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `client` --- - -CREATE TABLE `client` ( - `client_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `company_name` varchar(64) DEFAULT NULL, - `company_id` varchar(255) DEFAULT NULL, - `gender` enum('','m','f') NOT NULL DEFAULT '', - `contact_firstname` varchar( 64 ) NOT NULL DEFAULT '', - `contact_name` varchar(64) DEFAULT NULL, - `customer_no` varchar(64) DEFAULT NULL, - `vat_id` varchar(64) DEFAULT NULL, - `street` varchar(255) DEFAULT NULL, - `zip` varchar(32) DEFAULT NULL, - `city` varchar(64) DEFAULT NULL, - `state` varchar(32) DEFAULT NULL, - `country` char(2) DEFAULT NULL, - `telephone` varchar(32) DEFAULT NULL, - `mobile` varchar(32) DEFAULT NULL, - `fax` varchar(32) DEFAULT NULL, - `email` varchar(255) DEFAULT NULL, - `internet` varchar(255) NOT NULL DEFAULT '', - `icq` varchar(16) DEFAULT NULL, - `notes` text, - `bank_account_owner` varchar(255) DEFAULT NULL, - `bank_account_number` varchar(255) DEFAULT NULL, - `bank_code` varchar(255) DEFAULT NULL, - `bank_name` varchar(255) DEFAULT NULL, - `bank_account_iban` varchar(255) DEFAULT NULL, - `bank_account_swift` varchar(255) DEFAULT NULL, - `paypal_email` varchar(255) DEFAULT NULL, - `default_mailserver` int(11) unsigned NOT NULL DEFAULT '1', - `mail_servers` text, - `limit_maildomain` int(11) NOT NULL DEFAULT '-1', - `limit_mailbox` int(11) NOT NULL DEFAULT '-1', - `limit_mailalias` int(11) NOT NULL DEFAULT '-1', - `limit_mailaliasdomain` int(11) NOT NULL DEFAULT '-1', - `limit_mailforward` int(11) NOT NULL DEFAULT '-1', - `limit_mailcatchall` int(11) NOT NULL DEFAULT '-1', - `limit_mailrouting` int(11) NOT NULL DEFAULT '0', - `limit_mailfilter` int(11) NOT NULL DEFAULT '-1', - `limit_fetchmail` int(11) NOT NULL DEFAULT '-1', - `limit_mailquota` int(11) NOT NULL DEFAULT '-1', - `limit_spamfilter_wblist` int(11) NOT NULL DEFAULT '0', - `limit_spamfilter_user` int(11) NOT NULL DEFAULT '0', - `limit_spamfilter_policy` int(11) NOT NULL DEFAULT '0', - `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', - `xmpp_servers` text, - `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', - `limit_xmpp_user` int(11) NOT NULL DEFAULT '-1', - `limit_xmpp_muc` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_anon` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_auth_options` varchar(255) NOT NULL DEFAULT 'plain,hashed,isp', - `limit_xmpp_vjud` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_proxy` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_status` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_pastebin` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_httparchive` ENUM( 'n', 'y' ) NOT NULL default 'n', - `default_webserver` int(11) unsigned NOT NULL DEFAULT '1', - `web_servers` text, - `limit_web_ip` text, - `limit_web_domain` int(11) NOT NULL DEFAULT '-1', - `limit_web_quota` int(11) NOT NULL DEFAULT '-1', - `web_php_options` varchar(255) NOT NULL DEFAULT 'no,fast-cgi,cgi,mod,suphp,php-fpm,hhvm', - `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n', - `limit_perl` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n', - `limit_python` enum('n','y') NOT NULL DEFAULT 'n', - `force_suexec` enum('n','y') NOT NULL DEFAULT 'y', - `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n', - `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', - `limit_web_subdomain` int(11) NOT NULL DEFAULT '-1', - `limit_web_aliasdomain` int(11) NOT NULL DEFAULT '-1', - `limit_ftp_user` int(11) NOT NULL DEFAULT '-1', - `limit_shell_user` int(11) NOT NULL DEFAULT '0', - `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no,jailkit,ssh-chroot', - `limit_webdav_user` int(11) NOT NULL DEFAULT '0', - `limit_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', - `limit_directive_snippets` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', - `limit_aps` int(11) NOT NULL DEFAULT '-1', - `default_dnsserver` int(11) unsigned NOT NULL DEFAULT '1', - `db_servers` text, - `limit_dns_zone` int(11) NOT NULL DEFAULT '-1', - `default_slave_dnsserver` int(11) unsigned NOT NULL DEFAULT '1', - `limit_dns_slave_zone` int(11) NOT NULL DEFAULT '-1', - `limit_dns_record` int(11) NOT NULL DEFAULT '-1', - `default_dbserver` int(11) NOT NULL DEFAULT '1', - `dns_servers` text, - `limit_database` int(11) NOT NULL DEFAULT '-1', - `limit_database_user` int(11) NOT NULL DEFAULT '-1', - `limit_database_quota` int(11) NOT NULL default '-1', - `limit_cron` int(11) NOT NULL DEFAULT '0', - `limit_cron_type` enum('url','chrooted','full') NOT NULL DEFAULT 'url', - `limit_cron_frequency` int(11) NOT NULL DEFAULT '5', - `limit_traffic_quota` int(11) NOT NULL DEFAULT '-1', - `limit_client` int(11) NOT NULL DEFAULT '0', - `limit_domainmodule` int(11) NOT NULL DEFAULT '0', - `limit_mailmailinglist` int(11) NOT NULL DEFAULT '-1', - `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', - `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', - `parent_client_id` int(11) unsigned NOT NULL DEFAULT '0', - `username` varchar(64) DEFAULT NULL, - `password` varchar(64) DEFAULT NULL, - `language` char(2) NOT NULL DEFAULT 'en', - `usertheme` varchar(32) NOT NULL DEFAULT 'default', - `template_master` int(11) unsigned NOT NULL DEFAULT '0', - `template_additional` text, - `created_at` bigint(20) DEFAULT NULL, - `locked` enum('n','y') NOT NULL DEFAULT 'n', - `canceled` enum('n','y') NOT NULL DEFAULT 'n', - `can_use_api` enum('n','y') NOT NULL DEFAULT 'n', - `tmp_data` mediumblob, - `id_rsa` varchar(2000) NOT NULL DEFAULT '', - `ssh_rsa` varchar(600) NOT NULL DEFAULT '', - `customer_no_template` varchar(255) DEFAULT 'R[CLIENTID]C[CUSTOMER_NO]', - `customer_no_start` int(11) NOT NULL DEFAULT '1', - `customer_no_counter` int(11) NOT NULL DEFAULT '0', - `added_date` date NULL DEFAULT NULL, - `added_by` varchar(255) DEFAULT NULL, - `validation_status` enum('accept','review','reject') NOT NULL DEFAULT 'accept', - `risk_score` int(10) unsigned NOT NULL DEFAULT '0', - `activation_code` varchar(10) NOT NULL DEFAULT '', - PRIMARY KEY (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `client_circle` --- - -CREATE TABLE `client_circle` ( - `circle_id` int(11) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `circle_name` varchar(64) DEFAULT NULL, - `client_ids` text, - `description` text, - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`circle_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `client_template` --- - -CREATE TABLE `client_template` ( - `template_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `template_name` varchar(64) NOT NULL DEFAULT '', - `template_type` varchar(1) NOT NULL default 'm', - `mail_servers` text, - `limit_maildomain` int(11) NOT NULL default '-1', - `limit_mailbox` int(11) NOT NULL default '-1', - `limit_mailalias` int(11) NOT NULL default '-1', - `limit_mailaliasdomain` int(11) NOT NULL default '-1', - `limit_mailforward` int(11) NOT NULL default '-1', - `limit_mailcatchall` int(11) NOT NULL default '-1', - `limit_mailrouting` int(11) NOT NULL default '0', - `limit_mailfilter` int(11) NOT NULL default '-1', - `limit_fetchmail` int(11) NOT NULL default '-1', - `limit_mailquota` int(11) NOT NULL default '-1', - `limit_spamfilter_wblist` int(11) NOT NULL default '0', - `limit_spamfilter_user` int(11) NOT NULL default '0', - `limit_spamfilter_policy` int(11) NOT NULL default '0', - `default_xmppserver` int(11) unsigned NOT NULL DEFAULT '1', - `xmpp_servers` text, - `limit_xmpp_domain` int(11) NOT NULL DEFAULT '-1', - `limit_xmpp_user` int(11) NOT NULL DEFAULT '-1', - `limit_xmpp_muc` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_anon` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_vjud` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_proxy` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_status` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_pastebin` ENUM( 'n', 'y' ) NOT NULL default 'n', - `limit_xmpp_httparchive` ENUM( 'n', 'y' ) NOT NULL default 'n', - `web_servers` text, - `limit_web_ip` text, - `limit_web_domain` int(11) NOT NULL default '-1', - `limit_web_quota` int(11) NOT NULL default '-1', - `web_php_options` varchar(255) NOT NULL DEFAULT 'no', - `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n', - `limit_perl` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n', - `limit_python` enum('n','y') NOT NULL DEFAULT 'n', - `force_suexec` enum('n','y') NOT NULL DEFAULT 'y', - `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n', - `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n', - `limit_ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', - `limit_web_subdomain` int(11) NOT NULL default '-1', - `limit_web_aliasdomain` int(11) NOT NULL default '-1', - `limit_ftp_user` int(11) NOT NULL default '-1', - `limit_shell_user` int(11) NOT NULL default '0', - `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no', - `limit_webdav_user` int(11) NOT NULL default '0', - `limit_backup` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y', - `limit_directive_snippets` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n', - `limit_aps` int(11) NOT NULL DEFAULT '-1', - `dns_servers` text, - `limit_dns_zone` int(11) NOT NULL default '-1', - `default_slave_dnsserver` int(11) NOT NULL DEFAULT '0', - `limit_dns_slave_zone` int(11) NOT NULL default '-1', - `limit_dns_record` int(11) NOT NULL default '-1', - `db_servers` text, - `limit_database` int(11) NOT NULL default '-1', - `limit_database_user` int(11) NOT NULL DEFAULT '-1', - `limit_database_quota` int(11) NOT NULL default '-1', - `limit_cron` int(11) NOT NULL default '0', - `limit_cron_type` enum('url','chrooted','full') NOT NULL default 'url', - `limit_cron_frequency` int(11) NOT NULL default '5', - `limit_traffic_quota` int(11) NOT NULL default '-1', - `limit_client` int(11) NOT NULL default '0', - `limit_domainmodule` int(11) NOT NULL DEFAULT '0', - `limit_mailmailinglist` int(11) NOT NULL default '-1', - `limit_openvz_vm` int(11) NOT NULL DEFAULT '0', - `limit_openvz_vm_template_id` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `client_template_assigned` --- - -CREATE TABLE `client_template_assigned` ( - `assigned_template_id` bigint(20) NOT NULL auto_increment, - `client_id` bigint(11) NOT NULL DEFAULT '0', - `client_template_id` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`assigned_template_id`), - KEY `client_id` (`client_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; --- -------------------------------------------------------- - --- --- Table structure for table `invoice_message_template` --- - -CREATE TABLE `client_message_template` ( - `client_message_template_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `template_type` varchar(255) DEFAULT NULL, - `template_name` varchar(255) DEFAULT NULL, - `subject` varchar(255) DEFAULT NULL, - `message` text, - PRIMARY KEY (`client_message_template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- --- Dumping data for table `invoice_message_template` --- - --- -------------------------------------------------------- - --- --- Table structure for table `country` --- - -CREATE TABLE `country` ( - `iso` char(2) NOT NULL DEFAULT '', - `name` varchar(64) NOT NULL DEFAULT '', - `printable_name` varchar(64) NOT NULL DEFAULT '', - `iso3` char(3) DEFAULT NULL, - `numcode` smallint(6) DEFAULT NULL, - `eu` enum('n','y') NOT NULL DEFAULT 'n', - PRIMARY KEY (`iso`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `cron` --- -CREATE TABLE `cron` ( - `id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NULL default NULL, - `sys_perm_group` varchar(5) NULL default NULL, - `sys_perm_other` varchar(5) NULL default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `parent_domain_id` int(11) unsigned NOT NULL default '0', - `type` enum('url','chrooted','full') NOT NULL default 'url', - `command` TEXT, - `run_min` varchar(100) NULL, - `run_hour` varchar(100) NULL, - `run_mday` varchar(100) NULL, - `run_month` varchar(100) NULL, - `run_wday` varchar(100) NULL, - `log` enum('n','y') NOT NULL default 'n', - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `directive_snippets` --- - -CREATE TABLE IF NOT EXISTS `directive_snippets` ( - `directive_snippets_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `type` varchar(255) DEFAULT NULL, - `snippet` mediumtext, - `customer_viewable` ENUM('n','y') NOT NULL DEFAULT 'n', - `required_php_snippets` varchar(255) NOT NULL DEFAULT '', - `active` enum('n','y') NOT NULL DEFAULT 'y', - `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`directive_snippets_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `dns_rr` --- -CREATE TABLE `dns_rr` ( - `id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) NOT NULL default '1', - `zone` int(11) unsigned NOT NULL DEFAULT '0', - `name` varchar(255) NOT NULL DEFAULT '', - `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL, - `data` TEXT NOT NULL, - `aux` int(11) unsigned NOT NULL default '0', - `ttl` int(11) unsigned NOT NULL default '3600', - `active` enum('N','Y') NOT NULL default 'Y', - `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP, - `serial` int(10) unsigned default NULL, - PRIMARY KEY (`id`), - KEY `rr` (`zone`,`type`,`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `dns_slave` --- - -CREATE TABLE `dns_slave` ( - `id` int(10) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) NOT NULL default '1', - `origin` varchar(255) NOT NULL DEFAULT '', - `ns` varchar(255) NOT NULL DEFAULT '', - `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` TEXT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `slave` (`origin`,`server_id`), - KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `dns_ssl_ca` --- - -CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `active` enum('N','Y') NOT NULL DEFAULT 'N', - `ca_name` varchar(255) NOT NULL DEFAULT '', - `ca_issue` varchar(255) NOT NULL DEFAULT '', - `ca_wildcard` enum('Y','N') NOT NULL DEFAULT 'N', - `ca_iodef` text NOT NULL, - `ca_critical` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY (`ca_issue`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - -ALTER TABLE `dns_ssl_ca` ADD UNIQUE(`ca_issue`); - -INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `active`, `ca_name`, `ca_issue`, `ca_wildcard`, `ca_iodef`, `ca_critical`) VALUES -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'AC Camerfirma', 'camerfirma.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'ACCV', 'accv.es', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Actalis', 'actalis.it', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Amazon', 'amazon.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Asseco', 'certum.pl', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Buypass', 'buypass.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CA Disig', 'disig.sk', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CATCert', 'aoc.cat', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certinomis', 'www.certinomis.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Certizen', 'hongkongpost.gov.hk', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'e-tugra', 'e-tugra.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'EDICOM', 'edicomgroup.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Entrust', 'entrust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Firmaprofesional', 'firmaprofesional.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'FNMT', 'fnmt.es', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GlobalSign', 'globalsign.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GoDaddy', 'godaddy.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Google Trust Services', 'pki.goog', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'GRCA', 'gca.nat.gov.tw', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'HARICA', 'harica.gr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'IdenTrust', 'identrust.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Izenpe', 'izenpe.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Kamu SM', 'kamusm.gov.tr', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Let''s Encrypt', 'letsencrypt.org', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Microsec e-Szigno', 'e-szigno.hu', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'NetLock', 'netlock.hu', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PKIoverheid', 'www.pkioverheid.nl', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'PROCERT', 'procert.net.ve', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'QuoVadis', 'quovadisglobal.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SECOM', 'secomtrust.net', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sertifitseerimiskeskuse', 'sk.ee', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'StartCom', 'startcomca.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'SwissSign', 'swisssign.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Symantec / Thawte / GeoTrust', 'symantec.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'T-Systems', 'telesec.de', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Telia', 'telia.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Trustwave', 'trustwave.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Web.com', 'web.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WISeKey', 'wisekey.com', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'WoSign', 'wosign.com', 'Y', '', 0); - --- -------------------------------------------------------- - --- --- Table structure for table `dns_soa` --- - -CREATE TABLE `dns_soa` ( - `id` int(10) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) NOT NULL default '1', - `origin` varchar(255) NOT NULL DEFAULT '', - `ns` varchar(255) NOT NULL DEFAULT '', - `mbox` varchar(255) NOT NULL DEFAULT '', - `serial` int(11) unsigned NOT NULL default '1', - `refresh` int(11) unsigned NOT NULL default '28800', - `retry` int(11) unsigned NOT NULL default '7200', - `expire` int(11) unsigned NOT NULL default '604800', - `minimum` int(11) unsigned NOT NULL default '3600', - `ttl` int(11) unsigned NOT NULL default '3600', - `active` enum('N','Y') NOT NULL DEFAULT 'N', - `xfer` TEXT NULL, - `also_notify` TEXT NULL, - `update_acl` varchar(255) default NULL, - `dnssec_initialized` ENUM('Y','N') NOT NULL DEFAULT 'N', - `dnssec_wanted` ENUM('Y','N') NOT NULL DEFAULT 'N', - `dnssec_last_signed` BIGINT NOT NULL DEFAULT '0', - `dnssec_info` TEXT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `origin` (`origin`), - KEY `active` (`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `dns_template` --- - -CREATE TABLE `dns_template` ( - `template_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `name` varchar(64) default NULL, - `fields` varchar(255) default NULL, - `template` text, - `visible` enum('N','Y') NOT NULL default 'Y', - PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- --- Table structure for table `domain` --- - -CREATE TABLE `domain` ( - `domain_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `domain` varchar(255) NOT NULL default '', - PRIMARY KEY (`domain_id`), - UNIQUE KEY `domain` (`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `firewall` --- - -CREATE TABLE `firewall` ( - `firewall_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `tcp_port` text, - `udp_port` text, - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`firewall_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `ftp_user` --- - -CREATE TABLE `ftp_user` ( - `ftp_user_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `parent_domain_id` int(11) unsigned NOT NULL default '0', - `username` varchar(64) default NULL, - `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, - `quota_size` bigint(20) NOT NULL default '-1', - `active` enum('n','y') NOT NULL default 'y', - `uid` varchar(64) default NULL, - `gid` varchar(64) default NULL, - `dir` varchar(255) default NULL, - `quota_files` bigint(20) NOT NULL default '-1', - `ul_ratio` int(11) NOT NULL default '-1', - `dl_ratio` int(11) NOT NULL default '-1', - `ul_bandwidth` int(11) NOT NULL default '-1', - `dl_bandwidth` int(11) NOT NULL default '-1', - `expires` datetime NULL DEFAULT NULL, - `user_type` set('user','system') NOT NULL DEFAULT 'user', - `user_config` text, - PRIMARY KEY (`ftp_user_id`), - KEY `active` (`active`), - KEY `server_id` (`server_id`), - KEY `username` (`username`), - KEY `quota_files` (`quota_files`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `ftp_traffic` --- - -CREATE TABLE `ftp_traffic` ( - `hostname` varchar(255) NOT NULL, - `traffic_date` date NOT NULL, - `in_bytes` bigint(32) unsigned NOT NULL, - `out_bytes` bigint(32) unsigned NOT NULL, - UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `help_faq` --- - -CREATE TABLE `help_faq` ( - `hf_id` int(11) NOT NULL AUTO_INCREMENT, - `hf_section` int(11) DEFAULT NULL, - `hf_order` int(11) DEFAULT '0', - `hf_question` text, - `hf_answer` text, - `sys_userid` int(11) DEFAULT NULL, - `sys_groupid` int(11) DEFAULT NULL, - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - PRIMARY KEY (`hf_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `help_faq_sections` --- - -CREATE TABLE `help_faq_sections` ( - `hfs_id` int(11) NOT NULL AUTO_INCREMENT, - `hfs_name` varchar(255) DEFAULT NULL, - `hfs_order` int(11) DEFAULT '0', - `sys_userid` int(11) DEFAULT NULL, - `sys_groupid` int(11) DEFAULT NULL, - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - PRIMARY KEY (`hfs_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- Table structure for table `iptables` --- - -DROP TABLE IF EXISTS `iptables`; -CREATE TABLE `iptables` ( - `iptables_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `server_id` int(10) unsigned NOT NULL DEFAULT '0', - `table` varchar(10) DEFAULT NULL COMMENT 'INPUT OUTPUT FORWARD', - `source_ip` varchar(16) DEFAULT NULL, - `destination_ip` varchar(16) DEFAULT NULL, - `protocol` varchar(10) DEFAULT 'TCP' COMMENT 'TCP UDP GRE', - `singleport` varchar(10) DEFAULT NULL, - `multiport` varchar(40) DEFAULT NULL, - `state` varchar(20) DEFAULT NULL COMMENT 'NEW ESTABLISHED RECNET etc', - `target` varchar(10) DEFAULT NULL COMMENT 'ACCEPT DROP REJECT LOG', - `active` enum('n','y') NOT NULL DEFAULT 'y', - PRIMARY KEY (`iptables_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_access` --- - -CREATE TABLE `mail_access` ( - `access_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `source` varchar(255) NOT NULL DEFAULT '', - `access` varchar(255) NOT NULL DEFAULT '', - `type` set('recipient','sender','client') NOT NULL DEFAULT 'recipient', - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`access_id`), - KEY `server_id` (`server_id`,`source`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_backup` --- - -CREATE TABLE `mail_backup` ( - `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `server_id` int(10) unsigned NOT NULL DEFAULT '0', - `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0', - `mailuser_id` int(10) unsigned NOT NULL DEFAULT '0', - `backup_mode` varchar(64) NOT NULL DEFAULT '', - `tstamp` int(10) unsigned NOT NULL DEFAULT '0', - `filename` varchar(255) NOT NULL DEFAULT '', - `filesize` VARCHAR(20) NOT NULL DEFAULT '', - PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_content_filter` --- - -CREATE TABLE `mail_content_filter` ( - `content_filter_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) NOT NULL default '0', - `type` varchar(255) default NULL, - `pattern` varchar(255) default NULL, - `data` varchar(255) default NULL, - `action` varchar(255) default NULL, - `active` varchar(255) NOT NULL default 'y', - PRIMARY KEY (`content_filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_domain` --- - -CREATE TABLE `mail_domain` ( - `domain_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `dkim` ENUM( 'n', 'y' ) NOT NULL default 'n', - `dkim_selector` varchar(63) NOT NULL DEFAULT 'default', - `dkim_private` mediumtext NULL, - `dkim_public` mediumtext NULL, - `active` enum('n','y') NOT NULL DEFAULT 'n', - PRIMARY KEY (`domain_id`), - KEY `server_id` (`server_id`,`domain`), - KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_forwarding` --- - -CREATE TABLE `mail_forwarding` ( - `forwarding_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `source` varchar(255) NOT NULL DEFAULT '', - `destination` text, - `type` enum('alias','aliasdomain','forward','catchall') NOT NULL default 'alias', - `active` enum('n','y') NOT NULL DEFAULT 'n', - `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n', - `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', - PRIMARY KEY (`forwarding_id`), - KEY `server_id` (`server_id`,`source`), - KEY `type` (`type`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_get` --- - -CREATE TABLE `mail_get` ( - `mailget_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `type` varchar(255) default NULL, - `source_server` varchar(255) default NULL, - `source_username` varchar(255) default NULL, - `source_password` varchar(64) default NULL, - `source_delete` varchar(255) NOT NULL default 'y', - `source_read_all` varchar(255) NOT NULL default 'y', - `destination` varchar(255) default NULL, - `active` varchar(255) NOT NULL default 'y', - PRIMARY KEY (`mailget_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_mailinglist` --- - -CREATE TABLE `mail_mailinglist` ( - `mailinglist_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) unsigned NOT NULL default '0', - `domain` varchar(255) NOT NULL DEFAULT '', - `listname` varchar(255) NOT NULL DEFAULT '', - `email` varchar(255) NOT NULL DEFAULT '', - `password` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`mailinglist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for Table `mail_relay_recipient` --- - -CREATE TABLE IF NOT EXISTS `mail_relay_recipient` ( - `relay_recipient_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `source` varchar(255) DEFAULT NULL, - `access` varchar(255) NOT NULL DEFAULT 'OK', - `active` varchar(255) NOT NULL DEFAULT 'y', - PRIMARY KEY (`relay_recipient_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_traffic` --- - -CREATE TABLE `mail_traffic` ( - `traffic_id` int(11) unsigned NOT NULL auto_increment, - `mailuser_id` int(11) unsigned NOT NULL DEFAULT '0', - `month` char(7) NOT NULL DEFAULT '', - `traffic` bigint(20) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`traffic_id`), - KEY `mailuser_id` (`mailuser_id`,`month`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_transport` --- - -CREATE TABLE `mail_transport` ( - `transport_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `transport` varchar(255) NOT NULL DEFAULT '', - `sort_order` int(11) unsigned NOT NULL default '5', - `active` enum('n','y') NOT NULL DEFAULT 'n', - PRIMARY KEY (`transport_id`), - KEY `server_id` (`server_id`,`transport`), - KEY `server_id_2` (`server_id`,`domain`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_user` --- - -CREATE TABLE `mail_user` ( - `mailuser_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `email` varchar(255) NOT NULL default '', - `login` varchar(255) NOT NULL default '', - `password` varchar(255) NOT NULL default '', - `name` varchar(255) NOT NULL default '', - `uid` int(11) NOT NULL default '5000', - `gid` int(11) NOT NULL default '5000', - `maildir` varchar(255) NOT NULL default '', - `maildir_format` varchar(255) NOT NULL default 'maildir', - `quota` bigint(20) NOT NULL default '-1', - `cc` varchar(255) NOT NULL default '', - `sender_cc` varchar(255) NOT NULL default '', - `homedir` varchar(255) NOT NULL default '', - `autoresponder` enum('n','y') NOT NULL default 'n', - `autoresponder_start_date` datetime NULL default NULL, - `autoresponder_end_date` datetime NULL default NULL, - `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', - `autoresponder_text` mediumtext NULL, - `move_junk` enum('n','y') NOT NULL default 'n', - `custom_mailfilter` mediumtext, - `postfix` enum('n','y') NOT NULL default 'y', - `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', - `access` enum('n','y') NOT NULL default 'y', - `disableimap` enum('n','y') NOT NULL default 'n', - `disablepop3` enum('n','y') NOT NULL default 'n', - `disabledeliver` enum('n','y') NOT NULL default 'n', - `disablesmtp` enum('n','y') NOT NULL default 'n', - `disablesieve` enum('n','y') NOT NULL default 'n', - `disablesieve-filter` enum('n','y') NOT NULL default 'n', - `disablelda` enum('n','y') NOT NULL default 'n', - `disablelmtp` enum('n','y') NOT NULL default 'n', - `disabledoveadm` enum('n','y') NOT NULL default 'n', - `last_quota_notification` date NULL default NULL, - `backup_interval` VARCHAR( 255 ) NOT NULL default 'none', - `backup_copies` INT NOT NULL DEFAULT '1', - PRIMARY KEY (`mailuser_id`), - KEY `server_id` (`server_id`,`email`), - KEY `email_access` (`email`,`access`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `mail_user_filter` --- - -CREATE TABLE `mail_user_filter` ( - `filter_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `mailuser_id` int(11) unsigned NOT NULL default '0', - `rulename` varchar(64) default NULL, - `source` varchar(255) default NULL, - `searchterm` varchar(255) default NULL, - `op` varchar(255) default NULL, - `action` varchar(255) default NULL, - `target` varchar(255) default NULL, - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`filter_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `monitor_data` --- - -CREATE TABLE `monitor_data` ( - `server_id` int(11) unsigned NOT NULL default '0', - `type` varchar(255) NOT NULL default '', - `created` int(11) unsigned NOT NULL default '0', - `data` mediumtext, - `state` enum('no_state','unknown','ok','info','warning','critical','error') NOT NULL DEFAULT 'unknown', - PRIMARY KEY (`server_id`,`type`,`created`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `openvz_ip` --- - -CREATE TABLE IF NOT EXISTS `openvz_ip` ( - `ip_address_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `ip_address` varchar(39) DEFAULT NULL, - `vm_id` int(11) NOT NULL DEFAULT '0', - `reserved` varchar(255) NOT NULL DEFAULT 'n', - `additional` varchar(255) NOT NULL DEFAULT 'n', - PRIMARY KEY (`ip_address_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- --- Dumping data for table `openvz_ip` --- - --- -------------------------------------------------------- - --- --- Table structure for table `openvz_ostemplate` --- - -CREATE TABLE IF NOT EXISTS `openvz_ostemplate` ( - `ostemplate_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `template_name` varchar(255) DEFAULT NULL, - `template_file` varchar(255) NOT NULL DEFAULT '', - `server_id` int(11) NOT NULL DEFAULT '0', - `allservers` varchar(255) NOT NULL DEFAULT 'y', - `active` varchar(255) NOT NULL DEFAULT 'y', - `description` text, - PRIMARY KEY (`ostemplate_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- --- Dumping data for table `openvz_ostemplate` --- - -INSERT INTO `openvz_ostemplate` (`ostemplate_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `template_file`, `server_id`, `allservers`, `active`, `description`) VALUES(1, 1, 1, 'riud', 'riud', '', 'Debian minimal', 'debian-minimal-x86', 1, 'y', 'y', 'Debian minimal image.'); - --- -------------------------------------------------------- - --- --- Table structure for table `openvz_template` --- - -CREATE TABLE IF NOT EXISTS `openvz_template` ( - `template_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `template_name` varchar(255) DEFAULT NULL, - `diskspace` int(11) NOT NULL DEFAULT '0', - `traffic` int(11) NOT NULL DEFAULT '-1', - `bandwidth` int(11) NOT NULL DEFAULT '-1', - `ram` int(11) NOT NULL DEFAULT '0', - `ram_burst` int(11) NOT NULL DEFAULT '0', - `cpu_units` int(11) NOT NULL DEFAULT '1000', - `cpu_num` int(11) NOT NULL DEFAULT '4', - `cpu_limit` int(11) NOT NULL DEFAULT '400', - `io_priority` int(11) NOT NULL DEFAULT '4', - `active` varchar(255) NOT NULL DEFAULT 'y', - `description` text, - `numproc` varchar(255) DEFAULT NULL, - `numtcpsock` varchar(255) DEFAULT NULL, - `numothersock` varchar(255) DEFAULT NULL, - `vmguarpages` varchar(255) DEFAULT NULL, - `kmemsize` varchar(255) DEFAULT NULL, - `tcpsndbuf` varchar(255) DEFAULT NULL, - `tcprcvbuf` varchar(255) DEFAULT NULL, - `othersockbuf` varchar(255) DEFAULT NULL, - `dgramrcvbuf` varchar(255) DEFAULT NULL, - `oomguarpages` varchar(255) DEFAULT NULL, - `privvmpages` varchar(255) DEFAULT NULL, - `lockedpages` varchar(255) DEFAULT NULL, - `shmpages` varchar(255) DEFAULT NULL, - `physpages` varchar(255) DEFAULT NULL, - `numfile` varchar(255) DEFAULT NULL, - `avnumproc` varchar(255) DEFAULT NULL, - `numflock` varchar(255) DEFAULT NULL, - `numpty` varchar(255) DEFAULT NULL, - `numsiginfo` varchar(255) DEFAULT NULL, - `dcachesize` varchar(255) DEFAULT NULL, - `numiptent` varchar(255) DEFAULT NULL, - `swappages` varchar(255) DEFAULT NULL, - `hostname` varchar(255) DEFAULT NULL, - `nameserver` varchar(255) DEFAULT NULL, - `create_dns` varchar(1) NOT NULL DEFAULT 'n', - `capability` varchar(255) DEFAULT NULL, - `features` varchar(255) DEFAULT NULL, - `iptables` varchar(255) DEFAULT NULL, - `custom` text, - PRIMARY KEY (`template_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- --- Dumping data for table `openvz_template` --- - -INSERT INTO `openvz_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `template_name`, `diskspace`, `traffic`, `bandwidth`, `ram`, `ram_burst`, `cpu_units`, `cpu_num`, `cpu_limit`, `io_priority`, `active`, `description`, `numproc`, `numtcpsock`, `numothersock`, `vmguarpages`, `kmemsize`, `tcpsndbuf`, `tcprcvbuf`, `othersockbuf`, `dgramrcvbuf`, `oomguarpages`, `privvmpages`, `lockedpages`, `shmpages`, `physpages`, `numfile`, `avnumproc`, `numflock`, `numpty`, `numsiginfo`, `dcachesize`, `numiptent`, `swappages`, `hostname`, `nameserver`, `create_dns`, `capability`, `features`, `iptables`, `custom`) VALUES(1, 1, 1, 'riud', 'riud', '', 'small', 10, -1, -1, 256, 512, 1000, 4, 400, 4, 'y', '', '999999:999999', '7999992:7999992', '7999992:7999992', '65536:unlimited', '2147483646:2147483646', '214748160:396774400', '214748160:396774400', '214748160:396774400', '214748160:396774400', '65536:65536', '131072:139264', '999999:999999', '65536:65536', '0:2147483647', '23999976:23999976', '180:180', '999999:999999', '500000:500000', '999999:999999', '2147483646:2147483646', '999999:999999', '256000:256000', 'v{VEID}.test.tld', '8.8.8.8 8.8.4.4', 'n', '', '', '', ''); - --- -------------------------------------------------------- - --- --- Table structure for table `openvz_traffic` --- - -CREATE TABLE IF NOT EXISTS `openvz_traffic` ( - `veid` int(11) NOT NULL DEFAULT '0', - `traffic_date` date NULL DEFAULT NULL, - `traffic_bytes` bigint(32) unsigned NOT NULL DEFAULT '0', - UNIQUE KEY (`veid`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- --- Dumping data for table `openvz_traffic` --- - - --- -------------------------------------------------------- - --- --- Table structure for table `openvz_vm` --- - -CREATE TABLE IF NOT EXISTS `openvz_vm` ( - `vm_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `veid` int(10) unsigned NOT NULL DEFAULT '0', - `ostemplate_id` int(11) NOT NULL DEFAULT '0', - `template_id` int(11) NOT NULL DEFAULT '0', - `ip_address` varchar(255) NOT NULL DEFAULT '', - `hostname` varchar(255) DEFAULT NULL, - `vm_password` varchar(255) DEFAULT NULL, - `start_boot` varchar(255) NOT NULL DEFAULT 'y', - `bootorder` int(11) NOT NULL DEFAULT '1', - `active` varchar(255) NOT NULL DEFAULT 'y', - `active_until_date` date NULL DEFAULT NULL, - `description` text, - `diskspace` int(11) NOT NULL DEFAULT '0', - `traffic` int(11) NOT NULL DEFAULT '-1', - `bandwidth` int(11) NOT NULL DEFAULT '-1', - `ram` int(11) NOT NULL DEFAULT '0', - `ram_burst` int(11) NOT NULL DEFAULT '0', - `cpu_units` int(11) NOT NULL DEFAULT '1000', - `cpu_num` int(11) NOT NULL DEFAULT '4', - `cpu_limit` int(11) NOT NULL DEFAULT '400', - `io_priority` int(11) NOT NULL DEFAULT '4', - `nameserver` varchar(255) NOT NULL DEFAULT '8.8.8.8 8.8.4.4', - `create_dns` varchar(1) NOT NULL DEFAULT 'n', - `capability` text, - `features` text, - `iptabless` text, - `config` mediumtext, - `custom` text, - PRIMARY KEY (`vm_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- --- Dumping data for table `openvz_vm` --- - --- -------------------------------------------------------- - --- --- Table structure for table `remote_session` --- - -CREATE TABLE `remote_session` ( - `remote_session` varchar(64) NOT NULL DEFAULT '', - `remote_userid` int(11) unsigned NOT NULL DEFAULT '0', - `remote_functions` text, - `client_login` tinyint(1) unsigned NOT NULL default '0', - `tstamp` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`remote_session`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `remote_user` --- - -CREATE TABLE `remote_user` ( - `remote_userid` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `remote_username` varchar(64) NOT NULL DEFAULT '', - `remote_password` varchar(64) NOT NULL DEFAULT '', - `remote_access` enum('y','n') NOT NULL DEFAULT 'y', - `remote_ips` TEXT, - `remote_functions` text, - PRIMARY KEY (`remote_userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `server` --- - -CREATE TABLE `server` ( - `server_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_name` varchar(255) NOT NULL default '', - `mail_server` tinyint(1) NOT NULL default '0', - `web_server` tinyint(1) NOT NULL default '0', - `dns_server` tinyint(1) NOT NULL default '0', - `file_server` tinyint(1) NOT NULL default '0', - `db_server` tinyint(1) NOT NULL default '0', - `vserver_server` tinyint(1) NOT NULL default '0', - `proxy_server` tinyint(1) NOT NULL default '0', - `firewall_server` tinyint(1) NOT NULL default '0', - `xmpp_server` tinyint(1) NOT NULL default '0', - `config` text, - `updated` bigint(20) unsigned NOT NULL default '0', - `mirror_server_id` int(11) unsigned NOT NULL default '0', - `dbversion` int(11) unsigned NOT NULL default '1', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `server_ip` --- - -CREATE TABLE `server_ip` ( - `server_ip_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `client_id` int(11) unsigned NOT NULL default '0', - `ip_type` enum( 'IPv4', 'IPv6' ) NOT NULL DEFAULT 'IPv4', - `ip_address` varchar(39) default NULL, - `virtualhost` enum('n','y') NOT NULL default 'y', - `virtualhost_port` varchar(255) default '80,443', - PRIMARY KEY (`server_ip_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `server_ip_map` --- - -CREATE TABLE `server_ip_map` ( - `server_ip_map_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `source_ip` varchar(15) DEFAULT NULL, - `destination_ip` varchar(35) DEFAULT '', - `active` enum('n','y') NOT NULL DEFAULT 'y', - PRIMARY KEY (`server_ip_map_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `server_php` --- - -CREATE TABLE `server_php` ( - `server_php_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `client_id` int(11) unsigned NOT NULL DEFAULT '0', - `name` varchar(255) DEFAULT NULL, - `php_fastcgi_binary` varchar(255) DEFAULT NULL, - `php_fastcgi_ini_dir` varchar(255) DEFAULT NULL, - `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 ; - --- -------------------------------------------------------- - --- --- Table structure for table `shell_user` --- - -CREATE TABLE `shell_user` ( - `shell_user_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `parent_domain_id` int(11) unsigned NOT NULL default '0', - `username` varchar(64) default NULL, - `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) default NULL, - `quota_size` bigint(20) NOT NULL default '-1', - `active` enum('n','y') NOT NULL default 'y', - `puser` varchar(255) default NULL, - `pgroup` varchar(255) default NULL, - `shell` varchar(255) NOT NULL default '/bin/bash', - `dir` varchar(255) default NULL, - `chroot` varchar(255) NOT NULL DEFAULT '', - `ssh_rsa` text, - PRIMARY KEY (`shell_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_package` --- - -CREATE TABLE `software_package` ( - `package_id` int(11) unsigned NOT NULL auto_increment, - `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `package_title` varchar(64) NOT NULL DEFAULT '', - `package_description` text, - `package_version` varchar(8) default NULL, - `package_type` enum('ispconfig','app','web') NOT NULL default 'app', - `package_installable` enum('yes','no','key') NOT NULL default 'yes', - `package_requires_db` enum('no','mysql') NOT NULL default 'no', - `package_remote_functions` text, - `package_key` varchar(255) NOT NULL DEFAULT '', - `package_config` text, - PRIMARY KEY (`package_id`), - UNIQUE KEY `package_name` (`package_name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_repo` --- - -CREATE TABLE `software_repo` ( - `software_repo_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `repo_name` varchar(64) default NULL, - `repo_url` varchar(255) default NULL, - `repo_username` varchar(64) default NULL, - `repo_password` varchar(64) default NULL, - `active` enum('n','y') NOT NULL default 'y', - PRIMARY KEY (`software_repo_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_update` --- - -CREATE TABLE `software_update` ( - `software_update_id` int(11) unsigned NOT NULL auto_increment, - `software_repo_id` int(11) unsigned NOT NULL DEFAULT '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `update_url` varchar(255) NOT NULL DEFAULT '', - `update_md5` varchar(255) NOT NULL DEFAULT '', - `update_dependencies` varchar(255) NOT NULL DEFAULT '', - `update_title` varchar(64) NOT NULL DEFAULT '', - `v1` tinyint(1) NOT NULL default '0', - `v2` tinyint(1) NOT NULL default '0', - `v3` tinyint(1) NOT NULL default '0', - `v4` tinyint(1) NOT NULL default '0', - `type` enum('full','update') NOT NULL default 'full', - PRIMARY KEY (`software_update_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `software_update_inst` --- - -CREATE TABLE `software_update_inst` ( - `software_update_inst_id` int(11) unsigned NOT NULL auto_increment, - `software_update_id` int(11) unsigned NOT NULL default '0', - `package_name` varchar(64) NOT NULL DEFAULT '', - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `status` enum('none','installing','installed','deleting','deleted','failed') NOT NULL default 'none', - PRIMARY KEY (`software_update_inst_id`), - UNIQUE KEY `software_update_id` (`software_update_id`,`package_name`,`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `spamfilter_policy` --- - -CREATE TABLE `spamfilter_policy` ( - `id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `policy_name` varchar(64) default NULL, - `virus_lover` enum('N','Y') default 'N', - `spam_lover` enum('N','Y') default 'N', - `banned_files_lover` enum('N','Y') default 'N', - `bad_header_lover` enum('N','Y') default 'N', - `bypass_virus_checks` enum('N','Y') default 'N', - `bypass_spam_checks` enum('N','Y') default 'N', - `bypass_banned_checks` enum('N','Y') default 'N', - `bypass_header_checks` enum('N','Y') default 'N', - `spam_modifies_subj` enum('N','Y') default 'N', - `virus_quarantine_to` varchar(255) default NULL, - `spam_quarantine_to` varchar(255) default NULL, - `banned_quarantine_to` varchar(255) default NULL, - `bad_header_quarantine_to` varchar(255) default NULL, - `clean_quarantine_to` varchar(255) default NULL, - `other_quarantine_to` varchar(255) default NULL, - `spam_tag_level` DECIMAL(5,2) default NULL, - `spam_tag2_level` DECIMAL(5,2) default NULL, - `spam_kill_level` DECIMAL(5,2) default NULL, - `spam_dsn_cutoff_level` DECIMAL(5,2) default NULL, - `spam_quarantine_cutoff_level` DECIMAL(5,2) default NULL, - `addr_extension_virus` varchar(64) default NULL, - `addr_extension_spam` varchar(64) default NULL, - `addr_extension_banned` varchar(64) default NULL, - `addr_extension_bad_header` varchar(64) default NULL, - `warnvirusrecip` enum('N','Y') default 'N', - `warnbannedrecip` enum('N','Y') default 'N', - `warnbadhrecip` enum('N','Y') default 'N', - `newvirus_admin` varchar(64) default NULL, - `virus_admin` varchar(64) default NULL, - `banned_admin` varchar(64) default NULL, - `bad_header_admin` varchar(64) default NULL, - `spam_admin` varchar(64) default NULL, - `spam_subject_tag` varchar(64) default NULL, - `spam_subject_tag2` varchar(64) default NULL, - `message_size_limit` int(11) unsigned default NULL, - `banned_rulenames` varchar(64) default NULL, - `policyd_quota_in` int(11) NOT NULL DEFAULT '-1', - `policyd_quota_in_period` int(11) NOT NULL DEFAULT '24', - `policyd_quota_out` int(11) NOT NULL DEFAULT '-1', - `policyd_quota_out_period` int(11) NOT NULL DEFAULT '24', - `policyd_greylist` ENUM( 'Y', 'N' ) NOT NULL DEFAULT 'N', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `spamfilter_users` --- - -CREATE TABLE `spamfilter_users` ( - `id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `priority` tinyint(3) unsigned NOT NULL default '7', - `policy_id` int(11) unsigned NOT NULL default '1', - `email` varchar(255) NOT NULL DEFAULT '', - `fullname` varchar(64) default NULL, - `local` varchar(1) default NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `email` (`email`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `spamfilter_wblist` --- - -CREATE TABLE `spamfilter_wblist` ( - `wblist_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) NOT NULL DEFAULT '', - `sys_perm_group` varchar(5) NOT NULL DEFAULT '', - `sys_perm_other` varchar(5) NOT NULL DEFAULT '', - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `wb` enum('W','B') NOT NULL default 'W', - `rid` int(11) unsigned NOT NULL DEFAULT '0', - `email` varchar(255) NOT NULL DEFAULT '', - `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', - `active` enum('y','n') NOT NULL default 'y', - PRIMARY KEY (`wblist_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `support_message` --- - -CREATE TABLE `support_message` ( - `support_message_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `recipient_id` int(11) unsigned NOT NULL default '0', - `sender_id` int(11) unsigned NOT NULL default '0', - `subject` varchar(255) default NULL, - `message` text default NULL, - `tstamp` int(11) NOT NULL default '0', - PRIMARY KEY (`support_message_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_config` --- - -CREATE TABLE `sys_config` ( - `group` varchar(64) NOT NULL DEFAULT '', - `name` varchar(64) NOT NULL DEFAULT '', - `value` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`group`, `name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - --- -------------------------------------------------------- - --- --- Table structure for table `sys_cron` --- - -CREATE TABLE IF NOT EXISTS `sys_cron` ( - `name` varchar(50) NOT NULL DEFAULT '', - `last_run` datetime NULL DEFAULT NULL, - `next_run` datetime NULL DEFAULT NULL, - `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', - PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - --- -------------------------------------------------------- - --- --- Table structure for table `sys_datalog` --- - -CREATE TABLE `sys_datalog` ( - `datalog_id` int(11) unsigned NOT NULL auto_increment, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `dbtable` varchar(255) NOT NULL default '', - `dbidx` varchar(255) NOT NULL default '', - `action` char(1) NOT NULL default '', - `tstamp` int(11) NOT NULL default '0', - `user` varchar(255) NOT NULL default '', - `data` longtext, - `status` set('pending','ok','warning','error') NOT NULL default 'ok', - `error` mediumtext, - `session_id` varchar(64) NOT NULL DEFAULT '', - PRIMARY KEY (`datalog_id`), - KEY `server_id` (`server_id`,`status`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_dbsync` --- - -CREATE TABLE `sys_dbsync` ( - `id` int(11) unsigned NOT NULL auto_increment, - `jobname` varchar(64) NOT NULL default '', - `sync_interval_minutes` int(11) unsigned NOT NULL default '0', - `db_type` varchar(16) NOT NULL default '', - `db_host` varchar(255) NOT NULL default '', - `db_name` varchar(64) NOT NULL default '', - `db_username` varchar(64) NOT NULL default '', - `db_password` varchar(64) NOT NULL default '', - `db_tables` varchar(255) NOT NULL default 'admin,forms', - `empty_datalog` int(11) unsigned NOT NULL default '0', - `sync_datalog_external` int(11) unsigned NOT NULL default '0', - `active` tinyint(1) NOT NULL default '1', - `last_datalog_id` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `last_datalog_id` (`last_datalog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_filesync` --- - -CREATE TABLE `sys_filesync` ( - `id` int(11) unsigned NOT NULL auto_increment, - `jobname` varchar(64) NOT NULL default '', - `sync_interval_minutes` int(11) unsigned NOT NULL default '0', - `ftp_host` varchar(255) NOT NULL default '', - `ftp_path` varchar(255) NOT NULL default '', - `ftp_username` varchar(64) NOT NULL default '', - `ftp_password` varchar(64) NOT NULL default '', - `local_path` varchar(255) NOT NULL default '', - `wput_options` varchar(255) NOT NULL default '--timestamping --reupload --dont-continue', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_group` --- - -CREATE TABLE `sys_group` ( - `groupid` int(11) unsigned NOT NULL auto_increment, - `name` varchar(64) NOT NULL default '', - `description` text, - `client_id` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`groupid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_ini` --- - -CREATE TABLE `sys_ini` ( - `sysini_id` int(11) unsigned NOT NULL auto_increment, - `config` longtext, - `default_logo` text NOT NULL, - `custom_logo` text NOT NULL, - PRIMARY KEY (`sysini_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_log` --- - -CREATE TABLE `sys_log` ( - `syslog_id` int(11) unsigned NOT NULL auto_increment, - `server_id` int(11) unsigned NOT NULL default '0', - `datalog_id` int(11) unsigned NOT NULL default '0', - `loglevel` tinyint(4) NOT NULL default '0', - `tstamp` int(11) unsigned NOT NULL DEFAULT '0', - `message` text, - PRIMARY KEY (`syslog_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_remoteaction` --- - -CREATE TABLE `sys_remoteaction` ( - `action_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `tstamp` int(11) NOT NULL DEFAULT '0', - `action_type` varchar(20) NOT NULL DEFAULT '', - `action_param` mediumtext, - `action_state` enum('pending','ok','warning','error') NOT NULL DEFAULT 'pending', - `response` mediumtext, - PRIMARY KEY (`action_id`), - KEY `server_id` (`server_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_session` --- - -CREATE TABLE `sys_session` ( - `session_id` varchar(64) NOT NULL DEFAULT '', - `date_created` datetime NULL DEFAULT NULL, - `last_updated` datetime NULL DEFAULT NULL, - `permanent` enum('n','y') NOT NULL DEFAULT 'n', - `session_data` longtext, - PRIMARY KEY (`session_id`), - KEY `last_updated` (`last_updated`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_theme` --- - -CREATE TABLE IF NOT EXISTS `sys_theme` ( - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `var_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `tpl_name` varchar(32) NOT NULL DEFAULT '', - `username` varchar(64) NOT NULL DEFAULT '', - `logo_url` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`var_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `sys_user` --- - -CREATE TABLE `sys_user` ( - `userid` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by userid', - `sys_groupid` int(11) unsigned NOT NULL default '1' COMMENT 'Created by groupid', - `sys_perm_user` varchar(5) NOT NULL default 'riud', - `sys_perm_group` varchar(5) NOT NULL default 'riud', - `sys_perm_other` varchar(5) NOT NULL default '', - `username` varchar(64) NOT NULL default '', - `passwort` varchar(64) NOT NULL default '', - `modules` varchar(255) NOT NULL default '', - `startmodule` varchar(255) NOT NULL default '', - `app_theme` varchar(32) NOT NULL default 'default', - `typ` varchar(16) NOT NULL default 'user', - `active` tinyint(1) NOT NULL default '1', - `language` varchar(2) NOT NULL default 'en', - `groups` TEXT, - `default_group` int(11) unsigned NOT NULL default '0', - `client_id` int(11) unsigned NOT NULL default '0', - `id_rsa` VARCHAR( 2000 ) NOT NULL default '', - `ssh_rsa` VARCHAR( 600 ) NOT NULL default '', - `lost_password_function` tinyint(1) NOT NULL default '1', - `lost_password_hash` VARCHAR(50) NOT NULL default '', - `lost_password_reqtime` DATETIME NULL default NULL, - PRIMARY KEY (`userid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `webdav_user` --- - -CREATE TABLE `webdav_user` ( - `webdav_user_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', - `username` varchar(64) DEFAULT NULL, - `username_prefix` varchar(50) NOT NULL default '', - `password` varchar(64) DEFAULT NULL, - `active` enum('n','y') NOT NULL DEFAULT 'y', - `dir` varchar(255) DEFAULT NULL, - PRIMARY KEY (`webdav_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `web_backup` --- - -CREATE TABLE `web_backup` ( - `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `server_id` int(10) unsigned NOT NULL DEFAULT '0', - `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0', - `backup_type` enum('web','mysql','mongodb') NOT NULL DEFAULT 'web', - `backup_mode` varchar(64) NOT NULL DEFAULT '', - `tstamp` int(10) unsigned NOT NULL DEFAULT '0', - `filename` varchar(255) NOT NULL DEFAULT '', - `filesize` VARCHAR(20) NOT NULL DEFAULT '', - PRIMARY KEY (`backup_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `web_database` --- - -CREATE TABLE `web_database` ( - `database_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) unsigned NOT NULL DEFAULT '0', - `parent_domain_id` int(11) unsigned NOT NULL DEFAULT '0', - `type` varchar(16) NOT NULL DEFAULT 'y', - `database_name` varchar(64) DEFAULT NULL, - `database_name_prefix` varchar(50) NOT NULL default '', - `database_quota` int(11) DEFAULT NULL, - `quota_exceeded` enum('n','y') NOT NULL DEFAULT 'n', - `last_quota_notification` date NULL default NULL, - `database_user_id` int(11) unsigned DEFAULT NULL, - `database_ro_user_id` int(11) unsigned DEFAULT NULL, - `database_charset` varchar(64) DEFAULT NULL, - `remote_access` enum('n','y') NOT NULL DEFAULT 'y', - `remote_ips` text, - `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none', - `backup_copies` INT NOT NULL DEFAULT '1', - `active` enum('n','y') NOT NULL DEFAULT 'y', - PRIMARY KEY (`database_id`), - KEY `database_user_id` (`database_user_id`), - KEY `database_ro_user_id` (`database_ro_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `web_database_user` --- - -CREATE TABLE IF NOT EXISTS `web_database_user` ( - `database_user_id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_groupid` int(11) unsigned NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) UNSIGNED NOT NULL DEFAULT '0', - `database_user` varchar(64) DEFAULT NULL, - `database_user_prefix` varchar(50) NOT NULL default '', - `database_password` varchar(64) DEFAULT NULL, - `database_password_mongo` varchar(32) DEFAULT NULL, - PRIMARY KEY (`database_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `web_domain` --- - -CREATE TABLE `web_domain` ( - `domain_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) default NULL, - `sys_perm_group` varchar(5) default NULL, - `sys_perm_other` varchar(5) default NULL, - `server_id` int(11) unsigned NOT NULL default '0', - `ip_address` varchar(39) default NULL, - `ipv6_address` VARCHAR( 255 ) default NULL, - `domain` varchar(255) default NULL, - `type` varchar(32) default NULL, - `parent_domain_id` int(11) unsigned NOT NULL default '0', - `vhost_type` varchar(32) default NULL, - `document_root` varchar(255) default NULL, - `web_folder` varchar(100) default NULL, - `system_user` varchar(255) default NULL, - `system_group` varchar(255) default NULL, - `hd_quota` bigint(20) NOT NULL default '0', - `traffic_quota` bigint(20) NOT NULL default '-1', - `cgi` enum('n','y') NOT NULL default 'y', - `ssi` enum('n','y') NOT NULL default 'y', - `suexec` enum('n','y') NOT NULL default 'y', - `errordocs` tinyint(1) NOT NULL default '1', - `is_subdomainwww` tinyint(1) NOT NULL default '1', - `subdomain` enum('none','www','*') NOT NULL default 'none', - `php` varchar(32) NOT NULL default 'y', - `ruby` enum('n','y') NOT NULL default 'n', - `python` enum('n','y') NOT NULL default 'n', - `perl` enum('n','y') NOT NULL default 'n', - `redirect_type` varchar(255) default NULL, - `redirect_path` varchar(255) default NULL, - `seo_redirect` varchar(255) default NULL, - `rewrite_to_https` ENUM('y','n') NOT NULL DEFAULT 'n', - `ssl` enum('n','y') NOT NULL default 'n', - `ssl_letsencrypt` enum('n','y') NOT NULL DEFAULT 'n', - `ssl_letsencrypt_exclude` enum('n','y') NOT NULL DEFAULT 'n', - `ssl_state` varchar(255) NULL, - `ssl_locality` varchar(255) NULL, - `ssl_organisation` varchar(255) NULL, - `ssl_organisation_unit` varchar(255) NULL, - `ssl_country` varchar(255) NULL, - `ssl_domain` varchar(255) NULL, - `ssl_request` mediumtext NULL, - `ssl_cert` mediumtext NULL, - `ssl_bundle` mediumtext NULL, - `ssl_key` mediumtext NULL, - `ssl_action` varchar(16) NULL, - `stats_password` varchar(255) default NULL, - `stats_type` varchar(255) default 'awstats', - `allow_override` varchar(255) NOT NULL default 'All', - `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', - `pm_min_spare_servers` int(11) NOT NULL DEFAULT '1', - `pm_max_spare_servers` int(11) NOT NULL DEFAULT '5', - `pm_process_idle_timeout` int(11) NOT NULL DEFAULT '10', - `pm_max_requests` int(11) NOT NULL DEFAULT '0', - `php_open_basedir` mediumtext, - `custom_php_ini` mediumtext, - `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none', - `backup_copies` INT NOT NULL DEFAULT '1', - `backup_excludes` mediumtext, - `active` enum('n','y') NOT NULL default 'y', - `traffic_quota_lock` enum('n','y') NOT NULL default 'n', - `fastcgi_php_version` varchar(255) DEFAULT NULL, - `proxy_directives` mediumtext, - `enable_spdy` ENUM('y','n') NULL DEFAULT 'n', - `last_quota_notification` date NULL default NULL, - `rewrite_rules` mediumtext, - `added_date` date NULL DEFAULT NULL, - `added_by` varchar(255) DEFAULT NULL, - `directive_snippets_id` int(11) unsigned NOT NULL default '0', - `enable_pagespeed` ENUM('y','n') NOT NULL DEFAULT 'n', - `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 '10', - PRIMARY KEY (`domain_id`), - UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `web_folder` --- - -CREATE TABLE IF NOT EXISTS `web_folder` ( - `web_folder_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `parent_domain_id` int(11) NOT NULL DEFAULT '0', - `path` varchar(255) DEFAULT NULL, - `active` varchar(255) NOT NULL DEFAULT 'y', - PRIMARY KEY (`web_folder_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- --- Dumping data for table `web_folder` --- - - --- -------------------------------------------------------- - --- --- Table structure for table `web_folder_user` --- - -CREATE TABLE IF NOT EXISTS `web_folder_user` ( - `web_folder_user_id` bigint(20) NOT NULL AUTO_INCREMENT, - `sys_userid` int(11) NOT NULL DEFAULT '0', - `sys_groupid` int(11) NOT NULL DEFAULT '0', - `sys_perm_user` varchar(5) DEFAULT NULL, - `sys_perm_group` varchar(5) DEFAULT NULL, - `sys_perm_other` varchar(5) DEFAULT NULL, - `server_id` int(11) NOT NULL DEFAULT '0', - `web_folder_id` int(11) NOT NULL DEFAULT '0', - `username` varchar(255) DEFAULT NULL, - `password` varchar(255) DEFAULT NULL, - `active` varchar(255) NOT NULL DEFAULT 'y', - PRIMARY KEY (`web_folder_user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- --- Dumping data for table `web_folder_user` --- - --- -------------------------------------------------------- - --- --- Table structure for table `web_traffic` --- - -CREATE TABLE `web_traffic` ( - `hostname` varchar(255) NOT NULL DEFAULT '', - `traffic_date` date NULL DEFAULT NULL, - `traffic_bytes` bigint(32) unsigned NOT NULL default '0', - UNIQUE KEY (`hostname`,`traffic_date`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `xmpp_domain` --- - -CREATE TABLE `xmpp_domain` ( - `domain_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - - `management_method` ENUM( 'normal', 'maildomain' ) NOT NULL default 'normal', - `public_registration` ENUM( 'n', 'y' ) NOT NULL default 'n', - `registration_url` varchar(255) NOT NULL DEFAULT '', - `registration_message` varchar(255) NOT NULL DEFAULT '', - `domain_admins` text, - - `use_pubsub` enum('n','y') NOT NULL DEFAULT 'n', - `use_proxy` enum('n','y') NOT NULL DEFAULT 'n', - `use_anon_host` enum('n','y') NOT NULL DEFAULT 'n', - - `use_vjud` enum('n','y') NOT NULL DEFAULT 'n', - `vjud_opt_mode` enum('in', 'out') NOT NULL DEFAULT 'in', - - `use_muc_host` enum('n','y') NOT NULL DEFAULT 'n', - `muc_name` varchar(30) NOT NULL DEFAULT '', - `muc_restrict_room_creation` enum('n', 'y', 'm') NOT NULL DEFAULT 'm', - `muc_admins` text, - `use_pastebin` enum('n','y') NOT NULL DEFAULT 'n', - `pastebin_expire_after` int(3) NOT NULL DEFAULT 48, - `pastebin_trigger` varchar(10) NOT NULL DEFAULT '!paste', - `use_http_archive` enum('n','y') NOT NULL DEFAULT 'n', - `http_archive_show_join` enum('n', 'y') NOT NULL DEFAULT 'n', - `http_archive_show_status` enum('n', 'y') NOT NULL DEFAULT 'n', - `use_status_host` enum('n','y') NOT NULL DEFAULT 'n', - - `ssl_state` varchar(255) NULL, - `ssl_locality` varchar(255) NULL, - `ssl_organisation` varchar(255) NULL, - `ssl_organisation_unit` varchar(255) NULL, - `ssl_country` varchar(255) NULL, - `ssl_email` varchar(255) NULL, - `ssl_request` mediumtext NULL, - `ssl_cert` mediumtext NULL, - `ssl_bundle` mediumtext NULL, - `ssl_key` mediumtext NULL, - `ssl_action` varchar(16) NULL, - - `active` enum('n','y') NOT NULL DEFAULT 'n', - PRIMARY KEY (`domain_id`), - KEY `server_id` (`server_id`,`domain`), - KEY `domain_active` (`domain`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Table structure for table `xmpp_user` --- - -CREATE TABLE `xmpp_user` ( - `xmppuser_id` int(11) unsigned NOT NULL auto_increment, - `sys_userid` int(11) unsigned NOT NULL default '0', - `sys_groupid` int(11) unsigned NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) unsigned NOT NULL default '0', - `jid` varchar(255) NOT NULL default '', - `password` varchar(255) NOT NULL default '', - `active` enum('n','y') NOT NULL DEFAULT 'n', - PRIMARY KEY (`xmppuser_id`), - KEY `server_id` (`server_id`,`jid`), - KEY `jid_active` (`jid`,`active`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- -------------------------------------------------------- --- -------------------------------------------------------- --- DB-DATA --- -------------------------------------------------------- --- -------------------------------------------------------- - --- --- Dumping data for table `aps_settings` --- - -INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(1, 'ignore-php-extension', ''); -INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(2, 'ignore-php-configuration', ''); -INSERT INTO `aps_settings` (`id`, `name`, `value`) VALUES(3, 'ignore-webserver-module', ''); - --- -------------------------------------------------------- - --- --- Dumping data for table `country` --- - -INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`, `eu`) VALUES -('AF', 'AFGHANISTAN', 'Afghanistan', 'AFG', 4, 'n'), -('AL', 'ALBANIA', 'Albania', 'ALB', 8, 'n'), -('DZ', 'ALGERIA', 'Algeria', 'DZA', 12, 'n'), -('AS', 'AMERICAN SAMOA', 'American Samoa', 'ASM', 16, 'n'), -('AD', 'ANDORRA', 'Andorra', 'AND', 20, 'n'), -('AO', 'ANGOLA', 'Angola', 'AGO', 24, 'n'), -('AI', 'ANGUILLA', 'Anguilla', 'AIA', 660, 'n'), -('AQ', 'ANTARCTICA', 'Antarctica', NULL, NULL, 'n'), -('AG', 'ANTIGUA AND BARBUDA', 'Antigua and Barbuda', 'ATG', 28, 'n'), -('AR', 'ARGENTINA', 'Argentina', 'ARG', 32, 'n'), -('AM', 'ARMENIA', 'Armenia', 'ARM', 51, 'n'), -('AW', 'ARUBA', 'Aruba', 'ABW', 533, 'n'), -('AU', 'AUSTRALIA', 'Australia', 'AUS', 36, 'n'), -('AT', 'AUSTRIA', 'Austria', 'AUT', 40, 'y'), -('AZ', 'AZERBAIJAN', 'Azerbaijan', 'AZE', 31, 'n'), -('BS', 'BAHAMAS', 'Bahamas', 'BHS', 44, 'n'), -('BH', 'BAHRAIN', 'Bahrain', 'BHR', 48, 'n'), -('BD', 'BANGLADESH', 'Bangladesh', 'BGD', 50, 'n'), -('BB', 'BARBADOS', 'Barbados', 'BRB', 52, 'n'), -('BY', 'BELARUS', 'Belarus', 'BLR', 112, 'n'), -('BE', 'BELGIUM', 'Belgium', 'BEL', 56, 'y'), -('BZ', 'BELIZE', 'Belize', 'BLZ', 84, 'n'), -('BJ', 'BENIN', 'Benin', 'BEN', 204, 'n'), -('BM', 'BERMUDA', 'Bermuda', 'BMU', 60, 'n'), -('BT', 'BHUTAN', 'Bhutan', 'BTN', 64, 'n'), -('BO', 'BOLIVIA', 'Bolivia', 'BOL', 68, 'n'), -('BA', 'BOSNIA AND HERZEGOVINA', 'Bosnia and Herzegovina', 'BIH', 70, 'n'), -('BW', 'BOTSWANA', 'Botswana', 'BWA', 72, 'n'), -('BV', 'BOUVET ISLAND', 'Bouvet Island', NULL, NULL, 'n'), -('BR', 'BRAZIL', 'Brazil', 'BRA', 76, 'n'), -('IO', 'BRITISH INDIAN OCEAN TERRITORY', 'British Indian Ocean Territory', NULL, NULL, 'n'), -('BN', 'BRUNEI DARUSSALAM', 'Brunei Darussalam', 'BRN', 96, 'n'), -('BG', 'BULGARIA', 'Bulgaria', 'BGR', 100, 'y'), -('BF', 'BURKINA FASO', 'Burkina Faso', 'BFA', 854, 'n'), -('BI', 'BURUNDI', 'Burundi', 'BDI', 108, 'n'), -('KH', 'CAMBODIA', 'Cambodia', 'KHM', 116, 'n'), -('CM', 'CAMEROON', 'Cameroon', 'CMR', 120, 'n'), -('CA', 'CANADA', 'Canada', 'CAN', 124, 'n'), -('CV', 'CAPE VERDE', 'Cape Verde', 'CPV', 132, 'n'), -('KY', 'CAYMAN ISLANDS', 'Cayman Islands', 'CYM', 136, 'n'), -('CF', 'CENTRAL AFRICAN REPUBLIC', 'Central African Republic', 'CAF', 140, 'n'), -('TD', 'CHAD', 'Chad', 'TCD', 148, 'n'), -('CL', 'CHILE', 'Chile', 'CHL', 152, 'n'), -('CN', 'CHINA', 'China', 'CHN', 156, 'n'), -('CX', 'CHRISTMAS ISLAND', 'Christmas Island', NULL, NULL, 'n'), -('CC', 'COCOS (KEELING) ISLANDS', 'Cocos (Keeling) Islands', NULL, NULL, 'n'), -('CO', 'COLOMBIA', 'Colombia', 'COL', 170, 'n'), -('KM', 'COMOROS', 'Comoros', 'COM', 174, 'n'), -('CG', 'CONGO', 'Congo', 'COG', 178, 'n'), -('CD', 'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 'Congo, the Democratic Republic of the', 'COD', 180, 'n'), -('CK', 'COOK ISLANDS', 'Cook Islands', 'COK', 184, 'n'), -('CR', 'COSTA RICA', 'Costa Rica', 'CRI', 188, 'n'), -('CI', 'COTE D''IVOIRE', 'Cote D''Ivoire', 'CIV', 384, 'n'), -('HR', 'CROATIA', 'Croatia', 'HRV', 191, 'y'), -('CU', 'CUBA', 'Cuba', 'CUB', 192, 'n'), -('CY', 'CYPRUS', 'Cyprus', 'CYP', 196, 'y'), -('CZ', 'CZECH REPUBLIC', 'Czech Republic', 'CZE', 203, 'y'), -('DK', 'DENMARK', 'Denmark', 'DNK', 208, 'y'), -('DJ', 'DJIBOUTI', 'Djibouti', 'DJI', 262, 'n'), -('DM', 'DOMINICA', 'Dominica', 'DMA', 212, 'n'), -('DO', 'DOMINICAN REPUBLIC', 'Dominican Republic', 'DOM', 214, 'n'), -('EC', 'ECUADOR', 'Ecuador', 'ECU', 218, 'n'), -('EG', 'EGYPT', 'Egypt', 'EGY', 818, 'n'), -('SV', 'EL SALVADOR', 'El Salvador', 'SLV', 222, 'n'), -('GQ', 'EQUATORIAL GUINEA', 'Equatorial Guinea', 'GNQ', 226, 'n'), -('ER', 'ERITREA', 'Eritrea', 'ERI', 232, 'n'), -('EE', 'ESTONIA', 'Estonia', 'EST', 233, 'y'), -('ET', 'ETHIOPIA', 'Ethiopia', 'ETH', 231, 'n'), -('FK', 'FALKLAND ISLANDS (MALVINAS)', 'Falkland Islands (Malvinas)', 'FLK', 238, 'n'), -('FO', 'FAROE ISLANDS', 'Faroe Islands', 'FRO', 234, 'n'), -('FJ', 'FIJI', 'Fiji', 'FJI', 242, 'n'), -('FI', 'FINLAND', 'Finland', 'FIN', 246, 'y'), -('FR', 'FRANCE', 'France', 'FRA', 250, 'y'), -('GF', 'FRENCH GUIANA', 'French Guiana', 'GUF', 254, 'n'), -('PF', 'FRENCH POLYNESIA', 'French Polynesia', 'PYF', 258, 'n'), -('TF', 'FRENCH SOUTHERN TERRITORIES', 'French Southern Territories', NULL, NULL, 'n'), -('GA', 'GABON', 'Gabon', 'GAB', 266, 'n'), -('GM', 'GAMBIA', 'Gambia', 'GMB', 270, 'n'), -('GE', 'GEORGIA', 'Georgia', 'GEO', 268, 'n'), -('DE', 'GERMANY', 'Germany', 'DEU', 276, 'y'), -('GH', 'GHANA', 'Ghana', 'GHA', 288, 'n'), -('GI', 'GIBRALTAR', 'Gibraltar', 'GIB', 292, 'n'), -('GR', 'GREECE', 'Greece', 'GRC', 300, 'y'), -('GL', 'GREENLAND', 'Greenland', 'GRL', 304, 'n'), -('GD', 'GRENADA', 'Grenada', 'GRD', 308, 'n'), -('GP', 'GUADELOUPE', 'Guadeloupe', 'GLP', 312, 'n'), -('GU', 'GUAM', 'Guam', 'GUM', 316, 'n'), -('GT', 'GUATEMALA', 'Guatemala', 'GTM', 320, 'n'), -('GN', 'GUINEA', 'Guinea', 'GIN', 324, 'n'), -('GW', 'GUINEA-BISSAU', 'Guinea-Bissau', 'GNB', 624, 'n'), -('GY', 'GUYANA', 'Guyana', 'GUY', 328, 'n'), -('HT', 'HAITI', 'Haiti', 'HTI', 332, 'n'), -('HM', 'HEARD ISLAND AND MCDONALD ISLANDS', 'Heard Island and Mcdonald Islands', NULL, NULL, 'n'), -('VA', 'HOLY SEE (VATICAN CITY STATE)', 'Holy See (Vatican City State)', 'VAT', 336, 'n'), -('HN', 'HONDURAS', 'Honduras', 'HND', 340, 'n'), -('HK', 'HONG KONG', 'Hong Kong', 'HKG', 344, 'n'), -('HU', 'HUNGARY', 'Hungary', 'HUN', 348, 'y'), -('IS', 'ICELAND', 'Iceland', 'ISL', 352, 'n'), -('IN', 'INDIA', 'India', 'IND', 356, 'n'), -('ID', 'INDONESIA', 'Indonesia', 'IDN', 360, 'n'), -('IR', 'IRAN, ISLAMIC REPUBLIC OF', 'Iran, Islamic Republic of', 'IRN', 364, 'n'), -('IQ', 'IRAQ', 'Iraq', 'IRQ', 368, 'n'), -('IE', 'IRELAND', 'Ireland', 'IRL', 372, 'y'), -('IL', 'ISRAEL', 'Israel', 'ISR', 376, 'n'), -('IT', 'ITALY', 'Italy', 'ITA', 380, 'y'), -('JM', 'JAMAICA', 'Jamaica', 'JAM', 388, 'n'), -('JP', 'JAPAN', 'Japan', 'JPN', 392, 'n'), -('JO', 'JORDAN', 'Jordan', 'JOR', 400, 'n'), -('KZ', 'KAZAKHSTAN', 'Kazakhstan', 'KAZ', 398, 'n'), -('KE', 'KENYA', 'Kenya', 'KEN', 404, 'n'), -('KI', 'KIRIBATI', 'Kiribati', 'KIR', 296, 'n'), -('KP', 'KOREA, DEMOCRATIC PEOPLE''S REPUBLIC OF', 'Korea, Democratic People''s Republic of', 'PRK', 408, 'n'), -('KR', 'KOREA, REPUBLIC OF', 'Korea, Republic of', 'KOR', 410, 'n'), -('KW', 'KUWAIT', 'Kuwait', 'KWT', 414, 'n'), -('KG', 'KYRGYZSTAN', 'Kyrgyzstan', 'KGZ', 417, 'n'), -('LA', 'LAO PEOPLE''S DEMOCRATIC REPUBLIC', 'Lao People''s Democratic Republic', 'LAO', 418, 'n'), -('LV', 'LATVIA', 'Latvia', 'LVA', 428, 'y'), -('LB', 'LEBANON', 'Lebanon', 'LBN', 422, 'n'), -('LS', 'LESOTHO', 'Lesotho', 'LSO', 426, 'n'), -('LR', 'LIBERIA', 'Liberia', 'LBR', 430, 'n'), -('LY', 'LIBYAN ARAB JAMAHIRIYA', 'Libyan Arab Jamahiriya', 'LBY', 434, 'n'), -('LI', 'LIECHTENSTEIN', 'Liechtenstein', 'LIE', 438, 'n'), -('LT', 'LITHUANIA', 'Lithuania', 'LTU', 440, 'y'), -('LU', 'LUXEMBOURG', 'Luxembourg', 'LUX', 442, 'y'), -('MO', 'MACAO', 'Macao', 'MAC', 446, 'n'), -('MK', 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 'Macedonia, the Former Yugoslav Republic of', 'MKD', 807, 'n'), -('MG', 'MADAGASCAR', 'Madagascar', 'MDG', 450, 'n'), -('MW', 'MALAWI', 'Malawi', 'MWI', 454, 'n'), -('MY', 'MALAYSIA', 'Malaysia', 'MYS', 458, 'n'), -('MV', 'MALDIVES', 'Maldives', 'MDV', 462, 'n'), -('ML', 'MALI', 'Mali', 'MLI', 466, 'n'), -('MT', 'MALTA', 'Malta', 'MLT', 470, 'y'), -('MH', 'MARSHALL ISLANDS', 'Marshall Islands', 'MHL', 584, 'n'), -('MQ', 'MARTINIQUE', 'Martinique', 'MTQ', 474, 'n'), -('MR', 'MAURITANIA', 'Mauritania', 'MRT', 478, 'n'), -('MU', 'MAURITIUS', 'Mauritius', 'MUS', 480, 'n'), -('YT', 'MAYOTTE', 'Mayotte', NULL, NULL, 'n'), -('MX', 'MEXICO', 'Mexico', 'MEX', 484, 'n'), -('FM', 'MICRONESIA, FEDERATED STATES OF', 'Micronesia, Federated States of', 'FSM', 583, 'n'), -('MD', 'MOLDOVA, REPUBLIC OF', 'Moldova, Republic of', 'MDA', 498, 'n'), -('MC', 'MONACO', 'Monaco', 'MCO', 492, 'n'), -('MN', 'MONGOLIA', 'Mongolia', 'MNG', 496, 'n'), -('MS', 'MONTSERRAT', 'Montserrat', 'MSR', 500, 'n'), -('MA', 'MOROCCO', 'Morocco', 'MAR', 504, 'n'), -('MZ', 'MOZAMBIQUE', 'Mozambique', 'MOZ', 508, 'n'), -('MM', 'MYANMAR', 'Myanmar', 'MMR', 104, 'n'), -('NA', 'NAMIBIA', 'Namibia', 'NAM', 516, 'n'), -('NR', 'NAURU', 'Nauru', 'NRU', 520, 'n'), -('NP', 'NEPAL', 'Nepal', 'NPL', 524, 'n'), -('NL', 'NETHERLANDS', 'Netherlands', 'NLD', 528, 'y'), -('AN', 'NETHERLANDS ANTILLES', 'Netherlands Antilles', 'ANT', 530, 'n'), -('NC', 'NEW CALEDONIA', 'New Caledonia', 'NCL', 540, 'n'), -('NZ', 'NEW ZEALAND', 'New Zealand', 'NZL', 554, 'n'), -('NI', 'NICARAGUA', 'Nicaragua', 'NIC', 558, 'n'), -('NE', 'NIGER', 'Niger', 'NER', 562, 'n'), -('NG', 'NIGERIA', 'Nigeria', 'NGA', 566, 'n'), -('NU', 'NIUE', 'Niue', 'NIU', 570, 'n'), -('NF', 'NORFOLK ISLAND', 'Norfolk Island', 'NFK', 574, 'n'), -('MP', 'NORTHERN MARIANA ISLANDS', 'Northern Mariana Islands', 'MNP', 580, 'n'), -('NO', 'NORWAY', 'Norway', 'NOR', 578, 'n'), -('OM', 'OMAN', 'Oman', 'OMN', 512, 'n'), -('PK', 'PAKISTAN', 'Pakistan', 'PAK', 586, 'n'), -('PW', 'PALAU', 'Palau', 'PLW', 585, 'n'), -('PS', 'PALESTINIAN TERRITORY, OCCUPIED', 'Palestinian Territory, Occupied', NULL, NULL, 'n'), -('PA', 'PANAMA', 'Panama', 'PAN', 591, 'n'), -('PG', 'PAPUA NEW GUINEA', 'Papua New Guinea', 'PNG', 598, 'n'), -('PY', 'PARAGUAY', 'Paraguay', 'PRY', 600, 'n'), -('PE', 'PERU', 'Peru', 'PER', 604, 'n'), -('PH', 'PHILIPPINES', 'Philippines', 'PHL', 608, 'n'), -('PN', 'PITCAIRN', 'Pitcairn', 'PCN', 612, 'n'), -('PL', 'POLAND', 'Poland', 'POL', 616, 'y'), -('PT', 'PORTUGAL', 'Portugal', 'PRT', 620, 'y'), -('PR', 'PUERTO RICO', 'Puerto Rico', 'PRI', 630, 'n'), -('QA', 'QATAR', 'Qatar', 'QAT', 634, 'n'), -('RE', 'REUNION', 'Reunion', 'REU', 638, 'n'), -('RO', 'ROMANIA', 'Romania', 'ROM', 642, 'y'), -('RU', 'RUSSIAN FEDERATION', 'Russian Federation', 'RUS', 643, 'n'), -('RW', 'RWANDA', 'Rwanda', 'RWA', 646, 'n'), -('SH', 'SAINT HELENA', 'Saint Helena', 'SHN', 654, 'n'), -('KN', 'SAINT KITTS AND NEVIS', 'Saint Kitts and Nevis', 'KNA', 659, 'n'), -('LC', 'SAINT LUCIA', 'Saint Lucia', 'LCA', 662, 'n'), -('PM', 'SAINT PIERRE AND MIQUELON', 'Saint Pierre and Miquelon', 'SPM', 666, 'n'), -('VC', 'SAINT VINCENT AND THE GRENADINES', 'Saint Vincent and the Grenadines', 'VCT', 670, 'n'), -('WS', 'SAMOA', 'Samoa', 'WSM', 882, 'n'), -('SM', 'SAN MARINO', 'San Marino', 'SMR', 674, 'n'), -('ST', 'SAO TOME AND PRINCIPE', 'Sao Tome and Principe', 'STP', 678, 'n'), -('SA', 'SAUDI ARABIA', 'Saudi Arabia', 'SAU', 682, 'n'), -('SN', 'SENEGAL', 'Senegal', 'SEN', 686, 'n'), -('RS', 'SERBIA', 'Serbia', 'SRB', 381, 'n'), -('SC', 'SEYCHELLES', 'Seychelles', 'SYC', 690, 'n'), -('SL', 'SIERRA LEONE', 'Sierra Leone', 'SLE', 694, 'n'), -('SG', 'SINGAPORE', 'Singapore', 'SGP', 702, 'n'), -('SK', 'SLOVAKIA', 'Slovakia', 'SVK', 703, 'y'), -('SI', 'SLOVENIA', 'Slovenia', 'SVN', 705, 'y'), -('SB', 'SOLOMON ISLANDS', 'Solomon Islands', 'SLB', 90, 'n'), -('SO', 'SOMALIA', 'Somalia', 'SOM', 706, 'n'), -('ZA', 'SOUTH AFRICA', 'South Africa', 'ZAF', 710, 'n'), -('GS', 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS', 'South Georgia and the South Sandwich Islands', NULL, NULL, 'n'), -('ES', 'SPAIN', 'Spain', 'ESP', 724, 'y'), -('LK', 'SRI LANKA', 'Sri Lanka', 'LKA', 144, 'n'), -('SD', 'SUDAN', 'Sudan', 'SDN', 736, 'n'), -('SR', 'SURINAME', 'Suriname', 'SUR', 740, 'n'), -('SJ', 'SVALBARD AND JAN MAYEN', 'Svalbard and Jan Mayen', 'SJM', 744, 'n'), -('SZ', 'SWAZILAND', 'Swaziland', 'SWZ', 748, 'n'), -('SE', 'SWEDEN', 'Sweden', 'SWE', 752, 'y'), -('CH', 'SWITZERLAND', 'Switzerland', 'CHE', 756, 'n'), -('SY', 'SYRIAN ARAB REPUBLIC', 'Syrian Arab Republic', 'SYR', 760, 'n'), -('TW', 'TAIWAN, PROVINCE OF CHINA', 'Taiwan, Province of China', 'TWN', 158, 'n'), -('TJ', 'TAJIKISTAN', 'Tajikistan', 'TJK', 762, 'n'), -('TZ', 'TANZANIA, UNITED REPUBLIC OF', 'Tanzania, United Republic of', 'TZA', 834, 'n'), -('TH', 'THAILAND', 'Thailand', 'THA', 764, 'n'), -('TL', 'TIMOR-LESTE', 'Timor-Leste', NULL, NULL, 'n'), -('TG', 'TOGO', 'Togo', 'TGO', 768, 'n'), -('TK', 'TOKELAU', 'Tokelau', 'TKL', 772, 'n'), -('TO', 'TONGA', 'Tonga', 'TON', 776, 'n'), -('TT', 'TRINIDAD AND TOBAGO', 'Trinidad and Tobago', 'TTO', 780, 'n'), -('TN', 'TUNISIA', 'Tunisia', 'TUN', 788, 'n'), -('TR', 'TURKEY', 'Turkey', 'TUR', 792, 'n'), -('TM', 'TURKMENISTAN', 'Turkmenistan', 'TKM', 795, 'n'), -('TC', 'TURKS AND CAICOS ISLANDS', 'Turks and Caicos Islands', 'TCA', 796, 'n'), -('TV', 'TUVALU', 'Tuvalu', 'TUV', 798, 'n'), -('UG', 'UGANDA', 'Uganda', 'UGA', 800, 'n'), -('UA', 'UKRAINE', 'Ukraine', 'UKR', 804, 'n'), -('AE', 'UNITED ARAB EMIRATES', 'United Arab Emirates', 'ARE', 784, 'n'), -('GB', 'UNITED KINGDOM', 'United Kingdom', 'GBR', 826, 'y'), -('US', 'UNITED STATES', 'United States', 'USA', 840, 'n'), -('UM', 'UNITED STATES MINOR OUTLYING ISLANDS', 'United States Minor Outlying Islands', NULL, NULL, 'n'), -('UY', 'URUGUAY', 'Uruguay', 'URY', 858, 'n'), -('UZ', 'UZBEKISTAN', 'Uzbekistan', 'UZB', 860, 'n'), -('VU', 'VANUATU', 'Vanuatu', 'VUT', 548, 'n'), -('VE', 'VENEZUELA', 'Venezuela', 'VEN', 862, 'n'), -('VN', 'VIET NAM', 'Viet Nam', 'VNM', 704, 'n'), -('VG', 'VIRGIN ISLANDS, BRITISH', 'Virgin Islands, British', 'VGB', 92, 'n'), -('VI', 'VIRGIN ISLANDS, U.S.', 'Virgin Islands, U.s.', 'VIR', 850, 'n'), -('WF', 'WALLIS AND FUTUNA', 'Wallis and Futuna', 'WLF', 876, 'n'), -('EH', 'WESTERN SAHARA', 'Western Sahara', 'ESH', 732, 'n'), -('YE', 'YEMEN', 'Yemen', 'YEM', 887, 'n'), -('ZM', 'ZAMBIA', 'Zambia', 'ZMB', 894, 'n'), -('ZW', 'ZIMBABWE', 'Zimbabwe', 'ZWE', 716, 'n'), -('ME', 'MONTENEGRO', 'Montenegro', 'MNE', 382, 'n'); - --- -------------------------------------------------------- - --- --- Dumping data for table `dns_template` --- - -INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL,DKIM,DNSSEC', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=7200\nretry=540\nexpire=604800\nminimum=3600\nttl=3600\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|3600\nA|www|{IP}|0|3600\nA|mail|{IP}|0|3600\nNS|{DOMAIN}.|{NS1}.|0|3600\nNS|{DOMAIN}.|{NS2}.|0|3600\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600\nTXT|{DOMAIN}.|v=spf1 mx a ~all|0|3600', 'y'); - - --- -------------------------------------------------------- - --- --- Dumping data for table `help_faq` --- - -INSERT INTO `help_faq` VALUES (1,1,0,'I would like to know ...','Yes, of course.',1,1,'riud','riud','r'); - --- -------------------------------------------------------- - --- --- Dumping data for table `help_faq_sections` --- - -INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); - --- -------------------------------------------------------- - --- --- Dumping data for table `software_repo` --- - -INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n'); - --- -------------------------------------------------------- - --- --- Dumping data for table `spamfilter_policy` --- - -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM*** ', NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - --- -------------------------------------------------------- - --- --- Dumping data for table `sys_group` --- - -INSERT INTO `sys_group` (`groupid`, `name`, `description`, `client_id`) VALUES (1, 'admin', 'Administrators group', 0); - --- -------------------------------------------------------- - --- --- Dumping data for table `sys_ini` --- - -INSERT INTO `sys_ini` (`sysini_id`, `config`, `default_logo`, `custom_logo`) VALUES (1, '', 'data:image/png;base64,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', ''); - --- -------------------------------------------------------- - --- --- Dumping data for table `sys_user` --- - -INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default', 'global', 'themes/default/images/header_logo.png'); -INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default-v2', 'global', 'themes/default-v2/images/header_logo.png'); - --- -------------------------------------------------------- - --- --- Dumping data for table `sys_user` --- - -INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `username`, `passwort`, `modules`, `startmodule`, `app_theme`, `typ`, `active`, `language`, `groups`, `default_group`, `client_id`) VALUES (1, 1, 0, 'riud', 'riud', '', 'admin', '21232f297a57a5a743894a0e4a801fc3', 'dashboard,admin,client,mail,monitor,sites,dns,vm,tools,help', 'dashboard', 'default', 'admin', 1, 'en', '1,2', 1, 0); - --- -------------------------------------------------------- - --- --- Dumping data for table `sys_config` --- - -INSERT INTO sys_config VALUES ('db','db_version','3.1dev'); -INSERT INTO sys_config VALUES ('interface','session_timeout','0'); - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/sql/ispconfig3.sql.rej b/install/sql/ispconfig3.sql.rej deleted file mode 100644 index 6c8d2e4a9c..0000000000 --- a/install/sql/ispconfig3.sql.rej +++ /dev/null @@ -1,23 +0,0 @@ ---- install/sql/ispconfig3.sql -+++ install/sql/ispconfig3.sql -@@ -2522,13 +2527,13 @@ INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `s - -- Dumping data for table `spamfilter_policy` - -- - --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, ''); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); --INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(3, 1, 0, 'riud', 'riud', 'r', 'Wants all spam', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(4, 1, 0, 'riud', 'riud', 'r', 'Wants viruses', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 6.9, 6.9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(5, 1, 0, 'riud', 'riud', 'r', 'Normal', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', '', '', '', '', '', '', 1, 4.5, 50, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '***SPAM***', NULL, NULL, 'y', 4.00, 6.00, 'rewrite_subject', 10.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(6, 1, 0, 'riud', 'riud', 'r', 'Trigger happy', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 5, 5, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'y', 2.00, 4.00, 'rewrite_subject', 8.00); -+INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(7, 1, 0, 'riud', 'riud', 'r', 'Permissive', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, 3, 10, 20, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 7.00, 10.00, 'rewrite_subject', 20.00); - - -- -------------------------------------------------------- - diff --git a/interface/web/admin/form/server_config.tform.php.orig b/interface/web/admin/form/server_config.tform.php.orig deleted file mode 100644 index 1a6c8070cb..0000000000 --- a/interface/web/admin/form/server_config.tform.php.orig +++ /dev/null @@ -1,1956 +0,0 @@ -<?php - -/* - Form Definition - - Tabledefinition - - Datatypes: - - INTEGER (Forces the input to Int) - - DOUBLE - - CURRENCY (Formats the values to currency notation) - - VARCHAR (no format check, maxlength: 255) - - TEXT (no format check) - - DATE (Dateformat, automatic conversion to timestamps) - - Formtype: - - TEXT (Textfield) - - TEXTAREA (Textarea) - - PASSWORD (Password textfield, input is not shown when edited) - - SELECT (Select option field) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hint: - The ID field of the database table is not part of the datafield definition. - The ID field must be always auto incement (int or bigint). - - - */ - -$form["title"] = "Server Config"; -$form["description"] = ""; -$form["name"] = "server_config"; -$form["action"] = "server_config_edit.php"; -$form["db_table"] = "server"; -$form["db_table_idx"] = "server_id"; -$form["db_history"] = "yes"; -$form["tab_default"] = "server"; -$form["list_default"] = "server_config_list.php"; -$form["auth"] = 'yes'; // yes / no - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$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 - -$form["tabs"]['server'] = array( - 'title' => "Server", - 'width' => 70, - 'template' => "templates/server_config_server_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'auto_network_configuration' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'ip_address' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '192.168.0.105', - 'validators' => array(0 => array('type' => 'ISIPV4', - 'errmsg' => 'ip_address_error_wrong'), - ), - 'value' => '', - 'width' => '15', - 'maxlength' => '255' - ), - 'netmask' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '255.255.255.0', - 'validators' => array(0 => array('type' => 'ISIPV4', - 'errmsg' => 'netmask_error_wrong'), - ), - 'value' => '', - 'width' => '15', - 'maxlength' => '255' - ), - 'v6_prefix' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( 0 => array('type' => 'ISV6PREFIX', - 'errmsg' => 'v6_prefix_wrong'), - 1 => array('type' => 'V6PREFIXEND', - 'errmsg' => 'v6_prefix_end'), - 2 => array('type' => 'V6PREFIXLENGTH', - 'errmsg' => 'v6_prefix_length') - ), - 'default' => '' - ), - 'gateway' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '192.168.0.1', - 'validators' => array(0 => array('type' => 'ISIPV4', - 'errmsg' => 'gateway_error_wrong'), - ), - 'value' => '', - 'width' => '15', - 'maxlength' => '255' - ), - 'firewall' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'bastille', - 'value' => array('bastille' => 'bastille', 'ufw' => 'ufw'), - 'width' => '40', - 'maxlength' => '255' - ), - 'hostname' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => 'server1.domain.tld', - 'filters' => array( 0 => array( 'event' => 'SAVE', - 'type' => 'IDNTOASCII'), - 1 => array( 'event' => 'SHOW', - 'type' => 'IDNTOUTF8'), - 2 => array( 'event' => 'SAVE', - 'type' => 'TOLOWER') - ), - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'hostname_error_empty'), - 1 => array ('type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', - 'errmsg'=> 'hostname_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'nameservers' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '192.168.0.1,192.168.0.2', - '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' - ), - 'loglevel' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '2', - 'value' => array('0' => 'Debug', '1' => 'Warnings', '2' => 'Errors'), - 'width' => '40', - 'maxlength' => '255' - ), - 'admin_notify_events' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'value' => array('3' => 'no_notifications_txt', '0' => 'Debug', '1' => 'Warnings', '2' => 'Errors'), - 'width' => '40', - 'maxlength' => '255' - ), - 'backup_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '/var/backup', - 'validators' => array( 0 => array ( 'type' => 'REGEX', - 'regex' => "/(|^\\/{1,2}(?:[\\w-]+[.]?\\/?){5,128})$/", - 'errmsg'=> 'backup_dir_error_regex'), - ), - 'value' => '', - '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', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'backup_mode' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'userzip', - 'value' => array('userzip' => 'backup_mode_userzip', 'rootgz' => 'backup_mode_rootgz'), - 'width' => '40', - 'maxlength' => '255' - ), - 'backup_time' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '0:00', - 'value' => array( '0:00' => '0:00h', - '0:15' => '0:15h', - '0:30' => '0:30h', - '0:45' => '0:45h', - '1:00' => '1:00h', - '1:15' => '1:15h', - '1:30' => '1:30h', - '1:45' => '1:45h', - '2:00' => '2:00h', - '2:15' => '2:15h', - '2:30' => '2:30h', - '2:45' => '2:45h', - '3:00' => '3:00h', - '3:15' => '3:15h', - '3:30' => '3:30h', - '3:45' => '3:45h', - '4:00' => '4:00h', - '4:15' => '4:15h', - '4:30' => '4:30h', - '4:45' => '4:45h', - '5:00' => '5:00h', - '5:15' => '5:15h', - '5:30' => '5:30h', - '5:45' => '5:45h', - '6:00' => '6:00h', - '6:15' => '6:15h', - '6:30' => '6:30h', - '6:45' => '6:45h', - '7:00' => '7:00h', - '7:15' => '7:15h', - '7:30' => '7:30h', - '7:45' => '7:45h', - '8:00' => '8:00h', - '8:15' => '8:15h', - '8:30' => '8:30h', - '8:45' => '8:45h', - '9:00' => '9:00h', - '9:15' => '9:15h', - '9:30' => '9:30h', - '9:45' => '9:45h', - '10:00' => '10:00h', - '10:15' => '10:15h', - '10:30' => '10:30h', - '10:45' => '10:45h', - '11:00' => '11:00h', - '11:15' => '11:15h', - '11:30' => '11:30h', - '11:45' => '11:45h', - '12:00' => '12:00h', - '12:15' => '12:15h', - '12:30' => '12:30h', - '12:45' => '12:45h', - '13:00' => '13:00h', - '13:15' => '13:15h', - '13:30' => '13:30h', - '13:45' => '13:45h', - '14:00' => '14:00h', - '14:15' => '14:15h', - '14:30' => '14:30h', - '14:45' => '14:45h', - '15:00' => '15:00h', - '15:15' => '15:15h', - '15:30' => '15:30h', - '15:45' => '15:45h', - '16:00' => '16:00h', - '16:15' => '16:15h', - '16:30' => '16:30h', - '16:45' => '16:45h', - '17:00' => '17:00h', - '17:15' => '17:15h', - '17:30' => '17:30h', - '17:45' => '17:45h', - '18:00' => '18:00h', - '18:15' => '18:15h', - '18:30' => '18:30h', - '18:45' => '18:45h', - '19:00' => '19:00h', - '19:15' => '19:15h', - '19:30' => '19:30h', - '19:45' => '19:45h', - '20:00' => '20:00h', - '20:15' => '20:15h', - '20:30' => '20:30h', - '20:45' => '20:45h', - '21:00' => '21:00h', - '21:15' => '21:15h', - '21:30' => '21:30h', - '21:45' => '21:45h', - '22:00' => '22:00h', - '22:15' => '22:15h', - '22:30' => '22:30h', - '22:45' => '22:45h', - '23:00' => '23:00h', - '23:15' => '23:15h', - '23:30' => '23:30h', - '23:45' => '23:45h', - ), - 'width' => '40', - 'maxlength' => '255' - ), - 'backup_delete' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'monit_url' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', - 'errmsg'=> 'monit_url_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'monit_password' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'munin_url' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', - 'errmsg'=> 'munin_url_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'munin_password' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'monitor_system_updates' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - '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', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['mail'] = array( - 'title' => "Mail", - 'width' => 60, - 'template' => "templates/server_config_mail_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'module' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('postfix_mysql' => 'postfix_mysql') - ), - 'maildir_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '/home/vmail/[domain]/[localpart]/', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'maildir_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', - 'errmsg'=> 'maildir_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'maildir_format' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '20', - 'value' => array('maildir' => 'Maildir', 'mdbox' => 'mdbox') - ), - 'homedir_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '/home/vmail/', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'homedir_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'homedir_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'dkim_strength' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '2048', - 'value' => array('1024' => 'weak (1024)', '2048' => 'normal (2048)', '4096' => 'strong (4096)') - ), - 'relayhost_password' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - - 'pop3_imap_daemon' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '20', - 'value' => array('courier' => 'Courier', 'dovecot' => 'Dovecot') - ), - 'mail_filter_syntax' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '20', - 'value' => array('maildrop' => 'Maildrop', 'sieve' => 'Sieve') - ), - 'mailuser_uid' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '5000', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_uid_error_empty'), - 1 => array('type' => 'RANGE', - 'range' => '1999:', - 'errmsg' => 'mailuser_uid_error_range'), - ), - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'mailuser_gid' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '5000', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_gid_error_empty'), - 1 => array('type' => 'RANGE', - 'range' => '1999:', - 'errmsg' => 'mailuser_gid_error_range'), - ), - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'mailuser_name' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => 'vmail', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_name_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', - 'errmsg'=> 'mailuser_name_error_regex'), - ), - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'mailuser_group' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => 'vmail', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'mailuser_group_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/', - 'errmsg'=> 'mailuser_group_name_error_regex'), - ), - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'mailbox_virtual_uidgid_maps' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'validators' => array (0 => array ( 'type' => 'CUSTOM', - 'class' => 'validate_server_mail_config', - 'function' => 'mailbox_virtual_uidgid_maps'), - ), - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'relayhost' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'relayhost_password' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'reject_sender_login_mismatch' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailbox_size_limit' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '15' - ), - 'message_size_limit' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '15' - ), - 'mailbox_quota_stats' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'realtime_blackhole_list' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])(,\s*(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))*)?$/', - 'errmsg'=> 'rbl_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'overquota_notify_admin' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_notify_client' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_notify_freq' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '7', - 'value' => '', - 'width' => '20', - 'maxlength' => '255' - ), - 'overquota_notify_onok' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['getmail'] = array( - 'title' => "Getmail", - 'width' => 80, - 'template' => "templates/server_config_getmail_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'getmail_config_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'getmail_config_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'getmail_config_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['web'] = array( - 'title' => "Web", - 'width' => 60, - 'template' => "templates/server_config_web_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'server_type' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'apache', - 'value' => array('apache' => 'Apache', 'nginx' => 'Nginx') - ), - 'website_basedir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'website_basedir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'website_basedir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'website_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array( 'type' => 'NOTEMPTY', - 'errmsg' => 'website_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/', - 'errmsg'=> 'website_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'website_symlinks' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'website_symlinks_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]\:]{5,128}$/', - 'errmsg'=> 'website_symlinks_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'website_symlinks_rel' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'network_filesystem' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - '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', - 'maxlength' => '255' - ), - 'vhost_rewrite_v6' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n',1 => 'y') - ), - 'vhost_conf_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vhost_conf_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'vhost_conf_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'vhost_conf_enabled_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vhost_conf_enabled_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'vhost_conf_enabled_dir_error_regex'), - ), - 'value' => '', - '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', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_vhost_conf_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'nginx_vhost_conf_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'nginx_vhost_conf_enabled_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'nginx_vhost_conf_enabled_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'CA_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{0,128}$/', - 'errmsg'=> 'ca_path_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'CA_pass' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'security_level' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '20', - 'value' => array('10' => 'Medium', '20' => 'High') - ), - 'set_folder_permissions_on_update' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'web_folder_protection' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'add_web_users_to_sshusers_group' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'check_apache_config' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'enable_sni' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'enable_ip_wildcard' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - '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', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overtraffic_notify_client' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_notify_admin' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_notify_client' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_db_notify_admin' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_db_notify_client' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'overquota_notify_freq' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '7', - 'value' => '', - 'width' => '20', - 'maxlength' => '255' - ), - 'overquota_notify_onok' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'user' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'apache_user_error_empty'), - 1 => array( - 'type' => 'CUSTOM', - 'class' => 'validate_systemuser', - 'function' => 'check_sysuser', - 'check_names' => false, - 'errmsg' => 'invalid_apache_user_txt' - ), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'group' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'apache_group_error_empty'), - 1 => array( - 'type' => 'CUSTOM', - 'class' => 'validate_systemuser', - 'function' => 'check_sysgroup', - 'check_names' => false, - 'errmsg' => 'invalid_apache_group_txt' - ), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'connect_userid_to_webid' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'connect_userid_to_webid_start' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '10000', - 'validators' => array(0 => array('type' => 'ISINT', - 'errmsg' => 'connect_userid_to_webid_startid_isint'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'nginx_user' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_user_error_empty'), - 1 => array( - 'type' => 'CUSTOM', - 'class' => 'validate_systemuser', - 'function' => 'check_sysuser', - 'check_names' => false, - 'errmsg' => 'invalid_nginx_user_txt' - ), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'nginx_group' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_group_error_empty'), - 1 => array( - 'type' => 'CUSTOM', - 'class' => 'validate_systemuser', - 'function' => 'check_sysgroup', - 'check_names' => false, - 'errmsg' => 'invalid_nginx_group_txt' - ), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_ini_path_apache' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_ini_path_apache_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'php_ini_path_apache_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_ini_path_cgi' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_ini_path_cgi_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'php_ini_path_cgi_error_regex'), - ), - 'value' => '', - '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', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_init_script_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_]{1,128}$/', - 'errmsg'=> 'php_fpm_init_script_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_fpm_ini_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_ini_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'php_fpm_ini_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_fpm_pool_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_pool_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'php_fpm_pool_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_fpm_start_port' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array(0 => array('type' => 'ISPOSITIVE', - 'errmsg' => 'php_fpm_start_port_error_empty'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_fpm_socket_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_fpm_socket_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/', - 'errmsg'=> 'php_fpm_socket_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'php_open_basedir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_open_basedir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/\]\[\:]{1,}$/', - 'errmsg'=> 'php_open_basedir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '4000' - ), - 'php_ini_check_minutes' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '1', - 'validators' => array(0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'php_ini_check_minutes_error_empty'), - ), - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'php_handler' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'fast-cgi', - 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), - 'searchable' => 2 - ), - 'php_fpm_incron_reload' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'nginx_cgi_socket' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'nginx_cgi_socket_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'nginx_cgi_socket_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'htaccess_allow_override' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - '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' - ), - 'enable_spdy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), - 'apps_vhost_enabled' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array (0 => 'n', 1 => 'y') - ), - 'apps_vhost_port' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '8081', - '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' - ), - 'apps_vhost_ip' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '_default_', - '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' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'awstats_data_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'awstats_data_dir_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'awstats_data_dir_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'awstats_pl' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'awstats_pl_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'awstats_pl_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'awstats_buildstaticpages_pl' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'awstats_buildstaticpages_pl_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'awstats_buildstaticpages_pl_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'skip_le_check' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), - 'php_fpm_reload_mode' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'reload', - 'value' => array('reload' => 'Reload', 'restart' => 'Restart'), - 'width' => '40', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['dns'] = array( - 'title' => "DNS", - 'width' => 60, - 'template' => "templates/server_config_dns_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'bind_user' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_user_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', - 'errmsg'=> 'invalid_bind_user_txt'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'bind_group' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_group_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/', - 'errmsg'=> 'invalid_bind_group_txt'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'bind_zonefiles_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'bind_zonefiles_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'bind_zonefiles_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'named_conf_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'named_conf_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'named_conf_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'named_conf_local_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'named_conf_local_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'named_conf_local_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'disable_bind_log' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['fastcgi'] = array( - 'title' => "FastCGI", - 'width' => 80, - 'template' => "templates/server_config_fastcgi_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'fastcgi_starter_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_starter_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', - 'errmsg'=> 'fastcgi_starter_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_starter_script' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_starter_script_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'fastcgi_starter_script_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_alias' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_alias_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'fastcgi_alias_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_phpini_path' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_phpini_path_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', - 'errmsg'=> 'fastcgi_phpini_path_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_children' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array(0 => array('type' => 'ISPOSITIVE', - 'errmsg' => 'fastcgi_children_error_empty'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_max_requests' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array( 'type' => 'ISINT', - 'errmsg' => 'fastcgi_max_requests_error_empty'), - 1 => array( 'type' => 'RANGE', - 'range' => '0:', - 'errmsg' => 'fastcgi_max_requests_error_empty'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_bin' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'fastcgi_bin_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', - 'errmsg'=> 'fastcgi_bin_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'fastcgi_config_syntax' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '2', - 'value' => array('1' => 'Old (apache 2.0)', '2' => 'New (apache 2.2)'), - 'width' => '40', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['xmpp'] = array( - 'title' => "XMPP", - 'width' => 80, - 'template' => "templates/server_config_xmpp_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'xmpp_use_ipv6' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'xmpp_bosh_max_inactivity' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '30', - 'validators' => array(0 => array('type' => 'ISINT', - 'errmsg' => 'ip_address_error_wrong'), - array('type'=>'RANGE', 'range'=>'15:360', 'errmsg' => 'xmpp_bosh_timeout_range_wrong') - ), - 'value' => '', - 'width' => '15' - ), - - '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' - ), - - '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' => "," - ), - - 'xmpp_port_http' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '5290', - 'validators' => array(0 => array('type' => 'ISINT')), - 'value' => '5290', - 'width' => '15' - ), - 'xmpp_port_https' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '5291', - 'validators' => array(0 => array('type' => 'ISINT')), - 'value' => '5291', - 'width' => '15' - ), - 'xmpp_port_pastebin' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '5292', - 'validators' => array(0 => array('type' => 'ISINT')), - 'value' => '5292', - 'width' => '15' - ), - 'xmpp_port_bosh' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '5280', - 'validators' => array(0 => array('type' => 'ISINT')), - 'value' => '5280', - 'width' => '15' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['jailkit'] = array( - 'title' => "Jailkit", - 'width' => 80, - 'template' => "templates/server_config_jailkit_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'jailkit_chroot_home' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_home_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/', - 'errmsg'=> 'jailkit_chroot_home_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'jailkit_chroot_app_sections' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_app_sections_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\ ]{1,128}$/', - 'errmsg'=> 'jailkit_chroot_app_sections_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '1000' - ), - 'jailkit_chroot_app_programs' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_app_programs_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', - 'errmsg'=> 'jailkit_chroot_app_programs_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '1000' - ), - 'jailkit_chroot_cron_programs' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'jailkit_chroot_cron_programs_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/', - 'errmsg'=> 'jailkit_chroot_cron_programs_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '1000' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -/* -$form["tabs"]['ufw_firewall'] = array ( - 'title' => "UFW Firewall", - 'width' => 80, - 'template' => "templates/server_config_ufw_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'ufw_enable' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'no', - 'value' => array(0 => 'no',1 => 'yes') - ), - 'ufw_manage_builtins' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'no', - 'value' => array(0 => 'no',1 => 'yes') - ), - 'ufw_ipv6' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'no', - 'value' => array(0 => 'no',1 => 'yes') - ), - 'ufw_default_input_policy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'ACCEPT', - 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') - ), - 'ufw_default_output_policy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'ACCEPT', - 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') - ), - 'ufw_default_forward_policy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'ACCEPT', - 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') - ), - 'ufw_default_application_policy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'DROP', - 'value' => array('ACCEPT' => 'accept', 'DROP' => 'drop', 'REJECT' => 'reject') - ), - 'ufw_log_level' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'low', - 'value' => array('low' => 'low', 'medium' => 'medium', 'high' => 'high') - ) - ################################## - # ENDE Datatable fields - ################################## - ) -); -*/ - -$form["tabs"]['vlogger'] = array( - 'title' => "vlogger", - 'width' => 80, - 'template' => "templates/server_config_vlogger_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'config_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'vlogger_config_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'vlogger_config_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - - -$form["tabs"]['cron'] = array( - 'title' => "Cron", - 'width' => 80, - 'template' => "templates/server_config_cron_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'init_script' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'cron_init_script_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_]{1,30}$/', - 'errmsg'=> 'cron_init_script_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'crontab_dir' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'crontab_dir_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'crontab_dir_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - 'wget' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'validators' => array( 0 => array('type' => 'NOTEMPTY', - 'errmsg' => 'cron_wget_error_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/', - 'errmsg'=> 'cron_wget_error_regex'), - ), - 'value' => '', - 'width' => '40', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['rescue'] = array( - 'title' => "Rescue", - 'width' => 80, - 'template' => "templates/server_config_rescue_edit.htm", - 'fields' => array( - //################################# - // Begin Datatable fields - //################################# - 'try_rescue' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'do_not_try_rescue_httpd' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'do_not_try_rescue_mongodb' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'do_not_try_rescue_mysql' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'do_not_try_rescue_mail' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); -?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng.orig b/interface/web/admin/lib/lang/de_server_config.lng.orig deleted file mode 100644 index 108bf96de8..0000000000 --- a/interface/web/admin/lib/lang/de_server_config.lng.orig +++ /dev/null @@ -1,299 +0,0 @@ -<?php -$wb['jailkit_chroot_home_txt'] = 'Jailkit Chroot home'; -$wb['jailkit_chroot_app_sections_txt'] = 'Jailkit Chroot Anwendungsbereiche'; -$wb['jailkit_chroot_app_programs_txt'] = 'Jailkit Chrooted Anwendungen'; -$wb['jailkit_chroot_cron_programs_txt'] = 'Jailkit Cron Chrooted Anwendungen'; -$wb['website_path_txt'] = 'Webseiten Pfad'; -$wb['website_symlinks_txt'] = 'Webseiten Symlinks'; -$wb['website_symlinks_rel_txt'] = 'Erstelle relative Symlinks'; -$wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis'; -$wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir'; -$wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis'; -$wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad'; -$wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script'; -$wb['fastcgi_alias_txt'] = 'FastCGI Alias'; -$wb['fastcgi_phpini_path_txt'] = 'FastCGI php.ini Pfad'; -$wb['fastcgi_children_txt'] = 'FastCGI Children'; -$wb['fastcgi_max_requests_txt'] = 'FastCGI max. Anfragen'; -$wb['fastcgi_bin_txt'] = 'FastCGI Bin'; -$wb['module_txt'] = 'Modul'; -$wb['maildir_path_txt'] = 'Maildir Pfad'; -$wb['maildir_format_txt'] = 'Maildir Format'; -$wb['homedir_path_txt'] = 'Homedir Pfad'; -$wb['dkim_path_txt'] = 'DKIM Pfad'; -$wb['mailuser_uid_txt'] = 'Mailbenutzer UID'; -$wb['mailuser_gid_txt'] = 'Mailbenutzer GID'; -$wb['mailuser_name_txt'] = 'Mailbenutzer Name'; -$wb['mailuser_group_txt'] = 'Mailbenutzer Gruppe'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen'; -$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'nur für einzel-Server Installationen.'; -$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid kann in Multiserver-Umgebung nicht gemappt werden.'; -$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid Mapping funktioniert nur in Verbindung mit dovecot.'; -$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid Mapping kann nur umgeschaltet werden, wenn noch keine Mailuser angelegt sind.'; -$wb['relayhost_txt'] = 'Relayhost'; -$wb['relayhost_user_txt'] = 'Relayhost Benutzer'; -$wb['relayhost_password_txt'] = 'Relayhost Passwort'; -$wb['reject_sender_login_mismatch_txt'] = 'Zurückweisen von Mails, wenn Sender nicht gleich Login'; -$wb['mailbox_size_limit_txt'] = 'E-Mailkonto Beschränkung'; -$wb['message_size_limit_txt'] = 'E-Mailgrößen Beschränkung'; -$wb['ip_address_txt'] = 'IP Adresse'; -$wb['netmask_txt'] = 'Netzmaske'; -$wb['gateway_txt'] = 'Gateway'; -$wb['hostname_txt'] = 'Hostname'; -$wb['nameservers_txt'] = 'Nameserver'; -$wb['auto_network_configuration_txt'] = 'Netzwerkkonfiguration'; -$wb['website_basedir_txt'] = 'Webseiten basedir'; -$wb['website_autoalias_txt'] = 'Webseiten Autoalias'; -$wb['website_autoalias_note_txt'] = 'Platzhalter:'; -$wb['ip_address_error_wrong'] = 'Ungültiges IP Adressen Format.'; -$wb['netmask_error_wrong'] = 'Ungültiges Netzmasken Format.'; -$wb['gateway_error_wrong'] = 'Ungültiges Gateway Format.'; -$wb['hostname_error_empty'] = 'Hostname ist leer.'; -$wb['nameservers_error_empty'] = 'Nameserver ist leer.'; -$wb['config_dir_txt'] = 'Konfigurationsverzeichnis'; -$wb['init_script_txt'] = 'Cron init Script Name'; -$wb['crontab_dir_txt'] = 'Pfad für individuelle Crontabs'; -$wb['wget_txt'] = 'Pfad zum wget Programm'; -$wb['web_user_txt'] = 'Apache Benutzer'; -$wb['web_group_txt'] = 'Apache Gruppe'; -$wb['security_level_txt'] = 'Sicherheitslevel'; -$wb['loglevel_txt'] = 'Loglevel'; -$wb['apps_vhost_port_txt'] = 'Apps vHost Port'; -$wb['apps_vhost_ip_txt'] = 'Apps vHost IP Adresse'; -$wb['apps_vhost_servername_txt'] = 'Apps vHost Domain'; -$wb['bind_user_txt'] = 'BIND Benutzer'; -$wb['bind_group_txt'] = 'BIND Gruppe'; -$wb['bind_zonefiles_dir_txt'] = 'BIND Zonefiles Verzeichnis'; -$wb['named_conf_path_txt'] = 'BIND named.conf Pfad'; -$wb['bind_user_error_empty'] = 'BIND Benutzer ist leer.'; -$wb['bind_group_error_empty'] = 'BIND Gruppe ist leer.'; -$wb['bind_zonefiles_dir_error_empty'] = 'BIND Zonefiles Verzeichnis ist leer.'; -$wb['named_conf_path_error_empty'] = 'BIND named.conf Pfad ist leer.'; -$wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local Pfad ist leer.'; -$wb['mail_filter_syntax_txt'] = 'E-Mailfilter Syntax'; -$wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Dämon'; -$wb['php_open_basedir_txt'] = 'PHP open_basedir'; -$wb['php_open_basedir_error_empty'] = 'PHP open_basedir ist leer.'; -$wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride'; -$wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride ist leer.'; -$wb['awstats_conf_dir_txt'] = 'AWStats Konfigurationsverzeichnis'; -$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'; -$wb['check_apache_config_txt'] = 'Teste Apache Konfiguration beim Neustart'; -$wb['CA_path_txt'] = 'CA Pfad'; -$wb['CA_pass_txt'] = 'CA Passwort'; -$wb['ufw_enable_txt'] = 'Aktivieren'; -$wb['ufw_manage_builtins_txt'] = 'Verwalte Builtin Rules'; -$wb['ufw_ipv6_txt'] = 'Aktiviere IPv6'; -$wb['ufw_default_input_policy_txt'] = 'Default Input Policy'; -$wb['ufw_default_output_policy_txt'] = 'Default Output Policy'; -$wb['ufw_default_forward_policy_txt'] = 'Default Forward Policy'; -$wb['ufw_default_application_policy_txt'] = 'Default Application Policy'; -$wb['ufw_log_level_txt'] = 'Loglevel'; -$wb['network_config_warning_txt'] = 'Die Netzwerk Konfiguration Option ist nur auf Debian- und Ubuntu Servern verfügbar. Aktivieren Sie diese Option nicht, falls Ihr Netzwerk Interface nicht eth0 heißt.'; -$wb['server_type_txt'] = 'Server Typ'; -$wb['nginx_vhost_conf_dir_txt'] = 'Nginx vHost Konfigurations Verzeichnis'; -$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx vHost config enabled dir'; -$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.'; -$wb['mailuser_gid_error_empty'] = 'Mail Benutzer GID ist leer.'; -$wb['mailuser_name_error_empty'] = 'Mail Benutzer Name ist leer.'; -$wb['mailuser_group_error_empty'] = 'Mail Benutzer Gruppe ist leer.'; -$wb['getmail_config_dir_error_empty'] = 'Getmail config dir ist leer.'; -$wb['website_basedir_error_empty'] = 'Webseiten basedir ist leer.'; -$wb['website_path_error_empty'] = 'Webseiten Pfad ist leer.'; -$wb['website_symlinks_error_empty'] = 'Webseiten Symlinks ist leer.'; -$wb['vhost_conf_dir_error_empty'] = 'vHost config dir ist leer.'; -$wb['vhost_conf_enabled_dir_error_empty'] = 'vHost config enabled dir ist leer.'; -$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx vHost config dir ist leer.'; -$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx vHost config enabled dir ist leer.'; -$wb['apache_user_error_empty'] = 'Apache Benutzer ist leer.'; -$wb['apache_group_error_empty'] = 'Apache Grupp ist leer.'; -$wb['nginx_user_error_empty'] = 'Nginx Benutzer ist leer.'; -$wb['nginx_group_error_empty'] = 'Nginx Gruppe ist leer.'; -$wb['php_ini_path_apache_error_empty'] = 'Apache php.ini Pfad ist leer.'; -$wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini Pfad ist leer.'; -$wb['nginx_cgi_socket_empty'] = 'Nginx CGI Socket ist leer.'; -$wb['apps_vhost_port_error_empty'] = 'Apps vHost Port ist leer.'; -$wb['apps_vhost_ip_error_empty'] = 'Apps vHost IP Adresse ist leer.'; -$wb['fastcgi_starter_path_error_empty'] = 'FastCGI Starter Pfad ist leer.'; -$wb['fastcgi_starter_script_error_empty'] = 'FastCGI Starter Script ist leer.'; -$wb['fastcgi_alias_error_empty'] = 'FastCGI Alias ist leer.'; -$wb['fastcgi_phpini_path_error_empty'] = 'FastCGI php.ini Pfad ist leer.'; -$wb['fastcgi_children_error_empty'] = 'FastCGI Children ist leer.'; -$wb['fastcgi_max_requests_error_empty'] = 'FastCGI max. Requests ist leer.'; -$wb['fastcgi_bin_error_empty'] = 'FastCGI Bin ist leer.'; -$wb['jailkit_chroot_home_error_empty'] = 'Jailkit Chroot home ist leer.'; -$wb['jailkit_chroot_app_sections_error_empty'] = 'Jailkit Chroot Anwendungsbereiche ist leer.'; -$wb['jailkit_chroot_app_programs_error_empty'] = 'Jailkit Chrooted Anwendungen ist leer.'; -$wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit Cron Chrooted Anwendungen ist leer.'; -$wb['vlogger_config_dir_error_empty'] = 'Konfigurationsverzeichnis ist leer.'; -$wb['cron_init_script_error_empty'] = 'Cron Startscript Name ist leer.'; -$wb['crontab_dir_error_empty'] = 'Pfad für individuelle Crontabs ist leer.'; -$wb['cron_wget_error_empty'] = 'Pfad zum wget Programm ist leer.'; -$wb['php_fpm_init_script_txt'] = 'PHP-FPM Init Script'; -$wb['php_fpm_init_script_error_empty'] = 'PHP-FPM Init Script ist leer.'; -$wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini Pfad'; -$wb['php_fpm_ini_path_error_empty'] = 'PHP-FPM php.ini Pfad ist leer.'; -$wb['php_fpm_pool_dir_txt'] = 'PHP-FPM Pool Verzeichnis'; -$wb['php_fpm_pool_dir_error_empty'] = 'PHP-FPM Pool Verzeichnis ist leer.'; -$wb['php_fpm_start_port_txt'] = 'PHP-FPM Start Port'; -$wb['php_fpm_start_port_error_empty'] = 'PHP-FPM Start Port ist leer.'; -$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM Socket Verzeichnis'; -$wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM Socket Verzeichnis ist leer.'; -$wb['fastcgi_config_syntax_txt'] = 'FastCGI Konfigurations Syntax'; -$wb['try_rescue_txt'] = 'Aktiviere Service Monitoring und Neustart bei Unerreichbarkeit'; -$wb['do_not_try_rescue_httpd_txt'] = 'Deaktiviere HTTPD Monitoring'; -$wb['do_not_try_rescue_mongodb_txt'] = 'Deaktiviere MongoDB Monitoring'; -$wb['do_not_try_rescue_mysql_txt'] = 'Deaktiviere MySQL Monitoring'; -$wb['do_not_try_rescue_mail_txt'] = 'Deaktiviere E-Mail Monitoring'; -$wb['rescue_description_txt'] = '<b>Information:</b> Falls Sie MySQL stoppen möchten, wählen Sie die Funktion \'Deaktiviere MySQL Monitoring\' und warten Sie 2 bis 3 Minuten. Wenn Sie nicht 2 bis 3 Minuten warten wird ISPConfig versuchen MySQL wieder zu starten.'; -$wb['enable_sni_txt'] = 'Aktiviere SNI'; -$wb['set_folder_permissions_on_update_txt'] = 'Verzeichnisberechtigungen beim Update setzen'; -$wb['add_web_users_to_sshusers_group_txt'] = 'Webbenutzer zur -sshusers- hinzufügen'; -$wb['connect_userid_to_webid_txt'] = 'Linux Userid mit webid verknüpfen'; -$wb['connect_userid_to_webid_start_txt'] = 'Start ID für userid/webid Verknüpfung'; -$wb['realtime_blackhole_list_txt'] = 'Realtime Blackhole Liste'; -$wb['realtime_blackhole_list_note_txt'] = '(Mehrere Realtime Blackhole Listen mit Kommas trennen)'; -$wb['ssl_settings_txt'] = 'SSL Einstellungen'; -$wb['permissions_txt'] = 'Berechtigungen'; -$wb['php_settings_txt'] = 'PHP Einstellungen'; -$wb['apps_vhost_settings_txt'] = 'Apps vHost Einstellungen'; -$wb['awstats_settings_txt'] = 'AWStats Einstellungen'; -$wb['backup_mode_txt'] = 'Backupmodus'; -$wb['backup_mode_userzip'] = 'Backup Dateien gehören dem Web Benutzer (.zip Datei)'; -$wb['backup_mode_rootgz'] = 'Backup aller Dateien des Webverzeichnisses als Root Benutzer'; -$wb['backup_time_txt'] = 'Backupzeit'; -$wb['firewall_txt'] = 'Firewall'; -$wb['mailbox_quota_stats_txt'] = 'E-Mailkonto Beschränkung Statistiken'; -$wb['enable_ip_wildcard_txt'] = 'IP Adressen Wildcard (*) aktivieren'; -$wb['web_folder_protection_txt'] = 'Webverzeichnis unveränderlich machen (erweiterte Attribute)'; -$wb['overtraffic_notify_admin_txt'] = 'Überschreiten des Datentransfer Limits an den Administrator senden'; -$wb['overtraffic_notify_client_txt'] = 'Überschreiten des Datentransfer Limits an den Kunden senden'; -$wb['rbl_error_regex'] = 'Bitte geben Sie gültige RBL-Hostnamen an.'; -$wb['overquota_notify_admin_txt'] = 'Quota-Warnungen an den Administrator senden'; -$wb['overquota_notify_client_txt'] = 'Quota-Warnungen an den Kunden senden'; -$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Belegung wieder ok'; -$wb['overquota_notify_freq_txt'] = 'Quota-Warnung alle X Tage versenden'; -$wb['overquota_notify_freq_note_txt'] = '0 = Meldung nur einmalig versenden, keine Wiederholung'; -$wb['admin_notify_events_txt'] = 'Sende E-Mail an Administrator ab folgendem Level'; -$wb['no_notifications_txt'] = 'Keine Benachrichtigungen'; -$wb['monit_url_txt'] = 'Monit-URL'; -$wb['monit_user_txt'] = 'Monit-Benutzer'; -$wb['monit_password_txt'] = 'Monit-Passwort'; -$wb['monit_url_error_regex'] = 'Ungültige Monit-URL'; -$wb['monit_url_note_txt'] = 'Platzhalter:'; -$wb['munin_url_txt'] = 'Munin-URL'; -$wb['munin_user_txt'] = 'Munin-Benutzer'; -$wb['munin_password_txt'] = 'Munin-Passwort'; -$wb['munin_url_error_regex'] = 'Ungültige Munin-URL'; -$wb['munin_url_note_txt'] = 'Platzhalter:'; -$wb['backup_dir_is_mount_txt'] = 'Backupverzeichnis ist ein eigener Mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount-Befehl, falls Backupverzeichnis nicht gemountet'; -$wb['backup_delete_txt'] = 'Backups loeschen wenn eine Domain / Webseite geloescht wird'; -$wb['v6_prefix_txt'] = 'IPv6 Prefix'; -$wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror'; -$wb['v6_prefix_length'] = 'Prefix zu lang fuer angegebene IPv6-Adresse '; -$wb['monitor_system_updates_txt'] = 'Suche nach Linux updates'; -$wb['dkim_strength_txt'] = 'DKIM Stärke'; -$wb['hostname_error_regex'] = 'Invalid Hostname.'; -$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; -$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; -$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; -$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; -$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; -$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; -$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; -$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; -$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; -$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; -$wb['website_basedir_error_regex'] = 'Invalid website basedir or path too short, min. length 5 chars.'; -$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; -$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; -$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; -$wb['ca_path_error_regex'] = 'Invalid CA path.'; -$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; -$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; -$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; -$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; -$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; -$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; -$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; -$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; -$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; -$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; -$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; -$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; -$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; -$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; -$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; -$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; -$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; -$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; -$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; -$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; -$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; -$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; -$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; -$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; -$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; -$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; -$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; -$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; -$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; -$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; -$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; -$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; -$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; -$wb['network_filesystem_txt'] = 'Netzwerk-Dateisystem'; -$wb['overquota_db_notify_admin_txt'] = 'Datenbank-Quota-Warnungen an den Administrator senden'; -$wb['overquota_db_notify_client_txt'] = 'Datenbank-Quota-Warnungen an den Kunden senden'; -$wb['php_ini_check_minutes_txt'] = 'Prüfe php.ini alle X Minuten auf Änderungen'; -$wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.'; -$wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; -$wb['php_handler_txt'] = 'Standard-PHP-Handler'; -$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; -$wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; -$wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; -$wb['disabled_txt'] = 'Disabled'; -$wb['web_settings_txt'] = 'Web Server'; -$wb['xmpp_server_txt'] = 'XMPP Server'; -$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; -$wb['xmpp_module_saslauth'] = 'saslauth'; -$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; -$wb['xmpp_ports_txt'] = 'Component ports'; -$wb['xmpp_port_http_txt'] = 'HTTP'; -$wb['xmpp_port_https_txt'] = 'HTTPS'; -$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.'; -$wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; -$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; -?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng.rej b/interface/web/admin/lib/lang/de_server_config.lng.rej deleted file mode 100644 index eeed14711e..0000000000 --- a/interface/web/admin/lib/lang/de_server_config.lng.rej +++ /dev/null @@ -1,11 +0,0 @@ ---- interface/web/admin/lib/lang/de_server_config.lng -+++ interface/web/admin/lib/lang/de_server_config.lng -@@ -295,4 +295,7 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; - $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; - $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; - $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; --?> -+$wb['content_filter_txt'] = 'Content-Filter'; -+$wb['rspamd_url_txt'] = 'Rspamd-URL'; -+$wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; -+$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server_config.lng.orig b/interface/web/admin/lib/lang/en_server_config.lng.orig deleted file mode 100644 index ac0ee42b90..0000000000 --- a/interface/web/admin/lib/lang/en_server_config.lng.orig +++ /dev/null @@ -1,300 +0,0 @@ -<?php -$wb["ufw_enable_txt"] = 'Enable'; -$wb["ufw_manage_builtins_txt"] = 'Manage Builtin Rules'; -$wb["ufw_ipv6_txt"] = 'Enable IPv6'; -$wb["ufw_default_input_policy_txt"] = 'Default Input Policy'; -$wb["ufw_default_output_policy_txt"] = 'Default Output Policy'; -$wb["ufw_default_forward_policy_txt"] = 'Default Forward Policy'; -$wb["ufw_default_application_policy_txt"] = 'Default Application Policy'; -$wb["ufw_log_level_txt"] = 'Log Level'; -$wb["jailkit_chroot_home_txt"] = 'Jailkit chroot home'; -$wb["jailkit_chroot_app_sections_txt"] = 'Jailkit chroot app sections'; -$wb["jailkit_chroot_app_programs_txt"] = 'Jailkit chrooted applications'; -$wb["jailkit_chroot_cron_programs_txt"] = 'Jailkit cron chrooted applications'; -$wb["website_path_txt"] = 'Website path'; -$wb["website_symlinks_txt"] = 'Website symlinks'; -$wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; -$wb["website_basedir_txt"] = 'Website basedir'; -$wb["website_autoalias_txt"] = 'Website auto alias'; -$wb["website_autoalias_note_txt"] = 'Placeholders:'; -$wb["vhost_conf_dir_txt"] = 'Vhost config dir'; -$wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir'; -$wb["getmail_config_dir_txt"] = 'Getmail config dir'; -$wb["fastcgi_starter_path_txt"] = 'FastCGI starter path'; -$wb["fastcgi_starter_script_txt"] = 'FastCGI starter script'; -$wb["fastcgi_alias_txt"] = 'FastCGI Alias'; -$wb["fastcgi_phpini_path_txt"] = 'FastCGI php.ini Path'; -$wb["fastcgi_children_txt"] = 'FastCGI Children'; -$wb["fastcgi_max_requests_txt"] = 'FastCGI max. Requests'; -$wb["fastcgi_bin_txt"] = 'FastCGI Bin'; -$wb["module_txt"] = 'Module'; -$wb["maildir_path_txt"] = 'Maildir Path'; -$wb['maildir_format_txt'] = 'Maildir Format'; -$wb["homedir_path_txt"] = 'Homedir Path'; -$wb["dkim_path_txt"] = 'DKIM Path'; -$wb["mailuser_uid_txt"] = 'Mailuser UID'; -$wb["mailuser_gid_txt"] = 'Mailuser GID'; -$wb["mailuser_name_txt"] = 'Mailuser Name'; -$wb["mailuser_group_txt"] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; -$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; -$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; -$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; -$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; -$wb["relayhost_txt"] = 'Relayhost'; -$wb["relayhost_user_txt"] = 'Relayhost User'; -$wb["relayhost_password_txt"] = 'Relayhost Password'; -$wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; -$wb["mailbox_size_limit_txt"] = 'Mailbox Size Limit'; -$wb["message_size_limit_txt"] = 'Message Size Limit'; -$wb["ip_address_txt"] = 'IP Address'; -$wb["netmask_txt"] = 'Netmask'; -$wb["gateway_txt"] = 'Gateway'; -$wb["hostname_txt"] = 'Hostname'; -$wb["nameservers_txt"] = 'Nameservers'; -$wb["auto_network_configuration_txt"] = 'Network Configuration'; -$wb["ip_address_error_wrong"] = 'Invalid IP address format.'; -$wb["netmask_error_wrong"] = 'Invalid Netmask format.'; -$wb["gateway_error_wrong"] = 'Invalid Gateway format.'; -$wb["hostname_error_empty"] = 'Hostname is empty.'; -$wb["hostname_error_regex"] = 'Invalid Hostname.'; -$wb["nameservers_error_empty"] = 'Nameserver is empty.'; -$wb["config_dir_txt"] = 'Config directory'; -$wb["init_script_txt"] = 'Cron init script name'; -$wb["crontab_dir_txt"] = 'Path for individual crontabs'; -$wb["wget_txt"] = 'Path to wget program'; -$wb["web_user_txt"] = 'Apache user'; -$wb["web_group_txt"] = 'Apache group'; -$wb["security_level_txt"] = 'Security level'; -$wb["loglevel_txt"] = 'Loglevel'; -$wb["apps_vhost_port_txt"] = 'Apps-vhost port'; -$wb["apps_vhost_ip_txt"] = 'Apps-vhost IP'; -$wb["apps_vhost_servername_txt"] = 'Apps-vhost Domain'; -$wb["bind_user_txt"] = 'BIND User'; -$wb["bind_group_txt"] = 'BIND Group'; -$wb["bind_zonefiles_dir_txt"] = 'BIND zonefiles directory'; -$wb["named_conf_path_txt"] = 'BIND named.conf path'; -$wb["bind_user_error_empty"] = 'BIND user is empty.'; -$wb["bind_group_error_empty"] = 'BIND group is empty.'; -$wb["bind_zonefiles_dir_error_empty"] = 'BIND zonefiles directory is empty.'; -$wb["named_conf_path_error_empty"] = 'BIND named.conf path is empty.'; -$wb["named_conf_local_path_error_empty"] = 'BIND named.conf.local path is empty.'; -$wb["mail_filter_syntax_txt"] = 'Mailfilter Syntax'; -$wb["pop3_imap_daemon_txt"] = 'POP3/IMAP Daemon'; -$wb["php_open_basedir_txt"] = 'PHP open_basedir'; -$wb["php_open_basedir_error_empty"] = 'PHP open_basedir is empty.'; -$wb["htaccess_allow_override_txt"] = '.htaccess AllowOverride'; -$wb["htaccess_allow_override_error_empty"] = '.htaccess AllowOverride is empty.'; -$wb["awstats_conf_dir_txt"] = 'awstats conf folder'; -$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'; -$wb["check_apache_config_txt"] = 'Test apache configuration on restart'; -$wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.'; -$wb["CA_path_txt"] = 'CA Path'; -$wb["CA_pass_txt"] = 'CA passphrase'; -$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'; -$wb["nginx_vhost_conf_enabled_dir_txt"] = 'Nginx Vhost config enabled dir'; -$wb["nginx_user_txt"] = 'Nginx user'; -$wb["nginx_group_txt"] = 'Nginx group'; -$wb["nginx_cgi_socket_txt"] = 'Nginx CGI Socket'; -$wb["backup_dir_error_empty"] = 'Backup directory is empty.'; -$wb["maildir_path_error_empty"] = 'Maildir Path is empty.'; -$wb["homedir_path_error_empty"] = 'Homedir Path is empty.'; -$wb["mailuser_uid_error_empty"] = 'Mailuser UID is empty.'; -$wb["mailuser_gid_error_empty"] = 'Mailuser GID is empty.'; -$wb["mailuser_name_error_empty"] = 'Mailuser Name is empty.'; -$wb["mailuser_group_error_empty"] = 'Mailuser Group is empty.'; -$wb["getmail_config_dir_error_empty"] = 'Getmail config dir is empty.'; -$wb["website_basedir_error_empty"] = 'Website basedir is empty.'; -$wb["website_path_error_empty"] = 'Website path is empty.'; -$wb["website_symlinks_error_empty"] = 'Website symlinks is empty.'; -$wb["vhost_conf_dir_error_empty"] = 'Vhost config dir is empty.'; -$wb["vhost_conf_enabled_dir_error_empty"] = 'Vhost config enabled dir is empty.'; -$wb["nginx_vhost_conf_dir_error_empty"] = 'Nginx Vhost config dir is empty.'; -$wb["nginx_vhost_conf_enabled_dir_error_empty"] = 'Nginx Vhost config enabled dir is empty.'; -$wb["apache_user_error_empty"] = 'Apache user is empty.'; -$wb["apache_group_error_empty"] = 'Apache group is empty.'; -$wb["nginx_user_error_empty"] = 'Nginx user is empty.'; -$wb["nginx_group_error_empty"] = 'Nginx group is empty.'; -$wb["php_ini_path_apache_error_empty"] = 'Apache php.ini path is empty.'; -$wb["php_ini_path_cgi_error_empty"] = 'CGI php.ini path is empty.'; -$wb["nginx_cgi_socket_empty"] = 'Nginx CGI Socket is empty.'; -$wb["apps_vhost_port_error_empty"] = 'Apps-vhost port is empty.'; -$wb["apps_vhost_ip_error_empty"] = 'Apps-vhost IP is empty.'; -$wb["fastcgi_starter_path_error_empty"] = 'FastCGI starter path is empty.'; -$wb["fastcgi_starter_script_error_empty"] = 'FastCGI starter script is empty.'; -$wb["fastcgi_alias_error_empty"] = 'FastCGI Alias is empty.'; -$wb["fastcgi_phpini_path_error_empty"] = 'FastCGI php.ini Path is empty.'; -$wb["fastcgi_children_error_empty"] = 'FastCGI Children is empty.'; -$wb["fastcgi_max_requests_error_empty"] = 'FastCGI max. Requests is empty.'; -$wb["fastcgi_bin_error_empty"] = 'FastCGI Bin is empty.'; -$wb["jailkit_chroot_home_error_empty"] = 'Jailkit chroot home is empty.'; -$wb["jailkit_chroot_app_sections_error_empty"] = 'Jailkit chroot app sections is empty.'; -$wb["jailkit_chroot_app_programs_error_empty"] = 'Jailkit chrooted applications is empty.'; -$wb["jailkit_chroot_cron_programs_error_empty"] = 'Jailkit cron chrooted applications is empty.'; -$wb["vlogger_config_dir_error_empty"] = 'Config directory is empty.'; -$wb["cron_init_script_error_empty"] = 'Cron init script name is empty.'; -$wb["crontab_dir_error_empty"] = 'Path for individual crontabs is empty.'; -$wb["cron_wget_error_empty"] = 'Path to wget program is empty.'; -$wb["php_fpm_init_script_txt"] = 'PHP-FPM init script'; -$wb["php_fpm_init_script_error_empty"] = 'PHP-FPM init script is empty.'; -$wb["php_fpm_ini_path_txt"] = 'PHP-FPM php.ini path'; -$wb["php_fpm_ini_path_error_empty"] = 'PHP-FPM php.ini path is empty.'; -$wb["php_fpm_pool_dir_txt"] = 'PHP-FPM pool directory'; -$wb["php_fpm_pool_dir_error_empty"] = 'PHP-FPM pool directory is empty.'; -$wb["php_fpm_start_port_txt"] = 'PHP-FPM start port'; -$wb["php_fpm_start_port_error_empty"] = 'PHP-FPM start port is empty.'; -$wb["php_fpm_socket_dir_txt"] = 'PHP-FPM socket directory'; -$wb["php_fpm_socket_dir_error_empty"] = 'PHP-FPM socket directory is empty.'; -$wb["try_rescue_txt"] = 'Enable service monitoring and restart on failure'; -$wb["do_not_try_rescue_httpd_txt"] = 'Disable HTTPD monitoring'; -$wb["do_not_try_rescue_mongodb_txt"] = 'Disable MongoDB monitoring'; -$wb["do_not_try_rescue_mysql_txt"] = 'Disable MySQL monitoring'; -$wb["do_not_try_rescue_mail_txt"] = 'Disable Email monitoring'; -$wb["rescue_description_txt"] = '<b>Information:</b> If you want to shut down mysql you have to select the "Disable MySQL monitor" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; -$wb["enable_sni_txt"] = 'Enable SNI'; -$wb["set_folder_permissions_on_update_txt"] = 'Set folder permissions on update'; -$wb["add_web_users_to_sshusers_group_txt"] = 'Add web users to -sshusers- group'; -$wb["connect_userid_to_webid_txt"] = 'Connect Linux userid to webid'; -$wb["connect_userid_to_webid_start_txt"] = 'Start ID for userid/webid connect'; -$wb["realtime_blackhole_list_txt"] = 'Real-time Blackhole List'; -$wb["realtime_blackhole_list_note_txt"] = '(Separate RBL\'s with commas)'; -$wb["ssl_settings_txt"] = 'SSL Settings'; -$wb["permissions_txt"] = 'Permissions'; -$wb["php_settings_txt"] = 'PHP Settings'; -$wb["apps_vhost_settings_txt"] = 'Apps Vhost Settings'; -$wb["awstats_settings_txt"] = 'AWStats Settings'; -$wb["firewall_txt"] = 'Firewall'; -$wb["mailbox_quota_stats_txt"] = 'Mailbox quota statistics'; -$wb["enable_ip_wildcard_txt"] = 'Enable IP wildcard (*)'; -$wb["web_folder_protection_txt"] = 'Make web folders immutable (extended attributes)'; -$wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin'; -$wb["overtraffic_notify_client_txt"] = 'Send overtraffic notification to client'; -$wb["rbl_error_regex"] = 'Please specify valid RBL hostnames.'; -$wb["overquota_notify_admin_txt"] = 'Send quota warnings to admin'; -$wb["overquota_notify_client_txt"] = 'Send quota warnings to client'; -$wb["overquota_notify_onok_txt"] = 'Send quota ok message to client'; -$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; -$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; -$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; -$wb['no_notifications_txt'] = 'No Notifications'; -$wb['monit_url_txt'] = 'Monit URL'; -$wb['monit_user_txt'] = 'Monit User'; -$wb['monit_password_txt'] = 'Monit Password'; -$wb['monit_url_error_regex'] = 'Invalid Monit URL'; -$wb['monit_url_note_txt'] = 'Placeholder:'; -$wb['munin_url_txt'] = 'Munin URL'; -$wb['munin_user_txt'] = 'Munin User'; -$wb['munin_password_txt'] = 'Munin Password'; -$wb['munin_url_error_regex'] = 'Invalid Munin URL'; -$wb['munin_url_note_txt'] = 'Placeholder:'; -$wb["v6_prefix_txt"] = 'IPv6 Prefix'; -$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror'; -$wb["v6_prefix_length"] = 'Prefix too long according to defined IPv6 '; -$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; -$wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; -$wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin'; -$wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client'; -$wb['monitor_system_updates_txt'] = 'Check for Linux updates'; -$wb['php_handler_txt'] = "Default PHP Handler"; -$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['disabled_txt'] = 'Disabled'; -$wb['dkim_strength_txt'] = 'DKIM strength'; -$wb['monitor_system_updates_txt'] = 'Check for Linux updates'; -$wb['invalid_apache_user_txt'] = 'Invalid apache user.'; -$wb['invalid_apache_group_txt'] = 'Invalid apache group.'; -$wb['backup_dir_error_regex'] = 'Invalid backup directory.'; -$wb['maildir_path_error_regex'] = 'Invalid maildir path.'; -$wb['homedir_path_error_regex'] = 'Invalid homedir path.'; -$wb['mailuser_name_error_regex'] = 'Invalid mailuser name.'; -$wb['mailuser_group_name_error_regex'] = 'Invalid mailuser group name.'; -$wb['mailuser_uid_error_range'] = 'Mailuser uid must be >= 2000'; -$wb['mailuser_gid_error_range'] = 'Mailuser gid must be >= 2000'; -$wb['getmail_config_dir_error_regex'] = 'Invalid getmail config directory.'; -$wb['website_basedir_error_regex'] = 'Invalid website basedir path, min. length 5 chars.'; -$wb['website_symlinks_error_regex'] = 'Invalid website symlinks.'; -$wb['vhost_conf_dir_error_regex'] = 'Invalid vhost config directory.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Invalid vhost conf enabled directory.'; -$wb['nginx_vhost_conf_dir_error_regex'] = 'Invalid nginx config directory.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Invalid nginx conf enabled directory.'; -$wb['ca_path_error_regex'] = 'Invalid CA path.'; -$wb['invalid_nginx_user_txt'] = 'Invalid nginx user.'; -$wb['invalid_nginx_group_txt'] = 'Invalid nginx group.'; -$wb['php_ini_path_apache_error_regex'] = 'Invalid apache php.ini path.'; -$wb['php_ini_path_cgi_error_regex'] = 'Invalid cgi php.ini path.'; -$wb['php_fpm_init_script_error_regex'] = 'Invalid php-fpm init script.'; -$wb['php_fpm_ini_path_error_regex'] = 'Invalid php-fpm ini path.'; -$wb['php_fpm_pool_dir_error_regex'] = 'Invalid php-fpm pool directory.'; -$wb['php_fpm_socket_dir_error_regex'] = 'Invalid php-fpm socket directory.'; -$wb['php_open_basedir_error_regex'] = 'Invalid php open_basedir.'; -$wb['awstats_data_dir_empty'] = 'awstats data directory is empty'; -$wb['awstats_data_dir_error_regex'] = 'Invalid awstats data directory.'; -$wb['awstats_pl_empty'] = 'awstats.pl setting is empty.'; -$wb['awstats_pl_error_regex'] = 'Invalid awstats.pl path.'; -$wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl is empty'; -$wb['awstats_buildstaticpages_pl_error_regex'] = 'Invalid awstats_buildstaticpages.pl path.'; -$wb['invalid_bind_user_txt'] = 'Invalid BIND user.'; -$wb['invalid_bind_group_txt'] = 'Invalid BIND group.'; -$wb['bind_zonefiles_dir_error_regex'] = 'Invalid BIND zonefiles directory.'; -$wb['named_conf_path_error_regex'] = 'Invalid named.conf path.'; -$wb['named_conf_local_path_error_regex'] = 'Invalid named.conf.local path.'; -$wb['fastcgi_starter_path_error_regex'] = 'Invalid fastcgi starter path.'; -$wb['fastcgi_starter_script_error_regex'] = 'Invalid fastcgi starter script.'; -$wb['fastcgi_alias_error_regex'] = 'Invalid fastcgi alias.'; -$wb['fastcgi_phpini_path_error_regex'] = 'Invalid fastcgi path.'; -$wb['fastcgi_bin_error_regex'] = 'Invalid fastcgi bin.'; -$wb['jailkit_chroot_home_error_regex'] = 'Invalid jaikit chroot home.'; -$wb['jailkit_chroot_app_sections_error_regex'] = 'Invalid jaikit chroot sections.'; -$wb['jailkit_chroot_app_programs_error_regex'] = 'Invalid jaikit chroot app programs.'; -$wb['jailkit_chroot_cron_programs_error_regex'] = 'Invalid jaikit chroot cron programs.'; -$wb['vlogger_config_dir_error_regex'] = 'Invalid vlogger config dir.'; -$wb['cron_init_script_error_regex'] = 'Invalid cron init script.'; -$wb['crontab_dir_error_regex'] = 'Invalid crontab directory.'; -$wb['cron_wget_error_regex'] = 'Invalid cron wget path.'; -$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/HTTP2 available'; -$wb['web_settings_txt'] = 'Web Server'; -$wb['xmpp_server_txt'] = 'XMPP Server'; -$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; -$wb['xmpp_module_saslauth'] = 'saslauth'; -$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; -$wb['xmpp_ports_txt'] = 'Component ports'; -$wb['xmpp_port_http_txt'] = 'HTTP'; -$wb['xmpp_port_https_txt'] = 'HTTPS'; -$wb['xmpp_port_pastebin_txt'] = 'Pastebin'; -$wb['xmpp_port_bosh_txt'] = 'BOSH'; -$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN"; -$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled"; -$wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check'; -$wb['migration_mode_txt'] = 'Server Migration Mode'; -$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; -$wb['logging_txt'] = 'Store website access and error logs'; -$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; -$wb['log_retention_txt'] = 'Log retention (days)'; -$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; -$wb['php_default_name_txt'] = 'Description Default PHP-Version'; -$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; -$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; -$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; -?> diff --git a/interface/web/admin/lib/lang/en_server_config.lng.rej b/interface/web/admin/lib/lang/en_server_config.lng.rej deleted file mode 100644 index 1460249765..0000000000 --- a/interface/web/admin/lib/lang/en_server_config.lng.rej +++ /dev/null @@ -1,11 +0,0 @@ ---- interface/web/admin/lib/lang/en_server_config.lng -+++ interface/web/admin/lib/lang/en_server_config.lng -@@ -296,4 +296,7 @@ $wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; - $wb['php_default_name_txt'] = 'Description Default PHP-Version'; - $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; - $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; --?> -+$wb['content_filter_txt'] = 'Content Filter'; -+$wb['rspamd_url_txt'] = 'Rspamd URL'; -+$wb['rspamd_user_txt'] = 'Rspamd User'; -+$wb['rspamd_password_txt'] = 'Rspamd Password'; \ No newline at end of file diff --git a/interface/web/mail/form/spamfilter_policy.tform.php.orig b/interface/web/mail/form/spamfilter_policy.tform.php.orig deleted file mode 100644 index 31e8b8092a..0000000000 --- a/interface/web/mail/form/spamfilter_policy.tform.php.orig +++ /dev/null @@ -1,496 +0,0 @@ -<?php - -/* - Form Definition - - Tabledefinition - - Datatypes: - - INTEGER (Forces the input to Int) - - DOUBLE - - CURRENCY (Formats the values to currency notation) - - VARCHAR (no format check, maxlength: 255) - - TEXT (no format check) - - DATE (Dateformat, automatic conversion to timestamps) - - Formtype: - - TEXT (Textfield) - - TEXTAREA (Textarea) - - PASSWORD (Password textfield, input is not shown when edited) - - SELECT (Select option field) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hint: - The ID field of the database table is not part of the datafield definition. - The ID field must be always auto incement (int or bigint). - - -*/ - -$form["title"] = "Spamfilter policy"; -$form["description"] = ""; -$form["name"] = "spamfilter_policy"; -$form["action"] = "spamfilter_policy_edit.php"; -$form["db_table"] = "spamfilter_policy"; -$form["db_table_idx"] = "id"; -$form["db_history"] = "yes"; -$form["tab_default"] = "policy"; -$form["list_default"] = "spamfilter_policy_list.php"; -$form["auth"] = 'yes'; // yes / no - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = 'r'; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['policy'] = array ( - 'title' => "Policy", - 'width' => 100, - 'template' => "templates/spamfilter_policy_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'policy_name' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - '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' - ), - 'virus_lover' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'spam_lover' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'banned_files_lover' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'bad_header_lover' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'bypass_virus_checks' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'bypass_banned_checks' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'bypass_header_checks' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['quarantine'] = array ( - 'title' => "Quarantine", - 'width' => 100, - 'template' => "templates/spamfilter_quarantine_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'virus_quarantine_to' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['taglevel'] = array ( - 'title' => "Tag-Level", - 'width' => 100, - 'template' => "templates/spamfilter_taglevel_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'spam_tag_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'spam_tag2_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'spam_kill_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'spam_dsn_cutoff_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'spam_quarantine_cutoff_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'spam_modifies_subj' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['other'] = array ( - 'title' => "Other", - 'width' => 100, - 'template' => "templates/spamfilter_other_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'addr_extension_virus' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS'), - 1 => array( 'event' => 'SAVE', - 'type' => 'STRIPNL') - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'warnvirusrecip' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'warnbannedrecip' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - 'warnbadhrecip' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'N', - 'value' => array('N' => 'No', 'Y' => 'Yes') - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - - 'message_size_limit' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - - //################################# - // ENDE Datatable fields - //################################# - ) -); - -?> -- GitLab From a23052c6cd5a63ddb87cee2d42f5117d69fd50ba Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 15:14:20 +0200 Subject: [PATCH 077/571] - fixed argument replacement in exec_safe function --- interface/lib/classes/system.inc.php | 3 ++- server/lib/classes/system.inc.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index ede53034d3..0be2b6b1e9 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -71,7 +71,8 @@ class system { } if($arg_count > 1) { $args = func_get_args(); - + array_shift($args); + $pos = 0; $a = 0; foreach($args as $value) { diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 88cf83eeba..288f9d73f8 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2077,6 +2077,7 @@ class system{ } if($arg_count > 1) { $args = func_get_args(); + array_shift($args); $pos = 0; $a = 0; -- GitLab From d6ab12b7da16a426b96fc086f828ae7f81b573ec Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 15:46:25 +0200 Subject: [PATCH 078/571] - fixed PHP warning (undefined constant openvz_tools) --- server/lib/classes/cron.d/100-monitor_openvz.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 30b51b4b5f..adc092ec95 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(); -- GitLab From cbb258385a579f319ca6dde17f9b20158c5d4f6e Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 15:47:32 +0200 Subject: [PATCH 079/571] - fixed PHP warning The each() function is deprecated in cron.inc.php --- server/lib/classes/cron.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php index 48ca093739..c6c2ad02b2 100644 --- a/server/lib/classes/cron.inc.php +++ b/server/lib/classes/cron.inc.php @@ -264,7 +264,7 @@ class cron { if(!array_key_exists($sField, $this->_aValidValues)) return false; reset($this->_aValidValues[$sField]); - while(($cur = each($this->_aValidValues[$sField])) !== false) { + foreach($this->_aValidValues[$sField] as $cur) { if($bIncludeCurrent == true && $cur['value'] >= $iValue) return $cur['value']; elseif($cur['value'] > $iValue) return $cur['value']; } -- GitLab From a0fed931cbf202c6d94672d3401e9286b6643843 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 15:53:06 +0200 Subject: [PATCH 080/571] - fixed problem with gid/uid problem on user creation (apache2 and nginx plugin) --- server/plugins-available/apache2_plugin.inc.php | 10 +++++----- server/plugins-available/nginx_plugin.inc.php | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 2183e96eb4..ad8de1ab4c 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -606,7 +606,7 @@ class apache2_plugin { $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - $app->system->exec_safe('groupadd ? ?', $fixed_gid_param, $groupname); + $app->system->exec_safe('groupadd ' . $fixed_gid_param . ' ?', $groupname); if($apache_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } @@ -614,11 +614,11 @@ class apache2_plugin { $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - $app->system->exec_safe('useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); - if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } else { - $app->system->exec_safe('useradd -d ? -g ? ? ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); - if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($apache_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 9913299aa5..86d5aba14f 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -451,7 +451,7 @@ class nginx_plugin { $groupname = $data['new']['system_group']; if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - $app->system->exec_safe('groupadd ? ?', $fixed_gid_param, $groupname); + $app->system->exec_safe('groupadd ' . $fixed_gid_param . ' ?', $groupname); if($nginx_chrooted) $app->system->exec_safe('chroot ? groupadd ?', $web_config['website_basedir'], $groupname); $app->log('Adding the group: '.$groupname, LOGLEVEL_DEBUG); } @@ -459,11 +459,11 @@ class nginx_plugin { $username = $data['new']['system_user']; if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { if($web_config['add_web_users_to_sshusers_group'] == 'y') { - $app->system->exec_safe('useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); - if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' -G sshusers ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } else { - $app->system->exec_safe('useradd -d ? -g ? ? ? -s /bin/false', $data['new']['document_root'], $groupname, $fixed_uid_param, $username); - if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ? ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $fixed_uid_param, $username); + $app->system->exec_safe('useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $data['new']['document_root'], $groupname, $username); + if($nginx_chrooted) $app->system->exec_safe('chroot ? useradd -d ? -g ? ' . $fixed_uid_param . ' ? -s /bin/false', $web_config['website_basedir'], $data['new']['document_root'], $groupname, $username); } $app->log('Adding the user: '.$username, LOGLEVEL_DEBUG); } -- GitLab From 112102507f29ea3b10313bac16e46978773f77db Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 15:58:17 +0200 Subject: [PATCH 081/571] - fixed invalid argument count on exec_safe in shell_user plugin --- server/plugins-available/shelluser_base_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 90e3293ad7..1fa61f8438 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -129,9 +129,9 @@ class shelluser_base_plugin { $app->system->chgrp($homedir,$data['new']['pgroup'],false); } $command = 'useradd -d ? -g ? -o ?'; // non unique - if($data['new']['password'] != '') $command .= ' -p ?'; + if($data['new']['password'] != '') $command .= ' -p ' . escapeshellarg($data['new']['password']); $command .= ' -s ? -u ? ?'; - $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['password'], $data['new']['shell'], $uid, $data['new']['username']); + $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['shell'], $uid, $data['new']['username']); $app->log("Executed command: ".$command, LOGLEVEL_DEBUG); $app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG); -- GitLab From 6e4209499f267108c7ac25a1244177255b4b9820 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 16:00:16 +0200 Subject: [PATCH 082/571] - fixed parameter naming in app.inc.php (interface) --- interface/lib/app.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 46f7213240..11bd024398 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -78,7 +78,7 @@ class app { $this->uses($prop); if(property_exists($this, $prop)) return $this->{$prop}; - else trigger_error('Undefined property ' . $name . ' of class app', E_USER_WARNING); + else trigger_error('Undefined property ' . $prop . ' of class app', E_USER_WARNING); } public function __destruct() { -- GitLab From a68bd9a76c61e04665fb144762aba2d57dd8c88b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 31 Jul 2019 16:09:03 +0200 Subject: [PATCH 083/571] - too many arguments for useradd in shell user plugin --- server/plugins-available/shelluser_base_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 1fa61f8438..b4e47b4e97 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -128,7 +128,7 @@ class shelluser_base_plugin { $app->system->chown($homedir,$data['new']['puser'],false); $app->system->chgrp($homedir,$data['new']['pgroup'],false); } - $command = 'useradd -d ? -g ? -o ?'; // non unique + $command = 'useradd -d ? -g ? -o'; // non unique if($data['new']['password'] != '') $command .= ' -p ' . escapeshellarg($data['new']['password']); $command .= ' -s ? -u ? ?'; $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['shell'], $uid, $data['new']['username']); -- GitLab From 8f1357074fec6a5a74bd3531a38a581cad8550ab Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 1 Aug 2019 19:20:52 +0200 Subject: [PATCH 084/571] - set autofocus on username/email field for login page, implements #5358 --- interface/web/login/templates/index.htm | 2 +- interface/web/login/templates/password_reset.htm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/login/templates/index.htm b/interface/web/login/templates/index.htm index 9a75a66cbd..e03e58f1f1 100644 --- a/interface/web/login/templates/index.htm +++ b/interface/web/login/templates/index.htm @@ -4,7 +4,7 @@ <form accept-charset="UTF-8" role="form" method="post" action="index.php"> <fieldset> <div class="form-group"> - <input class="form-control" placeholder="{tmpl_var name='username_txt'}" name="username" id="username" type="text"> + <input class="form-control" placeholder="{tmpl_var name='username_txt'}" name="username" id="username" type="text" autofocus> </div> <div class="form-group"> <input class="form-control" placeholder="{tmpl_var name='password_txt'}" name="password" id="password" type="password" value=""> diff --git a/interface/web/login/templates/password_reset.htm b/interface/web/login/templates/password_reset.htm index 66faf490f4..49fa528834 100644 --- a/interface/web/login/templates/password_reset.htm +++ b/interface/web/login/templates/password_reset.htm @@ -9,7 +9,7 @@ <form accept-charset="UTF-8" role="form" method="post" action="password_reset.php"> <fieldset> <div class="form-group"> - <input class="form-control" placeholder="{tmpl_var name='email_txt'}" name="email" id="email" type="text"> + <input class="form-control" placeholder="{tmpl_var name='email_txt'}" name="email" id="email" type="text" autofocus> </div> <div class="form-group"> <input class="form-control" placeholder="{tmpl_var name='username_txt'}" name="username" id="username" type="text"> -- GitLab From 793394b5084d1bf912e5e94955cbcdaee18c1545 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 2 Aug 2019 13:44:58 +0200 Subject: [PATCH 085/571] - fixed invalid arguments for exec_safe on dkim --- interface/web/mail/ajax_get_json.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index 69705ba6f7..412958a315 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -54,8 +54,9 @@ if($type == 'create_dkim' && $domain_id != ''){ if ($dkim_strength=='') $dkim_strength = 2048; $rnd_val = $dkim_strength * 10; - $app->system->exec_safe('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null', $output, $result); - $app->system->exec_safe('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null', $privkey, $result); + $app->system->exec_safe('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null'); + $app->system->exec_safe('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null'); + $privkey = $app->system->last_exec_out(); unlink("../../temp/random-data.bin"); $dkim_private=''; foreach($privkey as $values) $dkim_private=$dkim_private.$values."\n"; -- GitLab From e39bc1d6b6db40f70d59340b4dd45957bf9e5499 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 2 Aug 2019 14:16:02 +0200 Subject: [PATCH 086/571] - dkim_signing conf for rspamd not readable for daemon --- install/lib/installer_base.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 4db0da1ecf..6fd8024e86 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1578,13 +1578,13 @@ class installer_base { exec('cp tpl/rspamd_neural_group.conf.master /etc/rspamd/local.d/neural_group.conf'); } - exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); - $tpl = new tpl(); $tpl->newTemplate('rspamd_dkim_signing.conf.master'); $tpl->setVar('dkim_path', $mail_config['dkim_path']); wf('/etc/rspamd/local.d/dkim_signing.conf', $tpl->grab()); + exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); + $command = 'usermod -a -G amavis _rspamd'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); -- GitLab From 6311f1edc90f5a5327ca496f2fe03e833d98f130 Mon Sep 17 00:00:00 2001 From: Patrick ZAJDA <patrick@zajda.fr> Date: Sat, 3 Aug 2019 16:44:50 +0200 Subject: [PATCH 087/571] Put http to https redirect before SEO in Nginx virtualhost. It makes better the compliance with HSTS, http to https redirect must be done before domain to www.domain. --- server/conf/nginx_vhost.conf.master | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index e78a107c77..b1db61fe1c 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -25,6 +25,13 @@ server { root <tmpl_var name='web_document_root_www'>; +<tmpl_if name='ssl_enabled'> +<tmpl_if name='rewrite_to_https' op='==' value='y'> + if ($scheme != "https") { + rewrite ^ https://$http_host$request_uri? permanent; + } +</tmpl_if> +</tmpl_if> <tmpl_if name='seo_redirect_enabled'> if ($http_host <tmpl_var name='seo_redirect_operator'> "<tmpl_var name='seo_redirect_origin_domain'>") { rewrite ^ $scheme://<tmpl_var name='seo_redirect_target_domain'>$request_uri? permanent; @@ -40,13 +47,6 @@ server { rewrite ^<tmpl_var name='local_redirect_exclude'>(.*)$ <tmpl_var name='local_redirect_target'>$2 <tmpl_var name='local_redirect_type'>; } </tmpl_loop> -<tmpl_if name='ssl_enabled'> -<tmpl_if name='rewrite_to_https' op='==' value='y'> - if ($scheme != "https") { - rewrite ^ https://$http_host$request_uri? permanent; - } -</tmpl_if> -</tmpl_if> <tmpl_loop name="own_redirects"> <tmpl_if name='use_rewrite'> -- GitLab From af99f3ef9682e9a5e75d9b67698ee6e57436c6b9 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 6 Aug 2019 13:45:09 +0200 Subject: [PATCH 088/571] Fixes #5362 wrong pool dir used for php-fpm --- server/plugins-available/apache2_plugin.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index ad8de1ab4c..59e97629cb 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1559,9 +1559,11 @@ class apache2_plugin { if($default_php_fpm){ $pool_dir = $web_config['php_fpm_pool_dir']; + } else { $pool_dir = $custom_php_fpm_pool_dir; } $pool_dir = trim($pool_dir); + if(substr($pool_dir, -1) != '/') $pool_dir .= '/'; $pool_name = 'web'.$data['new']['domain_id']; $socket_dir = $web_config['php_fpm_socket_dir']; -- GitLab From 8b2ecd98f9c43966475a736ee6105dde3f140593 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Wed, 7 Aug 2019 12:42:49 +0200 Subject: [PATCH 089/571] fixed typo --- interface/web/dns/dns_dkim_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php index 35bac0d0c6..5c95b2033d 100644 --- a/interface/web/dns/dns_dkim_edit.php +++ b/interface/web/dns/dns_dkim_edit.php @@ -128,7 +128,7 @@ class page_action extends tform_actions { // check for duplicate entry $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']); if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"]; - if (empty($this->dataRecord['data'])) $app->tform->errorMessage /= $app->tform->wordbook["dkim_disabled_txt"]; + if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"]; // validate selector and public-key if (empty($this->dataRecord['selector'])) $app->tform->errorMessage .= '<br/>'.$app->tform->wordbook["dkim_selector_empty_txt"].'<br/>'; -- GitLab From c3e2fd1604eb485e08e4a6566b8b43e0048c3b19 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 12 Aug 2019 14:13:22 +0200 Subject: [PATCH 090/571] - rspamd is not set even if it is installed --- install/lib/installer_base.lib.php | 2 ++ install/lib/update.lib.php | 3 +++ 2 files changed, 5 insertions(+) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 6fd8024e86..b60300e2b1 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -326,6 +326,8 @@ class installer_base { $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; + $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis'; + $tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n'; $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir']; diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index fd1a34b2ca..9deb8ca10e 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -335,6 +335,9 @@ function updateDbAndIni() { $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; + // do not switch to rspamd automatically! + // $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis'; + $tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n'; $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir']; -- GitLab From befdfb2ae5e9d33c90a1584c3be0fd055bcd0687 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 12 Aug 2019 15:01:31 +0200 Subject: [PATCH 091/571] - added missing rspamd lines in apps vhost template on install --- install/lib/installer_base.lib.php | 11 ++++++++++- install/tpl/apache_apps.vhost.master | 18 ++++++++++++++++++ install/tpl/nginx_apps.vhost.master | 24 ++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index b60300e2b1..c7f955d945 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2226,7 +2226,10 @@ class installer_base { $tpl->setVar('logging','yes'); } - + if($conf['rspamd']['installed'] == true) { + $tpl->setVar('use_rspamd', 'yes'); + } + // comment out the listen directive if port is 80 or 443 if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { $tpl->setVar('vhost_port_listen','#'); @@ -2294,6 +2297,12 @@ class installer_base { $apps_vhost_ip = $conf['web']['apps_vhost_ip'].':'; } + if($conf['rspamd']['installed'] == true) { + $content = str_replace('{use_rspamd}', '', $content); + } else { + $content = str_replace('{use_rspamd}', '# ', $content); + } + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index ee1b693097..9cccf8d38e 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -19,6 +19,12 @@ RequestHeader unset Proxy early </IfModule> + {tmpl_if name="enable_spdy" op="==" value="y"} + <IfModule spdy_module> + SpdyEnabled on + </IfModule> + {/tmpl_if} + <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -68,6 +74,18 @@ </Directory> </IfModule> +{tmpl_if name="use_rspamd"} + <Location /rspamd> + Order allow,deny + Allow from all + </Location> + RewriteEngine On + RewriteRule ^/rspamd$ /rspamd/ [R,L] + RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P] +{/tmpl_if} + + + </VirtualHost> diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index 3d00d11106..871dff8c57 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -208,4 +208,28 @@ server { alias /var/lib/mailman/archives/public; autoindex on; } + + {use_rspamd}location /rspamd/ { + {use_rspamd}proxy_pass http://127.0.0.1:11334/; + {use_rspamd}rewrite ^//(.*) /$1; + {use_rspamd}proxy_set_header X-Forwarded-Proto $scheme; + {use_rspamd}proxy_set_header Host $host; + {use_rspamd}proxy_set_header X-Real-IP $remote_addr; + {use_rspamd}proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + {use_rspamd}proxy_pass_header Authorization; + {use_rspamd}client_max_body_size 0; + {use_rspamd}client_body_buffer_size 1m; + {use_rspamd}proxy_intercept_errors on; + {use_rspamd}proxy_buffering on; + {use_rspamd}proxy_buffer_size 128k; + {use_rspamd}proxy_buffers 256 16k; + {use_rspamd}proxy_busy_buffers_size 256k; + {use_rspamd}proxy_temp_file_write_size 256k; + {use_rspamd}proxy_max_temp_file_size 0; + {use_rspamd}proxy_read_timeout 300; + {use_rspamd} + {use_rspamd}location ~* ^/rspamd/(.+\.(jpg|jpeg|gif|css|png|js|ico|html?|xml|txt))$ { + {use_rspamd}alias /usr/share/rspamd/www/$1; + {use_rspamd}} + {use_rspamd}} } -- GitLab From 7eb3be87690f6bb9aa6e399375c7254359cf0f83 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 15 Aug 2019 10:42:41 +0200 Subject: [PATCH 092/571] - re-wrote policy editing to separate rspamd and amavis settings --- install/patches/upd_0088.php | 47 +++++ .../web/mail/form/spamfilter_policy.tform.php | 146 ++++++------- .../mail/lib/lang/en_spamfilter_policy.lng | 8 +- interface/web/mail/spamfilter_policy_edit.php | 80 ++----- .../mail/templates/spamfilter_amavis_edit.htm | 198 ++++++++++++++++++ .../mail/templates/spamfilter_other_edit.htm | 67 ------ .../mail/templates/spamfilter_policy_edit.htm | 36 +--- .../templates/spamfilter_quarantine_edit.htm | 35 ---- .../mail/templates/spamfilter_rspamd_edit.htm | 36 ++++ .../templates/spamfilter_taglevel_edit.htm | 69 ------ 10 files changed, 372 insertions(+), 350 deletions(-) create mode 100644 install/patches/upd_0088.php create mode 100644 interface/web/mail/templates/spamfilter_amavis_edit.htm delete mode 100644 interface/web/mail/templates/spamfilter_other_edit.htm delete mode 100644 interface/web/mail/templates/spamfilter_quarantine_edit.htm create mode 100644 interface/web/mail/templates/spamfilter_rspamd_edit.htm delete mode 100644 interface/web/mail/templates/spamfilter_taglevel_edit.htm diff --git a/install/patches/upd_0088.php b/install/patches/upd_0088.php new file mode 100644 index 0000000000..47a10f6080 --- /dev/null +++ b/install/patches/upd_0088.php @@ -0,0 +1,47 @@ +<?php + +if(!defined('INSTALLER_RUN')) die('Patch update file access violation.'); + +/* + Example installer patch update class. the classname must match + the php and the sql patch update filename. The php patches are + only executed when a corresponding sql patch exists. +*/ + +class upd_0088 extends installer_patch_update { + + public function onAfterSQL() { + global $inst; + + // delete all the files that were deleted on previous updates + $delete = array( + 'interface/web/mail/templates/spamfilter_taglevel_edit.htm', + 'interface/web/mail/templates/spamfilter_quarantine_edit.htm', + 'interface/web/mail/templates/spamfilter_other_edit.htm', + ); + + $curpath = dirname(dirname(realpath(dirname(__FILE__)))); + + $c = 0; + $del_all = false; + foreach($delete as $file) { + if(strpos($file, '..') !== false) continue; // security! + + if($del_all == false) { + $answer = $inst->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/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index d6ecef9bbc..2205dbb651 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -87,6 +87,21 @@ $form["tabs"]['policy'] = array ( 'default' => 'N', 'value' => array('N' => 'No', 'Y' => 'Yes') ), + //################################# + // ENDE Datatable fields + //################################# + ) +); + + +$form["tabs"]['amavis'] = array ( + 'title' => "Amavis", + 'width' => 100, + 'template' => "templates/spamfilter_amavis_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# 'banned_files_lover' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', @@ -117,21 +132,6 @@ $form["tabs"]['policy'] = array ( 'default' => 'N', 'value' => array('N' => 'No', 'Y' => 'Yes') ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['quarantine'] = array ( - 'title' => "Quarantine", - 'width' => 100, - 'template' => "templates/spamfilter_quarantine_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'virus_quarantine_to' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -216,20 +216,6 @@ $form["tabs"]['quarantine'] = array ( 'width' => '30', 'maxlength' => '255' ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - -$form["tabs"]['taglevel'] = array ( - 'title' => "Tag-Level", - 'width' => 100, - 'template' => "templates/spamfilter_taglevel_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'spam_tag_level' => array ( 'datatype' => 'DOUBLE', 'formtype' => 'TEXT', @@ -304,57 +290,6 @@ $form["tabs"]['taglevel'] = array ( 'width' => '30', 'maxlength' => '255' ), - 'rspamd_greylisting' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'rspamd_spam_greylisting_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'rspamd_spam_tag_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - 'rspamd_spam_tag_method' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'rewrite_subject', - 'value' => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt')) - ), - 'rspamd_spam_kill_level' => array ( - 'datatype' => 'DOUBLE', - 'formtype' => 'TEXT', - 'default' => '0', - 'value' => '', - 'width' => '10', - 'maxlength' => '255' - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - -$form["tabs"]['other'] = array ( - 'title' => "Other", - 'width' => 100, - 'template' => "templates/spamfilter_other_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# 'addr_extension_virus' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -522,11 +457,58 @@ $form["tabs"]['other'] = array ( 'width' => '30', 'maxlength' => '255' ), - //################################# // ENDE Datatable fields //################################# ) ); -?> +$form["tabs"]['rspamd'] = array ( + 'title' => "Rspamd", + 'width' => 100, + 'template' => "templates/spamfilter_rspamd_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'rspamd_greylisting' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'rspamd_spam_greylisting_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + 'rspamd_spam_tag_method' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'rewrite_subject', + 'value' => array('add_header' => $app->lng('add_header_txt'), 'rewrite_subject' => $app->lng('rewrite_subject_txt')) + ), + 'rspamd_spam_kill_level' => array ( + 'datatype' => 'DOUBLE', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '255' + ), + //################################# + // ENDE Datatable fields + //################################# + ) +); diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy.lng b/interface/web/mail/lib/lang/en_spamfilter_policy.lng index f9e8a8e303..af1aac5d7f 100644 --- a/interface/web/mail/lib/lang/en_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/en_spamfilter_policy.lng @@ -42,4 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; $wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; -?> \ No newline at end of file + +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; \ No newline at end of file diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 55a42fe847..ffc0818ffa 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -49,48 +49,9 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { - - function onShow() { - global $app, $conf; - - // get the config - $app->uses('getconf'); - $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - - $content_filter = 'amavisd'; - if($mail_config['content_filter'] == 'rspamd'){ - $content_filter = 'rspamd'; - unset($app->tform->formDef["tabs"]["policy"]['fields']['banned_files_lover']); - unset($app->tform->formDef["tabs"]["policy"]['fields']['bad_header_lover']); - unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_virus_checks']); - unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_banned_checks']); - unset($app->tform->formDef["tabs"]["policy"]['fields']['bypass_header_checks']); - - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_tag2_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_kill_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_dsn_cutoff_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_quarantine_cutoff_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_modifies_subj']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['spam_subject_tag2']); - - unset($app->tform->formDef["tabs"]["quarantine"]); - unset($app->tform->formDef["tabs"]["other"]); - } else { - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_greylisting']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_greylisting_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_level']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_tag_method']); - unset($app->tform->formDef["tabs"]["taglevel"]['fields']['rspamd_spam_kill_level']); - } - $app->tpl->setVar("content_filter", $content_filter); - - parent::onShow(); - } function onShowNew() { - global $app, $conf; + global $app; // we will check only users, not admins if($_SESSION["s"]["user"]["typ"] == 'user') { @@ -106,7 +67,7 @@ class page_action extends tform_actions { } function onSubmit() { - global $app, $conf; + global $app; // Check the client limits, if user is not the admin if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin @@ -128,35 +89,30 @@ class page_action extends tform_actions { } function onAfterUpdate() { - global $app, $conf; - - $app->uses('getconf'); - $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + global $app; - if($mail_config['content_filter'] == 'rspamd'){ - $record_has_changed = false; - if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) $this->dataRecord['rspamd_greylisting'] = 'n'; - foreach($this->dataRecord as $key => $val) { - if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { - // Record has changed - $record_has_changed = true; - } + $record_has_changed = false; + if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) { + $this->dataRecord['rspamd_greylisting'] = 'n'; + } + foreach($this->dataRecord as $key => $val) { + if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { + // Record has changed + $record_has_changed = true; } - - if($record_has_changed){ - $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); + } + + if($record_has_changed){ + $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); - if(is_array($spamfilter_users) && !empty($spamfilter_users)){ - foreach($spamfilter_users as $spamfilter_user){ - $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); - } + if(is_array($spamfilter_users) && !empty($spamfilter_users)){ + foreach($spamfilter_users as $spamfilter_user){ + $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); } } } } - } $app->tform_actions = new page_action; $app->tform_actions->onLoad(); -?> \ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_amavis_edit.htm b/interface/web/mail/templates/spamfilter_amavis_edit.htm new file mode 100644 index 0000000000..41bf6b5410 --- /dev/null +++ b/interface/web/mail/templates/spamfilter_amavis_edit.htm @@ -0,0 +1,198 @@ +<div class='page-header'> + <h1><tmpl_var name="list_head_txt"></h1> +</div> +<p><tmpl_var name="list_desc_txt"></p> + +<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> + <!-- Settings --> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingSettings"> + <h4 class="panel-title"> + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSettings" aria-expanded="true" aria-controls="collapseSettings"> + {tmpl_var name='amavis_settings_txt'} + </a> + </h4> + </div> + <div id="collapseSettings" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingWeb"> + <div class="panel-body"> + <div class="form-group"> + <label for="banned_files_lover" class="col-sm-3 control-label">{tmpl_var name='banned_files_lover_txt'}</label> + <div class="col-sm-9"><select name="banned_files_lover" id="banned_files_lover" class="form-control"> + {tmpl_var name='banned_files_lover'} + </select></div> + </div> + <div class="form-group"> + <label for="bad_header_lover" class="col-sm-3 control-label">{tmpl_var name='bad_header_lover_txt'}</label> + <div class="col-sm-9"><select name="bad_header_lover" id="bad_header_lover" class="form-control"> + {tmpl_var name='bad_header_lover'} + </select></div> + </div> + <div class="form-group"> + <label for="bypass_virus_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_virus_checks_txt'}</label> + <div class="col-sm-9"><select name="bypass_virus_checks" id="bypass_virus_checks" class="form-control"> + {tmpl_var name='bypass_virus_checks'} + </select></div> + </div> + <div class="form-group"> + <label for="bypass_banned_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_banned_checks_txt'}</label> + <div class="col-sm-9"><select name="bypass_banned_checks" id="bypass_banned_checks" class="form-control"> + {tmpl_var name='bypass_banned_checks'} + </select></div> + </div> + <div class="form-group"> + <label for="bypass_header_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_header_checks_txt'}</label> + <div class="col-sm-9"><select name="bypass_header_checks" id="bypass_header_checks" class="form-control"> + {tmpl_var name='bypass_header_checks'} + </select></div> + </div> + </div> + </div> + </div> + +<!-- Tag Level --> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingTaglevel"> + <h4 class="panel-title"> + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTaglevel" aria-expanded="true" aria-controls="collapseTaglevel"> + {tmpl_var name='amavis_taglevel_txt'} + </a> + </h4> + </div> + <div id="collapseTaglevel" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTaglevel"> + <div class="panel-body"> + + <div class="form-group"> + <label for="spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_tag2_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag2_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='spam_kill_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_dsn_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_quarantine_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_modifies_subj" class="col-sm-3 control-label">{tmpl_var name='spam_modifies_subj_txt'}</label> + <div class="col-sm-9"><select name="spam_modifies_subj" id="spam_modifies_subj" class="form-control"> + {tmpl_var name='spam_modifies_subj'} + </select></div> + </div> + <div class="form-group"> + <label for="spam_subject_tag" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_subject_tag2" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag2_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" class="form-control" /></div></div> + </div> + </div> + </div> + +<!-- Quarantine --> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingQuarantine"> + <h4 class="panel-title"> + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseQuarantine" aria-expanded="true" aria-controls="collapseQuarantine"> + {tmpl_var name='amavis_quarantine_txt'} + </a> + </h4> + </div> + <div id="collapseQuarantine" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingQuarantine"> + <div class="panel-body"> + + + <div class="form-group"> + <label for="virus_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='virus_quarantine_to_txt'}</label> + <div class="col-sm-9"><input type="text" name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_to_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="banned_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='banned_quarantine_to_txt'}</label> + <div class="col-sm-9"><input type="text" name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="bad_header_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='bad_header_quarantine_to_txt'}</label> + <div class="col-sm-9"><input type="text" name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" class="form-control" /></div></div> + </div> + </div> + </div> + +<!-- Other --> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingOther"> + <h4 class="panel-title"> + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOther" aria-expanded="true" aria-controls="collapseOther"> + {tmpl_var name='amavis_other_txt'} + </a> + </h4> + </div> + <div id="collapseOther" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOther"> + <div class="panel-body"> + + <div class="form-group"> + <label for="addr_extension_virus" class="col-sm-3 control-label">{tmpl_var name='addr_extension_virus_txt'}</label> + <div class="col-sm-9"><input type="text" name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="addr_extension_spam" class="col-sm-3 control-label">{tmpl_var name='addr_extension_spam_txt'}</label> + <div class="col-sm-9"><input type="text" name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="addr_extension_banned" class="col-sm-3 control-label">{tmpl_var name='addr_extension_banned_txt'}</label> + <div class="col-sm-9"><input type="text" name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="addr_extension_bad_header" class="col-sm-3 control-label">{tmpl_var name='addr_extension_bad_header_txt'}</label> + <div class="col-sm-9"><input type="text" name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="warnvirusrecip" class="col-sm-3 control-label">{tmpl_var name='warnvirusrecip_txt'}</label> + <div class="col-sm-9"><select name="warnvirusrecip" id="warnvirusrecip" class="form-control"> + {tmpl_var name='warnvirusrecip'} + </select></div> + </div> + <div class="form-group"> + <label for="warnbannedrecip" class="col-sm-3 control-label">{tmpl_var name='warnbannedrecip_txt'}</label> + <div class="col-sm-9"><select name="warnbannedrecip" id="warnbannedrecip" class="form-control"> + {tmpl_var name='warnbannedrecip'} + </select></div> + </div> + <div class="form-group"> + <label for="warnbadhrecip" class="col-sm-3 control-label">{tmpl_var name='warnbadhrecip_txt'}</label> + <div class="col-sm-9"><select name="warnbadhrecip" id="warnbadhrecip" class="form-control"> + {tmpl_var name='warnbadhrecip'} + </select></div> + </div> + <div class="form-group"> + <label for="newvirus_admin" class="col-sm-3 control-label">{tmpl_var name='newvirus_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="virus_admin" class="col-sm-3 control-label">{tmpl_var name='virus_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="banned_admin" class="col-sm-3 control-label">{tmpl_var name='banned_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="bad_header_admin" class="col-sm-3 control-label">{tmpl_var name='bad_header_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="spam_admin" class="col-sm-3 control-label">{tmpl_var name='spam_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="message_size_limit" class="col-sm-3 control-label">{tmpl_var name='message_size_limit_txt'}</label> + <div class="col-sm-9"><div class="input-group"><input type="text" name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" class="form-control" aria-describedby="message_size_limit-desc" /><span class="input-group-addon" id="message_size_limit-desc">Bytes</span></div></div> + </div> + <div class="form-group"> + <label for="banned_rulenames" class="col-sm-3 control-label">{tmpl_var name='banned_rulenames_txt'}</label> + <div class="col-sm-9"><input type="text" name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" class="form-control" /></div></div> + </div> + </div> + </div> + + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> + + <div class="clear"><div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> + </div></div> \ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_other_edit.htm b/interface/web/mail/templates/spamfilter_other_edit.htm deleted file mode 100644 index 83cd4a95c9..0000000000 --- a/interface/web/mail/templates/spamfilter_other_edit.htm +++ /dev/null @@ -1,67 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <div class="form-group"> - <label for="addr_extension_virus" class="col-sm-3 control-label">{tmpl_var name='addr_extension_virus_txt'}</label> - <div class="col-sm-9"><input type="text" name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="addr_extension_spam" class="col-sm-3 control-label">{tmpl_var name='addr_extension_spam_txt'}</label> - <div class="col-sm-9"><input type="text" name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="addr_extension_banned" class="col-sm-3 control-label">{tmpl_var name='addr_extension_banned_txt'}</label> - <div class="col-sm-9"><input type="text" name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="addr_extension_bad_header" class="col-sm-3 control-label">{tmpl_var name='addr_extension_bad_header_txt'}</label> - <div class="col-sm-9"><input type="text" name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="warnvirusrecip" class="col-sm-3 control-label">{tmpl_var name='warnvirusrecip_txt'}</label> - <div class="col-sm-9"><select name="warnvirusrecip" id="warnvirusrecip" class="form-control"> - {tmpl_var name='warnvirusrecip'} - </select></div> - </div> - <div class="form-group"> - <label for="warnbannedrecip" class="col-sm-3 control-label">{tmpl_var name='warnbannedrecip_txt'}</label> - <div class="col-sm-9"><select name="warnbannedrecip" id="warnbannedrecip" class="form-control"> - {tmpl_var name='warnbannedrecip'} - </select></div> - </div> - <div class="form-group"> - <label for="warnbadhrecip" class="col-sm-3 control-label">{tmpl_var name='warnbadhrecip_txt'}</label> - <div class="col-sm-9"><select name="warnbadhrecip" id="warnbadhrecip" class="form-control"> - {tmpl_var name='warnbadhrecip'} - </select></div> - </div> - <div class="form-group"> - <label for="newvirus_admin" class="col-sm-3 control-label">{tmpl_var name='newvirus_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="virus_admin" class="col-sm-3 control-label">{tmpl_var name='virus_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="banned_admin" class="col-sm-3 control-label">{tmpl_var name='banned_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="bad_header_admin" class="col-sm-3 control-label">{tmpl_var name='bad_header_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_admin" class="col-sm-3 control-label">{tmpl_var name='spam_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="message_size_limit" class="col-sm-3 control-label">{tmpl_var name='message_size_limit_txt'}</label> - <div class="col-sm-9"><div class="input-group"><input type="text" name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" class="form-control" aria-describedby="message_size_limit-desc" /><span class="input-group-addon" id="message_size_limit-desc">Bytes</span></div></div> - </div> - <div class="form-group"> - <label for="banned_rulenames" class="col-sm-3 control-label">{tmpl_var name='banned_rulenames_txt'}</label> - <div class="col-sm-9"><input type="text" name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" class="form-control" /></div></div> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm index 0496d3a85a..506b4d5b89 100644 --- a/interface/web/mail/templates/spamfilter_policy_edit.htm +++ b/interface/web/mail/templates/spamfilter_policy_edit.htm @@ -3,8 +3,7 @@ </div> <p><tmpl_var name="list_desc_txt"></p> - - + <div class="form-group"> <label for="policy_name" class="col-sm-3 control-label">{tmpl_var name='policy_name_txt'}</label> <div class="col-sm-9"><input type="text" name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" class="form-control" /></div></div> @@ -20,38 +19,7 @@ {tmpl_var name='spam_lover'} </select></div> </div> - <tmpl_if name='content_filter' op='==' value='amavisd'> - <div class="form-group"> - <label for="banned_files_lover" class="col-sm-3 control-label">{tmpl_var name='banned_files_lover_txt'}</label> - <div class="col-sm-9"><select name="banned_files_lover" id="banned_files_lover" class="form-control"> - {tmpl_var name='banned_files_lover'} - </select></div> - </div> - <div class="form-group"> - <label for="bad_header_lover" class="col-sm-3 control-label">{tmpl_var name='bad_header_lover_txt'}</label> - <div class="col-sm-9"><select name="bad_header_lover" id="bad_header_lover" class="form-control"> - {tmpl_var name='bad_header_lover'} - </select></div> - </div> - <div class="form-group"> - <label for="bypass_virus_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_virus_checks_txt'}</label> - <div class="col-sm-9"><select name="bypass_virus_checks" id="bypass_virus_checks" class="form-control"> - {tmpl_var name='bypass_virus_checks'} - </select></div> - </div> - <div class="form-group"> - <label for="bypass_banned_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_banned_checks_txt'}</label> - <div class="col-sm-9"><select name="bypass_banned_checks" id="bypass_banned_checks" class="form-control"> - {tmpl_var name='bypass_banned_checks'} - </select></div> - </div> - <div class="form-group"> - <label for="bypass_header_checks" class="col-sm-3 control-label">{tmpl_var name='bypass_header_checks_txt'}</label> - <div class="col-sm-9"><select name="bypass_header_checks" id="bypass_header_checks" class="form-control"> - {tmpl_var name='bypass_header_checks'} - </select></div> - </div> - </tmpl_if> + <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/mail/templates/spamfilter_quarantine_edit.htm b/interface/web/mail/templates/spamfilter_quarantine_edit.htm deleted file mode 100644 index 7f44b58020..0000000000 --- a/interface/web/mail/templates/spamfilter_quarantine_edit.htm +++ /dev/null @@ -1,35 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <div class="form-group"> - <label for="virus_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='virus_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="banned_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='banned_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="bad_header_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='bad_header_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" class="form-control" /></div></div> - <!-- - <div class="form-group"> - <label for="clean_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='clean_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="clean_quarantine_to" id="clean_quarantine_to" value="{tmpl_var name='clean_quarantine_to'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="other_quarantine_to" class="col-sm-3 control-label">{tmpl_var name='other_quarantine_to_txt'}</label> - <div class="col-sm-9"><input type="text" name="other_quarantine_to" id="other_quarantine_to" value="{tmpl_var name='other_quarantine_to'}" class="form-control" /></div></div> - --> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm new file mode 100644 index 0000000000..73472a876c --- /dev/null +++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm @@ -0,0 +1,36 @@ +<div class='page-header'> + <h1><tmpl_var name="list_head_txt"></h1> +</div> +<p><tmpl_var name="list_desc_txt"></p> + + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='rspamd_greylisting'} + </div> + </div> + <div class="form-group"> + <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_tag_level" id="rspamd_spam_tag_level" value="{tmpl_var name='rspamd_spam_tag_level'}" class="form-control" /></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_tag_method" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_method_txt'}</label> + <div class="col-sm-9"><select name="rspamd_spam_tag_method" id="rspamd_spam_tag_method" class="form-control"> + {tmpl_var name='rspamd_spam_tag_method'} + </select></div> + </div> + <div class="form-group"> + <label for="rspamd_spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_kill_level_txt'}</label> + <div class="col-sm-9"><input type="text" name="rspamd_spam_kill_level" id="rspamd_spam_kill_level" value="{tmpl_var name='rspamd_spam_kill_level'}" class="form-control" /></div> + </div> + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> + + <div class="clear"><div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> + </div></div> \ No newline at end of file diff --git a/interface/web/mail/templates/spamfilter_taglevel_edit.htm b/interface/web/mail/templates/spamfilter_taglevel_edit.htm deleted file mode 100644 index 1b3c3b482c..0000000000 --- a/interface/web/mail/templates/spamfilter_taglevel_edit.htm +++ /dev/null @@ -1,69 +0,0 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <tmpl_if name='content_filter' op='==' value='amavisd'> - <div class="form-group"> - <label for="spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_tag2_level" class="col-sm-3 control-label">{tmpl_var name='spam_tag2_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='spam_kill_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_dsn_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_quarantine_cutoff_level" class="col-sm-3 control-label">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_modifies_subj" class="col-sm-3 control-label">{tmpl_var name='spam_modifies_subj_txt'}</label> - <div class="col-sm-9"><select name="spam_modifies_subj" id="spam_modifies_subj" class="form-control"> - {tmpl_var name='spam_modifies_subj'} - </select></div> - </div> - <div class="form-group"> - <label for="spam_subject_tag" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="spam_subject_tag2" class="col-sm-3 control-label">{tmpl_var name='spam_subject_tag2_txt'}</label> - <div class="col-sm-9"><input type="text" name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" class="form-control" /></div></div> - </tmpl_if> - <tmpl_if name='content_filter' op='==' value='rspamd'> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='rspamd_greylisting'} - </div> - </div> - <div class="form-group"> - <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div> - </div> - <div class="form-group"> - <label for="rspamd_spam_tag_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="rspamd_spam_tag_level" id="rspamd_spam_tag_level" value="{tmpl_var name='rspamd_spam_tag_level'}" class="form-control" /></div> - </div> - <div class="form-group"> - <label for="rspamd_spam_tag_method" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_tag_method_txt'}</label> - <div class="col-sm-9"><select name="rspamd_spam_tag_method" id="rspamd_spam_tag_method" class="form-control"> - {tmpl_var name='rspamd_spam_tag_method'} - </select></div> - </div> - <div class="form-group"> - <label for="rspamd_spam_kill_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_kill_level_txt'}</label> - <div class="col-sm-9"><input type="text" name="rspamd_spam_kill_level" id="rspamd_spam_kill_level" value="{tmpl_var name='rspamd_spam_kill_level'}" class="form-control" /></div> - </div> - </tmpl_if> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> -- GitLab From 63b9660ffad9e2a9a9de32b9f0dce8fd10b44dd7 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 16 Aug 2019 15:14:06 +0200 Subject: [PATCH 093/571] Fixes #5369 Internal ISPConfig cronjobs are not run in 3.1-dev version --- install/sql/incremental/upd_dev_collection.sql | 2 ++ server/lib/classes/cron.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index f86f6a93ac..91cbc81626 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -35,3 +35,5 @@ ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL; ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; + +DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02'; diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php index c6c2ad02b2..67be475fe3 100644 --- a/server/lib/classes/cron.inc.php +++ b/server/lib/classes/cron.inc.php @@ -265,8 +265,8 @@ class cron { reset($this->_aValidValues[$sField]); foreach($this->_aValidValues[$sField] as $cur) { - if($bIncludeCurrent == true && $cur['value'] >= $iValue) return $cur['value']; - elseif($cur['value'] > $iValue) return $cur['value']; + if($bIncludeCurrent == true && $cur >= $iValue) return $cur; + elseif($cur > $iValue) return $cur; } return reset($this->_aValidValues[$sField]); } -- GitLab From 2b3eb82dd3fdcedd90f7473ded8ba6a3ad2c7c94 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 16 Aug 2019 15:15:10 +0200 Subject: [PATCH 094/571] Plugins module not loaded in cron debugger which prevents debugging of the Let's encrypt plugin. --- server/cron_debug.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/cron_debug.php b/server/cron_debug.php index 2ab9289d26..c92410f3e5 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -39,7 +39,7 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE); $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('modules,ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); // Path settings -- GitLab From 2df03bce442fcdf691681ea0a7fa390d8a06dae7 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sat, 17 Aug 2019 11:01:28 +0200 Subject: [PATCH 095/571] - don't treat cron jobs as running when last run is older than 24h --- server/lib/classes/cronjob.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php index 9fba5af3c5..1e452b6481 100644 --- a/server/lib/classes/cronjob.inc.php +++ b/server/lib/classes/cronjob.inc.php @@ -100,7 +100,7 @@ class cronjob { // check the run time and values for this job // get previous run data - $data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, `running` FROM `sys_cron` WHERE `name` = ?", get_class($this)); + $data = $app->db->queryOneRecord("SELECT `last_run`, `next_run`, IF(`last_run` IS NOT NULL AND `last_run` < DATE_SUB(NOW(), INTERVAL 24 HOUR), 0, `running`) as `running` FROM `sys_cron` WHERE `name` = ?", get_class($this)); if($data) { if($data['last_run']) $this->_last_run = $data['last_run']; if($data['next_run']) $this->_next_run = $data['next_run']; -- GitLab From 3305f4ee9282f69666441122fdf9a53aa3189164 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:20:27 +0200 Subject: [PATCH 096/571] Force equal passwords in APS installer before form can be posted --- interface/web/sites/templates/aps_install_package.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/templates/aps_install_package.htm b/interface/web/sites/templates/aps_install_package.htm index 2c4b48b9d3..255a8685d5 100644 --- a/interface/web/sites/templates/aps_install_package.htm +++ b/interface/web/sites/templates/aps_install_package.htm @@ -57,7 +57,7 @@ <input type="hidden" name="install" value="0" /> <div class="clear"> <div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; ISPConfig.submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='btn_install_txt'}</button> + <button class="btn btn-default formbutton-success positive" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; ISPConfig.submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='btn_install_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/aps_availablepackages_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div> </div> -- GitLab From 0b1fac193e9cabc965b42645388ea45a5515cd9d Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:26:31 +0200 Subject: [PATCH 097/571] Don't try to load non-existing config in aps remote, fixes #4974 --- interface/lib/classes/remote.d/aps.inc.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php index 50dda48255..78330fc8bb 100644 --- a/interface/lib/classes/remote.d/aps.inc.php +++ b/interface/lib/classes/remote.d/aps.inc.php @@ -43,8 +43,7 @@ class remoting_aps extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - - require_once '../../../lib/config.inc.php'; + $app->load('aps_crawler'); $aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode -- GitLab From 2a3cadc8416c56f3c309df101249adffde3a0eaf Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:29:11 +0200 Subject: [PATCH 098/571] Minor language change for APS installer --- interface/web/sites/lib/lang/en_aps.lng | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/lib/lang/en_aps.lng b/interface/web/sites/lib/lang/en_aps.lng index b0300fe0cc..04f6fb798d 100644 --- a/interface/web/sites/lib/lang/en_aps.lng +++ b/interface/web/sites/lib/lang/en_aps.lng @@ -28,7 +28,7 @@ $wb['installation_txt'] = 'Installation'; $wb['install_location_txt'] = 'Install location'; $wb['btn_install_txt'] = 'Install'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['acceptance_txt'] = 'Acceptance'; +$wb['acceptance_txt'] = 'I accept the license'; $wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.'; $wb['install_language_txt'] = 'Interface language'; $wb['new_database_password_txt'] = 'New database password'; -- GitLab From 0bbef70c613b99664bc637ddb519697d3ce116cd Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:30:58 +0200 Subject: [PATCH 099/571] Load APS language file for APS instance list --- .../web/sites/list/aps_installedpackages.list.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/interface/web/sites/list/aps_installedpackages.list.php b/interface/web/sites/list/aps_installedpackages.list.php index d9a51d8bef..1f855082d5 100644 --- a/interface/web/sites/list/aps_installedpackages.list.php +++ b/interface/web/sites/list/aps_installedpackages.list.php @@ -28,6 +28,12 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +// Load the APS language file +$lngfile = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_aps.lng'; +require_once $lngfile; +$app->tpl->setVar($wb); +$app->load_language_file('web/sites/'.$lngfile); + $liste['name'] = 'aps_instances'; // Name of the list $liste['table'] = 'aps_instances'; // Database table $liste['table_idx'] = 'id'; // Table index @@ -85,9 +91,9 @@ $liste["item"][] = array('field' => 'instance_status', 'prefix' => '', 'suffix' => '', 'width' => '', - 'value' => array(INSTANCE_INSTALL => $app->lng('Installation_task'), - INSTANCE_ERROR => $app->lng('Installation_error'), - INSTANCE_SUCCESS => $app->lng('Installation_success'), - INSTANCE_REMOVE => $app->lng('Installation_remove')), + 'value' => array(INSTANCE_INSTALL => $app->lng('installation_task_txt'), + INSTANCE_ERROR => $app->lng('installation_error_txt'), + INSTANCE_SUCCESS => $app->lng('installation_success_txt'), + INSTANCE_REMOVE => $app->lng('installation_remove_txt')), 'table' => 'aps_instances'); ?> -- GitLab From 1b273e48f9030743eaa046414079b055e894d209 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:33:28 +0200 Subject: [PATCH 100/571] Fix APS package list table --- interface/web/sites/templates/aps_packages_list.htm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm index d3f3f8c3bb..501e7aeedd 100644 --- a/interface/web/sites/templates/aps_packages_list.htm +++ b/interface/web/sites/templates/aps_packages_list.htm @@ -6,7 +6,7 @@ <table class="table"> <thead class="dark form-group-sm"> <tr> - <th>{tmpl_var name='name_txt'}</th> + <th colspan="2">{tmpl_var name='name_txt'}</th> <th>{tmpl_var name='version_txt'}</th> <th>{tmpl_var name='category_txt'}</th> <tmpl_if name='is_admin'> @@ -15,7 +15,7 @@ <th class="small-col text-right"> </th> </tr> <tr> - <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td> + <td colspan="2"><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td> <td><input class="form-control" type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td> <td><select class="form-control" name="search_category" onChange="ISPConfig.submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td> <tmpl_if name='is_admin'> @@ -27,7 +27,7 @@ <tbody> <tmpl_loop name='records'> <tr> - <td><a href="#" data-load-content="sites/aps_packagedetails_show.php?id={tmpl_var name='id'}">{tmpl_var name='name'}</a></td> + <td colspan="2"><a href="#" data-load-content="sites/aps_packagedetails_show.php?id={tmpl_var name='id'}">{tmpl_var name='name'}</a></td> <td>{tmpl_var name='version'}-{tmpl_var name='release'}</td> <td>{tmpl_var name='category'}</td> <tmpl_if name='is_admin'> -- GitLab From 66ccf358c1d3463eddb4879f5b33bf9f5d851b2b Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 21 Aug 2019 14:48:35 +0200 Subject: [PATCH 101/571] Add missing API doc for sites_aps_change_package_status --- remoting_client/API-docs/navigation.html | 7 +++-- .../sites_aps_change_package_status.html | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 remoting_client/API-docs/sites_aps_change_package_status.html diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html index a9d32f7598..5168122f28 100644 --- a/remoting_client/API-docs/navigation.html +++ b/remoting_client/API-docs/navigation.html @@ -2,11 +2,11 @@ <html><head> <title>ISCPConfig 3 API Functions</title> - - + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - + <style type="text/css"> <!-- .command { @@ -200,6 +200,7 @@ <p><a href="server_get_php_versions.html" target="content">server_get_php_versions</a></p> <p><a href="server_get_serverid_by_ip.html" target="content">server_get_serverid_by_ip</a></p> <p><a href="sites_aps_available_packages_list.html" target="content">sites_aps_available_packages_list</a></p> +<p><a href="sites_aps_change_package_status.html" target="content">sites_aps_change_package_status</a></p> <p><a href="sites_aps_get_package_details.html" target="content">sites_aps_get_package_details</a></p> <p><a href="sites_aps_get_package_file.html" target="content">sites_aps_get_package_file</a></p> <p><a href="sites_aps_get_package_settings.html" target="content">sites_aps_get_package_settings</a></p> diff --git a/remoting_client/API-docs/sites_aps_change_package_status.html b/remoting_client/API-docs/sites_aps_change_package_status.html new file mode 100644 index 0000000000..bc8ad380ed --- /dev/null +++ b/remoting_client/API-docs/sites_aps_change_package_status.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPConfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>sites_aps_change_package_status(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Changes the status for specified APS package. Supply the APS package ID in $primary_id.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> package_status (<span class="paratype">int</span>) - can be 1 (= PACKAGE_LOCKED) or 2 (= PACKAGE_ENABLED)</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns true package status was changed.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> -- GitLab From c7e3e7d94f84a9f2da2f91f78d7fa518051d4c2f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 23 Aug 2019 09:12:17 +0200 Subject: [PATCH 102/571] On the Mailbox Quota, link rows to the mailbox page --- interface/web/dashboard/dashlets/templates/mailquota.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/dashboard/dashlets/templates/mailquota.htm b/interface/web/dashboard/dashlets/templates/mailquota.htm index 5ad01d6865..3573ef1ab9 100644 --- a/interface/web/dashboard/dashlets/templates/mailquota.htm +++ b/interface/web/dashboard/dashlets/templates/mailquota.htm @@ -12,7 +12,7 @@ <tbody> <tmpl_loop name='mailquota'> <tr> - <td>{tmpl_var name='email'}</td> + <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='mailuser_id'}" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{tmpl_var name='email'}">{tmpl_var name='email'}</a></td> <td>{tmpl_var name='name'}</td> <td>{tmpl_var name='used'}</td> <td>{tmpl_var name='quota'}</td> -- GitLab From 72fbabda91187018134675c0d2876753b12c4da8 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 23 Aug 2019 12:56:55 +0200 Subject: [PATCH 103/571] - added missing onComplete() to cron debug script (led to permanent running marker on jobs) --- server/cron_debug.php | 1 + 1 file changed, 1 insertion(+) diff --git a/server/cron_debug.php b/server/cron_debug.php index c92410f3e5..6eda4fcdde 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -66,6 +66,7 @@ $cronjob->onPrepare(); $cronjob->onBeforeRun(); $cronjob->onRunJob(); $cronjob->onAfterRun(); +$cronjob->onCompleted(); die("finished.\n"); -- GitLab From 8f35cdb04e263fbcad5d3c7de77d7e48acb26946 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 26 Aug 2019 14:03:35 +0200 Subject: [PATCH 104/571] - prevent running update when mysql cannot be used from command line with credentials from mysql_clientdb.conf --- install/update.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/install/update.php b/install/update.php index 42ddd625f5..11570aa666 100644 --- a/install/update.php +++ b/install/update.php @@ -293,6 +293,22 @@ if($conf['mysql']['master_slave_setup'] == 'y') { */ checkDbHealth(); + +/* + * Check command line mysql login + */ +if( !empty($conf["mysql"]["admin_password"]) ) { + $cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES'); +} else { + $cmd = "mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -P ".escapeshellarg($conf['mysql']['port'])." -D ".escapeshellarg($conf['mysql']['database'])." -e ". escapeshellarg('SHOW DATABASES'); +} +$retval = 0; +$retout = array(); +exec($cmd, $retout, $retval); +if($retval != 0) { + die("Unable to call mysql command line with credentials from mysql_clientdb.conf\n"); +} + /* * dump the new Database and reconfigure the server.ini */ -- GitLab From 8ab148b3bae66b595c8b4d73d61cf66ab7d4e8bc Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 26 Aug 2019 21:59:35 +0200 Subject: [PATCH 105/571] - added debug log to exec_safe including returncode - moved jailkit functions from bash files to system library --- server/lib/classes/system.inc.php | 85 ++++++++++++++++++- .../cron_jailkit_plugin.inc.php | 34 ++------ .../shelluser_jailkit_plugin.inc.php | 17 ++-- 3 files changed, 97 insertions(+), 39 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 288f9d73f8..4c76e9aaff 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2070,6 +2070,8 @@ class system{ } public function exec_safe($cmd) { + global $app; + $arg_count = func_num_args(); if($arg_count != substr_count($cmd, '?') + 1) { trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); @@ -2096,7 +2098,11 @@ class system{ $this->_last_exec_out = null; $this->_last_exec_retcode = null; - return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + $ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); + + $this->app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG); + + return $ret; } public function system_safe($cmd) { @@ -2104,4 +2110,81 @@ class system{ return implode("\n", $this->_last_exec_out); } + public function create_jailkit_user($username, $home_dir, $user_home_dir, $shell = '/bin/bash', $p_user = null, $p_user_home_dir = null) { + // Check if USERHOMEDIR already exists + if(!is_dir($home_dir . '/.' . $user_home_dir)) { + $this->mkdirpath($home_dir . '/.' . $user_home_dir, 0755, $username); + } + + // Reconfigure the chroot home directory for the user + $cmd = 'usermod --home=? ? 2>/dev/null'; + $this->exec_safe($cmd, $home_dir . '/.' . $user_home_dir, $username); + + // Add the chroot user + $cmd = 'jk_jailuser -n -s ? -j ? ?'; + $this->exec_safe($cmd, $shell, $home_dir, $username); + + // We have to reconfigure the chroot home directory for the parent user + if($p_user !== null) { + $cmd = 'usermod --home=? ? 2>/dev/null'; + $this->exec_safe($cmd, $home_dir . '/.' . $p_user_home_dir, $p_user); + } + + return true; + } + + public function create_jailkit_programs($home_dir, $programs = array()) { + if(empty($programs)) { + return true; + } + $program_args = ''; + foreach($programs as $prog) { + $program_args .= ' ' . escapeshellarg($prog); + } + + $cmd = 'jk_cp -k ?' . $program_args; + $this->exec_safe($cmd, $home_dir); + + return true; + } + + public function create_jailkit_chroot($home_dir, $app_sections = array()) { + if(empty($app_sections)) { + return true; + } + + // Change ownership of the chroot directory to root + $app->system->chown($home_dir, 'root'); + $app->system->chgrp($home_dir, 'root'); + + $app_args = ''; + foreach($app_sections as $app_section) { + $app_args .= ' ' . escapeshellarg($app_section); + } + + // Initialize the chroot into the specified directory with the specified applications + $cmd = 'jk_init -f -k -c /etc/jailkit/jk_init.ini -j ?' . $app_args; + $this->exec_safe($cmd, $home_dir); + + // Create the temp directory + if(!is_dir($home_dir . '/tmp')) { + $this->mkdirpath($home_dir . '/tmp', 0777); + } else { + $this->chmod($home_dir . '/tmp', 0777); + } + + // Fix permissions of the root firectory + $this->chmod($home_dir . '/bin', 0755); // was chmod g-w $CHROOT_HOMEDIR/bin + + // mysql needs the socket in the chrooted environment + $this->mkdirpath($home_dir . '/var/run/mysqld'); + + // ln /var/run/mysqld/mysqld.sock $CHROOT_HOMEDIR/var/run/mysqld/mysqld.sock + if(!file_exists("/var/run/mysqld/mysqld.sock")) { + $this->exec_safe('ln ? ?', '/var/run/mysqld/mysqld.sock', $home_dir . '/var/run/mysqld/mysqld.sock'); + } + + return true; + } + } diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index f8f6640444..81d4b72e96 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -216,12 +216,9 @@ class cron_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->parent_domain['document_root'].'/etc/jailkit')) { - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh'; - $command .= ' ?'; - $command .= ' ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']); + $app->system->create_jailkit_chroot($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections'])); - $this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); $this->app->load('tpl'); @@ -259,19 +256,11 @@ class cron_jailkit_plugin { global $app; //copy over further programs and its libraries - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' ?'; - $command .= ' ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']); - - $this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); - - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_programs.sh'; - $command .= ' ?'; - $command .= ' ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']); - - $this->app->log("Added cron programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_programs'])); + $this->app->log("Added app programs to jailkit chroot", LOGLEVEL_DEBUG); + + $app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_cron_programs'])); + $this->app->log("Added cron programs to jailkit chroot", LOGLEVEL_DEBUG); } function _add_jailkit_user() @@ -288,14 +277,7 @@ class cron_jailkit_plugin { // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh'; - $command .= ' ?'; - $command .= ' ?'; - $command .= ' ?'; - $command .= ' /bin/bash'; - $app->system->exec_safe($command.' 2>/dev/null', $this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome); - - $this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_user($this->parent_domain['system_user'], $this->parent_domain['document_root'], $jailkit_chroot_userhome); $app->system->mkdir($this->parent_domain['document_root'].$jailkit_chroot_userhome, 0755, true); $app->system->chown($this->parent_domain['document_root'].$jailkit_chroot_userhome, $this->parent_domain['system_user']); diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index 1f3a08face..eae2ea74fd 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -273,10 +273,8 @@ class shelluser_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->data['new']['dir'].'/etc/jailkit')) { - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_chroot.sh ? ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']); - - $this->app->log("Added jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_chroot($this->data['new']['dir'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections'])); + $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); $this->_add_jailkit_programs(); @@ -323,10 +321,8 @@ class shelluser_jailkit_plugin { $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 ? ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['dir'], $jailkit_chroot_app_program); - - $this->app->log("Added programs to jailkit chroot with command: ".$command, LOGLEVEL_DEBUG); + $app->system->create_jailkit_programs($this->data['new']['dir'], $jailkit_chroot_app_program); + $this->app->log("Added programs to jailkit chroot", LOGLEVEL_DEBUG); } } } @@ -357,8 +353,7 @@ class shelluser_jailkit_plugin { // ALWAYS create the user. Even if the user was created before // if we check if the user exists, then a update (no shell -> jailkit) will not work // and the user has FULL ACCESS to the root of the server! - $command = '/usr/local/ispconfig/server/scripts/create_jailkit_user.sh ? ? ? ? ? ?'; - $app->system->exec_safe($command.' 2>/dev/null', $this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome); + $app->system->create_jailkit_user($this->data['new']['username'], $this->data['new']['dir'], $jailkit_chroot_userhome, $this->data['new']['shell'], $this->data['new']['puser'], $jailkit_chroot_puserhome); $shell = '/usr/sbin/jk_chrootsh'; if($this->data['new']['active'] != 'y') $shell = '/bin/false'; @@ -366,8 +361,6 @@ class shelluser_jailkit_plugin { $app->system->usermod($this->data['new']['username'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, $shell); $app->system->usermod($this->data['new']['puser'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_puserhome, '/usr/sbin/jk_chrootsh'); - $this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG); - if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) { if(is_dir($this->data['old']['dir'].$jailkit_chroot_userhome_old)) { $app->system->rename($this->data['old']['dir'].$jailkit_chroot_userhome_old,$this->data['new']['dir'].$jailkit_chroot_userhome); -- GitLab From 90afc99533450e73162e984497f9e606dcde73b4 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 26 Aug 2019 22:01:40 +0200 Subject: [PATCH 106/571] - missed changing app->system to this. --- server/lib/classes/system.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 4c76e9aaff..1698d73fe1 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2154,8 +2154,8 @@ class system{ } // Change ownership of the chroot directory to root - $app->system->chown($home_dir, 'root'); - $app->system->chgrp($home_dir, 'root'); + $this->chown($home_dir, 'root'); + $this->chgrp($home_dir, 'root'); $app_args = ''; foreach($app_sections as $app_section) { -- GitLab From 9387f0222c46ddcf64a7666f5dd3af4ad7a6d2d1 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 26 Aug 2019 22:09:33 +0200 Subject: [PATCH 107/571] - typo in logging line --- server/lib/classes/system.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 1698d73fe1..5da642e8ad 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2100,7 +2100,7 @@ class system{ $this->_last_exec_retcode = null; $ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); - $this->app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG); + $app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG); return $ret; } -- GitLab From 7bf3c540f444123d7236cc4632305419f2736e8c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 26 Aug 2019 22:17:07 +0200 Subject: [PATCH 108/571] - moved splitting for programs and sections (jailkit) to lib - fixed warning in chmod --- server/lib/classes/system.inc.php | 8 ++++++-- server/plugins-available/cron_jailkit_plugin.inc.php | 6 +++--- server/plugins-available/shelluser_jailkit_plugin.inc.php | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 5da642e8ad..c05d5ddf00 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2136,6 +2136,8 @@ class system{ public function create_jailkit_programs($home_dir, $programs = array()) { if(empty($programs)) { return true; + } elseif(is_string($programs)) { + $programs = preg_split('/[\s,]+/', $programs); } $program_args = ''; foreach($programs as $prog) { @@ -2151,6 +2153,8 @@ class system{ public function create_jailkit_chroot($home_dir, $app_sections = array()) { if(empty($app_sections)) { return true; + } elseif(is_string($app_sections)) { + $app_sections = preg_split('/[\s,]+/', $app_sections); } // Change ownership of the chroot directory to root @@ -2170,11 +2174,11 @@ class system{ if(!is_dir($home_dir . '/tmp')) { $this->mkdirpath($home_dir . '/tmp', 0777); } else { - $this->chmod($home_dir . '/tmp', 0777); + $this->chmod($home_dir . '/tmp', 0777, true); } // Fix permissions of the root firectory - $this->chmod($home_dir . '/bin', 0755); // was chmod g-w $CHROOT_HOMEDIR/bin + $this->chmod($home_dir . '/bin', 0755, true); // was chmod g-w $CHROOT_HOMEDIR/bin // mysql needs the socket in the chrooted environment $this->mkdirpath($home_dir . '/var/run/mysqld'); diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php index 81d4b72e96..0650ad87a3 100644 --- a/server/plugins-available/cron_jailkit_plugin.inc.php +++ b/server/plugins-available/cron_jailkit_plugin.inc.php @@ -216,7 +216,7 @@ class cron_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->parent_domain['document_root'].'/etc/jailkit')) { - $app->system->create_jailkit_chroot($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections'])); + $app->system->create_jailkit_chroot($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_sections']); $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); @@ -256,10 +256,10 @@ class cron_jailkit_plugin { global $app; //copy over further programs and its libraries - $app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_programs'])); + $app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_app_programs']); $this->app->log("Added app programs to jailkit chroot", LOGLEVEL_DEBUG); - $app->system->create_jailkit_programs($this->parent_domain['document_root'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_cron_programs'])); + $app->system->create_jailkit_programs($this->parent_domain['document_root'], $this->jailkit_config['jailkit_chroot_cron_programs']); $this->app->log("Added cron programs to jailkit chroot", LOGLEVEL_DEBUG); } diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php index eae2ea74fd..43d6365008 100755 --- a/server/plugins-available/shelluser_jailkit_plugin.inc.php +++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php @@ -273,7 +273,7 @@ class shelluser_jailkit_plugin { //check if the chroot environment is created yet if not create it with a list of program sections from the config if (!is_dir($this->data['new']['dir'].'/etc/jailkit')) { - $app->system->create_jailkit_chroot($this->data['new']['dir'], preg_split('/[\s,]+/', $this->jailkit_config['jailkit_chroot_app_sections'])); + $app->system->create_jailkit_chroot($this->data['new']['dir'], $this->jailkit_config['jailkit_chroot_app_sections']); $this->app->log("Added jailkit chroot", LOGLEVEL_DEBUG); $this->_add_jailkit_programs(); -- GitLab From a471ca233a99f4e6824ed0a16b65f069e3f148c2 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 29 Aug 2019 13:42:23 +0200 Subject: [PATCH 109/571] #5373 No file when dns zone delete. --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 29d841ef8a..e8b72b5dbc 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -391,7 +391,7 @@ class bind_plugin { $app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG); //* DNSSEC-Implementation - if($data['old']['dnssec_initialized'] == 'Y') { + if($data['old']['dnssec_initialized'] == 'Y' && file_exists('/usr/local/ispconfig/server/scripts/dnssec-delete.sh')) { //delete keys $app->system->exec_safe('/usr/local/ispconfig/server/scripts/dnssec-delete.sh ?', $data['old']['origin']); } -- GitLab From b951b645a7ac868ef9b2b6d9e80843a8366ab4e9 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 29 Aug 2019 13:45:43 +0200 Subject: [PATCH 110/571] Fixed wrong socket path in apps vhost when PHP 7.3 is used on the server. --- install/lib/installer_base.lib.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c7f955d945..148c6708b8 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2322,6 +2322,7 @@ class installer_base { || file_exists('/var/run/php/php7.1-fpm.sock') || file_exists('/var/run/php/php7.2-fpm.sock') || file_exists('/var/run/php/php7.3-fpm.sock') + || file_exists('/var/run/php/php7.4-fpm.sock') ){ $use_tcp = '#'; $use_socket = ''; @@ -2340,6 +2341,8 @@ class installer_base { if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); if(file_exists('/var/run/php/php7.2-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content); + if(file_exists('/var/run/php/php7.3-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.3-fpm.sock', $content); + if(file_exists('/var/run/php/php7.4-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.4-fpm.sock', $content); wf($vhost_conf_dir.'/apps.vhost', $content); -- GitLab From 3cabaa685abcff8d58c2296c7b52f85014bd5a37 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 29 Aug 2019 14:11:21 +0200 Subject: [PATCH 111/571] Fixed #5343 Buster/Dovecot stats-writer --- install/dist/lib/debian60.lib.php | 6 +++++ install/dist/lib/fedora.lib.php | 32 +++++++++++++++++++++++ install/lib/installer_base.lib.php | 32 +++++++++++++++++++++++ install/tpl/debian6_dovecot2.conf.master | 17 ++++++++++++ install/tpl/debian_dovecot2.conf.master | 15 +++++++++++ install/tpl/fedora_dovecot2.conf.master | 15 +++++++++++ install/tpl/opensuse_dovecot2.conf.master | 15 +++++++++++ 7 files changed, 132 insertions(+) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 487d350512..cc234f132e 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -136,6 +136,12 @@ class installer extends installer_base { caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); } } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + } else { // remove settings which are not supported in Dovecot < 2.3 removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 5bb8fc0d25..3af8746908 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -449,6 +449,38 @@ class installer_dist extends installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } replaceLine($config_dir.'/'.$configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); replaceLine($config_dir.'/'.$configfile, 'postmaster_address = webmaster@localhost', 'postmaster_address = postmaster@'.$conf['hostname'], 1, 0); } else { diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 148c6708b8..dd4fe9c306 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1304,6 +1304,38 @@ class installer_base { file_put_contents($config_dir.'/'.$configfile,$content); unset($content); } + if(version_compare($dovecot_version,2.3) >= 0) { + // Remove deprecated setting(s) + removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); + + // Check if we have a dhparams file and if not, create it + if(!file_exists('/etc/dovecot/dh.pem')) { + swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); + if(file_exists('/var/lib/dovecot/ssl-parameters.dat')) { + // convert existing ssl parameters file + $command = 'dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } else { + /* + Create a new dhparams file. We use 2048 bit only as it simply takes too long + on smaller systems to generate a 4096 bit dh file (> 30 minutes). If you need + a 4096 bit file, create it manually before you install ISPConfig + */ + $command = 'openssl dhparam -out /etc/dovecot/dh.pem 2048'; + caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + } + } + //remove #2.3+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#2.3+','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + + } else { + // remove settings which are not supported in Dovecot < 2.3 + removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); + removeLine($config_dir.'/'.$configfile, 'ssl_dh ='); + } } //* dovecot-lmtpd diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index f13bbd53df..74f680024b 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -68,3 +68,20 @@ protocol lmtp { postmaster_address = webmaster@localhost mail_plugins = quota sieve } + +mail_plugins = $mail_plugins quota + +#2.3+ service stats { +#2.3+ unix_listener stats-reader { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ +#2.3+ unix_listener stats-writer { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ } + diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 8fdaf44eeb..cfe3bd0182 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -64,4 +64,19 @@ protocol lmtp { postmaster_address = webmaster@localhost mail_plugins = quota sieve } + mail_plugins = $mail_plugins quota + +#2.3+ service stats { +#2.3+ unix_listener stats-reader { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ +#2.3+ unix_listener stats-writer { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ } diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index c14af1d44d..1ba39a30d4 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -61,4 +61,19 @@ protocol lmtp { postmaster_address = webmaster@localhost mail_plugins = quota sieve } + mail_plugins = $mail_plugins quota + +#2.3+ service stats { +#2.3+ unix_listener stats-reader { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ +#2.3+ unix_listener stats-writer { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ } diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index f28c1095d2..f615cf3354 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -60,4 +60,19 @@ protocol lmtp { postmaster_address = webmaster@localhost mail_plugins = quota sieve } + mail_plugins = $mail_plugins quota + +#2.3+ service stats { +#2.3+ unix_listener stats-reader { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ +#2.3+ unix_listener stats-writer { +#2.3+ user = vmail +#2.3+ group = vmail +#2.3+ mode = 0660 +#2.3+ } +#2.3+ } -- GitLab From ea111e9228a6be7acedfd5d0644825e5eb4aca54 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 29 Aug 2019 14:14:26 +0200 Subject: [PATCH 112/571] Removed global quota line from dovecot.conf file again. --- install/tpl/debian6_dovecot2.conf.master | 2 -- 1 file changed, 2 deletions(-) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 74f680024b..777280f044 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -69,8 +69,6 @@ protocol lmtp { mail_plugins = quota sieve } -mail_plugins = $mail_plugins quota - #2.3+ service stats { #2.3+ unix_listener stats-reader { #2.3+ user = vmail -- GitLab From 20b7abe33d2b9d2cf549d5896c9763bc620e8a1b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 30 Aug 2019 14:51:17 +0200 Subject: [PATCH 113/571] - enable greylisting setting for catchall mail addresses - change the way greylisting setting is evaluated (prio is now 1. mail user, 2. mail forward/alias, 3. catchall), fixes #5378 --- install/tpl/mysql-virtual_policy_greylist.cf.master | 3 ++- interface/web/mail/form/mail_domain_catchall.tform.php | 6 ++++++ interface/web/mail/lib/lang/de_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/en_mail_domain_catchall.lng | 1 + interface/web/mail/templates/mail_domain_catchall_edit.htm | 6 ++++++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master index fd6fded819..7967ee4a9c 100644 --- a/install/tpl/mysql-virtual_policy_greylist.cf.master +++ b/install/tpl/mysql-virtual_policy_greylist.cf.master @@ -1,5 +1,6 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -query = SELECT 'greylisting' FROM (SELECT greylisting, source AS email FROM mail_forwarding WHERE server_id = {server_id} UNION SELECT greylisting, email FROM mail_user WHERE server_id = {server_id}) addresses WHERE addresses.email='%s' AND addresses.greylisting='y' UNION SELECT 'greylisting' FROM `mail_forwarding` f CROSS JOIN `mail_user` u ON u.email = f.destination WHERE f.type = 'catchall' AND u.greylisting = 'y' AND u.server_id = {server_id} AND f.source = '@%s' +query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%s' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y' + hosts = {mysql_server_ip} \ No newline at end of file diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 8d0c0296bd..81ce24c7b5 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -131,6 +131,12 @@ $form["tabs"]['catchall'] = array ( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'greylisting' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(1 => 'y', 0 => 'n') + ), //################################# // ENDE Datatable fields //################################# diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng index 9f37e56697..bef241e0ea 100644 --- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ungültiger Domainname oder ungültige Zeichen im D $wb['limit_mailcatchall_txt'] = 'Die maximale Anzahl an Catchall Einträgen für Ihr Konto wurde erreicht.'; $wb['source_txt'] = 'Quelle'; $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.'; +$wb['greylisting_txt'] = 'Aktiviere Greylisting'; ?> diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng index 1f1726e540..a49722802e 100644 --- a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng @@ -9,4 +9,5 @@ $wb["limit_mailcatchall_txt"] = 'The max. number of email catchall accounts for $wb['domain_txt'] = 'Domain'; $wb["source_txt"] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm index 63c4405de2..5991f2aecc 100644 --- a/interface/web/mail/templates/mail_domain_catchall_edit.htm +++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm @@ -14,6 +14,12 @@ <div class="form-group"> <label for="destination" class="col-sm-3 control-label">{tmpl_var name='destination_txt'}</label> <div class="col-sm-9"><input type="text" name="destination" id="destination" value="{tmpl_var name='destination'}" class="form-control" /></div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='greylisting_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='greylisting'} + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> -- GitLab From 4666bfeb7456c34c847525a0f44a419f10457ace Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 30 Aug 2019 15:11:59 +0200 Subject: [PATCH 114/571] - fix for previous commit --- install/tpl/mysql-virtual_policy_greylist.cf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master index 7967ee4a9c..00f504e082 100644 --- a/install/tpl/mysql-virtual_policy_greylist.cf.master +++ b/install/tpl/mysql-virtual_policy_greylist.cf.master @@ -1,6 +1,6 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%s' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y' +query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y' hosts = {mysql_server_ip} \ No newline at end of file -- GitLab From 24b60e9c77a440812e61b2a65200c6b8501a0f8c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 2 Sep 2019 10:15:41 +0200 Subject: [PATCH 115/571] - fixed problem when running cron_debug.php - fixed php warning on awstats cron --- server/lib/classes/cron.d/150-awstats.inc.php | 4 +++- server/lib/classes/cronjob.inc.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/cron.d/150-awstats.inc.php b/server/lib/classes/cron.d/150-awstats.inc.php index 0b1cbd5a44..4ba286ea1a 100644 --- a/server/lib/classes/cron.d/150-awstats.inc.php +++ b/server/lib/classes/cron.d/150-awstats.inc.php @@ -148,7 +148,9 @@ class cronjob_awstats extends cronjob { } $statsdirold = $statsdir."/".$awyear."-".$awmonth."/"; - mkdir($statsdirold); + if(!is_dir($statsdirold)) { + mkdir($statsdirold); + } $files = scandir($statsdir); foreach ($files as $file) { if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php index 1e452b6481..1407add021 100644 --- a/server/lib/classes/cronjob.inc.php +++ b/server/lib/classes/cronjob.inc.php @@ -174,7 +174,7 @@ class cronjob { } // child classes may NOT override this! - private function onCompleted() { + protected function onCompleted() { global $app, $conf; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called onCompleted() for class " . get_class($this) . "\n"; -- GitLab From 2e3887d07d0baeed95208df87ab5b53816ada8ff Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 2 Sep 2019 11:13:54 +0200 Subject: [PATCH 116/571] - changed the way cron_debug.php calls cron job classes --- server/cron_debug.php | 7 +------ server/lib/classes/cronjob.inc.php | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/server/cron_debug.php b/server/cron_debug.php index 6eda4fcdde..74065f02c4 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -61,12 +61,7 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer include $path . '/' . $cronjob_file; $class_name = 'cronjob_' . $name; $cronjob = new $class_name(); - -$cronjob->onPrepare(); -$cronjob->onBeforeRun(); -$cronjob->onRunJob(); -$cronjob->onAfterRun(); -$cronjob->onCompleted(); +$cronjob->run(true); die("finished.\n"); diff --git a/server/lib/classes/cronjob.inc.php b/server/lib/classes/cronjob.inc.php index 1407add021..27bc7038cf 100644 --- a/server/lib/classes/cronjob.inc.php +++ b/server/lib/classes/cronjob.inc.php @@ -76,14 +76,14 @@ class cronjob { /** run through cronjob sequence **/ - public function run() { + public function run($debug_mode = false) { global $conf; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Called run() for class " . get_class($this) . "\n"; if($conf['log_priority'] <= LOGLEVEL_DEBUG) print "Job has schedule: " . $this->getSchedule() . "\n"; $this->onPrepare(); $run_it = $this->onBeforeRun(); - if($run_it == true) { + if($run_it == true || $debug_mode === true) { $this->onRunJob(); $this->onAfterRun(); $this->onCompleted(); -- GitLab From 20fd2cce482389d5c80a78a9f247c10562177a48 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 14:15:54 +0200 Subject: [PATCH 117/571] Implemented #5375 Add WebDAV functions to remoting API --- interface/lib/classes/remote.d/sites.inc.php | 50 ++++++++++++++++++++ interface/web/sites/lib/remote.conf.php | 1 + 2 files changed, 51 insertions(+) diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index a2f15d6f9d..59c2e371f3 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -1017,6 +1017,56 @@ class remoting_sites extends remoting { return $app->quota_lib->get_databasequota_data($client_id, false); } + // ---------------------------------------------------------------------------------------------------------- + + //* Get record details + public function sites_webdav_user_get($session_id, $primary_id) + { + global $app; + + if(!$this->checkPerm($session_id, 'sites_webdav_user_get')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $app->uses('remoting_lib'); + $app->remoting_lib->loadFormDef('../sites/form/webdav_user.tform.php'); + return $app->remoting_lib->getDataRecord($primary_id); + } + + //* Add a record + public function sites_webdav_user_add($session_id, $client_id, $params) + { + if(!$this->checkPerm($session_id, 'sites_webdav_user_add')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + return $this->insertQuery('../sites/form/webdav_user.tform.php', $client_id, $params); + } + + //* Update a record + public function sites_webdav_user_update($session_id, $client_id, $primary_id, $params) + { + if(!$this->checkPerm($session_id, 'sites_webdav_user_update')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $affected_rows = $this->updateQuery('../sites/form/webdav_user.tform.php', $client_id, $primary_id, $params); + return $affected_rows; + } + + //* Delete a record + public function sites_webdav_user_delete($session_id, $primary_id) + { + global $app; + if(!$this->checkPerm($session_id, 'sites_webdav_user_delete')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + $affected_rows = $this->deleteQuery('../sites/form/webdav_user.tform.php', $primary_id); + return $affected_rows; + } + } diff --git a/interface/web/sites/lib/remote.conf.php b/interface/web/sites/lib/remote.conf.php index a9ef3236b7..19a48e3ca5 100644 --- a/interface/web/sites/lib/remote.conf.php +++ b/interface/web/sites/lib/remote.conf.php @@ -9,4 +9,5 @@ $function_list['sites_web_domain_backup'] = 'Sites Backup functions'; $function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions'; $function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions'; $function_list['sites_aps_update_package_list,sites_aps_available_packages_list,sites_aps_change_package_status,sites_aps_install_package,sites_aps_get_package_details,sites_aps_get_package_file,sites_aps_get_package_settings,sites_aps_instance_get,sites_aps_instance_delete'] = 'Sites APS functions'; +$function_list['sites_webdav_user_get,sites_webdav_user_add,sites_webdav_user_update,sites_webdav_user_delete'] = 'Sites WebDAV-User functions'; ?> -- GitLab From 80e4c48f17672b3791d744ce38a17c43ea61f7a1 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 14:25:15 +0200 Subject: [PATCH 118/571] #5383 Updated Czech translation --- interface/lib/lang/cz.lng | 2 +- .../web/admin/lib/lang/cz_server_php.lng | 2 +- .../web/admin/lib/lang/cz_server_php_list.lng | 2 +- .../web/admin/lib/lang/cz_system_config.lng | 16 +++---- .../web/client/lib/lang/cz_clients_list.lng | 6 +-- .../lib/lang/cz_dashlet_invoices.lng | 2 +- .../dashboard/lib/lang/cz_dashlet_limits.lng | 8 ++-- interface/web/dns/lib/lang/cz_dns_caa.lng | 32 +++++++------- interface/web/dns/lib/lang/cz_dns_dmarc.lng | 4 +- interface/web/dns/lib/lang/cz_dns_ds.lng | 4 +- interface/web/dns/lib/lang/cz_dns_import.lng | 2 +- interface/web/dns/lib/lang/cz_dns_loc.lng | 4 +- interface/web/dns/lib/lang/cz_dns_soa.lng | 2 +- interface/web/dns/lib/lang/cz_dns_spf.lng | 4 +- interface/web/dns/lib/lang/cz_dns_tlsa.lng | 4 +- interface/web/dns/lib/lang/cz_dns_wizard.lng | 2 +- .../web/mail/lib/lang/cz_mail_backup_list.lng | 12 ++--- interface/web/monitor/lib/lang/cz.lng | 2 +- .../lib/lang/cz_dataloghistory_list.lng | 12 ++--- .../lib/lang/cz_dataloghistory_undo.lng | 4 +- .../lib/lang/cz_dataloghistory_view.lng | 44 +++++++++---------- .../sites/lib/lang/cz_aps_instances_list.lng | 2 +- .../web/sites/lib/lang/cz_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_backup_list.lng | 4 +- .../web/sites/lib/lang/cz_web_childdomain.lng | 2 +- .../sites/lib/lang/cz_web_vhost_domain.lng | 10 ++--- .../sites/lib/lang/cz_web_vhost_subdomain.lng | 2 +- 27 files changed, 96 insertions(+), 96 deletions(-) diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 6d95c1249f..fdf9053dae 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -33,7 +33,7 @@ $wb['top_menu_monitor'] = 'Monitor'; $wb['top_menu_sites'] = 'Stránky'; $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Nástroje'; -$wb['top_menu_help'] = 'Pomoc'; +$wb['top_menu_help'] = 'Podpora'; $wb['toolsarea_head_txt'] = 'Nástroje'; $wb['top_menu_billing'] = 'Fakturace'; $wb['top_menu_domain'] = 'Doména'; diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng index 615431c355..e326870340 100644 --- a/interface/web/admin/lib/lang/cz_server_php.lng +++ b/interface/web/admin/lib/lang/cz_server_php.lng @@ -13,5 +13,5 @@ $wb['php_fastcgi_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script'; $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři'; $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři'; -$wb['active_txt'] = 'Active'; +$wb['active_txt'] = 'AktivnÃ'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng index f79d482190..abe4f750ff 100644 --- a/interface/web/admin/lib/lang/cz_server_php_list.lng +++ b/interface/web/admin/lib/lang/cz_server_php_list.lng @@ -4,5 +4,5 @@ $wb['server_id_txt'] = 'Server'; $wb['add_new_record_txt'] = 'PÅ™idat verzi PHP'; $wb['client_id_txt'] = 'Klient'; $wb['name_txt'] = 'Verze PHP'; -$wb['active_txt'] = 'Active'; +$wb['active_txt'] = 'AktivnÃ'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index a0abf26410..3660e1b689 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -77,17 +77,17 @@ $wb['default_dnsserver_txt'] = 'Výchozà DNS server'; $wb['default_slave_dnsserver_txt'] = 'Výchozà sekundárnà DNS server'; $wb['default_dbserver_txt'] = 'Výchozà databázový server'; $wb['company_name_txt'] = 'Název spoleÄnosti v panelu (listu) webového prohlÞeÄe'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použÃt kartu možnostà pro weby.'; $wb['custom_login_text_txt'] = 'Vlastnà text na pÅ™ihlaÅ¡ovacà stránce'; $wb['custom_login_link_txt'] = 'Vlastnà odkaz (URL) na pÅ™ihlaÅ¡ovacà stránce (vlastnà text)'; $wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastnà odkaz na pÅ™ihlaÅ¡ovacà stránce'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_name_txt'] = 'Název vydavatele'; +$wb['ca_issue_txt'] = 'Doména vydavatele'; +$wb['ca_wildcard_txt'] = 'PoužÃt Wildcard (*)'; +$wb['ca_critical_txt'] = 'PÅ™Ãsná kontrola'; $wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; +$wb['active_txt'] = 'AktivnÃ'; +$wb['btn_save_txt'] = 'Uložit'; +$wb['btn_cancel_txt'] = 'ZruÅ¡it'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; ?> diff --git a/interface/web/client/lib/lang/cz_clients_list.lng b/interface/web/client/lib/lang/cz_clients_list.lng index 8cdabf2696..270da3674d 100644 --- a/interface/web/client/lib/lang/cz_clients_list.lng +++ b/interface/web/client/lib/lang/cz_clients_list.lng @@ -8,7 +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'; +$wb['locked_txt'] = 'ZamÄené'; +$wb['yes_txt'] = 'Ano'; +$wb['no_txt'] = 'Ne'; ?> diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng index 9666ed2b08..ab093825c6 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_invoices.lng @@ -3,7 +3,7 @@ $wb['invoices_txt'] = 'Invoices'; $wb['invoice_no_txt'] = 'Invoice No.'; $wb['amount_txt'] = 'Amount'; $wb['date_txt'] = 'Datum'; -$wb['invoice_status_txt'] = 'Status'; +$wb['invoice_status_txt'] = 'Stav'; $wb['no_invoices_txt'] = 'No Invoices available.'; $wb['paid_txt'] = 'Paid'; $wb['unpaid_txt'] = 'Unpaid'; diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng index d322823e6b..a7aecc4a53 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng @@ -1,5 +1,5 @@ <?php -$wb['limits_txt'] = 'Limity úÄtu'; +$wb['limits_txt'] = 'Limity úÄtů'; $wb['of_txt'] = 'z'; $wb['unlimited_txt'] = 'neomezeno'; $wb['limit_maildomain_txt'] = 'PoÄet e-mailových domén'; @@ -28,7 +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'; +$wb['limit_mailquota_txt'] = 'PÅ™iÅ™azená e-mailová kvóta'; +$wb['limit_web_quota_txt'] = 'PÅ™iÅ™azená webová kvóta'; +$wb['limit_database_quota_txt'] = 'PÅ™iÅ™azená databázová kvóta'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_caa.lng b/interface/web/dns/lib/lang/cz_dns_caa.lng index 973a97ceb6..f4ba690c5a 100644 --- a/interface/web/dns/lib/lang/cz_dns_caa.lng +++ b/interface/web/dns/lib/lang/cz_dns_caa.lng @@ -1,19 +1,19 @@ <?php -$wb['ca_list_txt'] = 'Certifiction Authority'; -$wb['ca_domain_txt'] = 'Domain'; -$wb['ca_hostname_txt'] = 'Additional Hostnamen'; -$wb['ca_hostname_note_txt'] = '(Sepearated list with commas - empty for all hostnames)'; -$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'; +$wb['ca_list_txt'] = 'CertifikaÄnà autorita'; +$wb['ca_domain_txt'] = 'Doména'; +$wb['ca_hostname_txt'] = 'Omezit na názvy hostitelů'; +$wb['ca_hostname_note_txt'] = '(OddÄ›lený seznam s Äárkami - prázdný pro vÅ¡echna jména hostitelů)'; +$wb['ca_options_txt'] = 'DalÅ¡Ã možnosti názvu hostitele'; +$wb['ca_options_note_txt'] = 'requested by the CA (OddÄ›lený seznam s Äárkami)'; +$wb['ca_wildcard_txt'] = 'Použità Wildcard (*) SSL'; +$wb['ca_critical_txt'] = 'PÅ™Ãsná kontrola'; $wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['select_txt'] = 'Select Certifiction Authority'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['ca_error_txt'] = 'No Certifiction Authority selected'; -$wb['caa_exists_error'] = 'CAA Record already exists'; -$wb['ca_option_error'] = 'Invalid format for additional options; OPTION=VALUE'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['active_txt'] = 'AktivnÃ'; +$wb['select_txt'] = 'Vyberte certifikaÄnà autoritu'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['ca_error_txt'] = 'Nebyla vybrána žádná certifikaÄnà autorita'; +$wb['caa_exists_error'] = 'CAA záznam již existuje'; +$wb['ca_option_error'] = 'Neplatný formát pro dalÅ¡Ã možnosti; OPTION=VALUE'; +$wb['ttl_range_error'] = 'Min. TTL Äas je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_dmarc.lng b/interface/web/dns/lib/lang/cz_dns_dmarc.lng index c5952552a6..c4c3bb4f24 100644 --- a/interface/web/dns/lib/lang/cz_dns_dmarc.lng +++ b/interface/web/dns/lib/lang/cz_dns_dmarc.lng @@ -44,7 +44,7 @@ $wb['dmarc_more_spf_txt'] = 'More than one active SPF Record'; $wb['dmarc_invalid_email_txt'] = 'Neplatný e-mail'; $wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option'; $wb['record_exists_txt'] = 'DNS záznam již existuje'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_ds.lng b/interface/web/dns/lib/lang/cz_dns_ds.lng index 3d25095d3b..f7dd779ef8 100644 --- a/interface/web/dns/lib/lang/cz_dns_ds.lng +++ b/interface/web/dns/lib/lang/cz_dns_ds.lng @@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ'; $wb['data_txt'] = 'Data'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'Text empty'; diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng index 3b41baa1be..fc90d3cf3c 100644 --- a/interface/web/dns/lib/lang/cz_dns_import.lng +++ b/interface/web/dns/lib/lang/cz_dns_import.lng @@ -12,5 +12,5 @@ $wb['title'] = 'Importovat soubory zón'; $wb['no_file_uploaded_error'] = 'Nelze odeslat DNS zonový soubor'; $wb['zone_file_import_txt'] = 'Importovat DNS zonový soubor'; $wb['error_no_server_id'] = 'No server provided.'; -$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['error_not_allowed_server_id'] = 'Vybraný server nenà pro tento úÄet povolen.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_loc.lng b/interface/web/dns/lib/lang/cz_dns_loc.lng index 90ddd3533b..4ed9018152 100644 --- a/interface/web/dns/lib/lang/cz_dns_loc.lng +++ b/interface/web/dns/lib/lang/cz_dns_loc.lng @@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ'; $wb['data_txt'] = 'Data'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'Text empty'; diff --git a/interface/web/dns/lib/lang/cz_dns_soa.lng b/interface/web/dns/lib/lang/cz_dns_soa.lng index 7dfbb0e91b..5e4a0c2bb3 100644 --- a/interface/web/dns/lib/lang/cz_dns_soa.lng +++ b/interface/web/dns/lib/lang/cz_dns_soa.lng @@ -38,7 +38,7 @@ $wb['xfer_error_regex'] = 'Také oznámÃ: ProsÃm, použijte IP adresu.'; $wb['dnssec_info_txt'] = 'DNSSEC DS-Data for registry'; $wb['dnssec_wanted_txt'] = 'Podepsat zónu (DNSSEC)'; $wb['dnssec_wanted_info'] = 'Když deaktivujete DNSSEC klÃÄe nebudou odstranÄ›ny, ale DNS záznamy (zóna) již nebudou propagovány v podepsaném formátu. Pokud použÃváte PowerDNS, budou klÃÄe WILL vymazány!'; -$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['error_not_allowed_server_id'] = 'Vybraný server nenà pro tento úÄet povolen.'; $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/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng index 755e01f11e..3086454c34 100644 --- a/interface/web/dns/lib/lang/cz_dns_spf.lng +++ b/interface/web/dns/lib/lang/cz_dns_spf.lng @@ -19,7 +19,7 @@ $wb['spf_invalid_domain_txt'] = 'Neplatné doménové jméno'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; $wb['record_exists_txt'] = 'DNS záznam již existuje'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_tlsa.lng b/interface/web/dns/lib/lang/cz_dns_tlsa.lng index b92da1d45b..3891ad37c7 100644 --- a/interface/web/dns/lib/lang/cz_dns_tlsa.lng +++ b/interface/web/dns/lib/lang/cz_dns_tlsa.lng @@ -6,8 +6,8 @@ $wb['type_txt'] = 'Typ'; $wb['data_txt'] = 'TLSA-Data'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'The hostname has the wrong format. Correct: _<port>._(tcp|udp).<hostname>'; $wb['data_error_empty'] = 'TLSA-Data empty'; diff --git a/interface/web/dns/lib/lang/cz_dns_wizard.lng b/interface/web/dns/lib/lang/cz_dns_wizard.lng index 548b90d702..a4a1ddf539 100644 --- a/interface/web/dns/lib/lang/cz_dns_wizard.lng +++ b/interface/web/dns/lib/lang/cz_dns_wizard.lng @@ -39,7 +39,7 @@ $wb['list_head_txt'] = 'Průvodce vytvoÅ™enÃm DNS zóny'; $wb['list_desc_txt'] = 'VytvoÅ™enà DNS zóny pomocà průvodce'; $wb['dkim_txt'] = 'DKIM povolen'; $wb['error_no_server_id'] = 'No server provided.'; -$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['error_not_allowed_server_id'] = 'Vybraný server nenà pro tento úÄet povolen.'; $wb['dnssec_txt'] = 'Podepsat zónu (DNSSEC)'; $wb['limit_dns_zone_txt'] = 'The max. number of DNS zones for your account is reached.'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_backup_list.lng b/interface/web/mail/lib/lang/cz_mail_backup_list.lng index 91ea1ad49f..d4f941a4cd 100644 --- a/interface/web/mail/lib/lang/cz_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_backup_list.lng @@ -1,16 +1,16 @@ <?php -$wb['list_head_txt'] = 'StávajÃcà zálohy'; +$wb['list_head_txt'] = 'Dostupné zálohy'; $wb['date_txt'] = 'Datum'; $wb['backup_type_txt'] = 'Typ'; $wb['filename_txt'] = 'Záloha souborů'; $wb['restore_backup_txt'] = 'Obnovit'; -$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.'; -$wb['restore_confirm_txt'] = 'Restoring may overwrite existing files in your mailbox. Do you really want to restore this backup?'; -$wb['download_pending_txt'] = 'There is already a pending backup download job.'; -$wb['restore_pending_txt'] = 'There is already a pending backup restore job.'; +$wb['restore_info_txt'] = 'Obnovenà zálohy bylo zahájeno. DokonÄenà této akce může trvat nÄ›kolik minut.'; +$wb['restore_confirm_txt'] = 'Obnovenà může pÅ™epsat existujÃcà soubory ve vaÅ¡Ã poÅ¡tovnà schránce. Opravdu chcete tuto zálohu obnovit ?'; +$wb['download_pending_txt'] = 'Již existuje ÄekajÃcà úloha pro staženà zálohy.'; +$wb['restore_pending_txt'] = 'Již existuje ÄekajÃcà úloha pro obnovu zálohy.'; $wb['delete_backup_txt'] = 'Smazat zálohu'; $wb['delete_info_txt'] = 'Bylo zahájeno odstranÄ›nà zálohy. Tato akce může trvat nÄ›kolik minut než bude dokonÄena.'; $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?'; -$wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; +$wb['delete_pending_txt'] = 'Již existuje ÄekajÃcà úloha pro odstranÄ›nà zálohy.'; $wb['filesize_txt'] = 'Velikost souboru'; ?> diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index 9e054aacf2..be2d9eadbb 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -161,5 +161,5 @@ $wb['monitor_database_client_txt'] = 'Klient'; $wb['monitor_database_domain_txt'] = 'Doména'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; -$wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Show Data Log History'] = 'Zobrazit historii datového logu'; ?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng index 9f9afd6347..ce89af1a88 100644 --- a/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Protokol historie datového logu'; +$wb['tstamp_txt'] = 'Datum'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Tabulka'; +$wb['action_txt'] = 'Akce'; +$wb['status_txt'] = 'Stav'; ?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng index 0e040a3e77..0d25364ec1 100644 --- a/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_undo.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['list_head_txt'] = 'Záznam historie datového logu'; $wb['success_txt'] = 'Undo successful'; $wb['error_txt'] = 'Error during undo: Record does not exist anymore'; $wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; -$wb['btn_cancel_txt'] = 'Back'; +$wb['btn_cancel_txt'] = 'ZpÄ›t'; ?> diff --git a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng index df9ddd286f..1f20cf12d4 100644 --- a/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng +++ b/interface/web/monitor/lib/lang/cz_dataloghistory_view.lng @@ -1,26 +1,26 @@ <?php -$wb['i'] = 'Insert'; -$wb['u'] = 'Update'; -$wb['d'] = 'Delete'; -$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['i'] = 'Vložit'; +$wb['u'] = 'Aktualizace'; +$wb['d'] = 'Odstranit'; +$wb['list_head_txt'] = 'Záznam historie datového logu'; $wb['id_txt'] = 'ID'; -$wb['timestamp_txt'] = 'Timestamp'; -$wb['table_txt'] = 'Table'; -$wb['action_txt'] = 'Action'; -$wb['session_id_txt'] = 'Session ID'; -$wb['fields_txt'] = 'Fields'; -$wb['fields_inserted_txt'] = 'Inserted Fields'; -$wb['fields_updated_txt'] = 'Updated Fields'; -$wb['fields_deleted_txt'] = 'Deleted Fields'; -$wb['no_changes_txt'] = 'No changes (re-sync)'; +$wb['timestamp_txt'] = 'ÄŒasové razÃtko'; +$wb['table_txt'] = 'Tabulka'; +$wb['action_txt'] = 'Akce'; +$wb['session_id_txt'] = 'ID Relace'; +$wb['fields_txt'] = 'Pole'; +$wb['fields_inserted_txt'] = 'Vložená pole'; +$wb['fields_updated_txt'] = 'Aktualizovaná pole'; +$wb['fields_deleted_txt'] = 'OdstranÄ›ná pole'; +$wb['no_changes_txt'] = 'Žádné zmÄ›ny (re-sync)'; $wb['is_diff_txt'] = 'The differences are highlighted'; -$wb['is_diff_inserts_txt'] = 'Insertions'; -$wb['is_diff_deletes_txt'] = 'Deletions'; -$wb['field_txt'] = 'Field'; -$wb['value_txt'] = 'Value'; -$wb['old_txt'] = 'Old'; -$wb['new_txt'] = 'New'; -$wb['btn_cancel_txt'] = 'Back'; -$wb['undo_txt'] = 'Undo action'; -$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +$wb['is_diff_inserts_txt'] = 'VloženÃ'; +$wb['is_diff_deletes_txt'] = 'OdstranÄ›nÃ'; +$wb['field_txt'] = 'Pole'; +$wb['value_txt'] = 'Hodnota'; +$wb['old_txt'] = 'Starý'; +$wb['new_txt'] = 'Nový'; +$wb['btn_cancel_txt'] = 'ZpÄ›t'; +$wb['undo_txt'] = 'Vrátit akci'; +$wb['undo_confirmation_txt'] = 'Opravdu chcete tuto akci vrátit zpÄ›t ?'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps_instances_list.lng b/interface/web/sites/lib/lang/cz_aps_instances_list.lng index 8d712878d7..db4494af02 100644 --- a/interface/web/sites/lib/lang/cz_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/cz_aps_instances_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Nainstalované balÃÄky'; $wb['name_txt'] = 'Jméno'; $wb['version_txt'] = 'Verze'; $wb['customer_txt'] = 'Klient'; -$wb['status_txt'] = 'Status'; +$wb['status_txt'] = 'Stav'; $wb['install_location_txt'] = 'UmÃstÄ›nà instalace'; $wb['pkg_delete_confirmation'] = 'Opravdu chcete smazat tuto instalaci ?'; $wb['filter_txt'] = 'Hledat'; diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng index 57b920156d..0f8d3e5dec 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng index 9674e6197a..d30e41d961 100644 --- a/interface/web/sites/lib/lang/cz_web_backup_list.lng +++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'StávajÃcà zálohy'; +$wb['list_head_txt'] = 'Dostupné zálohy'; $wb['date_txt'] = 'Datum'; $wb['backup_type_txt'] = 'Verze'; $wb['filename_txt'] = 'Záloha souborů'; @@ -16,6 +16,6 @@ $wb['filesize_txt'] = 'Velikost souboru'; $wb['delete_backup_txt'] = 'Smazat zálohu'; $wb['delete_info_txt'] = 'Bylo zahájeno odstranÄ›nà zálohy. Tato akce může trvat nÄ›kolik minut než bude dokonÄena.'; $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?'; -$wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; +$wb['delete_pending_txt'] = 'Již existuje ÄekajÃcà úloha pro odstranÄ›nà zálohy.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index e39dfc12ee..5a5091c89a 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng index 269b6b5862..deaa3269c4 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -130,13 +130,13 @@ $wb['variables_txt'] = 'PromÄ›nné'; $wb['added_by_txt'] = 'Kdo vytvoÅ™il úÄet'; $wb['added_date_txt'] = 'Datum vytvoÅ™enà úÄtu'; $wb['backup_excludes_txt'] = 'VylouÄené adresáře'; -$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; -$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; +$wb['backup_excludes_note_txt'] = '(OddÄ›lte vÃce adresářů Äárkami. PÅ™Ãklad: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'VylouÄené adresáře obsahujà neplatné znaky.'; +$wb['server_chosen_not_ok'] = 'Vybraný server nenà pro tento úÄet povolen.'; +$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'ZruÅ¡it'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; +$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2'; $wb['load_client_data_txt'] = 'Nahrát údaje z podrobnostà registrovaného klienta'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng index 2b6f3c77d2..268368c139 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng @@ -123,7 +123,7 @@ $wb['variables_txt'] = 'PromÄ›nné'; $wb['backup_excludes_txt'] = 'VylouÄené adresáře'; $wb['backup_excludes_note_txt'] = '(OddÄ›lte vÃce adresářů Äárkami. Vzor: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'VylouÄené adresáře obsahujà neplatné znaky.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; +$wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; -- GitLab From 90f3c771c5b42c904d9b15f15f7dbcce34fe5430 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 2 Sep 2019 14:53:34 +0200 Subject: [PATCH 119/571] - fixed rspamd handling of user settings files - removed separate rspamd greylisting setting for policy and respect mail user/alias/forward/catchall setting for greylisting, fixes #5379 --- interface/web/admin/server_config_edit.php | 14 +- .../web/mail/form/spamfilter_policy.tform.php | 6 - interface/web/mail/spamfilter_policy_edit.php | 3 - .../mail/templates/spamfilter_rspamd_edit.htm | 6 - server/conf/rspamd_users.inc.conf.master | 56 +++-- .../plugins-available/rspamd_plugin.inc.php | 237 ++++++++++++------ 6 files changed, 208 insertions(+), 114 deletions(-) diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 8a7cd770a3..f311f6b1a5 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -174,7 +174,7 @@ class page_action extends tform_actions { } } - $mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ? AND (autoresponder = 'y' OR move_junk = 'y')", intval($this->id)); + $mail_users = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE server_id = ?", intval($this->id)); if(is_array($mail_users) && !empty($mail_users)){ foreach($mail_users as $mail_user){ if($mail_user['autoresponder'] == 'y'){ @@ -182,13 +182,21 @@ class page_action extends tform_actions { $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); $mail_user['autoresponder'] = 'y'; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); - } else { + } elseif($mail_user['move_junk'] == 'y') { $mail_user['move_junk'] = 'n'; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); $mail_user['move_junk'] = 'y'; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); + } else { + $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); } - + } + } + + $mail_forwards = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE server_id = ?", intval($this->id)); + if(is_array($mail_forwards) && !empty($mail_forwards)){ + foreach($mail_forwards as $mail_forward){ + $app->db->datalogUpdate('mail_forwarding', $mail_forward, 'forwarding_id', $mail_forward["forwarding_id"], true); } } } diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index 2205dbb651..57aa4f2bf5 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -471,12 +471,6 @@ $form["tabs"]['rspamd'] = array ( //################################# // Begin Datatable fields //################################# - 'rspamd_greylisting' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), 'rspamd_spam_greylisting_level' => array ( 'datatype' => 'DOUBLE', 'formtype' => 'TEXT', diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index ffc0818ffa..8226ae6048 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -92,9 +92,6 @@ class page_action extends tform_actions { global $app; $record_has_changed = false; - if(isset($this->dataRecord['rspamd_spam_greylisting_level']) && !isset($this->dataRecord['rspamd_greylisting'])) { - $this->dataRecord['rspamd_greylisting'] = 'n'; - } foreach($this->dataRecord as $key => $val) { if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { // Record has changed diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm index 73472a876c..2f8ea0f451 100644 --- a/interface/web/mail/templates/spamfilter_rspamd_edit.htm +++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm @@ -3,12 +3,6 @@ </div> <p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='rspamd_greylisting_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='rspamd_greylisting'} - </div> - </div> <div class="form-group"> <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label> <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div> diff --git a/server/conf/rspamd_users.inc.conf.master b/server/conf/rspamd_users.inc.conf.master index 43890e8135..96ba9f0838 100644 --- a/server/conf/rspamd_users.inc.conf.master +++ b/server/conf/rspamd_users.inc.conf.master @@ -1,39 +1,55 @@ -spamfilter_users-<tmpl_var name='record_id'> { +<tmpl_var name='record_identifier'> { priority = <tmpl_var name='priority'>; - <tmpl_if name='local' op='==' value='Y'>rcpt<tmpl_else>from</tmpl_if> = "<tmpl_var name='email'>"; -<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_virus_lover'> - want_spam = yes; +<tmpl_if name='from_email'> + from = "<tmpl_var name='from_email'>"; +</tmpl_if> +<tmpl_if name='to_email'> + rcpt = "<tmpl_var name='to_email'>"; </tmpl_if> -<tmpl_if name='spam_lover_virus_lover' op='==' value='spam_lover_AND_NOTvirus_lover'> + +<tmpl_if name='spam_lover'> +<tmpl_if name='virus_lover'> + want_spam = yes; +<tmpl_else> apply { CLAM_VIRUS = 1999.0; JUST_EICAR = 1999.0; actions { reject = null; + <tmpl_if name='greylisting'> + <tmpl_if name='greylisting' op='==' value='y'> + greylist = <tmpl_var name='greylisting_level'>; + <tmpl_else> + greylist = null; + </tmpl_if> + </tmpl_if> } } -</tmpl_if> -<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_virus_lover'> + </tmpl_if> +<tmpl_else> apply { + <tmpl_if name='virus_lover'> CLAM_VIRUS = -999.0; JUST_EICAR = -999.0; - actions { - <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> - <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> - <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> - reject = <tmpl_var name='rspamd_spam_kill_level'>; - } - } -</tmpl_if> -<tmpl_if name='spam_lover_virus_lover' op='==' value='NOTspam_lover_AND_NOTvirus_lover'> - apply { + <tmpl_else> CLAM_VIRUS = <tmpl_var name='rspamd_virus_kill_level'>; JUST_EICAR = <tmpl_var name='rspamd_virus_kill_level'>; + </tmpl_if> actions { - <tmpl_if name='rspamd_greylisting' op='==' value='y'>greylist = <tmpl_var name='rspamd_spam_greylisting_level'>;</tmpl_if> - <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'>"rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> - <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'>"add header" = <tmpl_var name='rspamd_spam_tag_level'>;</tmpl_if> + <tmpl_if name='rspamd_spam_tag_method' op='==' value='rewrite_subject'> + "rewrite subject" = <tmpl_var name='rspamd_spam_tag_level'>; + </tmpl_if> + <tmpl_if name='rspamd_spam_tag_method' op='==' value='add_header'> + "add header" = <tmpl_var name='rspamd_spam_tag_level'>; + </tmpl_if> reject = <tmpl_var name='rspamd_spam_kill_level'>; + <tmpl_if name='greylisting'> + <tmpl_if name='greylisting' op='==' value='y'> + greylist = <tmpl_var name='greylisting_level'>; + <tmpl_else> + greylist = null; + </tmpl_if> + </tmpl_if> } } </tmpl_if> diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 7fd3ebf773..70885056d7 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -33,7 +33,7 @@ class rspamd_plugin { var $plugin_name = 'rspamd_plugin'; var $class_name = 'rspamd_plugin'; var $users_config_dir = '/etc/rspamd/local.d/users/'; - + //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. function onInstall() { @@ -57,109 +57,195 @@ class rspamd_plugin { Register for the events */ - //* spamfilter_users - $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'spamfilter_users_insert'); - $app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'spamfilter_users_update'); - $app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'spamfilter_users_delete'); - //* spamfilter_wblist $app->plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert'); $app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update'); $app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + //* global mail access filters + $app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert'); + $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); + $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); + //* server ip $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip'); $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip'); $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip'); - //* global mail access filters - $app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert'); - $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); - $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); - } + //* spamfilter_users + $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('spamfilter_users_delete', $this->plugin_name, 'user_settings_update'); - function spamfilter_users_insert($event_name, $data) { - $this->action = 'insert'; - // just run the spamfilter_users_update function - $this->spamfilter_users_update($event_name, $data); + //* mail user / fwd / catchall changed (greylisting) + $app->plugins->registerEvent('mail_user_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_user_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_user_delete', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_insert', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_update', $this->plugin_name, 'user_settings_update'); + $app->plugins->registerEvent('mail_forwarding_delete', $this->plugin_name, 'user_settings_update'); } - function spamfilter_users_update($event_name, $data) { + function user_settings_update($event_name, $data) { global $app, $conf; + + if(!is_dir('/etc/rspamd')) { + return; + } + + $use_data = 'new'; + if(substr($event_name, -7) === 'delete') { + $mode = 'delete'; + $use_data = 'old'; + } elseif(substr($event_name, -7) === 'insert') { + $mode = 'insert'; + } else { + $mode = 'update'; + } // get the config $app->uses('getconf,system,functions'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - - if(is_dir('/etc/rspamd')) { - $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); - - //* Create the config file - $user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['new']['id']).'.conf'; - if(is_array($policy) && !empty($policy)){ - if(!is_dir($this->users_config_dir)){ - $app->system->mkdirpath($this->users_config_dir); - } + $type = false; + $identifier = false; + $entry_id = false; + if(substr($event_name, 0, 17) === 'spamfilter_users_') { + $identifier = 'email'; + $type = 'spamfilter_user'; + $entry_id = $data[$use_data]['id']; + } elseif(substr($event_name, 0, 16) === 'mail_forwarding_') { + $identifier = 'source'; + $type = 'mail_forwarding'; + $entry_id = $data[$use_data]['forwarding_id']; + } elseif(substr($event_name, 0, 10) === 'mail_user_') { + $identifier = 'email'; + $type = 'mail_user'; + $entry_id = $data[$use_data]['mailuser_id']; + } else { + // invalid event + $app->log('Invalid event name for rspamd_plugin: ' . $event_name, LOGLEVEL_WARN); + return; + } - $app->load('tpl'); - - $tpl = new tpl(); - $tpl->newTemplate('rspamd_users.inc.conf.master'); - $tpl->setVar('record_id', intval($data['new']['id'])); - $tpl->setVar('priority', intval($data['new']['priority'])); - $tpl->setVar('email', $app->functions->idn_encode($data['new']['email'])); - $tpl->setVar('local', $data['new']['local']); - - $tpl->setVar('rspamd_greylisting', $policy['rspamd_greylisting']); - $tpl->setVar('rspamd_spam_greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); - - $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); - $tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']); - - $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); - $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); + $is_domain = false; + $email_address = $data[$use_data][$identifier]; + $settings_name = $email_address; + if(!$email_address) { + // problem reading identifier + $app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); + return; + } elseif(substr($email_address, 0, 1) === '@') { + $settings_name = substr($email_address, 1); + $is_domain = true; + } elseif(strpos($email_address, '@') === false) { + $email_address = '@' . $email_address; + $is_domain = true; + } + + if($settings_name == '') { + // missing settings file name + $app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); + return; + } + + $settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf'; + $app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); + if($mode === 'delete') { + if(is_file($settings_file)) { + unlink($settings_file); + } + } else { + $settings_priority = 20; + if(isset($data[$use_data]['priority'])) { + $settings_priority = intval($data[$use_data]['priority']); + } elseif($is_domain === true) { + $settings_priority = 18; + } + + // get policy for entry + if($type === 'spamfilter_user') { + $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); - $spam_lover_virus_lover = ''; - if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'spam_lover_AND_virus_lover'; - if($policy['spam_lover'] == 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'spam_lover_AND_NOTvirus_lover'; - if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] == 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_virus_lover'; - if($policy['spam_lover'] != 'Y' && $policy['virus_lover'] != 'Y') $spam_lover_virus_lover = 'NOTspam_lover_AND_NOTvirus_lover'; + $check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y'); + if($check) { + $greylisting = $check['greylisting']; + } else { + $greylisting = 'n'; + } + } else { + $search_for_policy[] = $email_address; + $search_for_policy[] = substr($email_address, strpos($email_address, '@')); - $tpl->setVar('spam_lover_virus_lover', $spam_lover_virus_lover); + $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy); - //$groups_disabled = array(); - //if($policy['virus_lover'] == 'Y') $groups_disabled[] = ''; - - $app->system->file_put_contents($user_file, $tpl->grab()); - } else { - if(is_file($user_file)) { - unlink($user_file); + $greylisting = $data[$use_data]['greylisting']; + } + + if(!is_dir($this->users_config_dir)){ + $app->system->mkdirpath($this->users_config_dir); + } + + $app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.inc.conf.master'); + + $tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id); + $tpl->setVar('priority', $settings_priority); + + if($type === 'spamfilter_user') { + if($data[$use_data]['local'] === 'Y') { + $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + } else { + $tpl->setVar('from_email', $app->functions->idn_encode($email_address)); } + $spamfilter = $data[$use_data]; + } else { + $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + + // need to get matching spamfilter user if any + $spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address); } - if($mail_config['content_filter'] == 'rspamd'){ - if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + if(!isset($policy['rspamd_spam_tag_level'])) { + $policy['rspamd_spam_tag_level'] = 6.0; } - } - } - - function spamfilter_users_delete($event_name, $data) { - global $app, $conf; + if(!isset($policy['rspamd_spam_tag_method'])) { + $policy['rspamd_spam_tag_method'] = 'add_header'; + } + if(!isset($policy['rspamd_spam_kill_level'])) { + $policy['rspamd_spam_kill_level'] = 15.0; + } + if(!isset($policy['rspamd_virus_kill_level'])) { + $policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000; + } + + $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); + $tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method'])); + $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); + $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); + + if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') { + $tpl->setVar('spam_lover', true); + } + if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') { + $tpl->setVar('virus_lover', true); + } + + $tpl->setVar('greylisting', $greylisting); - // get the config - $app->uses('getconf'); - $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + if(isset($policy['rspamd_spam_greylisting_level'])) { + $tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); + } else { + $tpl->setVar('greylisting_level', 0.1); + } - if(is_dir('/etc/rspamd')) { - //* delete the config file - $user_file = $this->users_config_dir.'spamfilter_user_'.intval($data['old']['id']).'.conf'; - if(is_file($user_file)) unlink($user_file); - + $app->system->file_put_contents($settings_file, $tpl->grab()); } - - if($mail_config['content_filter'] == 'rspamd') { - if(is_file('/etc/init.d/rspamd')) $app->services->restartServiceDelayed('rspamd', 'reload'); + + if($mail_config['content_filter'] == 'rspamd'){ + $app->services->restartServiceDelayed('rspamd', 'reload'); } } @@ -234,7 +320,7 @@ class rspamd_plugin { $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); $tpl->setVar('record_id', $record_id); // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists - $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 20 : 10)); + $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20)); $tpl->setVar('from', $filter_from); $tpl->setVar('recipient', $filter_rcpt); $tpl->setVar('hostname', $filter['hostname']); @@ -315,5 +401,4 @@ class rspamd_plugin { return false; } } - } // end class -- GitLab From fbbedfa302b51e1e475197be586a16d37c52a474 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 2 Sep 2019 14:59:21 +0200 Subject: [PATCH 120/571] - added german text for rspamd policy change --- interface/web/mail/lib/lang/de_spamfilter_policy.lng | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng index 04b8274478..1efbcb6afc 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng @@ -42,3 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode'; $wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; + +$wb['amavis_settings_txt'] = 'Einstellungen'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantäne'; +$wb['amavis_other_txt'] = 'Sonstiges'; +$wb['add_header_txt'] = 'Header hinzufügen'; +$wb['rewrite_subject_txt'] = 'Betreff ändern'; \ No newline at end of file -- GitLab From e470fde84a904409aa7912bedcf424d6467d9e0f Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 2 Sep 2019 15:06:44 +0200 Subject: [PATCH 121/571] Remote API: monitor_jobqueue_count returning wrong count in multiserver setup, fixes #5382 --- interface/lib/classes/remote.d/monitor.inc.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/interface/lib/classes/remote.d/monitor.inc.php b/interface/lib/classes/remote.d/monitor.inc.php index d3689b94ca..3df681f9ba 100644 --- a/interface/lib/classes/remote.d/monitor.inc.php +++ b/interface/lib/classes/remote.d/monitor.inc.php @@ -39,7 +39,6 @@ class remoting_monitor extends remoting { if(!$this->checkPerm($session_id, 'monitor_jobqueue_count')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); - return false; } $server_id = intval($server_id); @@ -48,7 +47,7 @@ class remoting_monitor extends remoting { $servers = $app->db->queryAllRecords("SELECT server_id, updated FROM server"); $sql = 'SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE '; foreach($servers as $sv) { - $sql .= " (datalog_id > ".$sv['updated']." AND server_id = ".$sv['server_id'].") OR "; + $sql .= " (datalog_id > ".$sv['updated']." AND server_id IN (0,".$sv['server_id'].")) OR "; } $sql = substr($sql, 0, -4); $tmp = $app->db->queryOneRecord($sql); @@ -56,7 +55,7 @@ class remoting_monitor extends remoting { } else { $server = $app->db->queryOneRecord("SELECT updated FROM server WHERE server_id = ?",$server_id); - $tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']); + $tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ? AND server_id IN ?',$server['updated'], array(0, $server_id)); return $tmp['jobqueue_count']; } } -- GitLab From 0fce8c16f197599d3ec33f54494b00d085f8e4ae Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 15:25:21 +0200 Subject: [PATCH 122/571] Fixed #5351 Remote API function dns_templatezone_add issue Added test script for dns_templatezone_add remote API function --- interface/lib/classes/remote.d/aps.inc.php | 3 ++ interface/lib/classes/remote.d/dns.inc.php | 4 +- .../examples/dns_templatezone_add.php | 50 +++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 remoting_client/examples/dns_templatezone_add.php diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php index 50dda48255..4cca7fb8b6 100644 --- a/interface/lib/classes/remote.d/aps.inc.php +++ b/interface/lib/classes/remote.d/aps.inc.php @@ -238,6 +238,9 @@ class remoting_aps extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } + + $app->uses('remoting_lib'); + $app->remoting_lib->loadUserProfile(0); $app->load('aps_guicontroller'); $gui = new ApsGUIController($app); diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 7e0b230d7f..434af6a983 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -56,7 +56,9 @@ class remoting_dns extends remoting { $tform_def_file = "../../web/dns/form/dns_soa.tform.php"; $app->uses('tform'); $app->tform->loadFormDef($tform_def_file); - $app->uses('tpl,validate_dns'); + $app->uses('tpl,validate_dns,remoting_lib'); + + $app->remoting_lib->loadUserProfile($client_id); //* replace template placeholders $tpl_content = $template_record['template']; diff --git a/remoting_client/examples/dns_templatezone_add.php b/remoting_client/examples/dns_templatezone_add.php new file mode 100644 index 0000000000..aedfc61f5d --- /dev/null +++ b/remoting_client/examples/dns_templatezone_add.php @@ -0,0 +1,50 @@ +<?php + +require 'soap_config.php'; + +// Disable SSL verification for this test script +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + //* Set the function parameters. + $client_id = 1; + $template_id = 1; + $domain = 'test.tld'; + $ip = '192.168.0.100'; + $ns1 = 'ns1.testhoster.tld'; + $ns2 = 'ns2.testhoster.tld'; + $email = 'email.test.tld'; + + $id = $client->dns_templatezone_add($session_id, $client_id, $template_id, $domain, $ip, $ns1, $ns2, $email); + + echo "ID: ".$id."<br>"; + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> \ No newline at end of file -- GitLab From 724b7e4f7f0a8c9377b2ff250ae46c86b3a892d6 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 15:44:43 +0200 Subject: [PATCH 123/571] Fixed #5348 Virtual server config panel showing without active VServer --- interface/web/dashboard/dashlets/modules.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interface/web/dashboard/dashlets/modules.php b/interface/web/dashboard/dashlets/modules.php index 5c1f15149d..f5f96a82ac 100644 --- a/interface/web/dashboard/dashlets/modules.php +++ b/interface/web/dashboard/dashlets/modules.php @@ -40,6 +40,11 @@ class dashlet_modules { $web_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE web_server = 1 AND active = 1"); if($web_servers['cnt'] == 0) continue; } + + if($mt == 'vm'){ + $vserver_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE vserver_server = 1 AND active = 1"); + if($vserver_servers['cnt'] == 0) continue; + } $module_title = $app->lng($module['title']); if(function_exists('mb_strlen')) { -- GitLab From efda2243d899e9a4c4f9e383d3e2df13efa29271 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 16:01:58 +0200 Subject: [PATCH 124/571] Fixed ISPConfig server log warning: Unable to add a delayed restart for 'postfix'. Service not registered. --- server/mods-available/mail_module.inc.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php index 14cbbb24e4..e13839d344 100644 --- a/server/mods-available/mail_module.inc.php +++ b/server/mods-available/mail_module.inc.php @@ -113,6 +113,7 @@ class mail_module { $app->modules->registerTableHook('spamfilter_wblist', 'mail_module', 'process'); $app->services->registerService('rspamd', 'mail_module', 'restartRspamd'); + $app->services->registerService('postfix', 'mail_module', 'restartPostfix'); } /* @@ -192,6 +193,22 @@ class mail_module { } return $retval; } + + function restartPostfix($action = 'reload') { + global $app; + + $app->uses('system'); + + $daemon = 'postfix'; + + $retval = array('output' => '', 'retval' => 0); + if($action == 'restart') { + exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); + } else { + exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); + } + return $retval; + } } // end class ?> -- GitLab From 65be9518b8f704479010e1cd65c8d5552f98ed4c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 16:10:43 +0200 Subject: [PATCH 125/571] Fixed PHP Warning: Undefined property wb of class app in /usr/local/ispconfig/interface/lib/app.inc.php on line 81 --- interface/lib/app.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 11bd024398..e341a57943 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -248,7 +248,7 @@ class app { } $this->_language_inc = 1; } - if(isset($this->_wb[$text]) && $this->wb[$text] !== '') { + if(isset($this->_wb[$text]) && $this->_wb[$text] !== '') { $text = $this->_wb[$text]; } else { if($this->_conf['debug_language']) { -- GitLab From 7d72427c9d61e0b78d2869da75c8aa469a36c57a Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 2 Sep 2019 16:28:03 +0200 Subject: [PATCH 126/571] Fixed html glitch behind active checkbox in dmarc edit form. --- interface/web/dns/templates/dns_dmarc_edit.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm index 630c18559b..4b7646a398 100644 --- a/interface/web/dns/templates/dns_dmarc_edit.htm +++ b/interface/web/dns/templates/dns_dmarc_edit.htm @@ -147,7 +147,7 @@ <div class="form-group"> <label class="col-sm-2 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-3"> - <input type="checkbox" value="1" id="active" name="active" {tmpl_var name='active'} /> + {tmpl_var name='active'} </div> </div> -- GitLab From 2eede67205b7b51988f1540c3b7c999b42ee02e6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 3 Sep 2019 10:32:05 +0200 Subject: [PATCH 127/571] - fixed invalid sql query on rspamd plugin --- server/plugins-available/rspamd_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 70885056d7..17a14ce42e 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -177,7 +177,7 @@ class rspamd_plugin { $search_for_policy[] = $email_address; $search_for_policy[] = substr($email_address, strpos($email_address, '@')); - $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy); + $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy); $greylisting = $data[$use_data]['greylisting']; } -- GitLab From 44b6fa2337b35149a9b5cd80ff4790c311c5e471 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 3 Sep 2019 10:39:35 +0200 Subject: [PATCH 128/571] - removed debug message from rspamd plugin --- server/plugins-available/rspamd_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 17a14ce42e..49eb87165e 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -150,7 +150,7 @@ class rspamd_plugin { } $settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf'; - $app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); + //$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); if($mode === 'delete') { if(is_file($settings_file)) { unlink($settings_file); -- GitLab From b9f6e3fa6e33cd596f56044827b422e17f844477 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 3 Sep 2019 15:54:08 +0200 Subject: [PATCH 129/571] - allow @ in webdav username --- interface/web/sites/form/webdav_user.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php index 8d5c0c561f..b7db858546 100644 --- a/interface/web/sites/form/webdav_user.tform.php +++ b/interface/web/sites/form/webdav_user.tform.php @@ -85,7 +85,7 @@ $form["tabs"]['webdav'] = array ( 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'username_error_unique'), 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{0,64}$/', + 'regex' => '/^[\w\.\-@]{0,64}$/', 'errmsg'=> 'username_error_regex'), ), 'default' => '', -- GitLab From af562b205e3013b5c2ccd2622608f51133779f6d Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 4 Sep 2019 11:37:08 +0200 Subject: [PATCH 130/571] Moved sql dev collection to upd_0088.sql file. --- install/sql/incremental/upd_0088.sql | 39 +++++++++++++++++++ .../sql/incremental/upd_dev_collection.sql | 39 ------------------- 2 files changed, 39 insertions(+), 39 deletions(-) create mode 100644 install/sql/incremental/upd_0088.sql diff --git a/install/sql/incremental/upd_0088.sql b/install/sql/incremental/upd_0088.sql new file mode 100644 index 0000000000..5c062603f9 --- /dev/null +++ b/install/sql/incremental/upd_0088.sql @@ -0,0 +1,39 @@ +-- rspamd +ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; +ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; + +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; +UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; + +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; + +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; +UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; +-- end of rspamd +ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL; +ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; + +DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02'; \ No newline at end of file diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 91cbc81626..e69de29bb2 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,39 +0,0 @@ --- rspamd -ALTER TABLE `spamfilter_policy` ADD `rspamd_greylisting` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `policyd_greylist`; -ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_greylisting_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_greylisting`; -ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_greylisting_level`; -ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_tag_method` ENUM('add_header','rewrite_subject') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'rewrite_subject' AFTER `rspamd_spam_tag_level`; -ALTER TABLE `spamfilter_policy` ADD `rspamd_spam_kill_level` DECIMAL(5,2) NULL DEFAULT NULL AFTER `rspamd_spam_tag_method`; - -UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 4; -UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 5; -UPDATE `spamfilter_policy` SET `rspamd_greylisting` = 'y' WHERE id = 6; - -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '4.00'; -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '6.00' WHERE id = 1; -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 2; -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '999.00' WHERE id = 3; -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '2.00' WHERE id = 6; -UPDATE `spamfilter_policy` SET `rspamd_spam_greylisting_level` = '7.00' WHERE id = 7; - -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '6.00'; -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '8.00' WHERE id = 1; -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 2; -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '999.00' WHERE id = 3; -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '4.00' WHERE id = 6; -UPDATE `spamfilter_policy` SET `rspamd_spam_tag_level` = '10.00' WHERE id = 7; - -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '10.00'; -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '12.00' WHERE id = 1; -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 2; -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '999.00' WHERE id = 3; -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '8.00' WHERE id = 6; -UPDATE `spamfilter_policy` SET `rspamd_spam_kill_level` = '20.00' WHERE id = 7; --- end of rspamd -ALTER TABLE `client` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; -ALTER TABLE `ftp_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; -ALTER TABLE `shell_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; -ALTER TABLE `sys_user` CHANGE COLUMN `passwort` `passwort` VARCHAR(200) DEFAULT NULL; -ALTER TABLE `webdav_user` CHANGE COLUMN `password` `password` VARCHAR(200) DEFAULT NULL; - -DELETE FROM sys_cron WHERE `next_run` IS NOT NULL AND `next_run` >= DATE_ADD(`last_run`, INTERVAL 30 DAY) AND `next_run` BETWEEN '2020-01-01' AND '2020-01-02'; -- GitLab From 65d142ea6719c72b3e4612a06b245ad3b3495c33 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 4 Sep 2019 11:41:56 +0200 Subject: [PATCH 131/571] Merged language files. --- interface/lib/lang/ar.lng | 2 +- interface/lib/lang/bg.lng | 2 +- interface/lib/lang/ca.lng | 2 +- interface/lib/lang/cz.lng | 2 +- interface/lib/lang/de.lng | 5 ++--- interface/lib/lang/dk.lng | 2 +- interface/lib/lang/el.lng | 2 +- interface/lib/lang/es.lng | 2 +- interface/lib/lang/fi.lng | 2 +- interface/lib/lang/hr.lng | 2 +- interface/lib/lang/hu.lng | 2 +- interface/lib/lang/id.lng | 2 +- interface/lib/lang/it.lng | 2 +- interface/lib/lang/ja.lng | 2 +- interface/lib/lang/nl.lng | 2 +- interface/lib/lang/pl.lng | 2 +- interface/lib/lang/pt.lng | 2 +- interface/lib/lang/ro.lng | 2 +- interface/lib/lang/ru.lng | 2 +- interface/lib/lang/se.lng | 2 +- interface/lib/lang/sk.lng | 2 +- interface/lib/lang/tr.lng | 2 +- .../web/admin/lib/lang/ar_server_config.lng | 4 ++++ .../web/admin/lib/lang/ar_system_config.lng | 2 +- interface/web/admin/lib/lang/ar_users.lng | 2 +- .../web/admin/lib/lang/bg_server_config.lng | 4 ++++ .../web/admin/lib/lang/bg_system_config.lng | 2 +- interface/web/admin/lib/lang/bg_users.lng | 2 +- .../web/admin/lib/lang/br_server_config.lng | 4 ++++ .../web/admin/lib/lang/br_system_config.lng | 2 +- interface/web/admin/lib/lang/ca_firewall.lng | 4 ++-- .../web/admin/lib/lang/ca_server_config.lng | 6 +++++- .../web/admin/lib/lang/ca_system_config.lng | 2 +- interface/web/admin/lib/lang/ca_users.lng | 2 +- .../web/admin/lib/lang/cz_remote_action.lng | 4 ++-- .../web/admin/lib/lang/cz_server_config.lng | 6 +++++- .../web/admin/lib/lang/de_server_config.lng | 3 ++- interface/web/admin/lib/lang/dk_firewall.lng | 4 ++-- .../web/admin/lib/lang/dk_server_config.lng | 6 +++++- .../web/admin/lib/lang/dk_system_config.lng | 2 +- interface/web/admin/lib/lang/dk_users.lng | 2 +- .../web/admin/lib/lang/el_server_config.lng | 4 ++++ .../web/admin/lib/lang/el_system_config.lng | 2 +- interface/web/admin/lib/lang/el_users.lng | 2 +- interface/web/admin/lib/lang/es_firewall.lng | 4 ++-- .../web/admin/lib/lang/es_server_config.lng | 6 +++++- .../web/admin/lib/lang/es_system_config.lng | 4 ++-- .../web/admin/lib/lang/fi_server_config.lng | 4 ++++ .../web/admin/lib/lang/fi_system_config.lng | 2 +- interface/web/admin/lib/lang/fi_users.lng | 2 +- .../web/admin/lib/lang/fr_remote_action.lng | 2 +- .../web/admin/lib/lang/fr_server_config.lng | 4 ++++ .../web/admin/lib/lang/fr_system_config.lng | 2 +- .../web/admin/lib/lang/hr_server_config.lng | 4 ++++ .../web/admin/lib/lang/hr_system_config.lng | 2 +- interface/web/admin/lib/lang/hr_users.lng | 2 +- interface/web/admin/lib/lang/hr_users_list.lng | 2 +- .../web/admin/lib/lang/hu_server_config.lng | 4 ++++ .../web/admin/lib/lang/hu_system_config.lng | 2 +- interface/web/admin/lib/lang/hu_users.lng | 2 +- .../web/admin/lib/lang/id_server_config.lng | 4 ++++ .../web/admin/lib/lang/id_system_config.lng | 2 +- interface/web/admin/lib/lang/id_users.lng | 2 +- .../web/admin/lib/lang/it_server_config.lng | 4 ++++ .../web/admin/lib/lang/it_system_config.lng | 2 +- interface/web/admin/lib/lang/it_users.lng | 2 +- .../web/admin/lib/lang/ja_server_config.lng | 4 ++++ .../web/admin/lib/lang/ja_system_config.lng | 2 +- interface/web/admin/lib/lang/ja_users.lng | 2 +- .../web/admin/lib/lang/nl_server_config.lng | 4 ++++ .../web/admin/lib/lang/nl_system_config.lng | 2 +- interface/web/admin/lib/lang/nl_users.lng | 2 +- .../web/admin/lib/lang/pl_server_config.lng | 4 ++++ .../web/admin/lib/lang/pl_system_config.lng | 2 +- .../web/admin/lib/lang/pt_server_config.lng | 4 ++++ .../web/admin/lib/lang/pt_system_config.lng | 2 +- interface/web/admin/lib/lang/pt_users.lng | 2 +- .../web/admin/lib/lang/ro_server_config.lng | 4 ++++ .../web/admin/lib/lang/ro_system_config.lng | 2 +- interface/web/admin/lib/lang/ro_users.lng | 2 +- interface/web/admin/lib/lang/ru_firewall.lng | 4 ++-- .../web/admin/lib/lang/ru_server_config.lng | 6 +++++- .../web/admin/lib/lang/ru_system_config.lng | 4 ++-- interface/web/admin/lib/lang/ru_users.lng | 2 +- .../web/admin/lib/lang/se_server_config.lng | 4 ++++ .../web/admin/lib/lang/se_system_config.lng | 2 +- .../web/admin/lib/lang/sk_server_config.lng | 4 ++++ .../web/admin/lib/lang/sk_system_config.lng | 2 +- interface/web/admin/lib/lang/sk_users.lng | 2 +- interface/web/admin/lib/lang/tr_firewall.lng | 4 ++-- .../web/admin/lib/lang/tr_remote_action.lng | 4 ++-- .../web/admin/lib/lang/tr_server_config.lng | 6 +++++- .../web/admin/lib/lang/tr_system_config.lng | 2 +- interface/web/admin/lib/lang/tr_users.lng | 2 +- interface/web/client/lib/lang/ar_client.lng | 2 +- interface/web/client/lib/lang/ar_reseller.lng | 2 +- interface/web/client/lib/lang/bg_client.lng | 2 +- interface/web/client/lib/lang/bg_reseller.lng | 2 +- interface/web/client/lib/lang/br_client.lng | 2 +- .../web/client/lib/lang/br_client_template.lng | 2 +- interface/web/client/lib/lang/br_reseller.lng | 2 +- interface/web/client/lib/lang/ca_client.lng | 2 +- interface/web/client/lib/lang/ca_reseller.lng | 2 +- interface/web/client/lib/lang/cz_client.lng | 2 +- interface/web/client/lib/lang/cz_reseller.lng | 2 +- interface/web/client/lib/lang/de_reseller.lng | 2 +- interface/web/client/lib/lang/dk_client.lng | 2 +- interface/web/client/lib/lang/dk_reseller.lng | 2 +- interface/web/client/lib/lang/el_client.lng | 2 +- interface/web/client/lib/lang/el_reseller.lng | 2 +- interface/web/client/lib/lang/es_client.lng | 4 ++-- .../web/client/lib/lang/es_client_template.lng | 4 ++-- interface/web/client/lib/lang/es_reseller.lng | 4 ++-- interface/web/client/lib/lang/fi_client.lng | 2 +- interface/web/client/lib/lang/fi_reseller.lng | 2 +- interface/web/client/lib/lang/fr_client.lng | 2 +- interface/web/client/lib/lang/fr_reseller.lng | 2 +- interface/web/client/lib/lang/hr_client.lng | 2 +- interface/web/client/lib/lang/hr_reseller.lng | 2 +- interface/web/client/lib/lang/hu_client.lng | 2 +- interface/web/client/lib/lang/hu_reseller.lng | 2 +- interface/web/client/lib/lang/id_client.lng | 2 +- interface/web/client/lib/lang/id_reseller.lng | 2 +- interface/web/client/lib/lang/it_client.lng | 2 +- interface/web/client/lib/lang/it_reseller.lng | 2 +- interface/web/client/lib/lang/ja_client.lng | 2 +- interface/web/client/lib/lang/ja_reseller.lng | 2 +- interface/web/client/lib/lang/nl_client.lng | 2 +- interface/web/client/lib/lang/nl_reseller.lng | 2 +- interface/web/client/lib/lang/pl_reseller.lng | 2 +- interface/web/client/lib/lang/pt_client.lng | 2 +- interface/web/client/lib/lang/pt_reseller.lng | 2 +- interface/web/client/lib/lang/ro_client.lng | 2 +- interface/web/client/lib/lang/ro_reseller.lng | 2 +- interface/web/client/lib/lang/ru_client.lng | 4 ++-- interface/web/client/lib/lang/ru_reseller.lng | 4 ++-- interface/web/client/lib/lang/se_client.lng | 2 +- interface/web/client/lib/lang/se_reseller.lng | 2 +- interface/web/client/lib/lang/sk_client.lng | 2 +- interface/web/client/lib/lang/sk_reseller.lng | 2 +- interface/web/client/lib/lang/tr_client.lng | 2 +- interface/web/client/lib/lang/tr_reseller.lng | 2 +- .../web/dashboard/lib/lang/es_dashlet_limits.lng | 2 +- interface/web/dns/lib/lang/br_dns_dmarc.lng | 10 +++++----- interface/web/dns/lib/lang/br_dns_tlsa.lng | 4 ++-- interface/web/dns/lib/lang/ru_dns_hinfo.lng | 2 +- .../web/help/lib/lang/br_support_message.lng | 2 +- interface/web/login/lib/lang/ar_login_as.lng | 6 +++--- interface/web/login/lib/lang/bg_login_as.lng | 6 +++--- interface/web/login/lib/lang/br_login_as.lng | 2 +- interface/web/login/lib/lang/ca_login_as.lng | 6 +++--- interface/web/login/lib/lang/dk_login_as.lng | 6 +++--- interface/web/login/lib/lang/el_login_as.lng | 6 +++--- interface/web/login/lib/lang/es_login_as.lng | 6 +++--- interface/web/login/lib/lang/fi_login_as.lng | 6 +++--- interface/web/login/lib/lang/hr_login_as.lng | 6 +++--- interface/web/login/lib/lang/hu_login_as.lng | 6 +++--- interface/web/login/lib/lang/id_login_as.lng | 6 +++--- interface/web/login/lib/lang/it_login_as.lng | 6 +++--- interface/web/login/lib/lang/ja_login_as.lng | 6 +++--- interface/web/login/lib/lang/nl_login_as.lng | 4 ++-- interface/web/login/lib/lang/pt_login_as.lng | 6 +++--- interface/web/login/lib/lang/ro_login_as.lng | 6 +++--- interface/web/login/lib/lang/ru_login_as.lng | 6 +++--- interface/web/login/lib/lang/se_login_as.lng | 6 +++--- interface/web/login/lib/lang/sk_login_as.lng | 6 +++--- interface/web/login/lib/lang/tr_login_as.lng | 6 +++--- interface/web/mail/lib/lang/ar.lng | 2 ++ .../mail/lib/lang/ar_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/ar_mail_get.lng | 2 +- .../web/mail/lib/lang/ar_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/bg.lng | 2 ++ .../mail/lib/lang/bg_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/bg_mail_get.lng | 2 +- .../web/mail/lib/lang/bg_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/br.lng | 2 ++ .../mail/lib/lang/br_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/br_mail_user.lng | 4 ++-- .../web/mail/lib/lang/br_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/ca.lng | 2 ++ .../mail/lib/lang/ca_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/ca_mail_get.lng | 2 +- .../web/mail/lib/lang/ca_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/cz.lng | 2 ++ .../mail/lib/lang/cz_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/cz_mail_get.lng | 2 +- .../web/mail/lib/lang/cz_mail_mailinglist.lng | 2 +- .../web/mail/lib/lang/cz_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/de.lng | 2 ++ .../web/mail/lib/lang/de_spamfilter_policy.lng | 4 ++-- interface/web/mail/lib/lang/dk.lng | 2 ++ .../mail/lib/lang/dk_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/dk_mail_get.lng | 2 +- .../web/mail/lib/lang/dk_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/el.lng | 2 ++ .../mail/lib/lang/el_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/el_mail_get.lng | 2 +- .../web/mail/lib/lang/el_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/es.lng | 4 +++- .../mail/lib/lang/es_mail_domain_catchall.lng | 5 +++-- .../lib/lang/es_mail_domain_catchall_list.lng | 4 ++-- interface/web/mail/lib/lang/es_mail_get.lng | 2 +- .../web/mail/lib/lang/es_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/fi.lng | 2 ++ .../mail/lib/lang/fi_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/fi_mail_get.lng | 2 +- .../web/mail/lib/lang/fi_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/fr.lng | 2 ++ .../mail/lib/lang/fr_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/fr_mail_get.lng | 2 +- .../web/mail/lib/lang/fr_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/hr.lng | 2 ++ .../mail/lib/lang/hr_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/hr_mail_get.lng | 2 +- .../web/mail/lib/lang/hr_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/hu.lng | 2 ++ .../mail/lib/lang/hu_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/hu_mail_get.lng | 2 +- .../web/mail/lib/lang/hu_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/id.lng | 2 ++ .../mail/lib/lang/id_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/id_mail_get.lng | 2 +- .../web/mail/lib/lang/id_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/it.lng | 2 ++ .../mail/lib/lang/it_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/it_mail_get.lng | 2 +- .../web/mail/lib/lang/it_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/ja.lng | 2 ++ .../mail/lib/lang/ja_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/ja_mail_get.lng | 2 +- .../web/mail/lib/lang/ja_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/nl.lng | 2 ++ .../mail/lib/lang/nl_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/nl_mail_get.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 4 ++-- .../web/mail/lib/lang/nl_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/pl.lng | 2 ++ .../mail/lib/lang/pl_mail_domain_catchall.lng | 1 + .../web/mail/lib/lang/pl_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/pt.lng | 2 ++ .../mail/lib/lang/pt_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/pt_mail_get.lng | 2 +- .../web/mail/lib/lang/pt_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/ro.lng | 2 ++ .../mail/lib/lang/ro_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/ro_mail_get.lng | 2 +- .../web/mail/lib/lang/ro_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/ru.lng | 2 ++ .../mail/lib/lang/ru_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/ru_mail_get.lng | 2 +- .../web/mail/lib/lang/ru_mail_user_filter.lng | 2 +- .../web/mail/lib/lang/ru_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/se.lng | 2 ++ .../mail/lib/lang/se_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/se_mail_get.lng | 2 +- .../web/mail/lib/lang/se_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/sk.lng | 2 ++ .../mail/lib/lang/sk_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/sk_mail_get.lng | 2 +- .../web/mail/lib/lang/sk_spamfilter_policy.lng | 13 +++++++++++++ interface/web/mail/lib/lang/tr.lng | 2 ++ .../mail/lib/lang/tr_mail_domain_catchall.lng | 1 + interface/web/mail/lib/lang/tr_mail_get.lng | 2 +- .../web/mail/lib/lang/tr_spamfilter_policy.lng | 13 +++++++++++++ .../mailuser/lib/lang/ru_mail_user_filter.lng | 2 +- .../monitor/lib/lang/ar_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/bg_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/br_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/ca_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/dk_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/el_dataloghistory_list.lng | 12 ++++++------ interface/web/monitor/lib/lang/es.lng | 2 +- .../monitor/lib/lang/es_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/fi_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/fr_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/hr_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/hu_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/id_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/it_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/ja_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/nl_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/pl_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/pt_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/ro_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/ru_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/se_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/sk_dataloghistory_list.lng | 12 ++++++------ .../monitor/lib/lang/tr_dataloghistory_list.lng | 12 ++++++------ interface/web/sites/lib/lang/ar.lng | 2 +- interface/web/sites/lib/lang/ar_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ar_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ar_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/bg.lng | 2 +- interface/web/sites/lib/lang/bg_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/bg_web_childdomain.lng | 2 +- .../web/sites/lib/lang/bg_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/br.lng | 2 +- interface/web/sites/lib/lang/br_cron.lng | 4 ++-- interface/web/sites/lib/lang/br_database.lng | 2 +- .../web/sites/lib/lang/br_database_user.lng | 2 +- interface/web/sites/lib/lang/br_ftp_user.lng | 4 ++-- interface/web/sites/lib/lang/br_shell_user.lng | 4 ++-- .../web/sites/lib/lang/br_web_aliasdomain.lng | 4 ++-- .../web/sites/lib/lang/br_web_childdomain.lng | 6 +++--- interface/web/sites/lib/lang/br_web_domain.lng | 6 +++--- .../web/sites/lib/lang/br_web_subdomain.lng | 2 +- .../web/sites/lib/lang/br_web_vhost_domain.lng | 4 ++-- .../sites/lib/lang/br_web_vhost_subdomain.lng | 10 +++++----- interface/web/sites/lib/lang/br_webdav_user.lng | 4 ++-- interface/web/sites/lib/lang/ca.lng | 2 +- interface/web/sites/lib/lang/ca_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ca_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ca_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/cz.lng | 2 +- interface/web/sites/lib/lang/cz_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/cz_web_childdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_subdomain.lng | 2 +- .../web/sites/lib/lang/de_web_childdomain.lng | 2 +- .../web/sites/lib/lang/de_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/dk.lng | 2 +- interface/web/sites/lib/lang/dk_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/dk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/dk_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/el.lng | 2 +- interface/web/sites/lib/lang/el_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/el_web_childdomain.lng | 2 +- .../web/sites/lib/lang/el_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/es.lng | 2 +- interface/web/sites/lib/lang/es_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/es_web_childdomain.lng | 4 ++-- .../web/sites/lib/lang/es_web_subdomain.lng | 2 +- .../web/sites/lib/lang/es_web_vhost_domain.lng | 2 +- interface/web/sites/lib/lang/fi.lng | 2 +- interface/web/sites/lib/lang/fi_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/fi_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fi_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/fr.lng | 2 +- interface/web/sites/lib/lang/fr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/fr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fr_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/hr.lng | 2 +- interface/web/sites/lib/lang/hr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/hr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hr_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/hu.lng | 2 +- interface/web/sites/lib/lang/hu_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/hu_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hu_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/id.lng | 2 +- interface/web/sites/lib/lang/id_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/id_web_childdomain.lng | 2 +- .../web/sites/lib/lang/id_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/it.lng | 2 +- interface/web/sites/lib/lang/it_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/it_web_childdomain.lng | 2 +- .../web/sites/lib/lang/it_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ja.lng | 2 +- interface/web/sites/lib/lang/ja_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ja_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ja_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/nl.lng | 2 +- interface/web/sites/lib/lang/nl_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/nl_web_childdomain.lng | 2 +- .../web/sites/lib/lang/nl_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/pl_aps.lng | 16 ++++++++-------- interface/web/sites/lib/lang/pt.lng | 2 +- interface/web/sites/lib/lang/pt_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/pt_web_childdomain.lng | 2 +- .../web/sites/lib/lang/pt_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ro.lng | 2 +- interface/web/sites/lib/lang/ro_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/ro_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ro_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/ru.lng | 2 +- interface/web/sites/lib/lang/ru_aps.lng | 16 ++++++++-------- interface/web/sites/lib/lang/ru_database.lng | 2 +- .../web/sites/lib/lang/ru_database_user.lng | 2 +- .../web/sites/lib/lang/ru_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/se.lng | 2 +- interface/web/sites/lib/lang/se_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/se_web_childdomain.lng | 2 +- .../web/sites/lib/lang/se_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/sk.lng | 2 +- interface/web/sites/lib/lang/sk_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/sk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/sk_web_subdomain.lng | 2 +- interface/web/sites/lib/lang/tr.lng | 2 +- interface/web/sites/lib/lang/tr_aps.lng | 16 ++++++++-------- .../web/sites/lib/lang/tr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/tr_web_subdomain.lng | 2 +- interface/web/vm/lib/lang/dk_openvz_template.lng | 2 +- interface/web/vm/lib/lang/es_openvz_template.lng | 2 +- interface/web/vm/lib/lang/tr_openvz_template.lng | 2 +- 394 files changed, 1113 insertions(+), 651 deletions(-) diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index c8ee365e4b..25dd920831 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index eafc8334d4..ff1e39fe34 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng index 03b9e65a0d..c39cd0db27 100644 --- a/interface/lib/lang/ca.lng +++ b/interface/lib/lang/ca.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Moyen'; $wb['strength_3'] = 'Bon'; $wb['strength_4'] = 'Fort'; $wb['strength_5'] = 'Très fort'; -$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \"{strength}\".'; +$wb['weak_password_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums et une force de \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'Le mot de passe choisi ne rencontre pas les minimas requis : {chars} caractères minimums.'; $wb['security_check1_txt'] = 'Vérifier les permissions de sécurité:'; $wb['security_check2_txt'] = 'Echec'; diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index fdf9053dae..eeb0819292 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'PodprůmÄ›rná'; $wb['strength_3'] = 'Dobrá'; $wb['strength_4'] = 'Silná'; $wb['strength_5'] = 'Velmi silná'; -$wb['weak_password_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé a majÃcà sÃlu \"{strength}\".'; +$wb['weak_password_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé a majÃcà sÃlu \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'Zvolené heslo neodpovÃdá požadavkům zásad pro tvorbu hesel. Heslo musà být alespoň {chars} znaků dlouhé.'; $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index bc217c30b0..61551ceeab 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -152,11 +152,10 @@ $wb['strength_2'] = 'Mittel'; $wb['strength_3'] = 'Gut'; $wb['strength_4'] = 'Stark'; $wb['strength_5'] = 'Sehr stark'; -$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \"{strength}\" besitzen.'; +$wb['weak_password_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein und die Stärke \\"{strength}\\" besitzen.'; $wb['weak_password_length_txt'] = 'Das gewählte Passwort erfüllt die Sicherheitsanforderungen nicht. Es muss mindestens {chars} Zeichen lang sein.'; $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:'; $wb['security_check2_txt'] = 'fehlgeschlagen.'; $wb['select_directive_snippet_txt'] = 'Direktiven Schnipsel'; $wb['select_master_directive_snippet_txt'] = 'Master Direktiven Schnipsel'; -$wb['add_header_txt'] = 'Header (fügt "X-Spam: Yes" hinzu)'; -$wb['rewrite_subject_txt'] = 'Betreff (fügt "***SPAM***" am Anfang hinzu)'; +?> diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng index 2f7aeb2790..798d2ccd45 100644 --- a/interface/lib/lang/dk.lng +++ b/interface/lib/lang/dk.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Nogenlunde'; $wb['strength_3'] = 'God'; $wb['strength_4'] = 'Stærk'; $wb['strength_5'] = 'Meget Stærk'; -$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke pÃ¥ \"{strength}\".'; +$wb['weak_password_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden og have en styrke pÃ¥ \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'Den valgte adgangskode matcher ikke retningslinjerne for sikkerhedsindstillingerne. Det skal være mindst {chars} tegn i længden.'; $wb['security_check1_txt'] = 'Check for sikkerheds tilladelse:'; $wb['security_check2_txt'] = 'mislykkedes.'; diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 53cd56f175..382bf4a758 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index 8b9bc94ef8..3b1bae0b46 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Aceptable'; $wb['strength_3'] = 'Buena'; $wb['strength_4'] = 'Fuerte'; $wb['strength_5'] = 'Muy fuerte'; -$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \"{strength}\".'; +$wb['weak_password_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres y tener una fortaleza \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'La contraseña elegida no coincide con las directrices de seguridad. Debe contener al menos {chars} caracteres.'; $wb['security_check1_txt'] = 'Verificar permisos de seguridad:'; $wb['security_check2_txt'] = 'ha fallado.'; diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index 0439142c52..d4c23ca777 100755 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index c6a1b74d81..310371be47 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Dobro'; $wb['strength_3'] = 'Bolje'; $wb['strength_4'] = 'Jako'; $wb['strength_5'] = 'OdliÄno'; -$wb['weak_password_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova i jaÄine \"{strength}\".'; +$wb['weak_password_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova i jaÄine \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'UneÅ¡ena Å¡ifra nije dobra. Mora biti dugaÄka barem {chars} znakova.'; $wb['security_check1_txt'] = 'Provjerite sigurnosne dozvole:'; $wb['security_check2_txt'] = 'greÅ¡ka.'; diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index 1ef741d6a2..dd4cce79b3 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index 6483418b3e..bd90fd5a1b 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 332cd1ab9f..33d16c3d5f 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -138,7 +138,7 @@ $wb['strength_2'] = 'Mediocre'; $wb['strength_3'] = 'Buono'; $wb['strength_4'] = 'Forte'; $wb['strength_5'] = 'Molto forte'; -$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri ed avere un livello di sicurezza pari a \"{strength}\".'; +$wb['weak_password_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri ed avere un livello di sicurezza pari a \\"{strength}\\".'; $wb['weak_password_length_txt'] = 'La password indicata non segue le impostazioni di sicurezza. Deve essere lunga almeno {chars} caratteri.'; $wb['security_check1_txt'] = 'Verifica permessi di sicurezza:'; $wb['security_check2_txt'] = 'fallito.'; diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index 5f8b20add4..2a56e77399 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index 561e4cdb76..888f9c0200 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index abbb98ee14..b5b62c816d 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 026aff80a8..7845520a5b 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index bfbd725dab..613f2377a1 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index 823ef44c79..e5e8ce6278 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/lang/se.lng b/interface/lib/lang/se.lng index 4f67c28024..b6767144df 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'SÃ¥där'; $wb['strength_3'] = 'Bra'; $wb['strength_4'] = 'Starkt'; $wb['strength_5'] = 'Väldigt starkt'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index b647226e34..6b4ef7676f 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -145,7 +145,7 @@ $wb['strength_2'] = 'Fair'; $wb['strength_3'] = 'Good'; $wb['strength_4'] = 'Strong'; $wb['strength_5'] = 'Very Strong'; -$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_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:'; $wb['security_check2_txt'] = 'failed.'; diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 551fae8d86..115bc890bb 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -146,7 +146,7 @@ $wb['strength_2'] = 'Yeterli'; $wb['strength_3'] = 'Ä°yi'; $wb['strength_4'] = 'Güçlü'; $wb['strength_5'] = 'Çok Güçlü'; -$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve \"{strength}\" güçlüğünde olmalı.'; +$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve \\"{strength}\\" güçlüğünde olmalı.'; $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda olmalı.'; $wb['security_check1_txt'] = 'Güvenlik iznini denetle:'; $wb['security_check2_txt'] = 'baÅŸarısız.'; diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 55d3f8949c..bccdcc42c0 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index b650929064..0a830014d8 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng index 9d9923b631..dcbc4f4727 100644 --- a/interface/web/admin/lib/lang/ar_users.lng +++ b/interface/web/admin/lib/lang/ar_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 6b63770459..39531461c3 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 15d5338704..130cb596aa 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng index e36d2d9d32..e8dc631a59 100644 --- a/interface/web/admin/lib/lang/bg_users.lng +++ b/interface/web/admin/lib/lang/bg_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 088dac70be..25ffb06996 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 3d8ea38e14..8688ca53aa 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/ca_firewall.lng b/interface/web/admin/lib/lang/ca_firewall.lng index 0e08215f7a..06a51c80cf 100644 --- a/interface/web/admin/lib/lang/ca_firewall.lng +++ b/interface/web/admin/lib/lang/ca_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Separated by comma'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 42fb15c246..14f0b91d3b 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -161,7 +161,7 @@ $wb['do_not_try_rescue_httpd_txt'] = 'Disable HTTPD monitoring'; $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; $wb['do_not_try_rescue_mysql_txt'] = 'Disable MySQL monitoring'; $wb['do_not_try_rescue_mail_txt'] = 'Disable Email monitoring'; -$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \"Disable MySQL monitor\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; +$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the \\"Disable MySQL monitor\\" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!'; $wb['enable_sni_txt'] = 'Enable SNI'; $wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update'; $wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index 326b3b2750..cc3c11c6c5 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng index 9d9923b631..dcbc4f4727 100644 --- a/interface/web/admin/lib/lang/ca_users.lng +++ b/interface/web/admin/lib/lang/ca_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng index 68da1c065d..e1908e2d04 100644 --- a/interface/web/admin/lib/lang/cz_remote_action.lng +++ b/interface/web/admin/lib/lang/cz_remote_action.lng @@ -2,9 +2,9 @@ $wb['select_server_txt'] = 'Zvolit server'; $wb['btn_do_txt'] = 'Provést akci'; $wb['do_osupdate_caption'] = 'Aktualizace operaÄnÃho systému na vzdáleném serveru.'; -$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; +$wb['do_osupdate_desc'] = 'Tato akce provede \\"aptitude -y\\" aktualizaci na vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['do_ispcupdate_caption'] = 'Provedenà ISPConfig 3 - aktualizace na vzdáleném serveru'; -$wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vaÅ¡em vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; +$wb['do_ispcupdate_desc'] = 'Tato akce provede \\"ISPConfig 3\\" aktualizaci na vaÅ¡em vybraném serveru.<br><br><strong>POUŽITà TÉTO AKCE NA VLASTNà NEBEZPEČà !</strong>'; $wb['action_scheduled'] = 'Akce je naplánována na provedenÃ'; $wb['select_all_server'] = 'VÅ¡echny servery'; $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 40af41289a..a97d78b8eb 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'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \"Zakázat MySQL monitorovánÃ\" zmÄ›na se provede do 2-3 minut.<br>Pokud nepoÄkáte 2-3 minuty, monitorovánà nastartuje službu MySQL automaticky znovu !'; +$wb['rescue_description_txt'] = '<b>Informace:</b> Pokud chcete napÅ™. vypnout MySQL službu zatrhnÄ›te polÃÄko \\"Zakázat MySQL monitorovánÃ\\" zmÄ›na se provede do 2-3 minut.<br>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'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 50b3514564..960381e7c1 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -299,4 +299,5 @@ $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload Modus'; $wb['content_filter_txt'] = 'Content-Filter'; $wb['rspamd_url_txt'] = 'Rspamd-URL'; $wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; -$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; \ No newline at end of file +$wb['rspamd_password_txt'] = 'Rspamd-Passwort'; +?> diff --git a/interface/web/admin/lib/lang/dk_firewall.lng b/interface/web/admin/lib/lang/dk_firewall.lng index 9a20698384..96608b2830 100644 --- a/interface/web/admin/lib/lang/dk_firewall.lng +++ b/interface/web/admin/lib/lang/dk_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Adskilt af komma'; $wb['udp_port_help_txt'] = 'Adskilt af komma'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.'; -$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \":\" og \",\".'; -$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \":\" og \",\".'; +$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i tcp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; +$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i udp port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index a4e0a12d9f..73e7ef1bfd 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Aktiver overvÃ¥gnings service og genstarte ved fejl'; $wb['do_not_try_rescue_httpd_txt'] = 'Deaktiver HTTPD monitoring'; $wb['do_not_try_rescue_mysql_txt'] = 'Deaktiver MySQL monitoring'; $wb['do_not_try_rescue_mail_txt'] = 'Deaktiver E-mail monitoring'; -$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \"Deaktiver MySQL monitor\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!'; +$wb['rescue_description_txt'] = '<b>Information:</b> Hvis du ønsker nedlukning af mysql skal du vælge \\"Deaktiver MySQL monitor\\" afkrydsningsfeltet og derefter vente 2-3 minutter.<br>Hvis du ikke vente 2-3 minutter, vil redning forsøge at genstarte mysql!'; $wb['enable_sni_txt'] = 'Enable SNI'; $wb['set_folder_permissions_on_update_txt'] = 'Indstil mappe tilladelser ved opdatering'; $wb['add_web_users_to_sshusers_group_txt'] = 'Tilføj web-brugere til -sshusers- gruppe'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 75e55f1eb0..26b0fe7e78 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugy $wb['customer_no_start_txt'] = 'Kunde Nr. start værdi'; $wb['customer_no_counter_txt'] = 'Kunde Nr. tæller'; $wb['session_timeout_txt'] = 'Session timeout (minutter)'; -$wb['session_allow_endless_txt'] = 'Aktiver \"forbliv logget ind\"'; +$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum adgangskode længde'; $wb['min_password_strength_txt'] = 'Minimum adgangskode styrke'; diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng index a70cc1dbf1..2e86ab4ca9 100644 --- a/interface/web/admin/lib/lang/dk_users.lng +++ b/interface/web/admin/lib/lang/dk_users.lng @@ -29,7 +29,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['username_error_collision'] = 'Brugernavn mÃ¥ ikke være web eller web plus et tal.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index ae0efc9e31..84992261bb 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 80ddaca144..640d6f00a9 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng index e5ce7a8792..f0307b95ec 100644 --- a/interface/web/admin/lib/lang/el_users.lng +++ b/interface/web/admin/lib/lang/el_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_firewall.lng b/interface/web/admin/lib/lang/es_firewall.lng index db09b57844..81cad3c0aa 100755 --- a/interface/web/admin/lib/lang/es_firewall.lng +++ b/interface/web/admin/lib/lang/es_firewall.lng @@ -4,8 +4,8 @@ $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este s $wb['server_id_txt'] = 'Servidor'; $wb['tcp_port_help_txt'] = 'Separados por coma'; $wb['tcp_port_txt'] = 'Puertos TCP abiertos'; -$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".'; +$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; $wb['udp_port_help_txt'] = 'Separados por coma'; $wb['udp_port_txt'] = 'Puertos UDP abiertos'; -$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".'; +$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 01c9978ae1..01350367ae 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -228,7 +228,7 @@ $wb['reject_sender_login_mismatch_txt'] = 'Rechazar remitente e inicio de sesió $wb['relayhost_password_txt'] = 'Contraseña del servidor de retransmisión'; $wb['relayhost_txt'] = 'Servidor de retransmisión'; $wb['relayhost_user_txt'] = 'Usuario del servidor de retransmisión'; -$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \"Deshabilitar monitorización de MySQL\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio'; +$wb['rescue_description_txt'] = '<b>Información:</b> Si desea detener el servicio de MySQL debe seleccionar la casilla \\"Deshabilitar monitorización de MySQL\\" y luego esperar 2-3 minutos.<br>Si no espera 2-3 minutos, el rescatador intentará reiniciar el servicio'; $wb['security_level_txt'] = 'Nivel de seguridad'; $wb['server_type_txt'] = 'Tipo de servidor'; $wb['set_folder_permissions_on_update_txt'] = 'Establecer permisos de carpetas al actualizar'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index b927ab043f..043c52cfdd 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -7,7 +7,7 @@ $wb['available_dashlets_note_txt'] = 'Componentes disponibles:'; $wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.'; $wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda'; $wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha'; -$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \"web\" en los nombres de clientes.'; +$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.'; $wb['company_name_txt'] = 'Nombre de la compañÃa para el tÃtulo de la página'; $wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión'; $wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión'; @@ -51,7 +51,7 @@ $wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin'; $wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs'; $wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda'; $wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha'; -$wb['session_allow_endless_txt'] = 'Habilitar \"mantenerme conectado\"'; +$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"'; $wb['session_timeout_txt'] = 'Tiempo lÃmite de sesión (minutos)'; $wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.'; $wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index c1e43b276b..6caf643abe 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index 72e7aaa2e6..c0972c49d8 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng index 4fde01b87c..199601f520 100755 --- a/interface/web/admin/lib/lang/fi_users.lng +++ b/interface/web/admin/lib/lang/fi_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_action.lng b/interface/web/admin/lib/lang/fr_remote_action.lng index 0072271d69..bb3443b40a 100644 --- a/interface/web/admin/lib/lang/fr_remote_action.lng +++ b/interface/web/admin/lib/lang/fr_remote_action.lng @@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Cette action met à jour ISPConfig3 sur le serveur $wb['action_scheduled'] = 'L’action est marquée pour exécution'; $wb['select_all_server'] = 'Tout serveur'; $wb['ispconfig_update_title'] = 'ISPConfig update instructions'; -$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Click here for detailed update instructions</a>'; +$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Click here for detailed update instructions</a>'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 418f633670..25f7375688 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index df90e03011..18f0dbbed4 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 78d9a57a5b..faf08f4201 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index a8b44528c6..a7735647b1 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng index 52f0bdff34..7be3f968f2 100644 --- a/interface/web/admin/lib/lang/hr_users.lng +++ b/interface/web/admin/lib/lang/hr_users.lng @@ -29,7 +29,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['username_error_collision'] = 'KorisniÄko ime ne može biti web ili web sa brojem.\"'; +$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/hr_users_list.lng b/interface/web/admin/lib/lang/hr_users_list.lng index 7725ce2b96..c102e5f7f5 100644 --- a/interface/web/admin/lib/lang/hr_users_list.lng +++ b/interface/web/admin/lib/lang/hr_users_list.lng @@ -4,6 +4,6 @@ $wb['username_txt'] = 'KorisniÄko ime'; $wb['client_id_txt'] = 'Client ID'; $wb['active_txt'] = 'Active'; $wb['add_new_record_txt'] = 'Dodaj klijenta'; -$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \"Klijent\" i \"PreprodavaÄ\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!'; +$wb['warning_txt'] = '<b>UPOZORENJE:</b> Ovdje nemojte mijenjati podatke klijenta. Koristite \\"Klijent\\" i \\"PreprodavaÄ\\" postavke u Klijent modulu. Mijenjanjem postavki klijenata ili grupa može doći do gubitka podataka!'; $wb['groups_txt'] = 'Groups'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index c2adb3efb2..6347afb7da 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index e983379e3f..cee497fe19 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng index 05f3554dfd..e2cf25fb79 100644 --- a/interface/web/admin/lib/lang/hu_users.lng +++ b/interface/web/admin/lib/lang/hu_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 36f3cd8535..9a28dff300 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 41dd67fbac..344185b84d 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng index f5ae7efea5..f9e961192c 100644 --- a/interface/web/admin/lib/lang/id_users.lng +++ b/interface/web/admin/lib/lang/id_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 766b7fb1ae..3dc37a3c1d 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 35e625bd2a..311b7c957c 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng index be1294cdbe..1bde73a67b 100644 --- a/interface/web/admin/lib/lang/it_users.lng +++ b/interface/web/admin/lib/lang/it_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index ccabb127e6..72bef72c4b 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index 494f90dd3e..aa5cc6a7a3 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng index 2e6ad9fb72..64f8339ffa 100644 --- a/interface/web/admin/lib/lang/ja_users.lng +++ b/interface/web/admin/lib/lang/ja_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 187ea86ec1..2884f304ec 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 89e3ff8e47..44a58b7646 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng index 782bfc5f90..1e6d4ef586 100644 --- a/interface/web/admin/lib/lang/nl_users.lng +++ b/interface/web/admin/lib/lang/nl_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index a50e27b33e..29cb94e96c 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index bbbbf95ec7..a809251ec1 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 96c16d3a2c..3703c759ed 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index a72ca0e954..6fc26344c0 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng index b53790e6fa..67cfe4f572 100644 --- a/interface/web/admin/lib/lang/pt_users.lng +++ b/interface/web/admin/lib/lang/pt_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 239a87dc74..3251476126 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 93ccf39477..2a39a454e8 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng index 9d9923b631..dcbc4f4727 100644 --- a/interface/web/admin/lib/lang/ro_users.lng +++ b/interface/web/admin/lib/lang/ro_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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 c30f26f2e8..70beb30437 100644 --- a/interface/web/admin/lib/lang/ru_firewall.lng +++ b/interface/web/admin/lib/lang/ru_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'ПеречиÑлить порты TCP через з $wb['udp_port_help_txt'] = 'ПеречиÑлить порты UDP через запÑтую'; $wb['active_txt'] = 'Ðктивно'; $wb['firewall_error_unique'] = 'Уже еÑÑ‚ÑŒ Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ брандмауÑра Ð´Ð»Ñ Ñтого Ñервера.'; -$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \":\" и \",\"'; -$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \":\" и \",\"'; +$wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \\":\\" и \\",\\"'; +$wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index ca66b325bc..b2f0b407d6 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'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \"Отключить мониторинг MySQL\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; +$wb['rescue_description_txt'] = '<b>ИнформациÑ:</b> ЕÑли вы хотите выключить MySQL, вы должны уÑтановить флажок \\"Отключить мониторинг MySQL\\" и подождать 2-3 минуты.<br>ЕÑли вы не подождёте 2-3 минуты, мониторинг будет пытатьÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить MySQL!'; $wb['enable_sni_txt'] = 'Включить SNI'; $wb['do_not_try_rescue_httpd_txt'] = 'Отключить мониторинг HTTPD'; $wb['set_folder_permissions_on_update_txt'] = 'УÑтановить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°Ð¿ÐºÐ¸ на обновлениÑ'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index 52324f3c77..baed497b0e 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -14,7 +14,7 @@ $wb['mailboxlist_webmail_link_txt'] = 'СÑылка на веб-почту в Ñ $wb['webmail_url_txt'] = 'URL веб-почты'; $wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; $wb['use_domain_module_txt'] = 'ИÑпользовать модуль домена, чтобы добавить новые домены'; -$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \"домен\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; +$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \\"домен\\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; $wb['new_domain_txt'] = 'HTML текÑÑ‚, чтобы Ñоздать новый домен'; $wb['webdavuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV'; $wb['webdavuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV.'; @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Кли $wb['customer_no_start_txt'] = 'Ðачальное значение номера Клиента'; $wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; $wb['session_timeout_txt'] = 'Тайм-аут ÑеÑÑии (в минутах)'; -$wb['session_allow_endless_txt'] = 'Включить \"оÑтаватьÑÑ Ð² ÑиÑтеме\"'; +$wb['session_allow_endless_txt'] = 'Включить \\"оÑтаватьÑÑ Ð² ÑиÑтеме\\"'; $wb['No'] = 'Ðет'; $wb['min_password_length_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° паролÑ'; $wb['min_password_strength_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑтойкоÑÑ‚ÑŒ паролÑ'; diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng index bd1b8034ff..63f081f917 100644 --- a/interface/web/admin/lib/lang/ru_users.lng +++ b/interface/web/admin/lib/lang/ru_users.lng @@ -29,7 +29,7 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не Ñовпадают.'; $wb['password_match_txt'] = 'Ðти пароли Ñовпадают.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['client_not_admin_err'] = 'Пользователь, который принадлежит к клиенту не может быть уÑтановлен тип: admin'; $wb['lost_password_function_txt'] = 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð¾Ñтупна'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index c949c052ba..1103baa4d2 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 0c5643bf4f..74ae16734f 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehÃ¥ller otil $wb['customer_no_start_txt'] = 'Kundnummer startvärde'; $wb['customer_no_counter_txt'] = 'Kundnummer räknare'; $wb['session_timeout_txt'] = 'Session timeout (minuter)'; -$wb['session_allow_endless_txt'] = 'Aktivera \"hÃ¥ll mig inloggad\"'; +$wb['session_allow_endless_txt'] = 'Aktivera \\"hÃ¥ll mig inloggad\\"'; $wb['No'] = 'Nej'; $wb['min_password_length_txt'] = 'Minsta lösenordslängd'; $wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 709f7b928a..125e0b1ea2 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 390458886c..90418e87d5 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -67,7 +67,7 @@ $wb['customer_no_template_error_regex_txt'] = 'The customer No. template contain $wb['customer_no_start_txt'] = 'Customer No. start value'; $wb['customer_no_counter_txt'] = 'Customer No. counter'; $wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \"stay logged in\"'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng index 60a0aa99ec..d71952fa3e 100644 --- a/interface/web/admin/lib/lang/sk_users.lng +++ b/interface/web/admin/lib/lang/sk_users.lng @@ -29,7 +29,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['username_error_collision'] = 'The username may not be web or web plus a number.\"'; +$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_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng index 8db312ff05..a45998d4e1 100644 --- a/interface/web/admin/lib/lang/tr_firewall.lng +++ b/interface/web/admin/lib/lang/tr_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; ?> diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng index 2f124714e1..c067f67e88 100644 --- a/interface/web/admin/lib/lang/tr_remote_action.lng +++ b/interface/web/admin/lib/lang/tr_remote_action.lng @@ -2,11 +2,11 @@ $wb['select_server_txt'] = 'Sunucu Seçin'; $wb['btn_do_txt'] = 'Ä°ÅŸlemi BaÅŸlatın'; $wb['do_osupdate_caption'] = 'Uzak sunucudaki iÅŸletim sistemini güncelleyin'; -$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda \"aptitude -y upgrade\" komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; +$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda \\"aptitude -y upgrade\\" komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; $wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin'; $wb['do_ispcupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda ISPConfig3 güncellemesini yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÃœZE AÄ°TTÄ°R!</strong>'; $wb['action_scheduled'] = 'Ä°ÅŸlem yürütülmek üzere zamanlandı'; $wb['select_all_server'] = 'Tüm Sunucularda'; $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri'; -$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\" target=\"_blank\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; +$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 4abfd909bf..efe24bf3a4 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -152,7 +152,7 @@ $wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden ba $wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin'; $wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin'; $wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin'; -$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \"MySQL izlenmesin\" seçeneÄŸini iÅŸaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; +$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneÄŸini iÅŸaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; $wb['enable_sni_txt'] = 'SNI Kullanılsın'; $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın'; $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin'; @@ -296,4 +296,8 @@ $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; $wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; +$wb['content_filter_txt'] = 'Content Filter'; +$wb['rspamd_url_txt'] = 'Rspamd URL'; +$wb['rspamd_user_txt'] = 'Rspamd User'; +$wb['rspamd_password_txt'] = 'Rspamd Password'; ?> diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index b4b213697f..c52893f6b4 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -64,7 +64,7 @@ $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersi $wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; $wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)'; -$wb['session_allow_endless_txt'] = '\"Oturum açık kalsın\" kullanılabilsin'; +$wb['session_allow_endless_txt'] = '\\"Oturum açık kalsın\\" kullanılabilsin'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu'; $wb['min_password_strength_txt'] = 'En Az Parola Güçlüğü'; diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index b639bf9a1d..0029214773 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -29,7 +29,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['username_error_collision'] = 'Kullanıcı adı -web- ya da -web- sözcüğünü izleyen bir sayı ile baÅŸlayamaz.\"'; +$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/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index 4d2bcccef0..71bc0fc1f7 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng index 553abe0aee..68e8a950f3 100644 --- a/interface/web/client/lib/lang/ar_reseller.lng +++ b/interface/web/client/lib/lang/ar_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index 163f677043..36da0a0422 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng index 7daa4cff22..211b6daf93 100644 --- a/interface/web/client/lib/lang/bg_reseller.lng +++ b/interface/web/client/lib/lang/bg_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index ad9282aa4c..992c1ea2ca 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_template.lng b/interface/web/client/lib/lang/br_client_template.lng index bc7124b16c..4b2ce6555b 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_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index 524f875f73..d90d3b15a2 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Data do cadastro'; $wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domÃnio deve ser um número.'; $wb['limit_domainmodule_txt'] = 'Limites de módulos de domÃnio'; $wb['client_limits_txt'] = 'Limite de clientes'; -$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \"personalizado\" for selecionado.'; +$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \\"personalizado\\" for selecionado.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['email_error_empty'] = 'e-mail está em branco.'; diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng index 7f460522ff..bfa38a3401 100644 --- a/interface/web/client/lib/lang/ca_client.lng +++ b/interface/web/client/lib/lang/ca_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse courriel valide.'; $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).'; $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.'; $wb['paypal_email_txt'] = 'Compte Paypal'; -$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.'; +$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.'; $wb['aps_limits_txt'] = 'Nombre max d\'Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d\'instances APS'; $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre'; diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng index 7125b01a74..f83d3aaff7 100644 --- a/interface/web/client/lib/lang/ca_reseller.lng +++ b/interface/web/client/lib/lang/ca_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Ajouté le'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index edd366830a..3351ac58e1 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Zadejte prosÃm platnou e-mailovou adresu.'; $wb['customer_no_error_unique'] = 'Zákaznické ÄÃslo musà být jedineÄné (nebo prázdné).'; $wb['paypal_email_error_isemail'] = 'Zadejte prosÃm platnou PayPal e-mail addresu.'; $wb['paypal_email_txt'] = 'PayPal e-mail'; -$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \"hlavnà šablona\" nastavena na volbu \"Custom\".'; +$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \\"hlavnà šablona\\" nastavena na volbu \\"Custom\\".'; $wb['aps_limits_txt'] = 'APS limity instalátoru'; $wb['limit_aps_txt'] = 'Max. poÄet APS instalacÃ'; $wb['limit_aps_error_notint'] = 'Limit pro APS instalace musà být ÄÃslo.'; diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index 011b985311..adfea62ac5 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Datum vytvoÅ™enà úÄtu'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Klientské limity'; -$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \"hlavnà šablona\" nastavena na volbu \"Custom\".'; +$wb['err_msg_master_tpl_set'] = 'Nelze nastavit vlastnà limity, pokud chtete nastavit vlatnà limity musà být \\"hlavnà šablona\\" nastavena na volbu \\"Custom\\".'; $wb['contact_firstname_txt'] = 'Kontakt kÅ™estnà jméno'; $wb['limit_backup_txt'] = 'Funkce zálohovánà (volitelné)'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng index 48460658c0..e37ca395af 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['invalid_vat_id'] = 'Die USt.-ID ist ungültig.'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng index f0a8d1a7cd..b944e03175 100644 --- a/interface/web/client/lib/lang/dk_client.lng +++ b/interface/web/client/lib/lang/dk_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Indtast en gyldig e-mail adresse.'; $wb['customer_no_error_unique'] = 'Kunde nr. skal være unikke (eller tomt).'; $wb['paypal_email_error_isemail'] = 'Indtast en gyldig PayPal e-mail adresse.'; $wb['paypal_email_txt'] = 'PayPal E-mail'; -$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.'; +$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.'; $wb['aps_limits_txt'] = 'APS Installer Begrænsninger'; $wb['limit_aps_txt'] = 'Max. antal af APS forekomster'; $wb['limit_aps_error_notint'] = 'APS forekomster grænse skal være et tal.'; diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng index 93cd7c4032..b06301ccdd 100644 --- a/interface/web/client/lib/lang/dk_reseller.lng +++ b/interface/web/client/lib/lang/dk_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Tilføjet d.'; $wb['limit_domainmodule_error_notint'] = 'Domænemodul grænse skal være et tal.'; $wb['limit_domainmodule_txt'] = 'Domænemodul Begrænsning'; $wb['client_limits_txt'] = 'Kunde Begrænsninger'; -$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \"custom\" er valgt.'; +$wb['err_msg_master_tpl_set'] = 'Alle brugerdefinerede grænse indstillinger ignoreres, hvis nogen anden master skabelonen end \\"custom\\" er valgt.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_database_user_txt'] = 'Max. Database users'; diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index 8c2d7d738e..b85f653d4e 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index 13a38caf9d..b409c169e6 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index 1935b168af..75125024fb 100755 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -42,7 +42,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacÃo'; $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.'; $wb['email_limits_txt'] = 'LÃmites de correo'; $wb['email_txt'] = 'Correo'; -$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".'; +$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".'; $wb['fax_txt'] = 'Fax'; $wb['firstname_error_empty'] = 'El nombre está vacÃo.'; $wb['firstname_txt'] = 'Nombre'; @@ -90,7 +90,7 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El lÃmite de alias de dominio de c $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \"recoge-todo\" debe ser un número.'; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \\"recoge-todo\\" debe ser un número.'; $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos'; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng index 6a51459600..4fd6f650f3 100755 --- a/interface/web/client/lib/lang/es_client_template.lng +++ b/interface/web/client/lib/lang/es_client_template.lng @@ -46,8 +46,8 @@ $wb['limit_mailaliasdomain_error_notint'] = 'El lÃmite de alias de dominio de c $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de receptores de correo \"recoge-todo\" debe ser un número.'; -$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo \"recoge-todo\" '; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de receptores de correo \\"recoge-todo\\" debe ser un número.'; +$wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correo \\"recoge-todo\\" '; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; $wb['limit_mailfetchmail_error_notint'] = 'El lÃmite de recuperadores de correo debe ser un número.'; diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng index a1de1fb7b9..5a94b9e803 100755 --- a/interface/web/client/lib/lang/es_reseller.lng +++ b/interface/web/client/lib/lang/es_reseller.lng @@ -46,7 +46,7 @@ $wb['email_error_empty'] = 'El correo electrónico está vacÃo'; $wb['email_error_isemail'] = 'Por favor ingrese una dirección de correo válida.'; $wb['email_limits_txt'] = 'LÃmites de correo'; $wb['email_txt'] = 'Correo'; -$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \"personalizada\".'; +$wb['err_msg_master_tpl_set'] = 'Todas las opciones personalizadas de lÃmites serán ignoradas si se utiliza otra plantilla maestra diferente a \\"personalizada\\".'; $wb['fax_txt'] = 'Fax'; $wb['firstname_error_empty'] = 'El nombre está vacÃo.'; $wb['firstname_txt'] = 'Nombre'; @@ -97,7 +97,7 @@ $wb['limit_mailalias_txt'] = 'Cantidad máx. de alias de correo'; $wb['limit_mailaliasdomain_txt'] = 'Cantidad máx. de alias de dominio'; $wb['limit_mailbox_error_notint'] = 'El lÃmite de buzones debe ser un número.'; $wb['limit_mailbox_txt'] = 'Cantidad máx. de buzones'; -$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \"recoge-todo\" debe ser un número.'; +$wb['limit_mailcatchall_error_notint'] = 'El lÃmite de correos \\"recoge-todo\\" debe ser un número.'; $wb['limit_mailcatchall_txt'] = 'Cantidad máx. de receptores de correos huérfanos'; $wb['limit_maildomain_error_notint'] = 'El lÃmite de dominio de correo debe ser un número.'; $wb['limit_maildomain_txt'] = 'Cantidad máx. de dominios para correo'; diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index a90a3d7c2d..6df30e7753 100755 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng index 6aecc836e3..58af2fdf0d 100644 --- a/interface/web/client/lib/lang/fi_reseller.lng +++ b/interface/web/client/lib/lang/fi_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index f13f0d4676..61612ccbe0 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Saisissez une adresse e-mail valide.'; $wb['customer_no_error_unique'] = 'Le numéro client doit être unique (ou vide).'; $wb['paypal_email_error_isemail'] = 'Saisissez un compte Paypal valide.'; $wb['paypal_email_txt'] = 'Compte Paypal'; -$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \"custom\" est sélectionné.'; +$wb['err_msg_master_tpl_set'] = 'Les paramètres de limites personnalisés seront ignorés si un modèle maître autre que \\"custom\\" est sélectionné.'; $wb['aps_limits_txt'] = 'Nombre max d’Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d’instances APS'; $wb['limit_aps_error_notint'] = 'La limite d’instances APS doit être un nombre'; diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index 591e12ac35..f30fcd48c6 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index 351ad4b8b4..ec5b73d940 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Unesi ispravnu email adresu.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index 37e1e38356..9188b6861b 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Datum dodavanja'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domain module Limit'; $wb['client_limits_txt'] = 'Limiti klijenata'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index 8b9cc16081..10993601c0 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng index 2b0c15e8f0..dd9290885a 100644 --- a/interface/web/client/lib/lang/hu_reseller.lng +++ b/interface/web/client/lib/lang/hu_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index d25230ea3d..c84e6251f4 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng index af91d1bb4e..821a35e3cd 100644 --- a/interface/web/client/lib/lang/id_reseller.lng +++ b/interface/web/client/lib/lang/id_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index a361d0a887..0f75d849d6 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng index 8fc49568af..2cef293265 100644 --- a/interface/web/client/lib/lang/it_reseller.lng +++ b/interface/web/client/lib/lang/it_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['limit_backup_txt'] = 'Backupfunction available'; $wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index 2526c02791..33aa6ab4e9 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng index 66200eccbe..7edf836f39 100644 --- a/interface/web/client/lib/lang/ja_reseller.lng +++ b/interface/web/client/lib/lang/ja_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index 8e0092f255..188a37f4fd 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -142,7 +142,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index 9cdb1856fe..9953880bec 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -160,7 +160,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng index 69b30fe2a3..9b2cf58f75 100644 --- a/interface/web/client/lib/lang/pl_reseller.lng +++ b/interface/web/client/lib/lang/pl_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index b05e14dfe7..ae3e45b24d 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng index ae3eddd8b0..e021cd2511 100644 --- a/interface/web/client/lib/lang/pt_reseller.lng +++ b/interface/web/client/lib/lang/pt_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index bc0ad4316e..034c4d0e44 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng index 553abe0aee..68e8a950f3 100644 --- a/interface/web/client/lib/lang/ro_reseller.lng +++ b/interface/web/client/lib/lang/ro_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index a37d4673a1..befd6b15bf 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Ðекорректный почтовый адре $wb['customer_no_error_unique'] = 'Счётчик номера Клиента должен быть уникален (или отÑутÑтвует).'; $wb['paypal_email_error_isemail'] = 'ПожалуйÑта, введите дейÑтвующий Ð°Ð´Ñ€ÐµÑ Ñлектронной почты PayPal.'; $wb['paypal_email_txt'] = 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты PayPal'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; $wb['aps_limits_txt'] = 'Лимиты УÑтановщика APS'; $wb['limit_aps_txt'] = 'МакÑ. количеÑтво ÑкземплÑров APS'; $wb['limit_aps_error_notint'] = 'Лимит ÑкземплÑров APS должен быть чиÑлом.'; diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 4a177cccc8..998a886990 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -108,7 +108,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Принудительный шабл $wb['limit_openvz_vm_error_notint'] = 'Лимит виртуальных Ñерверов должен быть чиÑлом.'; $wb['web_php_options_notempty'] = 'Ðет выбранных параметров PHP. Выберите по крайней мере один параметр PHP.'; $wb['ssh_chroot_notempty'] = 'Ðе выбран параметр SSH-Chroot. Выберите по крайней мере один параметр SSH-Chroot.'; -$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \"web\" или \"web\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; +$wb['username_error_collision'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ может начинатьÑÑ Ñо Ñлова \\"web\\" или \\"web\\" Ð¿Ð»ÑŽÑ Ñ‡Ð¸Ñло.'; $wb['add_additional_template_txt'] = 'Добавить дополнительный шаблон'; $wb['delete_additional_template_txt'] = 'Удалить дополнительный шаблон'; $wb['limit_cgi_txt'] = 'CGI доÑтупен'; @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Дата добавлениÑ'; $wb['limit_domainmodule_error_notint'] = 'Лимит модулей домена должен быть чиÑлом.'; $wb['limit_domainmodule_txt'] = 'Лимит модулей домена'; $wb['client_limits_txt'] = 'Лимиты Клиента'; -$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \"Custom\"!'; +$wb['err_msg_master_tpl_set'] = 'ЗначениÑ, уÑтановленные здеÑÑŒ игнорируютÑÑ, еÑли не выбран в качеÑтве главного шаблона \\"Custom\\"!'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; $wb['email_error_empty'] = 'ÐÐ´Ñ€ÐµÑ Ñл. почты пуÑтой'; diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index 5232e95f55..2884302c18 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Vänligen ange en giltig epostadress'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal epostadress'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index 553abe0aee..68e8a950f3 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index 6fff6bf3f0..3edec417cf 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -141,7 +141,7 @@ $wb['email_error_isemail'] = 'Please enter a valid email address.'; $wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).'; $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.'; $wb['paypal_email_txt'] = 'PayPal Email'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng index 34643c55b8..4ae3ef5b97 100644 --- a/interface/web/client/lib/lang/sk_reseller.lng +++ b/interface/web/client/lib/lang/sk_reseller.lng @@ -159,7 +159,7 @@ $wb['added_date_txt'] = 'Added date'; $wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; $wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; $wb['client_limits_txt'] = 'Client Limits'; -$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \"custom\" is selected.'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['email_error_empty'] = 'Email is empty'; diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index 359095534a..765d9f1980 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -139,7 +139,7 @@ $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; $wb['customer_no_error_unique'] = 'Müşteri numarası eÅŸsiz (ya da boÅŸ) olmalıdır.'; $wb['paypal_email_error_isemail'] = 'Lütfen geçerli bir PayPal e-posta adresi yazın.'; $wb['paypal_email_txt'] = 'PayPal E-posta Adresi'; -$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; +$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları'; $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı'; $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.'; diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index 5e2a37e268..4906a894c0 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -156,7 +156,7 @@ $wb['added_date_txt'] = 'EklendiÄŸi Tarih'; $wb['limit_domainmodule_error_notint'] = 'Alan adı modülü sınırı bir sayı olmalıdır.'; $wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı'; $wb['client_limits_txt'] = 'Müşteri Sınırları'; -$wb['err_msg_master_tpl_set'] = '\"Özel\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; +$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; $wb['contact_firstname_txt'] = 'Contact firstname'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_database_user_txt'] = 'Max. Database users'; diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng index 0f819f2a9d..da6cd6b513 100755 --- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng @@ -11,7 +11,7 @@ $wb['limit_ftp_user_txt'] = 'Cantidad de usuarios FTP'; $wb['limit_mailalias_txt'] = 'Cantidad de alias de correos'; $wb['limit_mailaliasdomain_txt'] = 'Cantidad de alias de dominios'; $wb['limit_mailbox_txt'] = 'Cantidad de buzones'; -$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \"recoge-todo\"'; +$wb['limit_mailcatchall_txt'] = 'Cantidad de cuentas de correo \\"recoge-todo\\"'; $wb['limit_maildomain_txt'] = 'Cantidad de dominios para correo'; $wb['limit_mailfilter_txt'] = 'Cantidad de filtros de correo'; $wb['limit_mailforward_txt'] = 'Cantidad de reenviadores de correos'; diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng index 5b7201075f..8bb35318f8 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_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng index c78c6fd190..5e1bf2256e 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/ru_dns_hinfo.lng b/interface/web/dns/lib/lang/ru_dns_hinfo.lng index 830576fdf6..363ed0eef5 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'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 83097915bf..19ae309a1f 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/login/lib/lang/ar_login_as.lng b/interface/web/login/lib/lang/ar_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/ar_login_as.lng +++ b/interface/web/login/lib/lang/ar_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/bg_login_as.lng b/interface/web/login/lib/lang/bg_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/bg_login_as.lng +++ b/interface/web/login/lib/lang/bg_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 4c02c963c2..5d9fb269b9 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 @@ <?php $wb['login_1_txt'] = 'Você deseja acessar como usuário'; -$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \"voltar\" selecionando sair.'; +$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.'; $wb['btn_yes_txt'] = 'Sim, acessar como cliente'; $wb['btn_back_txt'] = 'Não, voltar a lista'; $wb['udp_port_help_txt'] = 'Separado por vÃrgula'; diff --git a/interface/web/login/lib/lang/ca_login_as.lng b/interface/web/login/lib/lang/ca_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/ca_login_as.lng +++ b/interface/web/login/lib/lang/ca_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/dk_login_as.lng b/interface/web/login/lib/lang/dk_login_as.lng index a75ea7262a..bebcf165a7 100644 --- a/interface/web/login/lib/lang/dk_login_as.lng +++ b/interface/web/login/lib/lang/dk_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Vil du logge ind som bruger'; -$wb['login_2_txt'] = 'Hvis du gør det, kan du \"GÃ¥ tilbage\" ved at klikke pÃ¥ logout.'; +$wb['login_2_txt'] = 'Hvis du gør det, kan du \\"GÃ¥ tilbage\\" ved at klikke pÃ¥ logout.'; $wb['btn_yes_txt'] = 'Ja, log ind som Kunde'; $wb['btn_back_txt'] = 'Nej, tilbage til listen'; $wb['udp_port_help_txt'] = 'Adskilt af komma'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne server.'; -$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \":\" og \",\".'; -$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \":\" og \",\".'; +$wb['tcp_ports_error_regex'] = 'Tegn ikke tilladt i TCP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; +$wb['udp_ports_error_regex'] = 'Tegn ikke tilladt i UDP port definition. Tilladt tegn er tal, \\":\\" og \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/el_login_as.lng b/interface/web/login/lib/lang/el_login_as.lng index a6c2988017..435d3e9a69 100644 --- a/interface/web/login/lib/lang/el_login_as.lng +++ b/interface/web/login/lib/lang/el_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'ΘÎλετε να εισÎλθετε ως χÏήστης;'; -$wb['login_2_txt'] = 'Αν το κάνετε, μποÏείτε να \"επιστÏÎψετε\" κάνοντας αποσÏνδεση.'; +$wb['login_2_txt'] = 'Αν το κάνετε, μποÏείτε να \\"επιστÏÎψετε\\" κάνοντας αποσÏνδεση.'; $wb['btn_yes_txt'] = 'Îαι, είσοδος ως Πελάτης'; $wb['btn_back_txt'] = 'Όχι, επιστÏοφή στην λίστα'; $wb['udp_port_help_txt'] = 'διαχωÏισμός με κόμα'; $wb['active_txt'] = 'Εν ΕνεÏγεία'; $wb['firewall_error_unique'] = 'ΥπάÏχει ήδη μια εγγÏαφή Firewall για αυτόν τον server.'; -$wb['tcp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας tcp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \":\" και οι \",\".'; -$wb['udp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας udp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \":\" και οι \",\".'; +$wb['tcp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας tcp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \\":\\" και οι \\",\\".'; +$wb['udp_ports_error_regex'] = 'Μη ÎγκυÏος χαÏακτήÏας για τον οÏισμός θÏÏας udp. ΕπιτÏεπόμενοι χαÏακτήÏες είναι οι αÏιθμοί, η \\":\\" και οι \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng index 10a8554bcb..b7f3e21f98 100755 --- a/interface/web/login/lib/lang/es_login_as.lng +++ b/interface/web/login/lib/lang/es_login_as.lng @@ -4,9 +4,9 @@ $wb['btn_back_txt'] = 'No, volver a la lista'; $wb['btn_yes_txt'] = 'SÃ, iniciar sesión como cliente'; $wb['firewall_error_unique'] = 'Ya existe un registro de cortafuegos para este servidor.'; $wb['login_1_txt'] = 'Desea iniciar sesión como usuario'; -$wb['login_2_txt'] = 'Si lo hace, puede \"volver\" haciendo clic en salir.'; -$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \":\" y \",\".'; +$wb['login_2_txt'] = 'Si lo hace, puede \\"volver\\" haciendo clic en salir.'; +$wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos tcp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; $wb['udp_port_help_txt'] = 'Separado por comas'; -$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \":\" y \",\".'; +$wb['udp_ports_error_regex'] = 'Caracteres no permitidos en la definición de puertos udp. Los caracteres permitidos son: números, \\":\\" y \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/fi_login_as.lng b/interface/web/login/lib/lang/fi_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/fi_login_as.lng +++ b/interface/web/login/lib/lang/fi_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/hr_login_as.lng b/interface/web/login/lib/lang/hr_login_as.lng index a94f659705..bcd13040d3 100644 --- a/interface/web/login/lib/lang/hr_login_as.lng +++ b/interface/web/login/lib/lang/hr_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Odvojeno zarezom'; $wb['active_txt'] = 'Aktivno'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/hu_login_as.lng b/interface/web/login/lib/lang/hu_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/hu_login_as.lng +++ b/interface/web/login/lib/lang/hu_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/id_login_as.lng b/interface/web/login/lib/lang/id_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/id_login_as.lng +++ b/interface/web/login/lib/lang/id_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/it_login_as.lng b/interface/web/login/lib/lang/it_login_as.lng index fab2f1b088..3fa23da274 100644 --- a/interface/web/login/lib/lang/it_login_as.lng +++ b/interface/web/login/lib/lang/it_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Desideri accedere come utente'; -$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \"go back\" eseguendo il logout.'; +$wb['login_2_txt'] = 'Se vuoi procedere puoi tornare indietro \\"go back\\" eseguendo il logout.'; $wb['btn_yes_txt'] = 'Si, login accedi come cliente'; $wb['btn_back_txt'] = 'No, torna alla lista'; $wb['udp_port_help_txt'] = 'Separato da virgola'; $wb['active_txt'] = 'Attivo'; $wb['firewall_error_unique'] = 'Esiste già un record firewall per questo server.'; -$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \":\" e \",\".'; -$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \":\" e \",\".'; +$wb['tcp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta tcp. Sono consentiti caratteri numerici, \\":\\" e \\",\\".'; +$wb['udp_ports_error_regex'] = 'Caratteri non autorizzati nella definizine di porta udp. ono consentiti caratteri numerici, \\":\\" e \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ja_login_as.lng b/interface/web/login/lib/lang/ja_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/ja_login_as.lng +++ b/interface/web/login/lib/lang/ja_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/nl_login_as.lng b/interface/web/login/lib/lang/nl_login_as.lng index 3061782706..d4d2715e7a 100644 --- a/interface/web/login/lib/lang/nl_login_as.lng +++ b/interface/web/login/lib/lang/nl_login_as.lng @@ -6,7 +6,7 @@ $wb['btn_back_txt'] = 'Nee, terug naar het overzicht'; $wb['udp_port_help_txt'] = 'Gescheiden door komma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/pt_login_as.lng b/interface/web/login/lib/lang/pt_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/pt_login_as.lng +++ b/interface/web/login/lib/lang/pt_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ro_login_as.lng b/interface/web/login/lib/lang/ro_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/ro_login_as.lng +++ b/interface/web/login/lib/lang/ro_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 46a3eab288..63031d4d09 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 @@ <?php $wb['login_1_txt'] = 'Ð’Ñ‹ хотите войти как пользователь'; -$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \"вернутьÑÑ\", нажав на \"выход\".'; +$wb['login_2_txt'] = 'ЕÑли вы Ñто Ñделаете, вы можете \\"вернутьÑÑ\\", нажав на \\"выход\\".'; $wb['btn_yes_txt'] = 'Да, войти как Клиент'; $wb['btn_back_txt'] = 'Ðет, назад к ÑпиÑку'; $wb['udp_port_help_txt'] = 'ПеречиÑлить через запÑтую'; $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 порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; $wb['login_as_or_logout_txt'] = 'Ð’Ñ‹ хотите заново войти как {UTYPE} или выйти?'; ?> diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng index 203832c7b7..17a82080dc 100644 --- a/interface/web/login/lib/lang/se_login_as.lng +++ b/interface/web/login/lib/lang/se_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Vill du loggga in som användare'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Ja, logga in som kund'; $wb['btn_back_txt'] = 'Nej, tillbaka till listan'; $wb['udp_port_help_txt'] = 'Avdelade med kommatecken'; $wb['active_txt'] = 'Aktiv'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/sk_login_as.lng b/interface/web/login/lib/lang/sk_login_as.lng index 68cb3318e5..cf75b54b47 100644 --- a/interface/web/login/lib/lang/sk_login_as.lng +++ b/interface/web/login/lib/lang/sk_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Do you want to login as user'; -$wb['login_2_txt'] = 'If you do so, you can \"go back\" by clicking at logout.'; +$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.'; $wb['btn_yes_txt'] = 'Yes, login as Client'; $wb['btn_back_txt'] = 'No, back to list'; $wb['udp_port_help_txt'] = 'Separated by comma'; $wb['active_txt'] = 'Active'; $wb['firewall_error_unique'] = 'There is already a firewall record for this server.'; -$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \":\" and \",\".'; -$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \":\" and \",\".'; +$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; +$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng index a000d44342..f7f12feeff 100644 --- a/interface/web/login/lib/lang/tr_login_as.lng +++ b/interface/web/login/lib/lang/tr_login_as.lng @@ -1,12 +1,12 @@ <?php $wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz'; -$wb['login_2_txt'] = '\"Geri dönmek\" için oturumu kapat üzerine tıklayın.'; +$wb['login_2_txt'] = '\\"Geri dönmek\\" için oturumu kapat üzerine tıklayın.'; $wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç'; $wb['btn_back_txt'] = 'Hayır, listeye geri dön'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \":\" ve \",\" karakterleri kullanılabilir.'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; ?> diff --git a/interface/web/mail/lib/lang/ar.lng b/interface/web/mail/lib/lang/ar.lng index e12b05e278..3d15a518a1 100644 --- a/interface/web/mail/lib/lang/ar.lng +++ b/interface/web/mail/lib/lang/ar.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng index af8e42f24b..d1b54151d2 100644 --- a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contains invalid char $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts for your account is reached.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ar_mail_get.lng b/interface/web/mail/lib/lang/ar_mail_get.lng index 5d6a72fbfb..8ae7712151 100644 --- a/interface/web/mail/lib/lang/ar_mail_get.lng +++ b/interface/web/mail/lib/lang/ar_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng index e876330a68..683b378c21 100644 --- a/interface/web/mail/lib/lang/ar_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ar_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/bg.lng b/interface/web/mail/lib/lang/bg.lng index a1299f4472..c117c863a2 100644 --- a/interface/web/mail/lib/lang/bg.lng +++ b/interface/web/mail/lib/lang/bg.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобални филтри'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng index 5db26b11a1..06f1f01e11 100644 --- a/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/bg_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Грешен домейн или непозволе $wb['limit_mailcatchall_txt'] = 'МакÑималниÑÑ‚ брой запиÑи за catchall в твоÑÑ‚ акоунт е доÑтигнат.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_get.lng b/interface/web/mail/lib/lang/bg_mail_get.lng index 305256d5c6..e1b1935d32 100644 --- a/interface/web/mail/lib/lang/bg_mail_get.lng +++ b/interface/web/mail/lib/lang/bg_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng index e876330a68..683b378c21 100644 --- a/interface/web/mail/lib/lang/bg_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/bg_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng index 3ae45b5db0..972e134bc8 100644 --- a/interface/web/mail/lib/lang/br.lng +++ b/interface/web/mail/lib/lang/br.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Apelidos de domÃnio'; $wb['Relay Recipients'] = 'Destinatários de retransmissão'; $wb['Mailbox quota'] = 'Cota para contas de e-mails'; $wb['Server'] = 'Servidor'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng index df5fd39b9a..3c4c6a2628 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'O domÃnio contém caracteres inválidos'; $wb['limit_mailcatchall_txt'] = 'O limite de contas cata tudo para este domÃnio foi alcançado.'; $wb['source_txt'] = 'Origem'; $wb['destination_error_isemail'] = 'Destino não é um e-mail válido.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index a786566277..f91d40f625 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/br_spamfilter_policy.lng b/interface/web/mail/lib/lang/br_spamfilter_policy.lng index 998f36d8fa..b5bb69db43 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Administrador para cabeçalhos inválidos'; $wb['spam_admin_txt'] = 'Administrador para spam'; $wb['message_size_limit_txt'] = 'Tamanho máximo da mensagem'; $wb['banned_rulenames_txt'] = 'Regras de banimento'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ca.lng b/interface/web/mail/lib/lang/ca.lng index 1665346a82..0531f19bd0 100644 --- a/interface/web/mail/lib/lang/ca.lng +++ b/interface/web/mail/lib/lang/ca.lng @@ -45,4 +45,6 @@ $wb['Mailbox traffic'] = 'Trafic de la boite courriels'; $wb['Domain Alias'] = 'Alias de domaine'; $wb['Relay Recipients'] = 'Destinataires de relais'; $wb['Mailbox quota'] = 'Quota courriel'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng index 7e82c34ca2..feafd436f6 100644 --- a/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ca_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'La destination n\'est pas valide.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_get.lng b/interface/web/mail/lib/lang/ca_mail_get.lng index 9300a29049..a13a1b03f6 100644 --- a/interface/web/mail/lib/lang/ca_mail_get.lng +++ b/interface/web/mail/lib/lang/ca_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.'; $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.'; $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n\'est pas un nom de domaine valide.'; $wb['source_read_all_txt'] = 'Récupérer tous les courriels (incl. les courriels lus)'; -$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les courriels après récupération\" = non avec \"Récupérer tous les courriels\" = oui'; +$wb['error_delete_read_all_combination'] = 'Combinaison d\'options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les courriels après récupération\\" = non avec \\"Récupérer tous les courriels\\" = oui'; $wb['source_delete_note_txt'] = 'Please check first if courriel retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng index d07b382ddf..7b593f0a16 100644 --- a/interface/web/mail/lib/lang/ca_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ca_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Limite de taille de message'; $wb['banned_rulenames_txt'] = 'Noms des règles bannir'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng index d0f6157cb4..040a6d0de8 100644 --- a/interface/web/mail/lib/lang/cz.lng +++ b/interface/web/mail/lib/lang/cz.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'PÅ™ezdÃvky e-mailových domén'; $wb['Relay Recipients'] = 'Relay adresáti'; $wb['Statistics'] = 'Statistiky'; $wb['Mailbox quota'] = 'Kvóty pro e-mailové schránky'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng index ab4006df0c..d0ae7c7e4b 100644 --- a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Chybné doménové jméno nebo doména obsahuje chy $wb['limit_mailcatchall_txt'] = 'Byl dosažen maximálnà poÄet košů úÄtů pro Váš úÄet.'; $wb['source_txt'] = 'Zdroj'; $wb['destination_error_isemail'] = 'CÃlová e-mailová adresa nenà platná.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_get.lng b/interface/web/mail/lib/lang/cz_mail_get.lng index 3dfee1a5ef..cdb39b09a1 100644 --- a/interface/web/mail/lib/lang/cz_mail_get.lng +++ b/interface/web/mail/lib/lang/cz_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdné.'; $wb['destination_error_isemail'] = 'Nevybrán žádný cÃl.'; $wb['source_server_error_regex'] = 'POP3/IMAP server nenà validnà doménový název.'; $wb['source_read_all_txt'] = 'NaÄÃst vÅ¡echny e-maily (vÄetnÄ› již pÅ™eÄtené poÅ¡ty)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'ProsÃm, zkontrolujte nejprve, zda pÅ™ÃjÃmánà e-mailů funguje, než aktivujete tuto možnost.'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng index f534d6c8e9..e1f7dfbfa5 100644 --- a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng @@ -16,7 +16,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['listname_error_unique'] = 'Na serveru je již shodný \"název seznamu\". ProsÃm, vyberte si jiný \"název seznamu\".'; +$wb['listname_error_unique'] = 'Na serveru je již shodný \\"název seznamu\\". ProsÃm, vyberte si jiný \\"název seznamu\\".'; $wb['email_error_isemail'] = 'E-mailová adresa je neplatná.'; $wb['mailinglist_txt'] = 'E-mailové konference'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng index c5765e807f..b8b8a2e78f 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Å patná hlaviÄka admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Limit velikosti zprávy'; $wb['banned_rulenames_txt'] = 'Název pravidel zabanované'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/de.lng b/interface/web/mail/lib/lang/de.lng index 91418972dd..e0f1e7cd3b 100644 --- a/interface/web/mail/lib/lang/de.lng +++ b/interface/web/mail/lib/lang/de.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale Filter'; $wb['Domain Alias'] = 'E-Mail Domain Alias'; $wb['Relay Recipients'] = 'Relay Empfänger'; $wb['Mailbox quota'] = 'E-Mail Konto Speichernutzung'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng index 1efbcb6afc..1036fbf91c 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng @@ -42,10 +42,10 @@ $wb['rspamd_spam_tag_method_txt'] = 'SPAM-Markierungsmethode'; $wb['rspamd_spam_kill_level_txt'] = 'SPAM-Reject-Level'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; - $wb['amavis_settings_txt'] = 'Einstellungen'; $wb['amavis_taglevel_txt'] = 'Tag-Level'; $wb['amavis_quarantine_txt'] = 'Quarantäne'; $wb['amavis_other_txt'] = 'Sonstiges'; $wb['add_header_txt'] = 'Header hinzufügen'; -$wb['rewrite_subject_txt'] = 'Betreff ändern'; \ No newline at end of file +$wb['rewrite_subject_txt'] = 'Betreff ändern'; +?> diff --git a/interface/web/mail/lib/lang/dk.lng b/interface/web/mail/lib/lang/dk.lng index 7330253c23..3fe8d568ae 100644 --- a/interface/web/mail/lib/lang/dk.lng +++ b/interface/web/mail/lib/lang/dk.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filtere'; $wb['Domain Alias'] = 'Domæne Alias'; $wb['Relay Recipients'] = 'Relay Modtagere'; $wb['Mailbox quota'] = 'Postboks kvota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng index 0cdcad2098..8c0be49775 100644 --- a/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/dk_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ugyldigt domæne navn eller domæne, indeholder ugy $wb['limit_mailcatchall_txt'] = 'Max. antal af e-mail catchall konti for din konto er nÃ¥et.'; $wb['source_txt'] = 'Kilde'; $wb['destination_error_isemail'] = 'Destinationen er ikke en gyldig e-mail adresse.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_get.lng b/interface/web/mail/lib/lang/dk_mail_get.lng index dc0b7455ac..1fa44cb6ad 100644 --- a/interface/web/mail/lib/lang/dk_mail_get.lng +++ b/interface/web/mail/lib/lang/dk_mail_get.lng @@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Brugernavn er tom.'; $wb['source_password_error_isempty'] = 'Adgangskode er tom.'; $wb['destination_error_isemail'] = 'Ingen destination er valgt.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server er ikke et gyldigt domænenavn.'; -$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \"Slet e-mails efter hentning\" = nej sammen med \"Hent alle e-mails\" = ja'; +$wb['error_delete_read_all_combination'] = 'Ulovlig kombination af muligheder. Du kan ikke bruge \\"Slet e-mails efter hentning\\" = nej sammen med \\"Hent alle e-mails\\" = ja'; ?> diff --git a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng index b225eb48ac..97b02923d8 100644 --- a/interface/web/mail/lib/lang/dk_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/dk_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Meddelelses størrelse grænse'; $wb['banned_rulenames_txt'] = 'Bandlyste reglnavne'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/el.lng b/interface/web/mail/lib/lang/el.lng index f8cadc62f0..cb873eac2a 100644 --- a/interface/web/mail/lib/lang/el.lng +++ b/interface/web/mail/lib/lang/el.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Καθολικά ΦίλτÏα'; $wb['Domain Alias'] = 'Ψευδώνυμο Domain'; $wb['Relay Recipients'] = 'ΠαÏαλήπτες Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng index 43c0bdf565..b04b43cfcc 100644 --- a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Μη ÎγκÏÏ…Ïο όνομα domain ή το όν $wb['limit_mailcatchall_txt'] = 'Το μÎγιστο πλήθος των email catchall για τον λογαÏιασμό σας, Îχει εξαντληθεί.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_get.lng b/interface/web/mail/lib/lang/el_mail_get.lng index cc2c261a5b..0ec9645c8f 100644 --- a/interface/web/mail/lib/lang/el_mail_get.lng +++ b/interface/web/mail/lib/lang/el_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Το Συνθηματικό δεν Îχ $wb['destination_error_isemail'] = 'Δεν επιλÎχθηκε Ï€ÏοοÏισμός.'; $wb['source_server_error_regex'] = 'Το όνομα του Pop3/Imap Server δεν είναι ÎγκυÏο.'; $wb['source_read_all_txt'] = 'Ανάκτηση όλων των emails (συμπεÏ. αναγνωσμÎνων mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/el_spamfilter_policy.lng b/interface/web/mail/lib/lang/el_spamfilter_policy.lng index 4ab7291697..0eed350239 100644 --- a/interface/web/mail/lib/lang/el_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/el_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'ÎŒÏιο μεγÎθους μηνÏματος'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng index 787007a7fc..fdf4e5b00d 100755 --- a/interface/web/mail/lib/lang/es.lng +++ b/interface/web/mail/lib/lang/es.lng @@ -8,7 +8,7 @@ $wb['Domain'] = 'Dominio'; $wb['Email Accounts'] = 'Cuentas de correo'; $wb['Email Alias'] = 'Alias de correo'; $wb['Email Blacklist'] = 'Lista negra de correo'; -$wb['Email Catchall'] = 'Correo \"recoge-todo\"'; +$wb['Email Catchall'] = 'Correo \\"recoge-todo\\"'; $wb['Email filter'] = 'Filtro de correo'; $wb['Email Forward'] = 'ReenvÃo de correo'; $wb['Email Mailbox'] = 'Buzón de correo'; @@ -45,4 +45,6 @@ $wb['Tag-Level'] = 'Nivel de etiqueta'; $wb['User / Domain'] = 'Usuario / Dominio'; $wb['Users'] = 'Usuarios'; $wb['Whitelist'] = 'Lista blanca'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng index ed6c9b5db4..68e03c8c37 100755 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng @@ -3,9 +3,10 @@ $wb['active_txt'] = 'Habilitado'; $wb['destination_error_isemail'] = 'El destinatario no es una dirección de correo válida.'; $wb['destination_txt'] = 'Correo de destino'; $wb['domain_error_regex'] = 'El nombre de dominio es inválido o contiene caracteres no permitidos.'; -$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \"recoge-todo\".'; +$wb['domain_error_unique'] = 'Este dominio ya tiene un correo \\"recoge-todo\\".'; $wb['domain_txt'] = 'Dominio'; -$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \"recoge-todo\" para correo permitidos para su cuenta.'; +$wb['limit_mailcatchall_txt'] = 'Ha alcanzado el número máx. de correo \\"recoge-todo\\" para correo permitidos para su cuenta.'; $wb['no_domain_perm'] = 'No tiene permisos para usar este dominio.'; $wb['source_txt'] = 'Origen'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng index fc3fde1956..8288430a18 100755 --- a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng @@ -1,9 +1,9 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['add_new_record_txt'] = 'Añadir correo \"recoge-todo\"'; +$wb['add_new_record_txt'] = 'Añadir correo \\"recoge-todo\\"'; $wb['destination_txt'] = 'Dirección de correo de destino'; $wb['domain_txt'] = 'Dominio'; -$wb['list_head_txt'] = 'Correo \"recoge-todo\"'; +$wb['list_head_txt'] = 'Correo \\"recoge-todo\\"'; $wb['server_id_txt'] = 'Servidor'; $wb['source_txt'] = 'Origen'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng index 47529e27c6..81de60b038 100755 --- a/interface/web/mail/lib/lang/es_mail_get.lng +++ b/interface/web/mail/lib/lang/es_mail_get.lng @@ -2,7 +2,7 @@ $wb['active_txt'] = 'Habilitado'; $wb['destination_error_isemail'] = 'No ha seleccionado un destinatario.'; $wb['destination_txt'] = 'Destino'; -$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \"Borrar correos después de recuperarlos\" = NO al mismo tiempo que \"Recuperar todos los correos\" = SI'; +$wb['error_delete_read_all_combination'] = 'Combinación incorrecta de opciones. No puede usar \\"Borrar correos después de recuperarlos\\" = NO al mismo tiempo que \\"Recuperar todos los correos\\" = SI'; $wb['limit_fetchmail_txt'] = 'Ha alcanzado el número máx. de registros de recuperación de correo permitidos para su cuenta.'; $wb['server_id_txt'] = 'Servidor'; $wb['source_delete_note_txt'] = 'Por favor, verifique que funcione la recuperación de correos antes de activar esta opción.'; diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng index 1cb1d43630..b7a168c983 100755 --- a/interface/web/mail/lib/lang/es_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/es_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['virus_quarantine_to_txt'] = 'Reenviar virus al correo'; $wb['warnbadhrecip_txt'] = 'Avisar al receptor de la cabecera incorrecta.'; $wb['warnbannedrecip_txt'] = 'Avisar al receptor del bloqueo.'; $wb['warnvirusrecip_txt'] = 'Avisar al receptor del virus.'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/fi.lng b/interface/web/mail/lib/lang/fi.lng index 3738c7fd64..78a4328336 100755 --- a/interface/web/mail/lib/lang/fi.lng +++ b/interface/web/mail/lib/lang/fi.lng @@ -45,4 +45,6 @@ $wb['Server'] = 'Palvelin'; $wb['Domain Alias'] = 'Aliasverkkotunnus'; $wb['Relay Recipients'] = 'Välityksen vastaanottajat'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng index f835f5667a..085a116c2c 100755 --- a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Vääränlainen verkkotunnus tai se sisältää kie $wb['limit_mailcatchall_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä CatchAll-tunnuksia.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_get.lng b/interface/web/mail/lib/lang/fi_mail_get.lng index 9eca1d8498..063a37bf04 100755 --- a/interface/web/mail/lib/lang/fi_mail_get.lng +++ b/interface/web/mail/lib/lang/fi_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Salasana-kenttä on tyhjä.'; $wb['destination_error_isemail'] = 'Ei kohdetta valittuna.'; $wb['source_server_error_regex'] = 'Pop3/Imap-palvelin ei ole kelvollinen osoite.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng index 8f61ba411b..4f72021077 100755 --- a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Otsikkovirhetunnisteiden ylläpitäjä'; $wb['spam_admin_txt'] = 'Roskapostitunnisteiden ylläpitäjä'; $wb['message_size_limit_txt'] = 'Viestin kokoraja'; $wb['banned_rulenames_txt'] = 'Estojen sääntönimet'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/fr.lng b/interface/web/mail/lib/lang/fr.lng index 3437d37100..a70f080295 100644 --- a/interface/web/mail/lib/lang/fr.lng +++ b/interface/web/mail/lib/lang/fr.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias de domaine'; $wb['Relay Recipients'] = 'Destinataires de relais'; $wb['Mailbox quota'] = 'Mailbox quota'; $wb['Email'] = 'Email'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng index b7c4b60760..199cd47224 100644 --- a/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/fr_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nom de domaine invalide, ou contient des caractère $wb['limit_mailcatchall_txt'] = 'Le nombre maximal de comptes collecteurs pour votre compte a été atteint.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid e-mail address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_get.lng b/interface/web/mail/lib/lang/fr_mail_get.lng index 118ab5ed32..00f72f0c8b 100644 --- a/interface/web/mail/lib/lang/fr_mail_get.lng +++ b/interface/web/mail/lib/lang/fr_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Le mot de passe est vide.'; $wb['destination_error_isemail'] = 'Pas de destination sélectionnée.'; $wb['source_server_error_regex'] = 'Le serveur POP3 / IMAP n’est pas un nom de domaine valide.'; $wb['source_read_all_txt'] = 'Récupérer tous les emails (incl. les emails lus)'; -$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \"Supprimer les emails après récupération\" = non avec \"Récupérer tous les emails\" = oui'; +$wb['error_delete_read_all_combination'] = 'Combinaison d’options non autorisée. Vous ne pouvez pas utiliser \\"Supprimer les emails après récupération\\" = non avec \\"Récupérer tous les emails\\" = oui'; $wb['source_delete_note_txt'] = 'Please check first if e-mail retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng index d07b382ddf..7b593f0a16 100644 --- a/interface/web/mail/lib/lang/fr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/fr_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin mauvais entête'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Limite de taille de message'; $wb['banned_rulenames_txt'] = 'Noms des règles bannir'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/hr.lng b/interface/web/mail/lib/lang/hr.lng index 882f6d2b7e..877f8827f5 100644 --- a/interface/web/mail/lib/lang/hr.lng +++ b/interface/web/mail/lib/lang/hr.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Alias domena'; $wb['Relay Recipients'] = 'Relay primatelji'; $wb['Mailbox quota'] = 'Mailbox quota'; $wb['Domain'] = 'Domain'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng index 2c8d23e218..1c8da72ab3 100644 --- a/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hr_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neispravan naziv domene ili naziv sadrži nedozvolj $wb['limit_mailcatchall_txt'] = 'IskoriÅ¡ten ja maksimalan broj email catchall raÄuna.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_get.lng b/interface/web/mail/lib/lang/hr_mail_get.lng index 025bb136b0..18c53a4d53 100644 --- a/interface/web/mail/lib/lang/hr_mail_get.lng +++ b/interface/web/mail/lib/lang/hr_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password is empty.'; $wb['destination_error_isemail'] = 'No destination selected.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng index e876330a68..683b378c21 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/hu.lng b/interface/web/mail/lib/lang/hu.lng index 752f4003a8..f3ffa4aef0 100644 --- a/interface/web/mail/lib/lang/hu.lng +++ b/interface/web/mail/lib/lang/hu.lng @@ -45,4 +45,6 @@ $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Server'] = 'Server'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng index 8331f22101..e26795953d 100644 --- a/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/hu_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Érvénytelen domain vagy a domain érvénytelen ka $wb['limit_mailcatchall_txt'] = 'Nincs több catchall lehetÅ‘ség.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_get.lng b/interface/web/mail/lib/lang/hu_mail_get.lng index a02a1fe114..59cb26dd6a 100644 --- a/interface/web/mail/lib/lang/hu_mail_get.lng +++ b/interface/web/mail/lib/lang/hu_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Jelszó üres.'; $wb['destination_error_isemail'] = 'Nem választott cÃmzettet.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng index 391d4ab43a..c2b6b9244c 100644 --- a/interface/web/mail/lib/lang/hu_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/hu_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Hibás fejléc admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Levél méret limit'; $wb['banned_rulenames_txt'] = 'Tiltószabály nevek'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/id.lng b/interface/web/mail/lib/lang/id.lng index c9acaf27f1..3a2b5dfe45 100644 --- a/interface/web/mail/lib/lang/id.lng +++ b/interface/web/mail/lib/lang/id.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Penyaringan Global'; $wb['Domain Alias'] = 'Alias Domain'; $wb['Relay Recipients'] = 'Penerima Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng index 435856c105..c380957fdc 100644 --- a/interface/web/mail/lib/lang/id_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/id_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Nama domain tidak valid atau domain mengandung kara $wb['limit_mailcatchall_txt'] = 'Jumlah maks akun catchall email untuk akun Anda sudah tercapai.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_get.lng b/interface/web/mail/lib/lang/id_mail_get.lng index 7617cbc7df..cec2466f28 100644 --- a/interface/web/mail/lib/lang/id_mail_get.lng +++ b/interface/web/mail/lib/lang/id_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Kata Sandi kosong.'; $wb['destination_error_isemail'] = 'Tidak ada tujuan yang dipilih.'; $wb['source_server_error_regex'] = 'Server Pop3/Imap bukan merupakan nama domain yang valid.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/id_spamfilter_policy.lng b/interface/web/mail/lib/lang/id_spamfilter_policy.lng index afa0ba1a09..9813dec470 100644 --- a/interface/web/mail/lib/lang/id_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/id_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin Bad header'; $wb['spam_admin_txt'] = 'Admin SPAM'; $wb['message_size_limit_txt'] = 'Batasan ukuran pesan'; $wb['banned_rulenames_txt'] = 'Nama aturan Banned'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/it.lng b/interface/web/mail/lib/lang/it.lng index 715e2efb8e..15bc87ea3f 100644 --- a/interface/web/mail/lib/lang/it.lng +++ b/interface/web/mail/lib/lang/it.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtri globali'; $wb['Domain Alias'] = 'Alias dominio'; $wb['Relay Recipients'] = 'Destinatari inoltro'; $wb['Mailbox quota'] = 'Quota Casella di Posta'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng index 6ff4cbdf1c..3345bed9c7 100644 --- a/interface/web/mail/lib/lang/it_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/it_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Invalid domain name od domain contiene caratteri no $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts raggiunto per il tuo account.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_get.lng b/interface/web/mail/lib/lang/it_mail_get.lng index 3b443a7268..70770c22d4 100644 --- a/interface/web/mail/lib/lang/it_mail_get.lng +++ b/interface/web/mail/lib/lang/it_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Valore Password vuoto.'; $wb['destination_error_isemail'] = 'Nessuna destinazione selezionata.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server non è un nome dominio valido.'; $wb['source_read_all_txt'] = 'Recupera tutte le email (incluso mail lette)'; -$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \"Elimina mail dopo averle scaricate \" = NO assieme a \"Recupera tutte le email\" = SI'; +$wb['error_delete_read_all_combination'] = 'Combinazione di opzioni non conforme. Non puoi utilizzare \\"Elimina mail dopo averle scaricate \\" = NO assieme a \\"Recupera tutte le email\\" = SI'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/it_spamfilter_policy.lng b/interface/web/mail/lib/lang/it_spamfilter_policy.lng index e876330a68..683b378c21 100644 --- a/interface/web/mail/lib/lang/it_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/it_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ja.lng b/interface/web/mail/lib/lang/ja.lng index f8289d4907..818a3ed126 100644 --- a/interface/web/mail/lib/lang/ja.lng +++ b/interface/web/mail/lib/lang/ja.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'ã‚°ãƒãƒ¼ãƒãƒ«ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng index cb430fefe6..6da7d05c56 100644 --- a/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ja_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'ドメインåãŒä¸æ£ã§ã™ã€‚無効ãªæ–‡å—ã‚’ $wb['limit_mailcatchall_txt'] = 'ã‚ャッãƒã‚ªãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒæœ€å¤§æ•°ã«é”ã—ãŸãŸã‚ã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_get.lng b/interface/web/mail/lib/lang/ja_mail_get.lng index f1c45256bf..3c5c9ec092 100644 --- a/interface/web/mail/lib/lang/ja_mail_get.lng +++ b/interface/web/mail/lib/lang/ja_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'パスワードを指定ã—ã¦ãã ã• $wb['destination_error_isemail'] = '宛先をé¸æŠžã—ã¦ãã ã•ã„。'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng index 89d377a384..a23f28a766 100644 --- a/interface/web/mail/lib/lang/ja_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ja_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/nl.lng b/interface/web/mail/lib/lang/nl.lng index e47cc65811..91d63a7abc 100644 --- a/interface/web/mail/lib/lang/nl.lng +++ b/interface/web/mail/lib/lang/nl.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globale filters'; $wb['Domain Alias'] = 'Domein alias'; $wb['Relay Recipients'] = 'Relay ontvangers'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng index 06ad66c9be..ee9c1f7678 100644 --- a/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/nl_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ongeldige domeinnaam of domein bevat ongeldige kara $wb['limit_mailcatchall_txt'] = 'Het max. aantal e-mail catchall accounts voor uw account is bereikt.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng index 6752b42cd8..5cbeab14e7 100644 --- a/interface/web/mail/lib/lang/nl_mail_get.lng +++ b/interface/web/mail/lib/lang/nl_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.'; $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.'; $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index acc2da94e1..94dd018332 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -36,7 +36,7 @@ $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; $wb['autoresponder_active'] = 'Inschakelen autoresponder'; $wb['cc_txt'] = 'Stuur kopie naar'; -$wb['cc_error_isemail'] = 'Het \"Stuur kopie naar\" veld bevat geen geldig e-mail adres'; +$wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; @@ -60,6 +60,6 @@ $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; -$wb['sender_cc_error_isemail'] = 'Het \"Stuur uitgaande kopie aan\" veld bevat geen geldig e-mail adres'; +$wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; ?> diff --git a/interface/web/mail/lib/lang/nl_spamfilter_policy.lng b/interface/web/mail/lib/lang/nl_spamfilter_policy.lng index 84d5242da9..4a7ab96152 100644 --- a/interface/web/mail/lib/lang/nl_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/nl_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Bericht grootte limiet'; $wb['banned_rulenames_txt'] = 'Verbannen rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/pl.lng b/interface/web/mail/lib/lang/pl.lng index 93861b784d..17b7701992 100644 --- a/interface/web/mail/lib/lang/pl.lng +++ b/interface/web/mail/lib/lang/pl.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globalne filtry'; $wb['Domain Alias'] = 'Alias domeny'; $wb['Relay Recipients'] = 'Odbiorcy przekierowania'; $wb['Mailbox quota'] = 'Użycie skrzynek email'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng index 3630b954bf..fad83875ca 100644 --- a/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pl_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'NieprawidÅ‚owa nazwa domeny. Domena zawiera niedozo $wb['limit_mailcatchall_txt'] = 'Maksymalna ilość kont e-mail catchall dla Twojej domeny zostaÅ‚a przekroczona.'; $wb['source_txt'] = 'ŹródÅ‚o'; $wb['destination_error_isemail'] = 'Cel nie jest poprawnym adresem email.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng index 8a825b5594..8291102308 100644 --- a/interface/web/mail/lib/lang/pl_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/pl_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Admin obsÅ‚ugi zÅ‚ych nagÅ‚owków'; $wb['spam_admin_txt'] = 'Admin obsÅ‚ugi spamu'; $wb['message_size_limit_txt'] = 'Limit wielkoÅ›ci wiadomoÅ›ci'; $wb['banned_rulenames_txt'] = 'Zabronione nazwy zasad'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/pt.lng b/interface/web/mail/lib/lang/pt.lng index 7a9a69cf83..d47eb6183b 100644 --- a/interface/web/mail/lib/lang/pt.lng +++ b/interface/web/mail/lib/lang/pt.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtros Globais'; $wb['Domain Alias'] = 'DomÃnios Alias'; $wb['Relay Recipients'] = 'Recipientes de Relay'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng index 1fde21c020..e81afd74b9 100644 --- a/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/pt_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'O nome do domÃnio contém caracteres inválidos'; $wb['limit_mailcatchall_txt'] = 'O número máximo de catchall para este domÃnio foi atingido.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_get.lng b/interface/web/mail/lib/lang/pt_mail_get.lng index f3ea6227fa..883279a2d5 100644 --- a/interface/web/mail/lib/lang/pt_mail_get.lng +++ b/interface/web/mail/lib/lang/pt_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Senha em branco.'; $wb['destination_error_isemail'] = 'Destino não seleccionado.'; $wb['source_server_error_regex'] = 'Servidor Pop3/Imap não é um nome de domÃnio válido.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng index 1610aebdca..af960c99f6 100644 --- a/interface/web/mail/lib/lang/pt_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/pt_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Administrador de Bad header'; $wb['spam_admin_txt'] = 'Administrador SPAM'; $wb['message_size_limit_txt'] = 'Tamanho limite da mensagem'; $wb['banned_rulenames_txt'] = 'Regras de Banimento'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ro.lng b/interface/web/mail/lib/lang/ro.lng index dbfa06bcc8..0c0e85995e 100644 --- a/interface/web/mail/lib/lang/ro.lng +++ b/interface/web/mail/lib/lang/ro.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Filtre Global'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng index 97add765ab..c0689ca044 100644 --- a/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ro_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'nume de domeniu invalid sau caractere nepermise'; $wb['limit_mailcatchall_txt'] = 'numarul maxim de CATCHALL pe contul dumneavoatra a fost atins'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_get.lng b/interface/web/mail/lib/lang/ro_mail_get.lng index 16a0b6aeb7..5e0a590f70 100644 --- a/interface/web/mail/lib/lang/ro_mail_get.lng +++ b/interface/web/mail/lib/lang/ro_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Password este necompletat'; $wb['destination_error_isemail'] = 'Nici o destinatie nu e selectata'; $wb['source_server_error_regex'] = 'Pop3/Imap Server is not a valid domain name.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng index 3645b3e1d1..f77d0f3e5a 100644 --- a/interface/web/mail/lib/lang/ro_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ro_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = ' header defect admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned nume reguli'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/ru.lng b/interface/web/mail/lib/lang/ru.lng index 124441ffa9..1b7995e024 100644 --- a/interface/web/mail/lib/lang/ru.lng +++ b/interface/web/mail/lib/lang/ru.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Глобальные фильтры'; $wb['Domain Alias'] = 'ÐлиаÑÑ‹ доменов'; $wb['Relay Recipients'] = 'Relay получатели'; $wb['Mailbox quota'] = 'Квота почтового Ñщика'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng index 60d3ebd326..25349ca497 100644 --- a/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ru_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ðекорректное Ð¸Ð¼Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°.'; $wb['limit_mailcatchall_txt'] = 'МакÑимальное чиÑло МакÑ. количеÑтво учётных запиÑей Ñводных почтовых Ñщиков доÑтигнуто.'; $wb['source_txt'] = 'ИÑточник'; $wb['destination_error_isemail'] = 'Ðе выбран получатель или запиÑÑŒ некорректна.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_get.lng b/interface/web/mail/lib/lang/ru_mail_get.lng index 0ce613cd05..b3f2f0b6bf 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 ecc2d25b9d..c8306f9838 100644 --- a/interface/web/mail/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ru_mail_user_filter.lng @@ -6,7 +6,7 @@ $wb['active_txt'] = 'Ðктивно'; $wb['rulename_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['searchterm_is_empty'] = 'Поле поиÑка пуÑтое.'; $wb['source_txt'] = 'ИÑточник'; -$wb['target_error_regex'] = 'Ðазначение может Ñодержать только Ñледующие Ñимволы: \"a-z\", \"0-9\", \"-\", \".\", \"_\" и {пробел}'; +$wb['target_error_regex'] = 'Ðазначение может Ñодержать только Ñледующие Ñимволы: \\"a-z\\", \\"0-9\\", \\"-\\", \\".\\", \\"_\\" и {пробел}'; $wb['limit_mailfilter_txt'] = 'МакÑимальное чиÑло почтовых фильтров доÑтигнуто.'; $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; diff --git a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng index 7bae8a0fd0..bab0a9ba0c 100644 --- a/interface/web/mail/lib/lang/ru_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/ru_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Ðдмин: кривые заголовки'; $wb['spam_admin_txt'] = 'Ðдмин: СПÐÐœ'; $wb['message_size_limit_txt'] = 'Превышен размер ÑообщениÑ'; $wb['banned_rulenames_txt'] = 'Правила банов'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/se.lng b/interface/web/mail/lib/lang/se.lng index 3edc2034d0..7a415aa901 100644 --- a/interface/web/mail/lib/lang/se.lng +++ b/interface/web/mail/lib/lang/se.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Global Filters'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng index 7ef1116390..39c6e6c559 100644 --- a/interface/web/mail/lib/lang/se_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Ogiltig domän eller domänen innehÃ¥ller ogiltiga $wb['limit_mailcatchall_txt'] = 'Det maximala antalet catchall-adresser för ditt konto är uppnÃ¥tt.'; $wb['source_txt'] = 'Källa'; $wb['destination_error_isemail'] = 'Destinationen när inte en giltig epostadress.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_get.lng b/interface/web/mail/lib/lang/se_mail_get.lng index db4440210e..9ed9710055 100644 --- a/interface/web/mail/lib/lang/se_mail_get.lng +++ b/interface/web/mail/lib/lang/se_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Lösenord är tomt.'; $wb['destination_error_isemail'] = 'Ingen destination vald.'; $wb['source_server_error_regex'] = 'POP3-/Imapserver är inte ett giltigt domännamn.'; $wb['source_read_all_txt'] = 'Hämta all epost (även läst epost)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Vänligen kontrollera först om eposthämtning fungerar innan du aktiverar detta val..'; ?> diff --git a/interface/web/mail/lib/lang/se_spamfilter_policy.lng b/interface/web/mail/lib/lang/se_spamfilter_policy.lng index e876330a68..683b378c21 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Bad header admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Message size limit'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/sk.lng b/interface/web/mail/lib/lang/sk.lng index 22773a574a..7b00f9d52c 100644 --- a/interface/web/mail/lib/lang/sk.lng +++ b/interface/web/mail/lib/lang/sk.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Globálne Filtere'; $wb['Domain Alias'] = 'Domain Alias'; $wb['Relay Recipients'] = 'Relay Recipients'; $wb['Mailbox quota'] = 'Mailbox quota'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng index 38c37544e6..03c701c6db 100644 --- a/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/sk_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Neplatný názov domény alebo doména obsahuje nep $wb['limit_mailcatchall_txt'] = 'Max. poÄet e-mailových doménových koÅ¡ov pre Váš úÄet je dosiahnutý.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_get.lng b/interface/web/mail/lib/lang/sk_mail_get.lng index 8e180ca7a8..e43899965d 100644 --- a/interface/web/mail/lib/lang/sk_mail_get.lng +++ b/interface/web/mail/lib/lang/sk_mail_get.lng @@ -14,6 +14,6 @@ $wb['source_password_error_isempty'] = 'Heslo je prázdne.'; $wb['destination_error_isemail'] = 'Žiadny Cieľ nebol vybraný.'; $wb['source_server_error_regex'] = 'Pop3/Imap Server nie je valÃdne doménové meno.'; $wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \"Delete emails after retrieval\" = no together with \"Retrieve all emails\" = yes'; +$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; $wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; ?> diff --git a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng index b58988d60b..6a4d636259 100644 --- a/interface/web/mail/lib/lang/sk_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/sk_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Zlé hlaviÄky admin'; $wb['spam_admin_txt'] = 'SPAM admin'; $wb['message_size_limit_txt'] = 'Limit veľkosti správy'; $wb['banned_rulenames_txt'] = 'Banned rulenames'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/tr.lng b/interface/web/mail/lib/lang/tr.lng index e2deaca006..4f6f77a38a 100644 --- a/interface/web/mail/lib/lang/tr.lng +++ b/interface/web/mail/lib/lang/tr.lng @@ -45,4 +45,6 @@ $wb['Global Filters'] = 'Genel Süzgeçler'; $wb['Domain Alias'] = 'Takma Alan Adı'; $wb['Relay Recipients'] = 'Aktarılan Alıcılar'; $wb['Mailbox quota'] = 'Posta Kutusu Kotası'; +$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; +$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng index 037d2ad16e..c5f8725a72 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng @@ -8,4 +8,5 @@ $wb['domain_error_regex'] = 'Alan adı geçersiz ya da geçersiz karakterler iç $wb['limit_mailcatchall_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla tümünü al hesabı sayısına ulaÅŸtınız.'; $wb['source_txt'] = 'Kaynak'; $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.'; +$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng index 3e29c26a71..b82b6c8c9a 100644 --- a/interface/web/mail/lib/lang/tr_mail_get.lng +++ b/interface/web/mail/lib/lang/tr_mail_get.lng @@ -15,5 +15,5 @@ $wb['source_username_error_isempty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['source_password_error_isempty'] = 'Parola boÅŸ olamaz.'; $wb['destination_error_isemail'] = 'Hedef seçilmemiÅŸ.'; $wb['source_server_error_regex'] = 'POP3/IMAP Sunucu alan adı geçersiz.'; -$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \"E-postalar alındıktan sonra silinsin\" = Hayır iken \"Tüm e-postalar alınsın\" = Evet olamaz'; +$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \\"E-postalar alındıktan sonra silinsin\\" = Hayır iken \\"Tüm e-postalar alınsın\\" = Evet olamaz'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng index 721b0490f7..d7b76496a1 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng @@ -35,4 +35,17 @@ $wb['bad_header_admin_txt'] = 'Kötü üstbilgi yönetici'; $wb['spam_admin_txt'] = 'Önemsiz posta yönetici'; $wb['message_size_limit_txt'] = 'Ä°leti boyutu sınırı'; $wb['banned_rulenames_txt'] = 'Yasak kural adları'; +$wb['rspamd_greylisting_txt'] = 'Use greylisting'; +$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; +$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; +$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; +$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['amavis_settings_txt'] = 'Settings'; +$wb['amavis_taglevel_txt'] = 'Tag-Level'; +$wb['amavis_quarantine_txt'] = 'Quarantine'; +$wb['amavis_other_txt'] = 'Other'; +$wb['add_header_txt'] = 'Add header'; +$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng index f10dd4ddb2..d834e4057a 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/monitor/lib/lang/ar_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/ar_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/bg_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/ca_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/dk_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/el_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/el_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index 3a95c6e9c2..f4acb3c45c 100755 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -27,7 +27,7 @@ $wb['monitor_logs_mailerr_txt'] = 'Registros de errores de correo'; $wb['monitor_logs_mailwarn_txt'] = 'Registros de advertencias de correo'; $wb['monitor_logs_messages_txt'] = 'Registros de mensajes del sistema'; $wb['monitor_norkhunter_txt'] = 'RKHunter no está instalado, por lo que no hay registros a mostrar'; -$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \"mdadm\" o \"mpt-status\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavÃa.'; +$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos \\"mdadm\\" o \\"mpt-status\\" para supervisar el RAID.<br>No hemos podido encontrarlo en su servidor. </br> Por lo tanto no podemos monitorizar su RAID todavÃa.'; $wb['monitor_serverstate_beancountercritical_txt'] = 'Existen muchos errores en el Beancounter'; $wb['monitor_serverstate_beancountererror_txt'] = 'Existen muchÃsimos errores en el Beancounter'; $wb['monitor_serverstate_beancounterinfo_txt'] = 'Existen algún error en el Beancounter'; diff --git a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/es_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/es_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/fi_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/fr_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/hr_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/hu_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/id_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/id_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/it_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/it_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/ja_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/nl_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/pl_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/pt_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/ro_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/ru_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/se_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/se_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/sk_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng index 9f9afd6347..f1ba8c67b8 100644 --- a/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/tr_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb["list_head_txt"] = 'Datalog History'; -$wb["tstamp_txt"] = 'Date'; -$wb["server_id_txt"] = 'Server'; -$wb["dbtable_txt"] = 'DB Table'; -$wb["action_txt"] = 'Action'; -$wb["status_txt"] = 'Status'; +$wb['list_head_txt'] = 'Datalog History'; +$wb['tstamp_txt'] = 'Date'; +$wb['server_id_txt'] = 'Server'; +$wb['dbtable_txt'] = 'DB Table'; +$wb['action_txt'] = 'Action'; +$wb['status_txt'] = 'Status'; ?> diff --git a/interface/web/sites/lib/lang/ar.lng b/interface/web/sites/lib/lang/ar.lng index bfd833292d..6ca61afae0 100644 --- a/interface/web/sites/lib/lang/ar.lng +++ b/interface/web/sites/lib/lang/ar.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ar_aps.lng b/interface/web/sites/lib/lang/ar_aps.lng index 3ff130f57e..881c146a4d 100644 --- a/interface/web/sites/lib/lang/ar_aps.lng +++ b/interface/web/sites/lib/lang/ar_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ar_web_childdomain.lng b/interface/web/sites/lib/lang/ar_web_childdomain.lng index 604a81b68f..636505f248 100644 --- a/interface/web/sites/lib/lang/ar_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ar_web_subdomain.lng b/interface/web/sites/lib/lang/ar_web_subdomain.lng index 1295f36697..c5fa1711bb 100644 --- a/interface/web/sites/lib/lang/ar_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/bg.lng b/interface/web/sites/lib/lang/bg.lng index 842b70ae02..0d28df2994 100644 --- a/interface/web/sites/lib/lang/bg.lng +++ b/interface/web/sites/lib/lang/bg.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/bg_aps.lng b/interface/web/sites/lib/lang/bg_aps.lng index 612adcd429..6a5f981943 100644 --- a/interface/web/sites/lib/lang/bg_aps.lng +++ b/interface/web/sites/lib/lang/bg_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/bg_web_childdomain.lng b/interface/web/sites/lib/lang/bg_web_childdomain.lng index 7106438c34..c7549b76f7 100644 --- a/interface/web/sites/lib/lang/bg_web_childdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/bg_web_subdomain.lng b/interface/web/sites/lib/lang/bg_web_subdomain.lng index f4218278d9..0df1e50594 100644 --- a/interface/web/sites/lib/lang/bg_web_subdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 3fdd93585e..685ce6ed28 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -30,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 eab5b9f688..2bbadf6d1b 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 57b97693eb..ac916feef1 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 518f0296e1..59b9fce627 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 bb8d99ceb0..3df741ed9e 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 c92bf5baa4..3cbc911ab3 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 9d4f1951d8..4acadb2c54 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 1c53d16584..ecff0c2ae8 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -36,18 +36,18 @@ $wb['domain_error_empty'] = 'DomÃnio está em branco.'; $wb['domain_error_unique'] = 'Já existe apelido de domÃnio ou subdomÃnio com este nome.'; $wb['domain_error_regex'] = 'Nome de domÃnio é inválido.'; $wb['host_txt'] = 'Nome do servidor'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \"/teste/\" ou \"http://www.dominio.com.br/teste/\".'; +$wb['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'; diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 4b2e77b654..662fdb407c 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -52,10 +52,10 @@ $wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponÃvel'; $wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; $wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \"a-z\", \'0-9\' e \'.,-_\'.'; +$wb['ssl_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'; @@ -104,7 +104,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 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['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; $wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:'; $wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:'; diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 8abb050438..0ccc574805 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 d30db9f189..4c72b1fd88 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'; @@ -106,7 +106,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:'; 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 8a0c3e6a1f..fa6ddad484 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 b135d5e0fa..4347f8ae36 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.lng b/interface/web/sites/lib/lang/ca.lng index c914ef002f..9acee9d061 100644 --- a/interface/web/sites/lib/lang/ca.lng +++ b/interface/web/sites/lib/lang/ca.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles'; $wb['Installed packages'] = 'Packages installés'; $wb['Update Packagelist'] = 'Mise à jour de la liste des packages'; $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)'; -$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/ca_aps.lng b/interface/web/sites/lib/lang/ca_aps.lng index 7233c1f0dd..062d6ea589 100644 --- a/interface/web/sites/lib/lang/ca_aps.lng +++ b/interface/web/sites/lib/lang/ca_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d\'installation choisi est invalide $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d\'utilisation (licence).'; $wb['error_no_database_pw'] = 'Vous n\'avez pas renseigné de mot de passe BDD valide.'; $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.'; -$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.'; -$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.'; -$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.'; -$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".'; -$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \"%s\" est invalide.'; -$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.'; +$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.'; +$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.'; +$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.'; +$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".'; +$wb['error_inv_email_for'] = 'L\'adresse courriel saisie pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.'; $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d\'installation.'; $wb['installation_task_txt'] = 'Installation prévue'; $wb['installation_error_txt'] = 'Erreur d\'installation'; diff --git a/interface/web/sites/lib/lang/ca_web_childdomain.lng b/interface/web/sites/lib/lang/ca_web_childdomain.lng index 1d838990e3..762acfe244 100644 --- a/interface/web/sites/lib/lang/ca_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ca_web_subdomain.lng b/interface/web/sites/lib/lang/ca_web_subdomain.lng index ec5980a91b..13fd0d66ef 100644 --- a/interface/web/sites/lib/lang/ca_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.'; $wb['proxy_directives_txt'] = 'Directives pour les Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :'; -$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng index 2e4276c817..4c16438e34 100644 --- a/interface/web/sites/lib/lang/cz.lng +++ b/interface/web/sites/lib/lang/cz.lng @@ -31,5 +31,5 @@ $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'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng index bb8015951c..adf6ccf58e 100644 --- a/interface/web/sites/lib/lang/cz_aps.lng +++ b/interface/web/sites/lib/lang/cz_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Instalace plánované'; $wb['installation_error_txt'] = 'Chyba instalace'; diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index 5a5091c89a..b159976b29 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -49,7 +49,7 @@ $wb['no_flag_txt'] = 'Žádný pÅ™Ãznak'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['ipv6_address_txt'] = 'IPv6 adresa'; $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.'; $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.'; diff --git a/interface/web/sites/lib/lang/cz_web_subdomain.lng b/interface/web/sites/lib/lang/cz_web_subdomain.lng index 986f76acc8..cd301db143 100644 --- a/interface/web/sites/lib/lang/cz_web_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Žádný pÅ™Ãznak'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/de_web_childdomain.lng b/interface/web/sites/lib/lang/de_web_childdomain.lng index 561e8de968..05b1f1d51d 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect'; $wb['no_flag_txt'] = 'Kein Flag'; $wb['proxy_directives_txt'] = 'Proxy-Direktiven'; $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:'; -$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.'; +$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.'; $wb['backup_interval_txt'] = 'Backup-Intervall'; $wb['backup_copies_txt'] = 'Anzahl der Backups'; $wb['ssl_key_txt'] = 'SSL-Schlüssel'; diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng index a88918b09a..586c90adc3 100644 --- a/interface/web/sites/lib/lang/de_web_subdomain.lng +++ b/interface/web/sites/lib/lang/de_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Kein Redirect'; $wb['no_flag_txt'] = 'Kein Flag'; $wb['proxy_directives_txt'] = 'Proxy-Direktiven'; $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:'; -$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \"proxy\" erfordert eine URL als Weiterleitungspfad.'; +$wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/dk.lng b/interface/web/sites/lib/lang/dk.lng index a99760a66e..39974fef5d 100644 --- a/interface/web/sites/lib/lang/dk.lng +++ b/interface/web/sites/lib/lang/dk.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tilgængelig pakker'; $wb['Installed packages'] = 'Installeret pakker'; $wb['Update Packagelist'] = 'Opdater Pakkeliste'; $wb['Subdomain (Vhost)'] = 'Sub-domæne (Vhost)'; -$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/dk_aps.lng b/interface/web/sites/lib/lang/dk_aps.lng index c3f2983cfd..ca006e2eb2 100644 --- a/interface/web/sites/lib/lang/dk_aps.lng +++ b/interface/web/sites/lib/lang/dk_aps.lng @@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Den oplyste installations mappe er ugyldig.'; $wb['error_license_agreement'] = 'For at fortsætte skal du acceptere licensaftalen.'; $wb['error_no_database_pw'] = 'Du har ikke oplyst en database adgangskode.'; $wb['error_short_database_pw'] = 'Vælg en længer database adgangskode.'; -$wb['error_no_value_for'] = 'Feltet \"%s\" mÃ¥ ikke være tomt.'; -$wb['error_short_value_for'] = 'Feltet \"%s\" kræver en længere indtastnings værdi.'; -$wb['error_long_value_for'] = 'Feltet \"%s\" kræver en kortere indtastnings værdi.'; -$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \"%s\".'; -$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \"%s\".'; -$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \"%s\".'; -$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \"%s\".'; -$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \"%s\".'; +$wb['error_no_value_for'] = 'Feltet \\"%s\\" mÃ¥ ikke være tomt.'; +$wb['error_short_value_for'] = 'Feltet \\"%s\\" kræver en længere indtastnings værdi.'; +$wb['error_long_value_for'] = 'Feltet \\"%s\\" kræver en kortere indtastnings værdi.'; +$wb['error_inv_value_for'] = 'Du har indtastet en ugyldig værdi for feltet \\"%s\\".'; +$wb['error_inv_email_for'] = 'Du har indtastet en ugyldig mail adresse for feltet \\"%s\\".'; +$wb['error_inv_domain_for'] = 'Du har indtastet et ugyldigt domæne for feltet \\"%s\\".'; +$wb['error_inv_integer_for'] = 'Du har indtastet et ugyldigt tal for feltet \\"%s\\".'; +$wb['error_inv_float_for'] = 'Du har indtastet et ugyldigt floating point tal for feltet \\"%s\\".'; $wb['error_used_location'] = 'Installations stien indeholder allerede en pakke installation.'; $wb['installation_task_txt'] = 'Installation planlagt'; $wb['installation_error_txt'] = 'Installations fejl'; diff --git a/interface/web/sites/lib/lang/dk_web_childdomain.lng b/interface/web/sites/lib/lang/dk_web_childdomain.lng index 1d838990e3..762acfe244 100644 --- a/interface/web/sites/lib/lang/dk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/dk_web_subdomain.lng b/interface/web/sites/lib/lang/dk_web_subdomain.lng index 4fffd59365..c14a347263 100644 --- a/interface/web/sites/lib/lang/dk_web_subdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Ingen redirect'; $wb['no_flag_txt'] = 'Ingen flag'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Tilgængelig Proxy Direktiv Kodestykker:'; -$wb['error_proxy_requires_url'] = 'Omdiriger Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Omdiriger Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/el.lng b/interface/web/sites/lib/lang/el.lng index 19bfc27349..2d726140fd 100644 --- a/interface/web/sites/lib/lang/el.lng +++ b/interface/web/sites/lib/lang/el.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/el_aps.lng b/interface/web/sites/lib/lang/el_aps.lng index 73cb49f106..0209737f61 100644 --- a/interface/web/sites/lib/lang/el_aps.lng +++ b/interface/web/sites/lib/lang/el_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/el_web_childdomain.lng b/interface/web/sites/lib/lang/el_web_childdomain.lng index a1cead28e3..3c5cb7a936 100644 --- a/interface/web/sites/lib/lang/el_web_childdomain.lng +++ b/interface/web/sites/lib/lang/el_web_childdomain.lng @@ -45,7 +45,7 @@ $wb['no_flag_txt'] = 'ΧωÏίς Σημαία'; $wb['domain_error_wildcard'] = 'Wildcard subdomains δεν επιτÏÎπονται.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'ΔιαθÎσιμα Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Ο Ï„Ïπος ανακατεÏθυνσης \"proxy\" απαιτεί Îνα URL ως μονοπάτι ανακατεÏθυνσης.'; +$wb['error_proxy_requires_url'] = 'Ο Ï„Ïπος ανακατεÏθυνσης \\"proxy\\" απαιτεί Îνα URL ως μονοπάτι ανακατεÏθυνσης.'; $wb['ssl_domain_txt'] = 'SSL Domain'; $wb['web_folder_error_regex'] = 'Εισάγατε μη ÎγκυÏο φάκελο. Μην εισάγετε την κάθετο.'; $wb['ipv6_address_txt'] = 'ΔιεÏθυνση IPv6'; diff --git a/interface/web/sites/lib/lang/el_web_subdomain.lng b/interface/web/sites/lib/lang/el_web_subdomain.lng index b3f8e1312f..606137bc82 100644 --- a/interface/web/sites/lib/lang/el_web_subdomain.lng +++ b/interface/web/sites/lib/lang/el_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'ΧωÏίς Σημαία'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng index 78cfa3a609..7d128081f6 100755 --- a/interface/web/sites/lib/lang/es.lng +++ b/interface/web/sites/lib/lang/es.lng @@ -8,7 +8,7 @@ $wb['Cron'] = 'Trabajos programados'; $wb['Database User'] = 'Usuarios de bases de datos'; $wb['Database'] = 'Bases de datos'; $wb['Domain'] = 'Dominio'; -$wb['error_proxy_requires_url'] = 'La redirección del tipo \"proxy\" requiere de una URL como ruta de redirección.'; +$wb['error_proxy_requires_url'] = 'La redirección del tipo \\"proxy\\" requiere de una URL como ruta de redirección.'; $wb['Folder users'] = 'Usuarios de carpetas protegidas'; $wb['Folder'] = 'Carpetas protegidas'; $wb['FTP'] = 'FTP'; diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng index afecc225fc..3780b32edd 100755 --- a/interface/web/sites/lib/lang/es_aps.lng +++ b/interface/web/sites/lib/lang/es_aps.lng @@ -12,20 +12,20 @@ $wb['config_script_txt'] = 'Archivo de configuración'; $wb['database_txt'] = 'Base de datos'; $wb['description_txt'] = 'Descripción'; $wb['details_txt'] = 'Detalles'; -$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \"%s\".'; -$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \"%s\".'; -$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \"%s\".'; -$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \"%s\".'; +$wb['error_inv_domain_for'] = 'Ha ingresado un dominio inválido en el campo \\"%s\\".'; +$wb['error_inv_email_for'] = 'Ha ingresado una dirección de correo inválida en el campo \\"%s\\".'; +$wb['error_inv_float_for'] = 'Ha introducido un número de punto flotante no válido para el campo \\"%s\\".'; +$wb['error_inv_integer_for'] = 'Ha ingresado un número inválido en el campo \\"%s\\".'; $wb['error_inv_main_location'] = 'La ubicación de la carpeta de instalación proporcionada es inválida.'; -$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \"%s\".'; +$wb['error_inv_value_for'] = 'Ha ingresado un valor inválido en el campo \\"%s\\".'; $wb['error_license_agreement'] = 'Para poder continuar debe aceptar el acuerdo de licencia.'; -$wb['error_long_value_for'] = 'El campo \"%s\" requiere una entrada más corta.'; +$wb['error_long_value_for'] = 'El campo \\"%s\\" requiere una entrada más corta.'; $wb['error_main_domain'] = 'El dominio de la ruta de la instalación es inválido.'; $wb['error_no_database_pw'] = 'No ha proporcionado una contraseña válida para la base de datos.'; $wb['error_no_main_location'] = 'Ha proporcionado una ruta de instalación inválida.'; -$wb['error_no_value_for'] = 'El campo \"%s\" no puede estar vacÃo.'; +$wb['error_no_value_for'] = 'El campo \\"%s\\" no puede estar vacÃo.'; $wb['error_short_database_pw'] = 'Por favor seleccione un contraseña más larga para la base de datos.'; -$wb['error_short_value_for'] = 'El campo \"%s\" requiere una entrada más larga.'; +$wb['error_short_value_for'] = 'El campo \\"%s\\" requiere una entrada más larga.'; $wb['error_used_location'] = 'La ruta de instalación ya contiene un paquete instalado.'; $wb['homepage_txt'] = 'Página de inicio'; $wb['install_language_txt'] = 'Idioma de la interfaz'; diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng index 839110669f..25843a0e21 100644 --- a/interface/web/sites/lib/lang/es_web_childdomain.lng +++ b/interface/web/sites/lib/lang/es_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Sin flag'; $wb['domain_error_wildcard'] = 'No se permiten subdominios comodÃn.'; $wb['proxy_directives_txt'] = 'Directivas de Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Fragmentos de directivas de proxy disponibles:'; -$wb['error_proxy_requires_url'] = 'Tipo de redirección \"proxy\" necesita una URL como ruta de redirección.'; +$wb['error_proxy_requires_url'] = 'Tipo de redirección \\"proxy\\" necesita una URL como ruta de redirección.'; $wb['backup_interval_txt'] = 'Intervalo de copia de seguridad'; $wb['backup_copies_txt'] = 'Número de copias de seguridad'; $wb['ssl_key_txt'] = 'Clave SSL'; @@ -104,7 +104,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; +$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; $wb['generate_password_txt'] = 'Generar contraseña'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/sites/lib/lang/es_web_subdomain.lng b/interface/web/sites/lib/lang/es_web_subdomain.lng index 8bae76742c..2221a749c2 100644 --- a/interface/web/sites/lib/lang/es_web_subdomain.lng +++ b/interface/web/sites/lib/lang/es_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 4a2b17cab7..f98c02db15 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -102,7 +102,7 @@ $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; +$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \\"ondemand\\". Si seleccionas \\"ondemand\\" para una versión de PHP anterior, ¡PHP dejará de funcionar!'; $wb['generate_password_txt'] = 'Generar contraseña'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/sites/lib/lang/fi.lng b/interface/web/sites/lib/lang/fi.lng index 5adab57775..ebf94bc190 100755 --- a/interface/web/sites/lib/lang/fi.lng +++ b/interface/web/sites/lib/lang/fi.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/fi_aps.lng b/interface/web/sites/lib/lang/fi_aps.lng index cc8dc83588..d78701f272 100644 --- a/interface/web/sites/lib/lang/fi_aps.lng +++ b/interface/web/sites/lib/lang/fi_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng index 98c41088a1..5105ba3f2e 100755 --- a/interface/web/sites/lib/lang/fi_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/fi_web_subdomain.lng b/interface/web/sites/lib/lang/fi_web_subdomain.lng index 7500fb7a61..7fe7103905 100644 --- a/interface/web/sites/lib/lang/fi_web_subdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/fr.lng b/interface/web/sites/lib/lang/fr.lng index c914ef002f..9acee9d061 100644 --- a/interface/web/sites/lib/lang/fr.lng +++ b/interface/web/sites/lib/lang/fr.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Packages disponibles'; $wb['Installed packages'] = 'Packages installés'; $wb['Update Packagelist'] = 'Mise à jour de la liste des packages'; $wb['Subdomain (Vhost)'] = 'Sous-domaine (Vhost)'; -$wb['error_proxy_requires_url'] = 'Type de redirection \"proxy\" nécessite une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Type de redirection \\"proxy\\" nécessite une URL comme chemin de redirection.'; ?> diff --git a/interface/web/sites/lib/lang/fr_aps.lng b/interface/web/sites/lib/lang/fr_aps.lng index 0f067e78bc..6beef9939f 100644 --- a/interface/web/sites/lib/lang/fr_aps.lng +++ b/interface/web/sites/lib/lang/fr_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Le dossier d’installation choisi est invalid $wb['error_license_agreement'] = 'Avant de continuer, vous devez accepter les conditions d’utilisation (licence).'; $wb['error_no_database_pw'] = 'Vous n’avez pas renseigné de mot de passe BDD valide.'; $wb['error_short_database_pw'] = 'Veuillez saisir un mot de passe BDD plus long.'; -$wb['error_no_value_for'] = 'Le champ \"%s\" ne peut pas être vide.'; -$wb['error_short_value_for'] = 'Le champ \"%s\" nécessite une valeur plus longue.'; -$wb['error_long_value_for'] = 'Le champ \"%s\" nécessite une valeur plus courte.'; -$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \"%s\".'; -$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \"%s\" est invalide.'; -$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \"%s\" est invalide.'; -$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \"%s\" est invalide.'; +$wb['error_no_value_for'] = 'Le champ \\"%s\\" ne peut pas être vide.'; +$wb['error_short_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus longue.'; +$wb['error_long_value_for'] = 'Le champ \\"%s\\" nécessite une valeur plus courte.'; +$wb['error_inv_value_for'] = 'Vous avez saisi une valeur invalide pour le champ \\"%s\\".'; +$wb['error_inv_email_for'] = 'L’adresse e-mail saisie pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_domain_for'] = 'Le domaine saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_integer_for'] = 'Le nombre saisi pour le champ \\"%s\\" est invalide.'; +$wb['error_inv_float_for'] = 'La décimale saisie pour le champ \\"%s\\" est invalide.'; $wb['error_used_location'] = 'Le chemin de destination contient déjà un package d’installation.'; $wb['installation_task_txt'] = 'Installation prévue'; $wb['installation_error_txt'] = 'Erreur d’installation'; diff --git a/interface/web/sites/lib/lang/fr_web_childdomain.lng b/interface/web/sites/lib/lang/fr_web_childdomain.lng index f33ca58f09..1be206e122 100644 --- a/interface/web/sites/lib/lang/fr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/fr_web_subdomain.lng b/interface/web/sites/lib/lang/fr_web_subdomain.lng index 6dfc914a0a..957dfbfed6 100644 --- a/interface/web/sites/lib/lang/fr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Aucun flag'; $wb['domain_error_wildcard'] = 'Les sous-domaines joker ne sont pas autorisés.'; $wb['proxy_directives_txt'] = 'Directives pour les Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Directives pour les Proxy Snippets disponibles :'; -$wb['error_proxy_requires_url'] = 'Les redirections de type \"proxy\" nécessitent une URL comme chemin de redirection.'; +$wb['error_proxy_requires_url'] = 'Les redirections de type \\"proxy\\" nécessitent une URL comme chemin de redirection.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/hr.lng b/interface/web/sites/lib/lang/hr.lng index 4c53c89843..b6af1225ac 100644 --- a/interface/web/sites/lib/lang/hr.lng +++ b/interface/web/sites/lib/lang/hr.lng @@ -30,6 +30,6 @@ $wb['Available packages'] = 'Dostupni paketi'; $wb['Installed packages'] = 'Instalirani paketi'; $wb['Update Packagelist'] = 'Osvježi listu paketa'; $wb['Subdomain (Vhost)'] = 'Poddomena (Vhost)'; -$wb['error_proxy_requires_url'] = '\"proxy\" redirekcija zahtijeva URL za redirekcijsku putanju.'; +$wb['error_proxy_requires_url'] = '\\"proxy\\" redirekcija zahtijeva URL za redirekcijsku putanju.'; $wb['Domain'] = 'Domain'; ?> diff --git a/interface/web/sites/lib/lang/hr_aps.lng b/interface/web/sites/lib/lang/hr_aps.lng index 6169342e71..79d31cf7fa 100644 --- a/interface/web/sites/lib/lang/hr_aps.lng +++ b/interface/web/sites/lib/lang/hr_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Instalacija u postupku'; $wb['installation_error_txt'] = 'Instalacijska greÅ¡ka'; diff --git a/interface/web/sites/lib/lang/hr_web_childdomain.lng b/interface/web/sites/lib/lang/hr_web_childdomain.lng index f0e69f24f8..99df0d2fdf 100644 --- a/interface/web/sites/lib/lang/hr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/hr_web_subdomain.lng b/interface/web/sites/lib/lang/hr_web_subdomain.lng index 18fe4630a4..76d7f39571 100644 --- a/interface/web/sites/lib/lang/hr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Bez markiranja'; $wb['domain_error_wildcard'] = 'Wildcard poddomene nisu dozvoljene.'; $wb['proxy_directives_txt'] = 'Proxy direktive'; $wb['available_proxy_directive_snippets_txt'] = 'Dostupne proxy direktive:'; -$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \"proxy\" zahtjeva URL kao redirekcijsku putanju.'; +$wb['error_proxy_requires_url'] = 'Vrsta redirekcije \\"proxy\\" zahtjeva URL kao redirekcijsku putanju.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/hu.lng b/interface/web/sites/lib/lang/hu.lng index 1a3e31d3f9..2c156a4775 100644 --- a/interface/web/sites/lib/lang/hu.lng +++ b/interface/web/sites/lib/lang/hu.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/hu_aps.lng b/interface/web/sites/lib/lang/hu_aps.lng index 9330a1fb45..88708732df 100644 --- a/interface/web/sites/lib/lang/hu_aps.lng +++ b/interface/web/sites/lib/lang/hu_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/hu_web_childdomain.lng b/interface/web/sites/lib/lang/hu_web_childdomain.lng index aa554d4bc4..5ac19c3bbc 100644 --- a/interface/web/sites/lib/lang/hu_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/hu_web_subdomain.lng b/interface/web/sites/lib/lang/hu_web_subdomain.lng index 79c9ecc700..84874b22c5 100644 --- a/interface/web/sites/lib/lang/hu_web_subdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for ex $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/id.lng b/interface/web/sites/lib/lang/id.lng index 4fdae1813f..c8510df6cb 100644 --- a/interface/web/sites/lib/lang/id.lng +++ b/interface/web/sites/lib/lang/id.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/id_aps.lng b/interface/web/sites/lib/lang/id_aps.lng index 6f6d0bced2..b8c9af2152 100644 --- a/interface/web/sites/lib/lang/id_aps.lng +++ b/interface/web/sites/lib/lang/id_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/id_web_childdomain.lng b/interface/web/sites/lib/lang/id_web_childdomain.lng index 2b97dc223a..d5fd9711a4 100644 --- a/interface/web/sites/lib/lang/id_web_childdomain.lng +++ b/interface/web/sites/lib/lang/id_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/id_web_subdomain.lng b/interface/web/sites/lib/lang/id_web_subdomain.lng index 7f51be8e44..c2d007e693 100644 --- a/interface/web/sites/lib/lang/id_web_subdomain.lng +++ b/interface/web/sites/lib/lang/id_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/it.lng b/interface/web/sites/lib/lang/it.lng index 2237545be9..77473bd0f8 100644 --- a/interface/web/sites/lib/lang/it.lng +++ b/interface/web/sites/lib/lang/it.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Pacchetti disponibili'; $wb['Installed packages'] = 'Pacchetti Installati'; $wb['Update Packagelist'] = 'Aggiorna Elenco Pacchetti'; $wb['Subdomain (Vhost)'] = 'Sottodominio (Vhost)'; -$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso del reinderizzamento.'; +$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso del reinderizzamento.'; ?> diff --git a/interface/web/sites/lib/lang/it_aps.lng b/interface/web/sites/lib/lang/it_aps.lng index ade7808616..0a6365f98f 100644 --- a/interface/web/sites/lib/lang/it_aps.lng +++ b/interface/web/sites/lib/lang/it_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'La cartella di installazione fornita non è va $wb['error_license_agreement'] = 'Per poter proseguire è necessario che prendi visione ed accetti l accordi di licenza.'; $wb['error_no_database_pw'] = 'La password fornita non è valida.'; $wb['error_short_database_pw'] = 'Per favore scegli una password di database più lunga.'; -$wb['error_no_value_for'] = 'Il campo \"%s\" non può essere vuoto.'; -$wb['error_short_value_for'] = 'Il campo \"%s\" richiede un valore immesso più lungo.'; -$wb['error_long_value_for'] = 'Il campo \"%s\" richiede un valore immesso più corto.'; -$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \"%s\".'; -$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \"%s\".'; -$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \"%s\".'; -$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo \"%s\".'; -$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \"%s\".'; +$wb['error_no_value_for'] = 'Il campo \\"%s\\" non può essere vuoto.'; +$wb['error_short_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più lungo.'; +$wb['error_long_value_for'] = 'Il campo \\"%s\\" richiede un valore immesso più corto.'; +$wb['error_inv_value_for'] = 'Hai inserito un valore non valido per il campo \\"%s\\".'; +$wb['error_inv_email_for'] = 'Hai inserito un indirizzo email non valido per il campo \\"%s\\".'; +$wb['error_inv_domain_for'] = 'Hai inserito un dominio non valido per il campo \\"%s\\".'; +$wb['error_inv_integer_for'] = 'Hai inserito un numero non valido per il campo \\"%s\\".'; +$wb['error_inv_float_for'] = 'Hai inserito un numero di floating point non valido per il campo \\"%s\\".'; $wb['error_used_location'] = 'L installazione della patch contiene già un pacchetto di installazione.'; $wb['installation_task_txt'] = 'Installazione pianificata'; $wb['installation_error_txt'] = 'Errore di installazione'; diff --git a/interface/web/sites/lib/lang/it_web_childdomain.lng b/interface/web/sites/lib/lang/it_web_childdomain.lng index edd32aa6db..3a214e298e 100644 --- a/interface/web/sites/lib/lang/it_web_childdomain.lng +++ b/interface/web/sites/lib/lang/it_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/it_web_subdomain.lng b/interface/web/sites/lib/lang/it_web_subdomain.lng index 0019304914..956b5c3be0 100644 --- a/interface/web/sites/lib/lang/it_web_subdomain.lng +++ b/interface/web/sites/lib/lang/it_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Non sono ammessi caratteri jolly per i sottodomini.'; $wb['proxy_directives_txt'] = 'Direttive Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Snippets Direttive Proxy disponibili:'; -$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \"proxy\" richiede una URL come percorso di reinderizzamento.'; +$wb['error_proxy_requires_url'] = 'Tipo reinderizzamento \\"proxy\\" richiede una URL come percorso di reinderizzamento.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ja.lng b/interface/web/sites/lib/lang/ja.lng index 470ec2baec..920064bc5e 100644 --- a/interface/web/sites/lib/lang/ja.lng +++ b/interface/web/sites/lib/lang/ja.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ja_aps.lng b/interface/web/sites/lib/lang/ja_aps.lng index 91f8ad102c..dc6b22edf7 100644 --- a/interface/web/sites/lib/lang/ja_aps.lng +++ b/interface/web/sites/lib/lang/ja_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ja_web_childdomain.lng b/interface/web/sites/lib/lang/ja_web_childdomain.lng index fe885c8c3e..d59d7bbda5 100644 --- a/interface/web/sites/lib/lang/ja_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ja_web_subdomain.lng b/interface/web/sites/lib/lang/ja_web_subdomain.lng index f77c98444e..5eb45907ea 100644 --- a/interface/web/sites/lib/lang/ja_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/nl.lng b/interface/web/sites/lib/lang/nl.lng index 89a4caa109..8e07a1844a 100644 --- a/interface/web/sites/lib/lang/nl.lng +++ b/interface/web/sites/lib/lang/nl.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Beschikbare pakketten'; $wb['Installed packages'] = 'Geïnstalleerde pakketten'; $wb['Update Packagelist'] = 'Pakkettenlijst bijwerken'; $wb['Subdomain (Vhost)'] = 'Subdomein (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/nl_aps.lng b/interface/web/sites/lib/lang/nl_aps.lng index dfd852dcd0..c0adacee99 100644 --- a/interface/web/sites/lib/lang/nl_aps.lng +++ b/interface/web/sites/lib/lang/nl_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/nl_web_childdomain.lng b/interface/web/sites/lib/lang/nl_web_childdomain.lng index 4c5b3dc2ad..e99616ce11 100644 --- a/interface/web/sites/lib/lang/nl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/nl_web_subdomain.lng b/interface/web/sites/lib/lang/nl_web_subdomain.lng index c644d8113d..2f4412afba 100644 --- a/interface/web/sites/lib/lang/nl_web_subdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Geen flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomeinen zijn niet toegestaan.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port niet correct.'; diff --git a/interface/web/sites/lib/lang/pl_aps.lng b/interface/web/sites/lib/lang/pl_aps.lng index 398c74e4c0..c17bbca532 100644 --- a/interface/web/sites/lib/lang/pl_aps.lng +++ b/interface/web/sites/lib/lang/pl_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'Instalacja w podanym folderze jest niemożliwa $wb['error_license_agreement'] = 'Aby kontynuować musisz zaakceptować umowÄ™ licencyjnÄ….'; $wb['error_no_database_pw'] = 'Nie podaÅ‚eÅ› prawidÅ‚owego hasÅ‚a do bazy danych.'; $wb['error_short_database_pw'] = 'Wybierz dÅ‚uższe hasÅ‚o do bazy.'; -$wb['error_no_value_for'] = 'Pole \"%s\" nie może być puste'; -$wb['error_short_value_for'] = 'Pole \"%s\" wymaga dÅ‚uższej wartoÅ›ci'; -$wb['error_long_value_for'] = 'Pole \"%s\" wymaga krótszej wartoÅ›ci'; -$wb['error_inv_value_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… wartość w polu \"%s\"'; -$wb['error_inv_email_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owy adres email w polu \"%s\"'; -$wb['error_inv_domain_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… domenÄ™ w polu \"%s\"'; -$wb['error_inv_integer_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \"%s\"'; -$wb['error_inv_float_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \"%s\"'; +$wb['error_no_value_for'] = 'Pole \\"%s\\" nie może być puste'; +$wb['error_short_value_for'] = 'Pole \\"%s\\" wymaga dÅ‚uższej wartoÅ›ci'; +$wb['error_long_value_for'] = 'Pole \\"%s\\" wymaga krótszej wartoÅ›ci'; +$wb['error_inv_value_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… wartość w polu \\"%s\\"'; +$wb['error_inv_email_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owy adres email w polu \\"%s\\"'; +$wb['error_inv_domain_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… domenÄ™ w polu \\"%s\\"'; +$wb['error_inv_integer_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \\"%s\\"'; +$wb['error_inv_float_for'] = 'WprowadziÅ‚eÅ› nieprawidÅ‚owÄ… liczbÄ™ w polu \\"%s\\"'; $wb['error_used_location'] = 'Åšcieżka instalacji zawiera już zainstalowany pakiet.'; $wb['installation_task_txt'] = 'Instalacja planowana'; $wb['installation_error_txt'] = 'BÅ‚Ä…d instalacji'; diff --git a/interface/web/sites/lib/lang/pt.lng b/interface/web/sites/lib/lang/pt.lng index 6cd9798fa1..c1fca015b8 100644 --- a/interface/web/sites/lib/lang/pt.lng +++ b/interface/web/sites/lib/lang/pt.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/pt_aps.lng b/interface/web/sites/lib/lang/pt_aps.lng index 33c4e87266..c17ef00914 100644 --- a/interface/web/sites/lib/lang/pt_aps.lng +++ b/interface/web/sites/lib/lang/pt_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/pt_web_childdomain.lng b/interface/web/sites/lib/lang/pt_web_childdomain.lng index 688af77bd2..4cbc032c19 100644 --- a/interface/web/sites/lib/lang/pt_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/pt_web_subdomain.lng b/interface/web/sites/lib/lang/pt_web_subdomain.lng index 8f2fd70e46..8a4f1440fd 100644 --- a/interface/web/sites/lib/lang/pt_web_subdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ro.lng b/interface/web/sites/lib/lang/ro.lng index 418585ea55..f674e91b80 100644 --- a/interface/web/sites/lib/lang/ro.lng +++ b/interface/web/sites/lib/lang/ro.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/ro_aps.lng b/interface/web/sites/lib/lang/ro_aps.lng index 3ff130f57e..881c146a4d 100644 --- a/interface/web/sites/lib/lang/ro_aps.lng +++ b/interface/web/sites/lib/lang/ro_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/ro_web_childdomain.lng b/interface/web/sites/lib/lang/ro_web_childdomain.lng index 5f56786510..30f83e7283 100644 --- a/interface/web/sites/lib/lang/ro_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/ro_web_subdomain.lng b/interface/web/sites/lib/lang/ro_web_subdomain.lng index 436acc4cf9..f36685be8a 100644 --- a/interface/web/sites/lib/lang/ro_web_subdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/ru.lng b/interface/web/sites/lib/lang/ru.lng index 6316c21d17..dbf2926043 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 3dd4ad0a8a..d2225358c1 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 b931b715f2..0f5eaf3180 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 df927317ca..7de99a11dc 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 49905e77ea..af71669a47 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ðет флага'; $wb['domain_error_wildcard'] = 'Wildcard поддомены не допуÑкаютÑÑ.'; $wb['proxy_directives_txt'] = 'Директивы прокÑи'; $wb['available_proxy_directive_snippets_txt'] = 'ДоÑтупные заготовки директив Proxy:'; -$wb['error_proxy_requires_url'] = 'Тип редиректа \"proxy\" требует URL в качеÑтве пути перенаправлениÑ.'; +$wb['error_proxy_requires_url'] = 'Тип редиректа \\"proxy\\" требует URL в качеÑтве пути перенаправлениÑ.'; $wb['backup_interval_txt'] = 'Интервал резервного копированиÑ'; $wb['backup_copies_txt'] = 'КоличеÑтво резервных копий'; $wb['ssl_key_txt'] = 'SSL-ключ'; diff --git a/interface/web/sites/lib/lang/ru_web_subdomain.lng b/interface/web/sites/lib/lang/ru_web_subdomain.lng index 46203a1815..376c789430 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/se.lng b/interface/web/sites/lib/lang/se.lng index a63670545c..6b44cdcf7c 100644 --- a/interface/web/sites/lib/lang/se.lng +++ b/interface/web/sites/lib/lang/se.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Tillgängliga paket'; $wb['Installed packages'] = 'Installerade paket'; $wb['Update Packagelist'] = 'Uppdatera paketlista'; $wb['Subdomain (Vhost)'] = 'Underdomän (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/se_aps.lng b/interface/web/sites/lib/lang/se_aps.lng index f399880dea..3b32095d62 100644 --- a/interface/web/sites/lib/lang/se_aps.lng +++ b/interface/web/sites/lib/lang/se_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Installation planerad'; $wb['installation_error_txt'] = 'Installationsfel'; diff --git a/interface/web/sites/lib/lang/se_web_childdomain.lng b/interface/web/sites/lib/lang/se_web_childdomain.lng index 52fba020aa..eff6791c65 100644 --- a/interface/web/sites/lib/lang/se_web_childdomain.lng +++ b/interface/web/sites/lib/lang/se_web_childdomain.lng @@ -43,7 +43,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/se_web_subdomain.lng b/interface/web/sites/lib/lang/se_web_subdomain.lng index a2d73c012d..ec784641e8 100644 --- a/interface/web/sites/lib/lang/se_web_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'Ingan flagga'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/sk.lng b/interface/web/sites/lib/lang/sk.lng index 401ad2c65d..fabf52fda0 100644 --- a/interface/web/sites/lib/lang/sk.lng +++ b/interface/web/sites/lib/lang/sk.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Available packages'; $wb['Installed packages'] = 'Installed packages'; $wb['Update Packagelist'] = 'Update Packagelist'; $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; ?> diff --git a/interface/web/sites/lib/lang/sk_aps.lng b/interface/web/sites/lib/lang/sk_aps.lng index 2b3dc9a0ff..d6e6c7f4ca 100644 --- a/interface/web/sites/lib/lang/sk_aps.lng +++ b/interface/web/sites/lib/lang/sk_aps.lng @@ -38,14 +38,14 @@ $wb['error_inv_main_location'] = 'The given install location folder is invalid.' $wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.'; $wb['error_no_database_pw'] = 'You have provided no valid database password.'; $wb['error_short_database_pw'] = 'Please choose a longer database password.'; -$wb['error_no_value_for'] = 'The field \"%s\" must not be empty.'; -$wb['error_short_value_for'] = 'The field \"%s\" requires a longer input value.'; -$wb['error_long_value_for'] = 'The field \"%s\" requires a shorter input value.'; -$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \"%s\".'; -$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \"%s\".'; -$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \"%s\".'; -$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \"%s\".'; -$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \"%s\".'; +$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.'; +$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.'; +$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.'; +$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".'; +$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".'; +$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".'; +$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".'; +$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".'; $wb['error_used_location'] = 'The installation path already contains a package installation.'; $wb['installation_task_txt'] = 'Install planned'; $wb['installation_error_txt'] = 'Install error'; diff --git a/interface/web/sites/lib/lang/sk_web_childdomain.lng b/interface/web/sites/lib/lang/sk_web_childdomain.lng index c91bee49ac..e0d26667bc 100644 --- a/interface/web/sites/lib/lang/sk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/sk_web_subdomain.lng b/interface/web/sites/lib/lang/sk_web_subdomain.lng index d44bb27bd6..f6bcffd901 100644 --- a/interface/web/sites/lib/lang/sk_web_subdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng index 4f8620c34a..d0570f6c12 100644 --- a/interface/web/sites/lib/lang/tr.lng +++ b/interface/web/sites/lib/lang/tr.lng @@ -31,5 +31,5 @@ $wb['Available packages'] = 'Kullanılabilecek Paketler'; $wb['Installed packages'] = 'Yüklü Paketler'; $wb['Update Packagelist'] = 'Güncelleme Paketi Listesi'; $wb['Subdomain (Vhost)'] = 'Alt alan adı (SSunucu)'; -$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; ?> diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng index f0eea59cba..1c6ccd49a6 100644 --- a/interface/web/sites/lib/lang/tr_aps.lng +++ b/interface/web/sites/lib/lang/tr_aps.lng @@ -40,14 +40,14 @@ $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü ge $wb['error_license_agreement'] = 'Devam etmek için lisans anlaÅŸmasını onaylamalısınız.'; $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.'; $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.'; -$wb['error_no_value_for'] = '\"%s\" alanı boÅŸ olamaz.'; -$wb['error_short_value_for'] = '\"%s\" alanına daha uzun bir deÄŸer yazılmalıdır.'; -$wb['error_long_value_for'] = '\"%s\" alanına daha kısa bir deÄŸer yazılmalıdır.'; -$wb['error_inv_value_for'] = '\"%s\" alanına yazılan deÄŸer geçersiz.'; -$wb['error_inv_email_for'] = '\"%s\" alanına yazılan e-posta adresi geçersiz.'; -$wb['error_inv_domain_for'] = '\"%s\" alanına yazılan alan adı geçersiz.'; -$wb['error_inv_integer_for'] = '\"%s\" alanına yazılan sayı geçersiz.'; -$wb['error_inv_float_for'] = '\"%s\" alanına yazılan küsuratlı sayı geçersiz.'; +$wb['error_no_value_for'] = '\\"%s\\" alanı boÅŸ olamaz.'; +$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir deÄŸer yazılmalıdır.'; +$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir deÄŸer yazılmalıdır.'; +$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan deÄŸer geçersiz.'; +$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.'; +$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.'; +$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.'; +$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.'; $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiÅŸ bir paket var.'; $wb['installation_task_txt'] = 'Yükleme planlandı'; $wb['installation_error_txt'] = 'Yükleme hatası'; diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index 5d68e809b3..e11c6a92b5 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -42,7 +42,7 @@ $wb['no_flag_txt'] = 'No flag'; $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.'; +$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; $wb['backup_interval_txt'] = 'Backup interval'; $wb['backup_copies_txt'] = 'Number of backup copies'; $wb['ssl_key_txt'] = 'SSL Key'; diff --git a/interface/web/sites/lib/lang/tr_web_subdomain.lng b/interface/web/sites/lib/lang/tr_web_subdomain.lng index c6e28bc6fa..188b257589 100644 --- a/interface/web/sites/lib/lang/tr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_subdomain.lng @@ -42,7 +42,7 @@ $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; $wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; -$wb['error_proxy_requires_url'] = '\"Vekil Sunucu\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; $wb['http_port_txt'] = 'HTTP Port'; $wb['https_port_txt'] = 'HTTPS Port'; $wb['http_port_error_regex'] = 'HTTP Port invalid.'; diff --git a/interface/web/vm/lib/lang/dk_openvz_template.lng b/interface/web/vm/lib/lang/dk_openvz_template.lng index 7016f41a67..9de4a6fd92 100644 --- a/interface/web/vm/lib/lang/dk_openvz_template.lng +++ b/interface/web/vm/lib/lang/dk_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Total størrelse af TCP send buffere.'; $wb['tcprcvbuf_desc_txt'] = 'Total størrelse af TCP modtage buffere.'; $wb['othersockbuf_desc_txt'] = 'Total størrelse af UNIX-domæne sokel buffere, UDP og andre datagram protokoller send buffere.'; $wb['dgramrcvbuf_desc_txt'] = 'Modtage buffere af UDP og andre datagram protokoller.'; -$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \"over-booked\" (out-of-memory kill guarantee), i sider.'; +$wb['oomguarpages_desc_txt'] = 'Den garanterede mængde hukommelse for det tilfælde hukommelsen er \\"over-booked\\" (out-of-memory kill guarantee), i sider.'; $wb['privvmpages_desc_txt'] = 'Hukommelses grænse tildeling, i sider.'; $wb['lockedpages_desc_txt'] = 'Proces-sider uden tiladelse til at blive byttet ud (pages locked by mlock(2)).'; $wb['shmpages_desc_txt'] = 'Total størrelse af delt hukommelse (IPC, delt anonyme afbildninger og tmpfs objekter), i sider.'; diff --git a/interface/web/vm/lib/lang/es_openvz_template.lng b/interface/web/vm/lib/lang/es_openvz_template.lng index 1868240d3e..1abd562ed5 100644 --- a/interface/web/vm/lib/lang/es_openvz_template.lng +++ b/interface/web/vm/lib/lang/es_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'Tamaño total de los buffers de envÃo TCP.'; $wb['tcprcvbuf_desc_txt'] = 'Tamaño total de los buffers de recepción TCP.'; $wb['othersockbuf_desc_txt'] = 'Tamaño total de buffers de socket UNIX-domain, UDP y otros protocolos de envÃo para buffers de datagramas.'; $wb['dgramrcvbuf_desc_txt'] = 'Recibir buffers de UDP y otros protocolos de datagrama.'; -$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \"over-booked\" (garantizado para out-of-memory kill), en las páginas.'; +$wb['oomguarpages_desc_txt'] = 'La cantidad de memoria garantizada en caso de que la memoria \\"over-booked\\" (garantizado para out-of-memory kill), en las páginas.'; $wb['privvmpages_desc_txt'] = 'LÃmite de asignación de memoria en las páginas.'; $wb['lockedpages_desc_txt'] = 'Páginas de procesos sin permisos para sacar del swap (páginas bloqueadas por mlock(2)).'; $wb['shmpages_desc_txt'] = 'Tamaño total de memoria compatida (IPC, asignaciones anónimas compartidas y objetos tmpfs), en las páginas.'; diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng index 2621212862..fb1452e885 100644 --- a/interface/web/vm/lib/lang/tr_openvz_template.lng +++ b/interface/web/vm/lib/lang/tr_openvz_template.lng @@ -44,7 +44,7 @@ $wb['tcpsndbuf_desc_txt'] = 'TCP gönderme arabelleÄŸinin toplam boyutu.'; $wb['tcprcvbuf_desc_txt'] = 'TCP alma arabelleÄŸinin toplam boyutu.'; $wb['othersockbuf_desc_txt'] = 'UNIX alan adı soket arabelleÄŸinin toplam boyutu, UDP ve diÄŸer datagram iletiÅŸim kuralları gönderme ara bellekleri.'; $wb['dgramrcvbuf_desc_txt'] = 'UDP ve diÄŸer datagram iletiÅŸim kuralları alma ara bellekleri.'; -$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taÅŸması durumlarında garanti edilen bellek miktarı\" (bellek bitti boÅŸaltma garantisi).'; +$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taÅŸması durumlarında garanti edilen bellek miktarı\\" (bellek bitti boÅŸaltma garantisi).'; $wb['privvmpages_desc_txt'] = 'Bellek sayfası cinsinden ayrılacak bellek sınırı.'; $wb['lockedpages_desc_txt'] = 'Ä°ÅŸlem sayfaları takasına izin verilmez (mlock(2) ile kilitlenmiÅŸ sayfalar).'; $wb['shmpages_desc_txt'] = 'Bellek sayfası cinsinden, paylaşılan belleÄŸin toplam boyutu (IPC, paylaşılan anonim haritalama ve tmpfs nesneleri).'; -- GitLab From 9f745c2b9d37a496900e44565c2b47ce48802655 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 30 Jul 2019 22:16:39 +0200 Subject: [PATCH 132/571] Improve comments --- interface/lib/classes/remote.d/mail.inc.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index bda7e861ed..477743dfc3 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -710,7 +710,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* czarna lista e-mail + //* Add a new spamfilter blacklist public function mail_spamfilter_blacklist_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_add')) @@ -810,7 +810,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* polityki filtrów spamu e-mail + //* Add a spam policy public function mail_policy_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_policy_add')) @@ -860,7 +860,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* fetchmail + //* Add fetchmail public function mail_fetchmail_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_fetchmail_add')) @@ -960,7 +960,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* wpisy biaÅ‚ej listy + //* Add blacklist public function mail_blacklist_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_blacklist_add')) @@ -1010,7 +1010,7 @@ class remoting_mail extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - //* wpisy filtrow e-mail + //* Add mail filter public function mail_filter_add($session_id, $client_id, $params) { if (!$this->checkPerm($session_id, 'mail_filter_add')) -- GitLab From c830e6e714737f97d149d93d63dd8c745d89ffe7 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 30 Jul 2019 22:17:15 +0200 Subject: [PATCH 133/571] codestyle --- interface/lib/classes/validate_autoresponder.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/validate_autoresponder.inc.php b/interface/lib/classes/validate_autoresponder.inc.php index 8fefa33b30..25db68bdd9 100755 --- a/interface/lib/classes/validate_autoresponder.inc.php +++ b/interface/lib/classes/validate_autoresponder.inc.php @@ -53,8 +53,8 @@ class validate_autoresponder extends validate_datetime // Parse date $datetimeformat = (isset($app->remoting_lib) ? $app->remoting_lib->datetimeformat : $app->tform->datetimeformat); - $start_date_array = date_parse_from_format($datetimeformat,$start_date); - $end_date_array = date_parse_from_format($datetimeformat,$field_value); + $start_date_array = date_parse_from_format($datetimeformat, $start_date); + $end_date_array = date_parse_from_format($datetimeformat, $field_value); //calculate timestamps $start_date_tstamp = mktime($start_date_array['hour'], $start_date_array['minute'], $start_date_array['second'], $start_date_array['month'], $start_date_array['day'], $start_date_array['year']); -- GitLab From c7c1671b0a180bfdf9fb032f8e23484541af5958 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 30 Jul 2019 22:18:02 +0200 Subject: [PATCH 134/571] Add extra field explanation --- remoting_client/API-docs/mail_spamfilter_blacklist_add.html | 2 +- remoting_client/API-docs/mail_spamfilter_user_add.html | 2 +- remoting_client/examples/mail_spamfilter_blacklist_add.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html index c45c5d60f0..198f7b6b23 100644 --- a/remoting_client/API-docs/mail_spamfilter_blacklist_add.html +++ b/remoting_client/API-docs/mail_spamfilter_blacklist_add.html @@ -21,7 +21,7 @@ <p class="headgrp">Parameters (in <span class="var">$params</span>): </p> <p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> <p class="margin"> wb (<span class="paratype">enum('W','B')</span>)</p> -<p class="margin"> rid (<span class="paratype">int(11)</span>)</p> +<p class="margin"> rid (<span class="paratype">int(11)</span>) An ID from the spamfilter_users table.</p> <p class="margin"> email (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> priority (<span class="paratype">tinyint(3)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> diff --git a/remoting_client/API-docs/mail_spamfilter_user_add.html b/remoting_client/API-docs/mail_spamfilter_user_add.html index c23a9dbd42..888c74ab70 100644 --- a/remoting_client/API-docs/mail_spamfilter_user_add.html +++ b/remoting_client/API-docs/mail_spamfilter_user_add.html @@ -24,7 +24,7 @@ <p class="margin"> policy_id (<span class="paratype">int(11)</span>)</p> <p class="margin"> email (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> fullname (<span class="paratype">varchar(64)</span>)</p> -<p class="margin"> local (<span class="paratype">varchar(1)</span>)</p> +<p class="margin"> local (<span class="paratype">varchar(1)</span>) 'Y' for a local account.</p> <p class="headgrp">Output: </p> <p class="margin"> Returns the ID of the newly added spamfilter user.</p> <!--<b>Output:</b> diff --git a/remoting_client/examples/mail_spamfilter_blacklist_add.php b/remoting_client/examples/mail_spamfilter_blacklist_add.php index d5768e2536..b5d8a7f80a 100644 --- a/remoting_client/examples/mail_spamfilter_blacklist_add.php +++ b/remoting_client/examples/mail_spamfilter_blacklist_add.php @@ -19,7 +19,7 @@ try { $params = array( 'server_id' => 1, 'wb' => 'B', - 'rid' => '', + 'rid' => '', // Fill in an ID from the spamfilter_users table. 'email' => 'hmmnoe@test.int', 'priority' => 1, 'active' => 'y' -- GitLab From 96416c321a42f10d1abdd10a5e00137a1f45bb1d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 30 Jul 2019 22:20:00 +0200 Subject: [PATCH 135/571] Add missing autoresponder_subject field in api docs --- remoting_client/API-docs/mail_user_add.html | 1 + remoting_client/examples/mail_user_add.php | 1 + 2 files changed, 2 insertions(+) diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html index b88ec706cc..88ab952e6a 100644 --- a/remoting_client/API-docs/mail_user_add.html +++ b/remoting_client/API-docs/mail_user_add.html @@ -36,6 +36,7 @@ <p class="margin"> autoresponder_start_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_end_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_text (<span class="paratype">mediumtext</span>)</p> +<p class="margin"> autoresponder_subject (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> move_junk (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> custom_mailfilter (<span class="paratype">mediumtext</span>)</p> <p class="margin"> postfix (<span class="paratype">enum('n','y')</span>)</p> diff --git a/remoting_client/examples/mail_user_add.php b/remoting_client/examples/mail_user_add.php index 3b7d240ecc..80a7358cf9 100644 --- a/remoting_client/examples/mail_user_add.php +++ b/remoting_client/examples/mail_user_add.php @@ -32,6 +32,7 @@ try { 'autoresponder_start_date' => '', 'autoresponder_end_date' => '', 'autoresponder_text' => 'hallo', + 'autoresponder_subject' => 'Out of office reply', 'move_junk' => 'n', 'custom_mailfilter' => 'spam', 'postfix' => 'n', -- GitLab From 0efec5c38a5d51634a2ea07437ae97bffa1fb274 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 2 Aug 2019 22:31:51 +0200 Subject: [PATCH 136/571] Wrap long query for readability --- install/tpl/mysql-virtual_policy_greylist.cf.master | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master index 00f504e082..55378b29ca 100644 --- a/install/tpl/mysql-virtual_policy_greylist.cf.master +++ b/install/tpl/mysql-virtual_policy_greylist.cf.master @@ -1,6 +1,10 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y' +query = SELECT 'greylisting' FROM + (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' + UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' + UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules + WHERE rules.greylisting = 'y' -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} -- GitLab From 1f46e8a23e2975631c6d8e924aedb2098fcaf481 Mon Sep 17 00:00:00 2001 From: Ales Seifert <ales@web4people.com.au> Date: Thu, 5 Sep 2019 09:19:47 +0200 Subject: [PATCH 137/571] updated to recognize newer Centos 7 releases & to recognize recent openSUSE even if not supported --- server/lib/classes/monitor_tools.inc.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index fefdbcd681..b2bd5ede30 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -249,6 +249,14 @@ class monitor_tools { $distver = '11.2'; $distid = 'opensuse112'; $distbaseid = 'opensuse'; + } elseif(stristr(file_get_contents('/etc/os-release'), 'opensuse')) { + $content = file_get_contents('/etc/os-release'); + preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name); + preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version); + $distname = is_array($name) ? $name[1][0] : 'openSUSE'; + $distver = is_array($version) ? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) : 'Unknown'; + $distid = 'opensuse112'; + $distbaseid = 'opensuse'; } else { $distname = 'openSUSE'; $distver = 'Unknown'; @@ -299,8 +307,9 @@ class monitor_tools { $distid = 'centos53'; $distbaseid = 'fedora'; } elseif(stristr($content, 'CentOS Linux release 7')) { + preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); $distname = 'CentOS'; - $distver = 'Unknown'; + $distver = is_array($version)? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) :'Unknown'; $distbaseid = 'fedora'; $var=explode(" ", $content); $var=explode(".", $var[3]); -- GitLab From 8f4ed6281c06fcb677a981c74e62560a9573f18f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sat, 20 Oct 2018 21:52:03 +0200 Subject: [PATCH 138/571] typo --- install/dist/tpl/gentoo/amavisd-ispconfig.conf.master | 2 +- install/tpl/amavisd_user_config.master | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master index 5e1c8ebba6..7e42c8a362 100644 --- a/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master +++ b/install/dist/tpl/gentoo/amavisd-ispconfig.conf.master @@ -67,7 +67,7 @@ $final_spam_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; -# Default settings, we st this very high to not filter aut emails accidently +# Default settings, we set this very high to not filter out emails accidentally $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 20.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master index 2738eac3a9..344ea9a152 100644 --- a/install/tpl/amavisd_user_config.master +++ b/install/tpl/amavisd_user_config.master @@ -49,7 +49,7 @@ $final_spam_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; -# Default settings, we st this very high to not filter aut emails accidently +# Default settings, we set this very high to not filter out emails accidentally $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 20.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 60.0; # add 'spam detected' headers at that level -- GitLab From 9e7a9eb1351f1d4eb23103fb5230caa5725645db Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 20 Jun 2019 13:53:49 +0200 Subject: [PATCH 139/571] Improve comments --- interface/lib/plugins/mail_user_filter_plugin.inc.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php index 5afd1c0044..26c0b02b83 100644 --- a/interface/lib/plugins/mail_user_filter_plugin.inc.php +++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php @@ -55,9 +55,9 @@ class mail_user_filter_plugin { /* - function to create the mail filter rule and insert it into the custom rules - field when a new mail filter is added or modified. - */ + * Render the mail filter rule in the desired format and insert it into the custom rules + * field when a new mail filter is added or modified. + */ function mail_user_filter_edit($event_name, $page_form) { global $app, $conf; @@ -91,6 +91,9 @@ class mail_user_filter_plugin { } + /* + * Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted + */ function mail_user_filter_del($event_name, $page_form) { global $app, $conf; -- GitLab From 92f977d3eec6b87aff217f83a4bd4baf2c899c56 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 20 Jun 2019 15:38:34 +0200 Subject: [PATCH 140/571] Consistent comments, German vs English Some were already in English, most were still in German. --- .../admin/form/directive_snippets.tform.php | 2 +- interface/web/admin/form/firewall.tform.php | 2 +- .../web/admin/form/remote_user.tform.php | 2 +- interface/web/admin/form/server.tform.php | 4 ++-- .../web/admin/form/server_config.tform.php | 22 +++++++++---------- interface/web/admin/form/server_php.tform.php | 4 ++-- .../web/admin/form/system_config.tform.php | 10 ++++----- interface/web/client/form/client.tform.php | 2 +- interface/web/client/form/domain.tform.php | 2 +- interface/web/client/form/reseller.tform.php | 2 +- interface/web/dns/form/dns_a.tform.php | 2 +- interface/web/dns/form/dns_aaaa.tform.php | 2 +- interface/web/dns/form/dns_alias.tform.php | 2 +- interface/web/dns/form/dns_cname.tform.php | 2 +- interface/web/dns/form/dns_dkim.tform.php | 2 +- interface/web/dns/form/dns_dmarc.tform.php | 2 +- interface/web/dns/form/dns_ds.tform.php | 2 +- interface/web/dns/form/dns_hinfo.tform.php | 2 +- interface/web/dns/form/dns_loc.tform.php | 2 +- interface/web/dns/form/dns_mx.tform.php | 2 +- interface/web/dns/form/dns_ns.tform.php | 2 +- interface/web/dns/form/dns_ptr.tform.php | 2 +- interface/web/dns/form/dns_rp.tform.php | 2 +- interface/web/dns/form/dns_slave.tform.php | 2 +- interface/web/dns/form/dns_soa.tform.php | 4 ++-- interface/web/dns/form/dns_spf.tform.php | 2 +- interface/web/dns/form/dns_srv.tform.php | 2 +- interface/web/dns/form/dns_template.tform.php | 2 +- interface/web/dns/form/dns_tlsa.tform.php | 2 +- interface/web/dns/form/dns_txt.tform.php | 2 +- .../web/help/form/support_message.tform.php | 2 +- interface/web/mail/form/mail_alias.tform.php | 2 +- .../web/mail/form/mail_aliasdomain.tform.php | 2 +- .../web/mail/form/mail_blacklist.tform.php | 2 +- .../mail/form/mail_content_filter.tform.php | 2 +- interface/web/mail/form/mail_domain.tform.php | 2 +- .../mail/form/mail_domain_catchall.tform.php | 2 +- .../web/mail/form/mail_forward.tform.php | 2 +- interface/web/mail/form/mail_get.tform.php | 2 +- .../mail/form/mail_relay_recipient.tform.php | 2 +- .../web/mail/form/mail_spamfilter.tform.php | 2 +- .../web/mail/form/mail_transport.tform.php | 2 +- interface/web/mail/form/mail_user.tform.php | 2 +- .../web/mail/form/mail_user_filter.tform.php | 2 +- .../web/mail/form/mail_whitelist.tform.php | 2 +- .../mail/form/spamfilter_blacklist.tform.php | 2 +- .../web/mail/form/spamfilter_config.tform.php | 6 ++--- .../web/mail/form/spamfilter_policy.tform.php | 6 ++--- .../web/mail/form/spamfilter_users.tform.php | 2 +- .../mail/form/spamfilter_whitelist.tform.php | 2 +- .../mailuser/form/mail_user_filter.tform.php | 2 +- interface/web/sites/form/cron.tform.php | 2 +- interface/web/sites/form/database.tform.php | 2 +- .../web/sites/form/database_user.tform.php | 2 +- interface/web/sites/form/ftp_user.tform.php | 6 ++--- interface/web/sites/form/shell_user.tform.php | 4 ++-- .../web/sites/form/web_childdomain.tform.php | 4 ++-- interface/web/sites/form/web_folder.tform.php | 2 +- .../web/sites/form/web_folder_user.tform.php | 2 +- .../web/sites/form/web_vhost_domain.tform.php | 12 +++++----- .../web/sites/form/webdav_user.tform.php | 2 +- 61 files changed, 91 insertions(+), 91 deletions(-) diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php index 544cb8b855..d451a50795 100644 --- a/interface/web/admin/form/directive_snippets.tform.php +++ b/interface/web/admin/form/directive_snippets.tform.php @@ -123,7 +123,7 @@ $form["tabs"]['directive_snippets'] = array ( 'separator' => ',', ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php index 75f190b3f0..e136b345be 100644 --- a/interface/web/admin/form/firewall.tform.php +++ b/interface/web/admin/form/firewall.tform.php @@ -103,7 +103,7 @@ $form["tabs"]['firewall'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php index 895d9418a9..3b920ccb4a 100644 --- a/interface/web/admin/form/remote_user.tform.php +++ b/interface/web/admin/form/remote_user.tform.php @@ -151,7 +151,7 @@ $form["tabs"]['remote_user'] = array ( ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php index 95dca6c33b..f205758a8d 100644 --- a/interface/web/admin/form/server.tform.php +++ b/interface/web/admin/form/server.tform.php @@ -135,7 +135,7 @@ $form["tabs"]['services'] = array ( 'value' => array(0 => 'No', 1 => 'Yes') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -160,7 +160,7 @@ $form["tabs"]['config'] = array ( 'maxlength' => '' ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 1c19d0928b..2663cdd0e0 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -413,7 +413,7 @@ $form["tabs"]['server'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -699,7 +699,7 @@ $form["tabs"]['mail'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -727,7 +727,7 @@ $form["tabs"]['getmail'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1408,7 +1408,7 @@ $form["tabs"]['web'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1498,7 +1498,7 @@ $form["tabs"]['dns'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1615,7 +1615,7 @@ $form["tabs"]['fastcgi'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1778,7 +1778,7 @@ $form["tabs"]['jailkit'] = array( 'maxlength' => '1000' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1841,7 +1841,7 @@ $form["tabs"]['ufw_firewall'] = array ( 'value' => array('low' => 'low', 'medium' => 'medium', 'high' => 'high') ) ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); @@ -1870,7 +1870,7 @@ $form["tabs"]['vlogger'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1928,7 +1928,7 @@ $form["tabs"]['cron'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -1972,7 +1972,7 @@ $form["tabs"]['rescue'] = array( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/server_php.tform.php b/interface/web/admin/form/server_php.tform.php index 67e54ec6b5..6d443e8d50 100644 --- a/interface/web/admin/form/server_php.tform.php +++ b/interface/web/admin/form/server_php.tform.php @@ -174,7 +174,7 @@ $form["tabs"]['php_fastcgi'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -230,7 +230,7 @@ $form["tabs"]['php_fpm'] = array( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 3fe7f0c7e3..cb37cbefdd 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -211,7 +211,7 @@ $form["tabs"]['sites'] = array ( 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -397,7 +397,7 @@ $form["tabs"]['mail'] = array ( 'name' => 'default_mailserver' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -433,7 +433,7 @@ $form["tabs"]['dns'] = array ( 'name' => 'default_slave_dnsserver' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -463,7 +463,7 @@ $form["tabs"]['domains'] = array ( 'value' => '' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -735,7 +735,7 @@ $form["tabs"]['misc'] = array ( 'value' => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5') ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 07ca813bf5..5b45ffb972 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -1518,7 +1518,7 @@ $form["tabs"]['ipaddress'] = array ( 'separator' => ';' ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php index 549617e713..2d3e1dbdd1 100644 --- a/interface/web/client/form/domain.tform.php +++ b/interface/web/client/form/domain.tform.php @@ -109,7 +109,7 @@ $form["tabs"]['domain'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index 6231895f28..174c18081d 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -1560,7 +1560,7 @@ $form["tabs"]['ipaddress'] = array ( 'separator' => ';' ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ) ); diff --git a/interface/web/dns/form/dns_a.tform.php b/interface/web/dns/form/dns_a.tform.php index d9ed197c51..aa00e9cb50 100644 --- a/interface/web/dns/form/dns_a.tform.php +++ b/interface/web/dns/form/dns_a.tform.php @@ -159,7 +159,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_aaaa.tform.php b/interface/web/dns/form/dns_aaaa.tform.php index 018657b838..05f52ca67b 100644 --- a/interface/web/dns/form/dns_aaaa.tform.php +++ b/interface/web/dns/form/dns_aaaa.tform.php @@ -152,7 +152,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_alias.tform.php b/interface/web/dns/form/dns_alias.tform.php index 55833b7ec7..0e82ee6da2 100644 --- a/interface/web/dns/form/dns_alias.tform.php +++ b/interface/web/dns/form/dns_alias.tform.php @@ -170,7 +170,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_cname.tform.php b/interface/web/dns/form/dns_cname.tform.php index d04c1d01af..290e83f54b 100644 --- a/interface/web/dns/form/dns_cname.tform.php +++ b/interface/web/dns/form/dns_cname.tform.php @@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_dkim.tform.php b/interface/web/dns/form/dns_dkim.tform.php index 550255da46..d47a622b0d 100644 --- a/interface/web/dns/form/dns_dkim.tform.php +++ b/interface/web/dns/form/dns_dkim.tform.php @@ -148,7 +148,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_dmarc.tform.php b/interface/web/dns/form/dns_dmarc.tform.php index a1ecaa40c8..625fddc98c 100644 --- a/interface/web/dns/form/dns_dmarc.tform.php +++ b/interface/web/dns/form/dns_dmarc.tform.php @@ -154,7 +154,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // End Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_ds.tform.php b/interface/web/dns/form/dns_ds.tform.php index fe8528f9c8..04ee9a1f0b 100644 --- a/interface/web/dns/form/dns_ds.tform.php +++ b/interface/web/dns/form/dns_ds.tform.php @@ -152,7 +152,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_hinfo.tform.php b/interface/web/dns/form/dns_hinfo.tform.php index 76c8c79dc0..972a07dff8 100644 --- a/interface/web/dns/form/dns_hinfo.tform.php +++ b/interface/web/dns/form/dns_hinfo.tform.php @@ -160,7 +160,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_loc.tform.php b/interface/web/dns/form/dns_loc.tform.php index 5749a866b2..37df8b24c9 100644 --- a/interface/web/dns/form/dns_loc.tform.php +++ b/interface/web/dns/form/dns_loc.tform.php @@ -157,7 +157,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_mx.tform.php b/interface/web/dns/form/dns_mx.tform.php index 9aace37ae7..3681c1a67a 100644 --- a/interface/web/dns/form/dns_mx.tform.php +++ b/interface/web/dns/form/dns_mx.tform.php @@ -169,7 +169,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_ns.tform.php b/interface/web/dns/form/dns_ns.tform.php index e20a7892bf..fdfb92b54f 100644 --- a/interface/web/dns/form/dns_ns.tform.php +++ b/interface/web/dns/form/dns_ns.tform.php @@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_ptr.tform.php b/interface/web/dns/form/dns_ptr.tform.php index 4cc0462522..cf50577764 100644 --- a/interface/web/dns/form/dns_ptr.tform.php +++ b/interface/web/dns/form/dns_ptr.tform.php @@ -168,7 +168,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_rp.tform.php b/interface/web/dns/form/dns_rp.tform.php index 5f4610a45b..fc85ad98e8 100644 --- a/interface/web/dns/form/dns_rp.tform.php +++ b/interface/web/dns/form/dns_rp.tform.php @@ -161,7 +161,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php index 2f287dbfd7..0b4457b700 100644 --- a/interface/web/dns/form/dns_slave.tform.php +++ b/interface/web/dns/form/dns_slave.tform.php @@ -144,7 +144,7 @@ $form["tabs"]['dns_slave'] = array ( 'value' => array(0 => 'N', 1 => 'Y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index 6fab657baa..e56211782a 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -289,7 +289,7 @@ $form["tabs"]['dns_soa'] = array ( 'maxlength' => '10000' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -304,7 +304,7 @@ $form["tabs"]['dns_records'] = array ( //################################# //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ), 'plugins' => array ( diff --git a/interface/web/dns/form/dns_spf.tform.php b/interface/web/dns/form/dns_spf.tform.php index ea2cf8310c..62b6b5283b 100644 --- a/interface/web/dns/form/dns_spf.tform.php +++ b/interface/web/dns/form/dns_spf.tform.php @@ -154,7 +154,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // End Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_srv.tform.php b/interface/web/dns/form/dns_srv.tform.php index ee0674fd19..5d1c106695 100644 --- a/interface/web/dns/form/dns_srv.tform.php +++ b/interface/web/dns/form/dns_srv.tform.php @@ -159,7 +159,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_template.tform.php b/interface/web/dns/form/dns_template.tform.php index 2c53f32ec1..5655c3e4cd 100644 --- a/interface/web/dns/form/dns_template.tform.php +++ b/interface/web/dns/form/dns_template.tform.php @@ -106,7 +106,7 @@ $form["tabs"]['template'] = array ( 'value' => array(0 => 'N', 1 => 'Y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_tlsa.tform.php b/interface/web/dns/form/dns_tlsa.tform.php index ef6f2a05b1..b86252cc31 100644 --- a/interface/web/dns/form/dns_tlsa.tform.php +++ b/interface/web/dns/form/dns_tlsa.tform.php @@ -148,7 +148,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/dns/form/dns_txt.tform.php b/interface/web/dns/form/dns_txt.tform.php index 3aee920dd9..564e26aa18 100644 --- a/interface/web/dns/form/dns_txt.tform.php +++ b/interface/web/dns/form/dns_txt.tform.php @@ -165,7 +165,7 @@ $form["tabs"]['dns'] = array ( 'maxlength' => '10' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/help/form/support_message.tform.php b/interface/web/help/form/support_message.tform.php index caf1a010c6..6313b4da67 100644 --- a/interface/web/help/form/support_message.tform.php +++ b/interface/web/help/form/support_message.tform.php @@ -136,7 +136,7 @@ $form["tabs"]['message'] = array ( 'maxlength' => '30' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_alias.tform.php b/interface/web/mail/form/mail_alias.tform.php index a004203622..9434ba3eec 100644 --- a/interface/web/mail/form/mail_alias.tform.php +++ b/interface/web/mail/form/mail_alias.tform.php @@ -137,7 +137,7 @@ $form["tabs"]['alias'] = array ( 'value' => array(1 => 'y', 0 => 'n') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_aliasdomain.tform.php b/interface/web/mail/form/mail_aliasdomain.tform.php index 66db01e5aa..a0d1024989 100644 --- a/interface/web/mail/form/mail_aliasdomain.tform.php +++ b/interface/web/mail/form/mail_aliasdomain.tform.php @@ -128,7 +128,7 @@ $form["tabs"]['alias'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php index 8b268147fb..957f35b95b 100644 --- a/interface/web/mail/form/mail_blacklist.tform.php +++ b/interface/web/mail/form/mail_blacklist.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['blacklist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_content_filter.tform.php b/interface/web/mail/form/mail_content_filter.tform.php index 550ae6b5d6..88f16298f7 100644 --- a/interface/web/mail/form/mail_content_filter.tform.php +++ b/interface/web/mail/form/mail_content_filter.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index 06fb0906c3..5c8fa0185a 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -143,7 +143,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 81ce24c7b5..34d26088cd 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -138,7 +138,7 @@ $form["tabs"]['catchall'] = array ( 'value' => array(1 => 'y', 0 => 'n') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_forward.tform.php b/interface/web/mail/form/mail_forward.tform.php index 3c902b4221..003e678455 100644 --- a/interface/web/mail/form/mail_forward.tform.php +++ b/interface/web/mail/form/mail_forward.tform.php @@ -133,7 +133,7 @@ $form["tabs"]['forward'] = array ( 'value' => array(1 => 'y', 0 => 'n') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_get.tform.php b/interface/web/mail/form/mail_get.tform.php index 9f7de76e01..9082c36866 100644 --- a/interface/web/mail/form/mail_get.tform.php +++ b/interface/web/mail/form/mail_get.tform.php @@ -173,7 +173,7 @@ $form["tabs"]['mailget'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_relay_recipient.tform.php b/interface/web/mail/form/mail_relay_recipient.tform.php index 34c23861e4..e3d8faa1ed 100644 --- a/interface/web/mail/form/mail_relay_recipient.tform.php +++ b/interface/web/mail/form/mail_relay_recipient.tform.php @@ -107,7 +107,7 @@ $form["tabs"]['relay_recipient'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php index d726a3eb74..2890cfb8b6 100644 --- a/interface/web/mail/form/mail_spamfilter.tform.php +++ b/interface/web/mail/form/mail_spamfilter.tform.php @@ -145,7 +145,7 @@ $form["tabs"]['spamfilter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php index f55541346c..b40ad86e8a 100644 --- a/interface/web/mail/form/mail_transport.tform.php +++ b/interface/web/mail/form/mail_transport.tform.php @@ -122,7 +122,7 @@ $form["tabs"]['transport'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 631c507f90..da386f5844 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -472,7 +472,7 @@ if ($backup_available) { 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10') ), ################################## - # ENDE Datatable fields + # END Datatable fields ################################## ), 'plugins' => array ( diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index becb09351e..b00aacb9db 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -137,7 +137,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php index 00fc971647..edd3248371 100644 --- a/interface/web/mail/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -113,7 +113,7 @@ $form["tabs"]['whitelist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_blacklist.tform.php b/interface/web/mail/form/spamfilter_blacklist.tform.php index 3514eed434..7d212d9317 100644 --- a/interface/web/mail/form/spamfilter_blacklist.tform.php +++ b/interface/web/mail/form/spamfilter_blacklist.tform.php @@ -127,7 +127,7 @@ $form["tabs"]['blacklist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_config.tform.php b/interface/web/mail/form/spamfilter_config.tform.php index 39c1b35621..2217cbbd31 100644 --- a/interface/web/mail/form/spamfilter_config.tform.php +++ b/interface/web/mail/form/spamfilter_config.tform.php @@ -121,7 +121,7 @@ $form["tabs"]['server'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -247,7 +247,7 @@ $form["tabs"]['mail'] = array ( 'maxlength' => '15' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -272,7 +272,7 @@ $form["tabs"]['getmail'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_policy.tform.php b/interface/web/mail/form/spamfilter_policy.tform.php index 57aa4f2bf5..ef777a8884 100644 --- a/interface/web/mail/form/spamfilter_policy.tform.php +++ b/interface/web/mail/form/spamfilter_policy.tform.php @@ -88,7 +88,7 @@ $form["tabs"]['policy'] = array ( 'value' => array('N' => 'No', 'Y' => 'Yes') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -458,7 +458,7 @@ $form["tabs"]['amavis'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -502,7 +502,7 @@ $form["tabs"]['rspamd'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_users.tform.php b/interface/web/mail/form/spamfilter_users.tform.php index 8ef3c4e131..65f196b987 100644 --- a/interface/web/mail/form/spamfilter_users.tform.php +++ b/interface/web/mail/form/spamfilter_users.tform.php @@ -133,7 +133,7 @@ $form["tabs"]['users'] = array ( ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mail/form/spamfilter_whitelist.tform.php b/interface/web/mail/form/spamfilter_whitelist.tform.php index f0802fa491..202a3c6810 100644 --- a/interface/web/mail/form/spamfilter_whitelist.tform.php +++ b/interface/web/mail/form/spamfilter_whitelist.tform.php @@ -127,7 +127,7 @@ $form["tabs"]['whitelist'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/mailuser/form/mail_user_filter.tform.php b/interface/web/mailuser/form/mail_user_filter.tform.php index b785ae0263..adf7716317 100644 --- a/interface/web/mailuser/form/mail_user_filter.tform.php +++ b/interface/web/mailuser/form/mail_user_filter.tform.php @@ -128,7 +128,7 @@ $form["tabs"]['filter'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/cron.tform.php b/interface/web/sites/form/cron.tform.php index 4a169c3a67..aedfcb26ca 100644 --- a/interface/web/sites/form/cron.tform.php +++ b/interface/web/sites/form/cron.tform.php @@ -185,7 +185,7 @@ $form["tabs"]['cron'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php index 3bb2f9af73..dd3910c043 100644 --- a/interface/web/sites/form/database.tform.php +++ b/interface/web/sites/form/database.tform.php @@ -185,7 +185,7 @@ $form["tabs"]['database'] = array ( 'searchable' => 2 ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/database_user.tform.php b/interface/web/sites/form/database_user.tform.php index 09d2c32b2c..5f91cbd1f3 100644 --- a/interface/web/sites/form/database_user.tform.php +++ b/interface/web/sites/form/database_user.tform.php @@ -125,7 +125,7 @@ $form["tabs"]['database_user'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/ftp_user.tform.php b/interface/web/sites/form/ftp_user.tform.php index 5e77de4b5f..0b48d7a92d 100644 --- a/interface/web/sites/form/ftp_user.tform.php +++ b/interface/web/sites/form/ftp_user.tform.php @@ -146,7 +146,7 @@ $form["tabs"]['ftp'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -256,7 +256,7 @@ if($app->auth->is_admin()) { 'maxlength' => '7' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -290,7 +290,7 @@ if($app->auth->is_admin()) { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php index 4268fc08ec..f4e83a1b57 100644 --- a/interface/web/sites/form/shell_user.tform.php +++ b/interface/web/sites/form/shell_user.tform.php @@ -164,7 +164,7 @@ $form["tabs"]['shell'] = array ( 'maxlength' => '600' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -248,7 +248,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_childdomain.tform.php b/interface/web/sites/form/web_childdomain.tform.php index 6cfaa38c2a..01132a75dc 100644 --- a/interface/web/sites/form/web_childdomain.tform.php +++ b/interface/web/sites/form/web_childdomain.tform.php @@ -146,7 +146,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -193,7 +193,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_folder.tform.php b/interface/web/sites/form/web_folder.tform.php index 5fec523a69..9f8418446c 100644 --- a/interface/web/sites/form/web_folder.tform.php +++ b/interface/web/sites/form/web_folder.tform.php @@ -99,7 +99,7 @@ $form["tabs"]['folder'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_folder_user.tform.php b/interface/web/sites/form/web_folder_user.tform.php index c3386a5a22..b5f0b711c6 100644 --- a/interface/web/sites/form/web_folder_user.tform.php +++ b/interface/web/sites/form/web_folder_user.tform.php @@ -119,7 +119,7 @@ $form["tabs"]['user'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index e131a7cbaf..838445e361 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -299,7 +299,7 @@ $form["tabs"]['domain'] = array ( 'value' => array(0 => 'n', 1 => 'y') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ), 'plugins' => array ( @@ -435,7 +435,7 @@ $form["tabs"]['redirect'] = array ( ) ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -601,7 +601,7 @@ if($ssl_available) { ) ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -641,7 +641,7 @@ $form["tabs"]['stats'] = array ( 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None') ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); @@ -683,7 +683,7 @@ if ($backup_available) { 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ), 'plugins' => array ( @@ -972,7 +972,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'maxlength' => '4' ) //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); diff --git a/interface/web/sites/form/webdav_user.tform.php b/interface/web/sites/form/webdav_user.tform.php index b7db858546..73ea898b68 100644 --- a/interface/web/sites/form/webdav_user.tform.php +++ b/interface/web/sites/form/webdav_user.tform.php @@ -142,7 +142,7 @@ $form["tabs"]['webdav'] = array ( 'maxlength' => '255' ), //################################# - // ENDE Datatable fields + // END Datatable fields //################################# ) ); -- GitLab From d77b1219c5d1a7968501c135551b8f3887ca2dcc Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 20 Jun 2019 15:42:26 +0200 Subject: [PATCH 141/571] remove old commented code --- interface/web/mail/form/mail_user_filter.tform.php | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index b00aacb9db..c1134c5e41 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -94,7 +94,6 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - //'value' => array('contains'=>'contains_txt','is' => 'Is','begins'=>'Begins with','ends'=>'Ends with') 'value' => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt') ), 'searchterm' => array ( -- GitLab From e0c9b5c74fb36365fa1b5bbc951a35f6b02f37b7 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Fri, 6 Sep 2019 13:00:22 +0200 Subject: [PATCH 142/571] Check explicitly for session username, fixes #5389 --- interface/lib/classes/db_mysql.inc.php | 2 +- server/lib/classes/db_mysql.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 7d7b568980..227fab73fa 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -709,7 +709,7 @@ class db if($diff_num > 0) { $diffstr = serialize($diffrec_full); - if(isset($_SESSION)) { + if(!empty($_SESSION['s']['user']['username'])) { $username = $_SESSION['s']['user']['username']; } else { $username = 'admin'; diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 7d7b568980..227fab73fa 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -709,7 +709,7 @@ class db if($diff_num > 0) { $diffstr = serialize($diffrec_full); - if(isset($_SESSION)) { + if(!empty($_SESSION['s']['user']['username'])) { $username = $_SESSION['s']['user']['username']; } else { $username = 'admin'; -- GitLab From 065d5ff93fb92b2b87a85c9bd3ee690726941fae Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 10 Sep 2019 15:39:42 +0200 Subject: [PATCH 143/571] - when using pigz tar arguments for backup are in wrong order, fixes #5393 --- server/lib/classes/cron.d/500-backup.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index 579e0174ba..f261daf468 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -135,7 +135,7 @@ class cronjob_backup extends cronjob { //* Create a tar.gz backup as root user $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz'; if ($use_pigz) { - $app->system->exec_safe('tar pcf - --directory ? . --exclude=./backup\*'.$backup_excludes.' | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file); + $app->system->exec_safe('tar pcf - --exclude=./backup\*'.$backup_excludes.' --directory ? . | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file); $retval = $app->system->last_exec_retcode(); } else { $app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path); -- GitLab From f2ec8695499cee62cc4eeea7e245d09f0463a97e Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 11 Sep 2019 12:25:37 +0200 Subject: [PATCH 144/571] Set file mode explicitly for rspamd worker-controller.inc config file to not rely on system umask. --- install/lib/installer_base.lib.php | 3 ++- server/plugins-available/postfix_server_plugin.inc.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index dd4fe9c306..4f72c6920b 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1644,7 +1644,8 @@ class installer_base { $tpl = new tpl(); $tpl->newTemplate('rspamd_worker-controller.inc.master'); $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); - wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + chmod('/etc/rspamd/local.d/worker-controller.inc', 0644); } public function configure_spamassassin() { diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index bec1c5498d..77ac689077 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -242,6 +242,7 @@ class postfix_server_plugin { $tpl->newTemplate('rspamd_worker-controller.inc.master'); $tpl->setVar('rspamd_password', $rspamd_password); $app->system->file_put_contents('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); + chmod('/etc/rspamd/local.d/worker-controller.inc', 0644); $app->services->restartServiceDelayed('rspamd', 'reload'); } -- GitLab From 0d3e2987ce608d3e342f5d3fcab340bc8f615107 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 12 Sep 2019 08:55:07 +0200 Subject: [PATCH 145/571] - fixed missing template file for rspamd --- install/tpl/rspamd_users.conf.master | 44 +--------------------------- server/conf/rspamd_users.conf.master | 43 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 43 deletions(-) mode change 100644 => 120000 install/tpl/rspamd_users.conf.master create mode 100644 server/conf/rspamd_users.conf.master diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master deleted file mode 100644 index 73d437d6cb..0000000000 --- a/install/tpl/rspamd_users.conf.master +++ /dev/null @@ -1,43 +0,0 @@ -settings { - authenticated { - priority = 10; - authenticated = yes; - #apply "default" { groups_disabled = ["rbl", "spf"]; } - apply "default" { - #symbols_enabled = []; - symbols_disabled = []; - #groups_enabled = []; - groups_disabled = ["rbl"]; - } - } - whitelist { - priority = 10; - rcpt = "postmaster"; - rcpt = "hostmaster"; - rcpt = "abuse"; - want_spam = yes; - } - whitelist-ip { - priority = 10; -<tmpl_loop name="whitelist_ips"> - ip = "<tmpl_var name='ip'>"; -</tmpl_loop> - - want_spam = yes; - } -# whitelist-timmehosting { -# priority = 20; -# from = "@xxx"; -# from = "@xxx"; -# want_spam = yes; -# } - whitelist-ca { - priority = 20; - from = "@comodo.com"; - from = "@geotrust.com"; - from = "@geotrusteurope.com"; - want_spam = yes; - } - .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" - .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" -} diff --git a/install/tpl/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master new file mode 120000 index 0000000000..3aa7af3185 --- /dev/null +++ b/install/tpl/rspamd_users.conf.master @@ -0,0 +1 @@ +../../server/conf/rspamd_users.conf.master \ No newline at end of file diff --git a/server/conf/rspamd_users.conf.master b/server/conf/rspamd_users.conf.master new file mode 100644 index 0000000000..73d437d6cb --- /dev/null +++ b/server/conf/rspamd_users.conf.master @@ -0,0 +1,43 @@ +settings { + authenticated { + priority = 10; + authenticated = yes; + #apply "default" { groups_disabled = ["rbl", "spf"]; } + apply "default" { + #symbols_enabled = []; + symbols_disabled = []; + #groups_enabled = []; + groups_disabled = ["rbl"]; + } + } + whitelist { + priority = 10; + rcpt = "postmaster"; + rcpt = "hostmaster"; + rcpt = "abuse"; + want_spam = yes; + } + whitelist-ip { + priority = 10; +<tmpl_loop name="whitelist_ips"> + ip = "<tmpl_var name='ip'>"; +</tmpl_loop> + + want_spam = yes; + } +# whitelist-timmehosting { +# priority = 20; +# from = "@xxx"; +# from = "@xxx"; +# want_spam = yes; +# } + whitelist-ca { + priority = 20; + from = "@comodo.com"; + from = "@geotrust.com"; + from = "@geotrusteurope.com"; + want_spam = yes; + } + .include(try=true; glob=true) "$LOCAL_CONFDIR/local.d/users/*.conf" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/users.local.conf" +} -- GitLab From 0a18e943449be72cd9e733602ff2be9fdb2b32e6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 18 Sep 2019 10:59:10 +0200 Subject: [PATCH 146/571] - better log messages on rspamd plugin - ignore @/*@ targets for spamfilter_user in rspamd plugin --- server/plugins-available/rspamd_plugin.inc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 49eb87165e..cb2af0f8f3 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -131,7 +131,11 @@ class rspamd_plugin { $is_domain = false; $email_address = $data[$use_data][$identifier]; $settings_name = $email_address; - if(!$email_address) { + if($email_address === '*@' || $email_address === '@') { + // we will ignore those global targets + $app->log('Ignoring @ spamfilter_user as rspamd does not support it this way.', LOGLEVEL_DEBUG); + return; + } elseif(!$email_address) { // problem reading identifier $app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); return; @@ -145,7 +149,7 @@ class rspamd_plugin { if($settings_name == '') { // missing settings file name - $app->log('Empty email address in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); + $app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); return; } -- GitLab From 3b0ec62c98e32af10a4d8b31aca6a749d377e8ed Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 18 Sep 2019 12:57:28 +0200 Subject: [PATCH 147/571] - fixed problem in rspamd plugin handling deleting of domains or users, fixes #5401 --- server/plugins-available/rspamd_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index cb2af0f8f3..f6bb5d5a8e 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -94,10 +94,10 @@ class rspamd_plugin { } $use_data = 'new'; - if(substr($event_name, -7) === 'delete') { + if(substr($event_name, -7) === '_delete') { $mode = 'delete'; $use_data = 'old'; - } elseif(substr($event_name, -7) === 'insert') { + } elseif(substr($event_name, -7) === '_insert') { $mode = 'insert'; } else { $mode = 'update'; -- GitLab From ba8971de0cb5f8ff01f3e943b4787658f4d6b5bb Mon Sep 17 00:00:00 2001 From: Ales Seifert <ales@web4people.com.au> Date: Wed, 18 Sep 2019 17:42:29 +0200 Subject: [PATCH 148/571] Added option to select Local Mail server for remote email accounts import --- interface/web/tools/import_ispconfig.php | 17 ++++++++++++++++- .../web/tools/lib/lang/en_import_ispconfig.lng | 1 + .../web/tools/templates/import_ispconfig.htm | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php index e2b8bad647..716ed2f934 100644 --- a/interface/web/tools/import_ispconfig.php +++ b/interface/web/tools/import_ispconfig.php @@ -107,6 +107,17 @@ if(isset($_POST['connected'])) { } $app->tpl->setVar("client_group_id", $client_select); + //* Fill the mail server select field + $sql = "SELECT server_id, server_name FROM server WHERE mail_server = 1 and mirror_server_id = 0"; + $mail_servers = $app->db->queryAllRecords($sql); + $mail_server_select = ""; + if(is_array($mail_servers)) { + foreach( $mail_servers as $m_server) { + $selected = @($m_server['server_id'] == $_POST['local_server_id'])?'SELECTED':''; + $mail_server_select .= "<option value='$m_server[server_id]' $selected>$m_server[server_name]</option>\r\n"; + } + } + $app->tpl->setVar("local_server_id", $mail_server_select); try { //* Allow connections to self signed SSL certs @@ -161,6 +172,7 @@ $app->tpl->setVar('connected', $connected); $app->tpl->setVar('remote_session_id', $remote_session_id); $app->tpl->setVar('msg', $msg); $app->tpl->setVar('error', $error); +$app->tpl->setVar('local_server_id', $_POST['local_server_id'], true); //* SET csrf token $csrf_token = $app->auth->csrf_token_get('ispconfig_import'); @@ -188,7 +200,10 @@ function start_domain_import($mail_domain) { $server_id = intval($tmp['server_id']); unset($tmp); if($server_id == 0) $server_id = 1; - + + if (isset($_POST['local_server_id']) && intval($_POST['local_server_id']) !== $server_id){ + $server_id = intval($_POST['local_server_id']); + } //* get the mail domain record $mail_domain_rec = $client->mail_domain_get($remote_session_id, array('domain' => $mail_domain)); if(is_array($mail_domain_rec)) { diff --git a/interface/web/tools/lib/lang/en_import_ispconfig.lng b/interface/web/tools/lib/lang/en_import_ispconfig.lng index 65ea145980..73002f8868 100644 --- a/interface/web/tools/lib/lang/en_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/en_import_ispconfig.lng @@ -20,5 +20,6 @@ $wb['import_alias_txt'] = 'Import email alias'; $wb['import_forward_txt'] = 'Import forward'; $wb['import_user_filter_txt'] = 'Import user filter'; $wb['import_spamfilter_txt'] = 'Import spamfilter'; +$wb['local_server_txt'] = 'Local Mail Server'; ?> \ No newline at end of file diff --git a/interface/web/tools/templates/import_ispconfig.htm b/interface/web/tools/templates/import_ispconfig.htm index 1d63df2a6d..9d845701f6 100644 --- a/interface/web/tools/templates/import_ispconfig.htm +++ b/interface/web/tools/templates/import_ispconfig.htm @@ -36,6 +36,12 @@ {tmpl_var name='client_group_id'} </select></div> </div> + <div class="form-group"> + <label for="local_server_id" class="col-sm-3 control-label">{tmpl_var name='local_server_txt'}</label> + <div class="col-sm-9"><select name="local_server_id" id="local_server_id" class="form-control"> + {tmpl_var name='local_server_id'} + </select></div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name="import_mailbox_txt"}</label> <div class="col-sm-9"><input class="form-control" type="checkbox" id="import_mailbox" value="1" name="import_mailbox" checked="checked" /></div> -- GitLab From 6d9985346ad660e36f62805ff3fa4ebf1e0afe6b Mon Sep 17 00:00:00 2001 From: Helmo <rink@initfour.nl> Date: Tue, 24 Sep 2019 10:55:11 +0200 Subject: [PATCH 149/571] More Dutch, mail_user_filter Some form of inheritance might be nice to reduce the amount of duplication in these files. --- .../lib/lang/nl_software_package_list.lng | 2 +- interface/web/mail/lib/lang/nl.lng | 2 +- interface/web/mail/lib/lang/nl_mail_get.lng | 6 +-- interface/web/mail/lib/lang/nl_mail_user.lng | 7 ++-- .../web/mail/lib/lang/nl_mail_user_filter.lng | 30 +++++++-------- .../web/mail/lib/lang/nl_mail_user_list.lng | 4 +- .../web/mail/lib/lang/nl_spamfilter_users.lng | 2 +- interface/web/mailuser/lib/lang/nl.lng | 6 +-- .../lib/lang/nl_mail_user_autoresponder.lng | 22 +++++------ .../mailuser/lib/lang/nl_mail_user_filter.lng | 38 +++++++++---------- 10 files changed, 59 insertions(+), 60 deletions(-) diff --git a/interface/web/admin/lib/lang/nl_software_package_list.lng b/interface/web/admin/lib/lang/nl_software_package_list.lng index 33e66022bc..44aaa563ad 100644 --- a/interface/web/admin/lib/lang/nl_software_package_list.lng +++ b/interface/web/admin/lib/lang/nl_software_package_list.lng @@ -6,7 +6,7 @@ $wb['package_description_txt'] = 'Omschrijving'; $wb['action_txt'] = 'Actie'; $wb['toolsarea_head_txt'] = 'Pakketten'; $wb['repoupdate_txt'] = 'Update pakketlijst'; -$wb['package_id_txt'] = 'locaal App-ID'; +$wb['package_id_txt'] = 'lokaal App-ID'; $wb['no_packages_txt'] = 'No packages available'; $wb['edit_txt'] = 'Edit'; $wb['delete_txt'] = 'Delete'; diff --git a/interface/web/mail/lib/lang/nl.lng b/interface/web/mail/lib/lang/nl.lng index 91d63a7abc..6664809b46 100644 --- a/interface/web/mail/lib/lang/nl.lng +++ b/interface/web/mail/lib/lang/nl.lng @@ -13,7 +13,7 @@ $wb['Spamfilter'] = 'Spamfilter'; $wb['Email Routing'] = 'Email routing'; $wb['Email transport'] = 'Email transport'; $wb['Mailbox'] = 'Mailbox'; -$wb['Autoresponder'] = 'Autoresponder'; +$wb['Autoresponder'] = 'Autobeantwoorden'; $wb['Mail Filter'] = 'Mail filter'; $wb['Custom Rules'] = 'Custom rules'; $wb['Email filter'] = 'E-mail filter'; diff --git a/interface/web/mail/lib/lang/nl_mail_get.lng b/interface/web/mail/lib/lang/nl_mail_get.lng index 5cbeab14e7..738f93e663 100644 --- a/interface/web/mail/lib/lang/nl_mail_get.lng +++ b/interface/web/mail/lib/lang/nl_mail_get.lng @@ -13,7 +13,7 @@ $wb['source_username_error_isempty'] = 'Gebruikersnaam is niet ingvuld.'; $wb['source_password_error_isempty'] = 'Wachtwoord is niet ingvuld.'; $wb['destination_error_isemail'] = 'Geen bestemming geselecteerd.'; $wb['source_server_error_regex'] = 'Pop3/Imap server is geen geldige domeinnaam.'; -$wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)'; -$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes'; -$wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.'; +$wb['source_read_all_txt'] = 'Haal alle berichten op (incl. reeds gelezen)'; +$wb['error_delete_read_all_combination'] = 'Ongeldige combinatie van opties. \\"Verwijder e-mails na ontvangst\\" en \\"Haal alle berichten op (incl. reeds gelezen)\\" werken niet samen.'; +$wb['source_delete_note_txt'] = 'Controleer voor het activeren van deze optie of het ophalen van berichten naar verwachting werkt.'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 94dd018332..65d89a32af 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -9,7 +9,6 @@ $wb['email_error_unique'] = 'Duplicaat e-mail adres.'; $wb['autoresponder_text_txt'] = 'Tekst'; $wb['autoresponder_txt'] = 'Actief'; $wb['autoresponder_start_date_txt'] = 'Start op'; -$wb['autoresponder_start_date_ispast'] = 'Start datum mag niet in het verleden liggen.'; $wb['autoresponder_end_date_txt'] = 'Eindigt op'; $wb['autoresponder_end_date_isgreater'] = 'Einddatum moet later zijn dan de startdatum.'; $wb['no_domain_perm'] = 'U heeft geen toestemming voor dit domein.'; @@ -34,11 +33,11 @@ $wb['quota_error_value'] = 'Ongeldige quota waarde. Toegestane waarden zijn: 0 = $wb['move_junk_txt'] = 'Verplaats SPAM e-mails naar junk folder'; $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; -$wb['autoresponder_active'] = 'Inschakelen autoresponder'; +$wb['autoresponder_active'] = 'Inschakelen autobeantwoorden'; $wb['cc_txt'] = 'Stuur kopie naar'; $wb['cc_error_isemail'] = 'Het \\"Stuur kopie naar\\" veld bevat geen geldig e-mail adres'; $wb['domain_txt'] = 'Domain'; -$wb['now_txt'] = 'Now'; +$wb['now_txt'] = 'Nu'; $wb['login_error_unique'] = 'Login is already taken.'; $wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.'; $wb['login_txt'] = 'Login (optional)'; @@ -58,7 +57,7 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; +$wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; diff --git a/interface/web/mail/lib/lang/nl_mail_user_filter.lng b/interface/web/mail/lib/lang/nl_mail_user_filter.lng index 903b610729..95af45d96e 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_filter.lng @@ -7,23 +7,23 @@ $wb['rulename_error_empty'] = 'Naam is niet ingvuld.'; $wb['searchterm_is_empty'] = 'Zoekterm is niet ingvuld.'; $wb['source_txt'] = 'Bron'; $wb['target_error_regex'] = 'Het doel mag alleen de volgende karakters bevatten: a-z, 0-9, -, ., _, en {spatie}'; -$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; -$wb['subject_txt'] = 'Subject'; -$wb['from_txt'] = 'From'; -$wb['to_txt'] = 'To'; -$wb['contains_txt'] = 'Contains'; +$wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is bereikt.'; +$wb['subject_txt'] = 'Onderwerp'; +$wb['from_txt'] = 'Afzender'; +$wb['to_txt'] = 'Bestemming'; +$wb['contains_txt'] = 'Bevat'; $wb['is_txt'] = 'Is'; -$wb['begins_with_txt'] = 'Begins with'; -$wb['ends_with_txt'] = 'Ends with'; -$wb['delete_txt'] = 'Delete'; -$wb['move_stop_txt'] = 'Move to'; +$wb['begins_with_txt'] = 'Begint met'; +$wb['ends_with_txt'] = 'Eindigt in'; +$wb['delete_txt'] = 'Verwijderen'; +$wb['move_stop_txt'] = 'Verplaatsen naar'; $wb['header_txt'] = 'Header'; -$wb['size_over_txt'] = 'Email size over (KB)'; -$wb['size_under_txt'] = 'Email size under (KB)'; +$wb['size_over_txt'] = 'Email grootte bove (KB)'; +$wb['size_under_txt'] = 'Email grootte onder (KB)'; $wb['localpart_txt'] = 'Localpart'; -$wb['domain_txt'] = 'Domain'; -$wb['keep_txt'] = 'Keep'; -$wb['reject_txt'] = 'Reject'; +$wb['domain_txt'] = 'Domein'; +$wb['keep_txt'] = 'Behouden'; +$wb['reject_txt'] = 'Afwijzen'; $wb['stop_txt'] = 'Stop'; -$wb['move_to_txt'] = 'Move to'; +$wb['move_to_txt'] = 'Verplaatsen naar'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user_list.lng b/interface/web/mail/lib/lang/nl_mail_user_list.lng index e421af0ecc..39125af2e0 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_list.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_list.lng @@ -1,11 +1,11 @@ <?php $wb['list_head_txt'] = 'Mailbox'; $wb['email_txt'] = 'E-mail'; -$wb['autoresponder_txt'] = 'Autoresponder'; +$wb['autoresponder_txt'] = 'Autobeantwoorden'; $wb['add_new_record_txt'] = 'Toevoegen mailbox'; $wb['name_txt'] = 'Echte naam'; $wb['login_txt'] = 'Login'; -$wb['postfix_txt'] = 'Receiving'; +$wb['postfix_txt'] = 'Ontvangen'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; diff --git a/interface/web/mail/lib/lang/nl_spamfilter_users.lng b/interface/web/mail/lib/lang/nl_spamfilter_users.lng index 4b7144b1f3..697e130b35 100644 --- a/interface/web/mail/lib/lang/nl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/nl_spamfilter_users.lng @@ -4,7 +4,7 @@ $wb['priority_txt'] = 'Prioriteit'; $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'E-mail (Patroon)'; $wb['fullname_txt'] = 'Naam'; -$wb['local_txt'] = 'Locaal'; +$wb['local_txt'] = 'Lokaal'; $wb['email_error_notempty'] = 'The email address must not be empty.'; $wb['fullname_error_notempty'] = 'The name must not be empty.'; $wb['10 - highest'] = '10 - highest'; diff --git a/interface/web/mailuser/lib/lang/nl.lng b/interface/web/mailuser/lib/lang/nl.lng index 114dec9b91..6383a82864 100644 --- a/interface/web/mailuser/lib/lang/nl.lng +++ b/interface/web/mailuser/lib/lang/nl.lng @@ -1,8 +1,8 @@ <?php $wb['Email Account'] = 'Email Account'; -$wb['Overview'] = 'Overview'; -$wb['Password'] = 'Password'; -$wb['Autoresponder'] = 'Autoresponder'; +$wb['Overview'] = 'Overzicht'; +$wb['Password'] = 'Wachtwoord'; +$wb['Autoresponder'] = 'Autobeantwoorden'; $wb['Send copy'] = 'Send copy'; $wb['Spamfilter'] = 'Spamfilter'; $wb['Email Filters'] = 'Email Filters'; diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng index 79f386a7dc..7c8283c838 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_autoresponder.lng @@ -1,13 +1,13 @@ <?php -$wb['mailbox_autoresponder_txt'] = 'Autoresponder'; -$wb['autoresponder_subject'] = 'Out of office reply'; -$wb['autoresponder_text_txt'] = 'Text'; -$wb['autoresponder_txt'] = 'Active'; -$wb['autoresponder_start_date_txt'] = 'Start on'; -$wb['autoresponder_start_date_isfuture'] = 'Start date cannot be in the past.'; -$wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; -$wb['autoresponder_active'] = 'Enable the autoresponder'; -$wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['mailbox_autoresponder_txt'] = 'Autobeantwoorden'; +$wb['autoresponder_subject'] = 'Out of office antwoord'; +$wb['autoresponder_text_txt'] = 'Tekst'; +$wb['autoresponder_txt'] = 'Actief'; +$wb['autoresponder_start_date_txt'] = 'Start op'; +$wb['autoresponder_start_date_isfuture'] = 'Startdatum mag niet in het verleden liggen.'; +$wb['autoresponder_end_date_txt'] = 'Eindigt op'; +$wb['autoresponder_end_date_isgreater'] = 'Einddatum moet later zijn dan de startdatum.'; +$wb['autoresponder_active'] = 'Inschakelen autobeantwoorden'; +$wb['now_txt'] = 'Nu'; +$wb['autoresponder_subject_txt'] = 'E-mail onderwerp'; ?> 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 4069a15351..0092c288a0 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng @@ -1,21 +1,21 @@ <?php -$wb['rulename_txt'] = 'Name'; -$wb['action_txt'] = 'Action'; -$wb['target_txt'] = 'Folder'; -$wb['active_txt'] = 'Active'; -$wb['rulename_error_empty'] = 'Name is empty.'; -$wb['searchterm_is_empty'] = 'Search term is empty.'; -$wb['source_txt'] = 'Source'; -$wb['target_error_regex'] = 'The target may only contain these characters: a-z, 0-9, -, ., _, and {space}'; -$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; -$wb['subject_txt'] = 'Subject'; -$wb['from_txt'] = 'From'; -$wb['to_txt'] = 'To'; -$wb['contains_txt'] = 'Contains'; -$wb['is_txt'] = 'Is'; -$wb['begins_with_txt'] = 'Begins with'; -$wb['ends_with_txt'] = 'Ends with'; -$wb['move_to_txt'] = 'Move to'; -$wb['delete_txt'] = 'Delete'; -$wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['rulename_txt'] = "Naam"; +$wb['action_txt'] = "Actie"; +$wb['target_txt'] = "Map"; +$wb['active_txt'] = "Actief"; +$wb['rulename_error_empty'] = "Naam is niet ingevuld."; +$wb['searchterm_is_empty'] = "Zoekterm is niet ingvuld."; +$wb['source_txt'] = "Bron"; +$wb['target_error_regex'] = 'Het doel mag alleen de volgende karakters bevatten: a-z, 0-9, -, ., _, en {spatie}'; +$wb['limit_mailfilter_txt'] = "Het max. aantal e-mail filters voor uw account is bereikt."; +$wb['subject_txt'] = "Onderwerp"; +$wb['from_txt'] = "Afzender"; +$wb['to_txt'] = "Bestemming"; +$wb['contains_txt'] = "Bevat"; +$wb['is_txt'] = "Is"; +$wb['begins_with_txt'] = "Begint met"; +$wb['ends_with_txt'] = "Endigt in"; +$wb['move_to_txt'] = "Verplaatsen naar"; +$wb['delete_txt'] = "Verwijderen"; +$wb['mailbox_filter_txt'] = "Mailbox filter"; ?> -- GitLab From 090607b01bc9f4d9674ae3542316ef0e06085159 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 27 Sep 2019 17:56:29 +0200 Subject: [PATCH 150/571] Fixes #5410 rspamd mail aliases don't get updated when policy is changed --- .../lib/plugins/mail_mail_domain_plugin.inc.php | 10 ++++++++++ interface/web/mail/spamfilter_policy_edit.php | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php index df6e3ffeb0..598fe74f09 100644 --- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php +++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php @@ -116,6 +116,16 @@ class mail_mail_domain_plugin { $app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, ?, ?), sys_userid = ?, sys_groupid = ? WHERE email LIKE ?", $page_form->oldDataRecord['domain'], $domain, $client_user_id, $sys_groupid, "%@" . $page_form->oldDataRecord['domain']); } // end if domain name changed + + //* Force-update the aliases (required for spamfilter changes) + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); + + if(is_array($forwardings)) { + foreach($forwardings as $rec) { + $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); + } + } + } } diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 8226ae6048..572a184020 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -105,6 +105,20 @@ class page_action extends tform_actions { if(is_array($spamfilter_users) && !empty($spamfilter_users)){ foreach($spamfilter_users as $spamfilter_user){ $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); + + // check if this is an email domain + if(substr($spamfilter_user['email'],0,1) == '@') { + $domain = substr($spamfilter_user['email'],1); + $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); + + // Force-update aliases and forwards + if(is_array($forwardings)) { + foreach($forwardings as $rec) { + $app->db->datalogUpdate('mail_forwarding', array("source" => $rec['source']), 'forwarding_id', $rec['forwarding_id'],true); + } + } + } + } } } -- GitLab From b08a125644ab9b2d48a41a69721d87767ee73312 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 3 Oct 2019 16:56:09 +0200 Subject: [PATCH 151/571] Fix for issue #5415 --- interface/lib/classes/auth.inc.php | 23 ++++++++++++++----- .../lib/classes/listform_actions.inc.php | 10 ++++++-- interface/lib/classes/tform_actions.inc.php | 3 +++ .../templates/directive_snippets_list.htm | 2 +- .../web/admin/templates/firewall_list.htm | 2 +- interface/web/admin/templates/groups_list.htm | 2 +- .../web/admin/templates/iptables_list.htm | 2 +- .../admin/templates/server_config_list.htm | 2 +- .../web/admin/templates/server_ip_list.htm | 2 +- .../admin/templates/server_ip_map_list.htm | 2 +- interface/web/admin/templates/server_list.htm | 2 +- .../web/admin/templates/server_php_list.htm | 2 +- .../admin/templates/software_repo_list.htm | 2 +- interface/web/admin/templates/users_list.htm | 2 +- .../client/templates/client_circle_list.htm | 2 +- .../client_message_template_list.htm | 2 +- .../client/templates/client_template_list.htm | 2 +- .../web/client/templates/clients_list.htm | 2 +- .../web/client/templates/domain_list.htm | 2 +- .../templates/message_template_list.htm | 2 +- .../web/client/templates/resellers_list.htm | 2 +- interface/web/dns/templates/dns_a_list.htm | 2 +- .../dns/templates/dns_slave_admin_list.htm | 2 +- .../web/dns/templates/dns_slave_list.htm | 2 +- .../web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_list.htm | 2 +- .../web/dns/templates/dns_template_list.htm | 2 +- .../help/templates/support_message_list.htm | 2 +- .../web/mail/templates/mail_alias_list.htm | 2 +- .../mail/templates/mail_aliasdomain_list.htm | 2 +- .../mail/templates/mail_blacklist_list.htm | 2 +- .../templates/mail_content_filter_list.htm | 2 +- .../mail/templates/mail_domain_admin_list.htm | 2 +- .../templates/mail_domain_catchall_list.htm | 2 +- .../web/mail/templates/mail_domain_list.htm | 2 +- .../web/mail/templates/mail_forward_list.htm | 2 +- .../web/mail/templates/mail_get_list.htm | 2 +- .../mail/templates/mail_mailinglist_list.htm | 2 +- .../templates/mail_relay_recipient_list.htm | 2 +- .../mail/templates/mail_transport_list.htm | 2 +- .../mail/templates/mail_user_filter_list.htm | 2 +- .../web/mail/templates/mail_user_list.htm | 2 +- .../mail/templates/mail_whitelist_list.htm | 2 +- .../templates/spamfilter_blacklist_list.htm | 2 +- .../mail/templates/spamfilter_config_list.htm | 2 +- .../mail/templates/spamfilter_policy_list.htm | 2 +- .../mail/templates/spamfilter_users_list.htm | 2 +- .../templates/spamfilter_whitelist_list.htm | 2 +- .../mail/templates/xmpp_domain_admin_list.htm | 2 +- .../web/mail/templates/xmpp_domain_list.htm | 2 +- .../web/mail/templates/xmpp_user_list.htm | 2 +- .../templates/mail_user_filter_list.htm | 2 +- .../web/monitor/templates/datalog_list.htm | 2 +- .../web/monitor/templates/syslog_list.htm | 4 ++-- interface/web/sites/templates/cron_list.htm | 2 +- .../sites/templates/database_admin_list.htm | 2 +- .../web/sites/templates/database_list.htm | 2 +- .../templates/database_user_admin_list.htm | 2 +- .../sites/templates/database_user_list.htm | 2 +- .../web/sites/templates/ftp_user_list.htm | 2 +- .../web/sites/templates/shell_user_list.htm | 2 +- .../sites/templates/web_childdomain_list.htm | 2 +- .../web/sites/templates/web_folder_list.htm | 2 +- .../sites/templates/web_folder_user_list.htm | 2 +- .../templates/web_vhost_domain_admin_list.htm | 2 +- .../sites/templates/web_vhost_domain_list.htm | 2 +- .../web/sites/templates/webdav_user_list.htm | 2 +- interface/web/vm/templates/openvz_ip_list.htm | 2 +- .../vm/templates/openvz_ostemplate_list.htm | 2 +- .../web/vm/templates/openvz_template_list.htm | 2 +- interface/web/vm/templates/openvz_vm_list.htm | 2 +- 71 files changed, 97 insertions(+), 77 deletions(-) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index afe50ac692..2075c7b90d 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -268,16 +268,27 @@ class auth { return array('csrf_id' => $_csrf_id,'csrf_key' => $_csrf_key); } - public function csrf_token_check() { + public function csrf_token_check($method = 'POST') { global $app; - if(isset($_POST) && is_array($_POST)) { + if($method == 'POST') { + $input_vars = $_POST; + } elseif ($method == 'GET') { + $input_vars = $_GET; + } else { + $app->error('Unknown CSRF verification method.'); + } + + //print_r($input_vars); + //die(print_r($_SESSION['_csrf'])); + + if(isset($input_vars) && is_array($input_vars)) { $_csrf_valid = false; - if(isset($_POST['_csrf_id']) && isset($_POST['_csrf_key'])) { - $_csrf_id = trim($_POST['_csrf_id']); - $_csrf_key = trim($_POST['_csrf_key']); + if(isset($input_vars['_csrf_id']) && isset($input_vars['_csrf_key'])) { + $_csrf_id = trim($input_vars['_csrf_id']); + $_csrf_key = trim($input_vars['_csrf_key']); if(isset($_SESSION['_csrf']) && isset($_SESSION['_csrf'][$_csrf_id]) && isset($_SESSION['_csrf_timeout']) && isset($_SESSION['_csrf_timeout'][$_csrf_id])) { - if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'] >= time()) $_csrf_valid = true; + if($_SESSION['_csrf'][$_csrf_id] === $_csrf_key && $_SESSION['_csrf_timeout'][$_csrf_id] >= time()) $_csrf_valid = true; } } if($_csrf_valid !== true) { diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 1b8426b894..4a463fe015 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -129,13 +129,19 @@ class listform_actions { // Getting Datasets from DB $records = $app->db->queryAllRecords($this->getQueryString($php_sort)); + + $csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); + $_csrf_id = $csrf_token['csrf_id']; + $_csrf_key = $csrf_token['csrf_key']; $this->DataRowColor = "#FFFFFF"; $records_new = array(); if(is_array($records)) { $this->idx_key = $app->listform->listDef["table_idx"]; - foreach($records as $rec) { - $records_new[] = $this->prepareDataRow($rec); + foreach($records as $key => $rec) { + $records_new[$key] = $this->prepareDataRow($rec); + $records_new[$key]['csrf_id'] = $_csrf_id; + $records_new[$key]['csrf_key'] = $_csrf_key; } } diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index f277c51274..d83ec0d3d7 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -297,6 +297,9 @@ class tform_actions { */ function onDelete() { global $app, $conf, $list_def_file, $tform_def_file; + + // Check CSRF Token + $app->auth->csrf_token_check('GET'); include_once $list_def_file; diff --git a/interface/web/admin/templates/directive_snippets_list.htm b/interface/web/admin/templates/directive_snippets_list.htm index 602c71a07c..8433282496 100644 --- a/interface/web/admin/templates/directive_snippets_list.htm +++ b/interface/web/admin/templates/directive_snippets_list.htm @@ -40,7 +40,7 @@ <td><a href="#" data-load-content="admin/directive_snippets_edit.php?id={tmpl_var name='id'}">{tmpl_var name="customer_viewable"}</a></td> <td><a href="#" data-load-content="admin/directive_snippets_edit.php?id={tmpl_var name='id'}">{tmpl_var name="master_directive_snippets_id"}</a></td> <td class="text-right"> - <tmpl_if name='is_master'></tmpl_else><a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/directive_snippets_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a></tmpl_if> + <tmpl_if name='is_master'></tmpl_else><a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/directive_snippets_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a></tmpl_if> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/firewall_list.htm b/interface/web/admin/templates/firewall_list.htm index ac85f7e4fe..b40414a5da 100644 --- a/interface/web/admin/templates/firewall_list.htm +++ b/interface/web/admin/templates/firewall_list.htm @@ -40,7 +40,7 @@ <td><a href="#" data-load-content="admin/firewall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="tcp_port"}</a></td> <td><a href="#" data-load-content="admin/firewall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="udp_port"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/firewall_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/firewall_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/groups_list.htm b/interface/web/admin/templates/groups_list.htm index d53ee58b24..972ae64144 100644 --- a/interface/web/admin/templates/groups_list.htm +++ b/interface/web/admin/templates/groups_list.htm @@ -35,7 +35,7 @@ <td><a href="#" data-load-content="admin/groups_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td> <td><a href="#" data-load-content="admin/groups_edit.php?id={tmpl_var name='id'}">{tmpl_var name="description"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/groups_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/groups_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/iptables_list.htm b/interface/web/admin/templates/iptables_list.htm index e1fcb3dc03..2adbd04627 100644 --- a/interface/web/admin/templates/iptables_list.htm +++ b/interface/web/admin/templates/iptables_list.htm @@ -51,7 +51,7 @@ <td><a href="#" data-load-content="admin/iptables_edit.php?id={tmpl_var name='id'}">{tmpl_var name="state"}</a></td> <td><a href="#" data-load-content="admin/iptables_edit.php?id={tmpl_var name='id'}">{tmpl_var name="target"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/iptables_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/iptables_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/server_config_list.htm b/interface/web/admin/templates/server_config_list.htm index ef0935552a..9284c5c354 100644 --- a/interface/web/admin/templates/server_config_list.htm +++ b/interface/web/admin/templates/server_config_list.htm @@ -24,7 +24,7 @@ <tr> <td><a href="#" data-load-content="admin/server_config_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_config_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_config_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/server_ip_list.htm b/interface/web/admin/templates/server_ip_list.htm index 892c263f20..c612e1ca64 100644 --- a/interface/web/admin/templates/server_ip_list.htm +++ b/interface/web/admin/templates/server_ip_list.htm @@ -45,7 +45,7 @@ <td><a href="#" data-load-content="admin/server_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="virtualhost"}</a></td> <td><a href="#" data-load-content="admin/server_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="virtualhost_port"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/server_ip_map_list.htm b/interface/web/admin/templates/server_ip_map_list.htm index a186e49b03..ea23856022 100644 --- a/interface/web/admin/templates/server_ip_map_list.htm +++ b/interface/web/admin/templates/server_ip_map_list.htm @@ -32,7 +32,7 @@ <td><a href="#" data-load-content="admin/server_ip_map_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source_ip"}</a></td> <td><a href="#" data-load-content="admin/server_ip_map_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination_ip"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_map_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_ip_map_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/server_list.htm b/interface/web/admin/templates/server_list.htm index 1152909320..313fad7ff1 100644 --- a/interface/web/admin/templates/server_list.htm +++ b/interface/web/admin/templates/server_list.htm @@ -45,7 +45,7 @@ <td>{tmpl_var name="vserver_server"}</td> <td>{tmpl_var name="xmpp_server"}</td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm index 5a6392eea3..9833eb1e7e 100644 --- a/interface/web/admin/templates/server_php_list.htm +++ b/interface/web/admin/templates/server_php_list.htm @@ -39,7 +39,7 @@ <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="client_id"}</a></td> <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/software_repo_list.htm b/interface/web/admin/templates/software_repo_list.htm index 8b1a48b562..d408896de6 100644 --- a/interface/web/admin/templates/software_repo_list.htm +++ b/interface/web/admin/templates/software_repo_list.htm @@ -37,7 +37,7 @@ <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_name"}</a></td> <td><a href="#" data-load-content="admin/software_repo_edit.php?id={tmpl_var name='id'}">{tmpl_var name="repo_url"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_repo_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_repo_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/admin/templates/users_list.htm b/interface/web/admin/templates/users_list.htm index b7872527ff..8db81c6c8d 100644 --- a/interface/web/admin/templates/users_list.htm +++ b/interface/web/admin/templates/users_list.htm @@ -43,7 +43,7 @@ <td class="text-right"> <tmpl_if name="username" op="!=" value="admin"> <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='client_id'}"><span class="icon icon-loginas"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </tmpl_if> </td> </tr> diff --git a/interface/web/client/templates/client_circle_list.htm b/interface/web/client/templates/client_circle_list.htm index 56bce62d6c..2cfbdf36e3 100644 --- a/interface/web/client/templates/client_circle_list.htm +++ b/interface/web/client/templates/client_circle_list.htm @@ -40,7 +40,7 @@ <td><a href="#" data-load-content="client/client_circle_edit.php?id={tmpl_var name='id'}">{tmpl_var name="circle_name"}</a></td> <td><a href="#" data-load-content="client/client_circle_edit.php?id={tmpl_var name='id'}">{tmpl_var name="description"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_circle_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_circle_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/client/templates/client_message_template_list.htm b/interface/web/client/templates/client_message_template_list.htm index d83a9f7dec..2f586c1ed7 100644 --- a/interface/web/client/templates/client_message_template_list.htm +++ b/interface/web/client/templates/client_message_template_list.htm @@ -32,7 +32,7 @@ <td><a href="#" data-load-content="client/message_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td> <td class="text-right"> <div class="buttons icons16"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/message_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/message_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </div> </td> </tr> diff --git a/interface/web/client/templates/client_template_list.htm b/interface/web/client/templates/client_template_list.htm index 37564f7197..887072b438 100644 --- a/interface/web/client/templates/client_template_list.htm +++ b/interface/web/client/templates/client_template_list.htm @@ -40,7 +40,7 @@ <td><a href="#" data-load-content="client/client_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_type"}</a></td> <td><a href="#" data-load-content="client/client_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/client/templates/clients_list.htm b/interface/web/client/templates/clients_list.htm index 7a538eba22..2ffd7dfa78 100644 --- a/interface/web/client/templates/clients_list.htm +++ b/interface/web/client/templates/clients_list.htm @@ -68,7 +68,7 @@ <tmpl_elseif name="is_reseller"> <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='id'}"><span class="icon icon-loginas"></span></a> </tmpl_if> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/client_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/client/templates/domain_list.htm b/interface/web/client/templates/domain_list.htm index 8dda689cba..818812ddd9 100644 --- a/interface/web/client/templates/domain_list.htm +++ b/interface/web/client/templates/domain_list.htm @@ -32,7 +32,7 @@ <td><a href="#" data-load-content="client/domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td><a href="#" data-load-content="client/domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sys_groupid"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/client/templates/message_template_list.htm b/interface/web/client/templates/message_template_list.htm index 5efaf5f23e..71011634f9 100644 --- a/interface/web/client/templates/message_template_list.htm +++ b/interface/web/client/templates/message_template_list.htm @@ -28,7 +28,7 @@ <td><a href="#" data-load-content="billing/invoice_message_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td> <td class="text-right"> <div class="buttons icons16"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('billing/invoice_message_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('billing/invoice_message_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </div> </td> </tr> diff --git a/interface/web/client/templates/resellers_list.htm b/interface/web/client/templates/resellers_list.htm index 8edfa08546..1ccaffa07e 100644 --- a/interface/web/client/templates/resellers_list.htm +++ b/interface/web/client/templates/resellers_list.htm @@ -50,7 +50,7 @@ <td><a href="#" data-load-content="client/reseller_edit.php?id={tmpl_var name='id'}"><span class="flags flag-{tmpl_var name="countryiso"}">{tmpl_var name="country"}</span></a></td> <td class="text-right"> <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='id'}"><span class="icon icon-loginas"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/reseller_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/reseller_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm index 67bf8ac910..5a4a5eeb68 100644 --- a/interface/web/dns/templates/dns_a_list.htm +++ b/interface/web/dns/templates/dns_a_list.htm @@ -75,7 +75,7 @@ <td><a href="#" data-load-content="dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}">{tmpl_var name="aux"}</a></td> <td><a href="#" data-load-content="dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ttl"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_rr_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_rr_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_slave_admin_list.htm b/interface/web/dns/templates/dns_slave_admin_list.htm index f4395849be..3afaa91175 100644 --- a/interface/web/dns/templates/dns_slave_admin_list.htm +++ b/interface/web/dns/templates/dns_slave_admin_list.htm @@ -59,7 +59,7 @@ <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="origin"}</a></td> <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ns"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm index 27916f4b25..799f14ba28 100644 --- a/interface/web/dns/templates/dns_slave_list.htm +++ b/interface/web/dns/templates/dns_slave_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="origin"}</a></td> <td><a href="#" data-load-content="dns/dns_slave_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ns"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_slave_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index fbdc0398ed..79faa645fe 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -64,7 +64,7 @@ <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='ns'}">{tmpl_var name="ns"}</a></td> <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='mbox'}">{tmpl_var name="mbox"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 22cd19484e..df579e852a 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -61,7 +61,7 @@ <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='ns'}">{tmpl_var name="ns"}</a></td> <td><a href="#" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='mbox'}">{tmpl_var name="mbox"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/dns/templates/dns_template_list.htm b/interface/web/dns/templates/dns_template_list.htm index f7816cf4d8..7622666940 100644 --- a/interface/web/dns/templates/dns_template_list.htm +++ b/interface/web/dns/templates/dns_template_list.htm @@ -34,7 +34,7 @@ <td><a href="#" data-load-content="dns/dns_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="visible"}</a></td> <td><a href="#" data-load-content="dns/dns_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/help/templates/support_message_list.htm b/interface/web/help/templates/support_message_list.htm index 3094b96728..c0b4b75d74 100644 --- a/interface/web/help/templates/support_message_list.htm +++ b/interface/web/help/templates/support_message_list.htm @@ -37,7 +37,7 @@ <td><a href="#" data-load-content="help/support_message_edit.php?id={tmpl_var name='id'}">{tmpl_var name="subject"}</a></td> <td><a href="#" data-load-content="help/support_message_edit.php?id={tmpl_var name='id'}">{tmpl_var name="tstamp"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/support_message_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/support_message_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_alias_list.htm b/interface/web/mail/templates/mail_alias_list.htm index 5f19fba138..f65e40a908 100644 --- a/interface/web/mail/templates/mail_alias_list.htm +++ b/interface/web/mail/templates/mail_alias_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_alias_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_alias_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_aliasdomain_list.htm b/interface/web/mail/templates/mail_aliasdomain_list.htm index 6ce208b48b..06166ae3c4 100644 --- a/interface/web/mail/templates/mail_aliasdomain_list.htm +++ b/interface/web/mail/templates/mail_aliasdomain_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_aliasdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_aliasdomain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_blacklist_list.htm b/interface/web/mail/templates/mail_blacklist_list.htm index b023f54042..a52c797e8b 100644 --- a/interface/web/mail/templates/mail_blacklist_list.htm +++ b/interface/web/mail/templates/mail_blacklist_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="mail/mail_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="type"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_blacklist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_blacklist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_content_filter_list.htm b/interface/web/mail/templates/mail_content_filter_list.htm index 01689aa4d6..5dcd8e7ff9 100644 --- a/interface/web/mail/templates/mail_content_filter_list.htm +++ b/interface/web/mail/templates/mail_content_filter_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="mail/mail_content_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="pattern"}</a></td> <td><a href="#" data-load-content="mail/mail_content_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="action"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_content_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_content_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_domain_admin_list.htm b/interface/web/mail/templates/mail_domain_admin_list.htm index 1b2b41f392..69680cf308 100644 --- a/interface/web/mail/templates/mail_domain_admin_list.htm +++ b/interface/web/mail/templates/mail_domain_admin_list.htm @@ -39,7 +39,7 @@ <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_domain_catchall_list.htm b/interface/web/mail/templates/mail_domain_catchall_list.htm index 29483ae3d0..a9c0d9acd7 100644 --- a/interface/web/mail/templates/mail_domain_catchall_list.htm +++ b/interface/web/mail/templates/mail_domain_catchall_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_domain_catchall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_domain_catchall_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_catchall_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_catchall_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_domain_list.htm b/interface/web/mail/templates/mail_domain_list.htm index bb1eba146b..f0d6e532e7 100644 --- a/interface/web/mail/templates/mail_domain_list.htm +++ b/interface/web/mail/templates/mail_domain_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="mail/mail_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_forward_list.htm b/interface/web/mail/templates/mail_forward_list.htm index bb4b95ed12..c4d7e1f60a 100644 --- a/interface/web/mail/templates/mail_forward_list.htm +++ b/interface/web/mail/templates/mail_forward_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/mail_forward_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_forward_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_forward_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_forward_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_get_list.htm b/interface/web/mail/templates/mail_get_list.htm index 58a550a7d1..747220c2da 100644 --- a/interface/web/mail/templates/mail_get_list.htm +++ b/interface/web/mail/templates/mail_get_list.htm @@ -59,7 +59,7 @@ <td><a href="#" data-load-content="mail/mail_get_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source_username"}</a></td> <td><a href="#" data-load-content="mail/mail_get_edit.php?id={tmpl_var name='id'}">{tmpl_var name="destination"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_get_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_get_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_mailinglist_list.htm b/interface/web/mail/templates/mail_mailinglist_list.htm index 7e15df3aad..78e216dc08 100644 --- a/interface/web/mail/templates/mail_mailinglist_list.htm +++ b/interface/web/mail/templates/mail_mailinglist_list.htm @@ -52,7 +52,7 @@ <tmpl_if name="mailmailinglist_link"> <a class="btn btn-default formbutton-default formbutton-narrow" href="mail/mailinglist.php?id={tmpl_var name='id'}" target="mailmailinglist"><span class="icon icon-mail"></span></a> </tmpl_if> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_relay_recipient_list.htm b/interface/web/mail/templates/mail_relay_recipient_list.htm index 7dac3e7ce5..3aeeb12e6c 100644 --- a/interface/web/mail/templates/mail_relay_recipient_list.htm +++ b/interface/web/mail/templates/mail_relay_recipient_list.htm @@ -52,7 +52,7 @@ <td><a href="#" data-load-content="mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_relay_recipient_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_relay_recipient_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_transport_list.htm b/interface/web/mail/templates/mail_transport_list.htm index 4b4b2d9e53..9795f0093e 100644 --- a/interface/web/mail/templates/mail_transport_list.htm +++ b/interface/web/mail/templates/mail_transport_list.htm @@ -59,7 +59,7 @@ <td><a href="#" data-load-content="mail/mail_transport_edit.php?id={tmpl_var name='id'}">{tmpl_var name="transport"}</a></td> <td><a href="#" data-load-content="mail/mail_transport_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sort_order"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_transport_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_transport_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_user_filter_list.htm b/interface/web/mail/templates/mail_user_filter_list.htm index 990558bd11..c38df26a8e 100644 --- a/interface/web/mail/templates/mail_user_filter_list.htm +++ b/interface/web/mail/templates/mail_user_filter_list.htm @@ -42,7 +42,7 @@ <tr> <td><a href="#" data-load-content="mail/mail_user_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rulename"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm index 4e2fedd50c..6d800de57e 100644 --- a/interface/web/mail/templates/mail_user_list.htm +++ b/interface/web/mail/templates/mail_user_list.htm @@ -75,7 +75,7 @@ <tmpl_if name="mailboxlist_webmail_link"> <a class="btn btn-default formbutton-default formbutton-narrow" href="mail/webmailer.php?id={tmpl_var name='id'}" target="webmail"><span class="icon icon-mail"></span></a> </tmpl_if> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/mail_whitelist_list.htm b/interface/web/mail/templates/mail_whitelist_list.htm index cb3b783e7f..dcc018f717 100644 --- a/interface/web/mail/templates/mail_whitelist_list.htm +++ b/interface/web/mail/templates/mail_whitelist_list.htm @@ -40,7 +40,7 @@ <td><a href="#" data-load-content="mail/mail_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="source"}</a></td> <td><a href="#" data-load-content="mail/mail_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="type"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_whitelist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/mail_whitelist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/spamfilter_blacklist_list.htm b/interface/web/mail/templates/spamfilter_blacklist_list.htm index 91a45916ba..ae013bdff4 100644 --- a/interface/web/mail/templates/spamfilter_blacklist_list.htm +++ b/interface/web/mail/templates/spamfilter_blacklist_list.htm @@ -43,7 +43,7 @@ <td><a href="#" data-load-content="mail/spamfilter_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rid"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_blacklist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="email"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_blacklist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_blacklist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/spamfilter_config_list.htm b/interface/web/mail/templates/spamfilter_config_list.htm index 486a79e6d9..3bcac6767a 100644 --- a/interface/web/mail/templates/spamfilter_config_list.htm +++ b/interface/web/mail/templates/spamfilter_config_list.htm @@ -31,7 +31,7 @@ <tr> <td><a href="#" data-load-content="mail/spamfilter_config_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_config_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_config_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/spamfilter_policy_list.htm b/interface/web/mail/templates/spamfilter_policy_list.htm index 0dd72dee54..665fa613af 100644 --- a/interface/web/mail/templates/spamfilter_policy_list.htm +++ b/interface/web/mail/templates/spamfilter_policy_list.htm @@ -49,7 +49,7 @@ <td><a href="#" data-load-content="mail/spamfilter_policy_edit.php?id={tmpl_var name='id'}">{tmpl_var name="bad_header_lover"}</a></td> </tmpl_if> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_policy_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_policy_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/spamfilter_users_list.htm b/interface/web/mail/templates/spamfilter_users_list.htm index 5f8ef83bae..d13fe32ccb 100644 --- a/interface/web/mail/templates/spamfilter_users_list.htm +++ b/interface/web/mail/templates/spamfilter_users_list.htm @@ -43,7 +43,7 @@ <td><a href="#" data-load-content="mail/spamfilter_users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="policy_id"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="fullname"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_users_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/spamfilter_whitelist_list.htm b/interface/web/mail/templates/spamfilter_whitelist_list.htm index 87ef0bde23..614f2a8f5e 100644 --- a/interface/web/mail/templates/spamfilter_whitelist_list.htm +++ b/interface/web/mail/templates/spamfilter_whitelist_list.htm @@ -43,7 +43,7 @@ <td><a href="#" data-load-content="mail/spamfilter_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rid"}</a></td> <td><a href="#" data-load-content="mail/spamfilter_whitelist_edit.php?id={tmpl_var name='id'}">{tmpl_var name="email"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_whitelist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/spamfilter_whitelist_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/xmpp_domain_admin_list.htm b/interface/web/mail/templates/xmpp_domain_admin_list.htm index ccda2d5032..c6338037f1 100644 --- a/interface/web/mail/templates/xmpp_domain_admin_list.htm +++ b/interface/web/mail/templates/xmpp_domain_admin_list.htm @@ -39,7 +39,7 @@ <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/xmpp_domain_list.htm b/interface/web/mail/templates/xmpp_domain_list.htm index 79579142d7..dff0adb399 100644 --- a/interface/web/mail/templates/xmpp_domain_list.htm +++ b/interface/web/mail/templates/xmpp_domain_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="mail/xmpp_domain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/mail/templates/xmpp_user_list.htm b/interface/web/mail/templates/xmpp_user_list.htm index 68668b4928..bb8e91c6d0 100644 --- a/interface/web/mail/templates/xmpp_user_list.htm +++ b/interface/web/mail/templates/xmpp_user_list.htm @@ -53,7 +53,7 @@ <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_domain_admin"}</a></td> <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_muc_admin"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/mailuser/templates/mail_user_filter_list.htm b/interface/web/mailuser/templates/mail_user_filter_list.htm index 32d093844e..b81793b631 100644 --- a/interface/web/mailuser/templates/mail_user_filter_list.htm +++ b/interface/web/mailuser/templates/mail_user_filter_list.htm @@ -30,7 +30,7 @@ <tr> <td><a href="#" data-load-content="mailuser/mail_user_filter_edit.php?id={tmpl_var name='id'}">{tmpl_var name="rulename"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mailuser/mail_user_filter_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mailuser/mail_user_filter_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/monitor/templates/datalog_list.htm b/interface/web/monitor/templates/datalog_list.htm index eb79f46b54..53ca89997f 100644 --- a/interface/web/monitor/templates/datalog_list.htm +++ b/interface/web/monitor/templates/datalog_list.htm @@ -33,7 +33,7 @@ <td>{tmpl_var name="action"}</td> <td>{tmpl_var name="dbtable"}</td> <td class="text-right"> - <!--<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/datalog_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> --> + <!--<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/datalog_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> --> </td> </tr> </tmpl_loop> diff --git a/interface/web/monitor/templates/syslog_list.htm b/interface/web/monitor/templates/syslog_list.htm index 8f62422a84..7196e3ab02 100644 --- a/interface/web/monitor/templates/syslog_list.htm +++ b/interface/web/monitor/templates/syslog_list.htm @@ -34,10 +34,10 @@ <td>{tmpl_var name="message"}</td> <td class="text-right"> <tmpl_if name="loglevel" op="==" value="Error"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </tmpl_if> <tmpl_if name="loglevel" op="==" value="Warning"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('monitor/log_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </tmpl_if> </td> </tr> diff --git a/interface/web/sites/templates/cron_list.htm b/interface/web/sites/templates/cron_list.htm index b38a6224a5..fbca26a844 100644 --- a/interface/web/sites/templates/cron_list.htm +++ b/interface/web/sites/templates/cron_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="sites/cron_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='command'}">{tmpl_var name="command"}</a></td> <td class="text-right"> <div class="buttons icons16"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/cron_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/cron_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </div> </td> </tr> diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm index aad56db337..724027ca91 100644 --- a/interface/web/sites/templates/database_admin_list.htm +++ b/interface/web/sites/templates/database_admin_list.htm @@ -61,7 +61,7 @@ <a class="btn btn-default formbutton-default formbutton-narrow" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span class="icon icon-dbadmin"></span></a> </tmpl_if> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm index 0d0aaca923..208741ff5a 100644 --- a/interface/web/sites/templates/database_list.htm +++ b/interface/web/sites/templates/database_list.htm @@ -75,7 +75,7 @@ <a class="btn btn-default formbutton-default formbutton-narrow" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span class="icon icon-dbadmin"></span></a> </tmpl_if> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/database_user_admin_list.htm b/interface/web/sites/templates/database_user_admin_list.htm index 2d7ece0b87..0b7eb1be09 100644 --- a/interface/web/sites/templates/database_user_admin_list.htm +++ b/interface/web/sites/templates/database_user_admin_list.htm @@ -33,7 +33,7 @@ <td><a href="#" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="sys_groupid"}</a></td> <td class="text-right"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/database_user_list.htm b/interface/web/sites/templates/database_user_list.htm index b29d5c0600..3cca7ec510 100644 --- a/interface/web/sites/templates/database_user_list.htm +++ b/interface/web/sites/templates/database_user_list.htm @@ -46,7 +46,7 @@ <td><a href="#" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="database_user"}</a></td> <td class="text-right"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="sites/database_user_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/database_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/ftp_user_list.htm b/interface/web/sites/templates/ftp_user_list.htm index 43650dac89..bd807c5072 100644 --- a/interface/web/sites/templates/ftp_user_list.htm +++ b/interface/web/sites/templates/ftp_user_list.htm @@ -59,7 +59,7 @@ <tmpl_if name="webftp_link"> <a class="btn btn-default formbutton-default formbutton-narrow" href="{tmpl_var name='webftp_url'}" target="_blank"><span class="icon icon-dbadmin"></span></button> </tmpl_if> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/ftp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/ftp_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/shell_user_list.htm b/interface/web/sites/templates/shell_user_list.htm index 9be1d8485d..53eb6906fa 100644 --- a/interface/web/sites/templates/shell_user_list.htm +++ b/interface/web/sites/templates/shell_user_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="sites/shell_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td> <td><a href="#" data-load-content="sites/shell_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/shell_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/shell_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/web_childdomain_list.htm b/interface/web/sites/templates/web_childdomain_list.htm index 51aadc157a..8aa5dc3447 100644 --- a/interface/web/sites/templates/web_childdomain_list.htm +++ b/interface/web/sites/templates/web_childdomain_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="sites/web_childdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td> <td><a href="#" data-load-content="sites/web_childdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_childdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_childdomain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/web_folder_list.htm b/interface/web/sites/templates/web_folder_list.htm index aaccb48895..e512b8b594 100644 --- a/interface/web/sites/templates/web_folder_list.htm +++ b/interface/web/sites/templates/web_folder_list.htm @@ -55,7 +55,7 @@ <td><a href="#" data-load-content="sites/web_folder_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td> <td><a href="#" data-load-content="sites/web_folder_edit.php?id={tmpl_var name='id'}">{tmpl_var name="path"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/web_folder_user_list.htm b/interface/web/sites/templates/web_folder_user_list.htm index 6b67e0591c..8e1d77e25d 100644 --- a/interface/web/sites/templates/web_folder_user_list.htm +++ b/interface/web/sites/templates/web_folder_user_list.htm @@ -52,7 +52,7 @@ <td><a href="#" data-load-content="sites/web_folder_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="web_folder_id"}</a></td> <td><a href="#" data-load-content="sites/web_folder_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_folder_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm index 6f0e8f39ca..1ab14300d0 100644 --- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm @@ -47,7 +47,7 @@ <td class="text-right"> <a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></a> <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index b784f15965..105dac9399 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -61,7 +61,7 @@ <td class="text-right"> <a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></button> <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> </tmpl_loop> diff --git a/interface/web/sites/templates/webdav_user_list.htm b/interface/web/sites/templates/webdav_user_list.htm index 01764cc2fe..866bcc9826 100644 --- a/interface/web/sites/templates/webdav_user_list.htm +++ b/interface/web/sites/templates/webdav_user_list.htm @@ -56,7 +56,7 @@ <td><a href="#" data-load-content="sites/webdav_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td> <td><a href="#" data-load-content="sites/webdav_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/webdav_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/webdav_user_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/vm/templates/openvz_ip_list.htm b/interface/web/vm/templates/openvz_ip_list.htm index fd12694c37..ff98e2df55 100644 --- a/interface/web/vm/templates/openvz_ip_list.htm +++ b/interface/web/vm/templates/openvz_ip_list.htm @@ -39,7 +39,7 @@ <td><a href="#" data-load-content="vm/openvz_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ip_address"}</a></td> <td><a href="#" data-load-content="vm/openvz_ip_edit.php?id={tmpl_var name='id'}">{tmpl_var name="reserved"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ip_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ip_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/vm/templates/openvz_ostemplate_list.htm b/interface/web/vm/templates/openvz_ostemplate_list.htm index 85f46e6732..d800686e1c 100644 --- a/interface/web/vm/templates/openvz_ostemplate_list.htm +++ b/interface/web/vm/templates/openvz_ostemplate_list.htm @@ -42,7 +42,7 @@ <td><a href="#" data-load-content="vm/openvz_ostemplate_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="vm/openvz_ostemplate_edit.php?id={tmpl_var name='id'}">{tmpl_var name="allservers"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ostemplate_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_ostemplate_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/vm/templates/openvz_template_list.htm b/interface/web/vm/templates/openvz_template_list.htm index 5ec0cb7913..2c20427901 100644 --- a/interface/web/vm/templates/openvz_template_list.htm +++ b/interface/web/vm/templates/openvz_template_list.htm @@ -33,7 +33,7 @@ <td><a href="#" data-load-content="vm/openvz_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="active"}</a></td> <td><a href="#" data-load-content="vm/openvz_template_edit.php?id={tmpl_var name='id'}">{tmpl_var name="template_name"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_template_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_template_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> diff --git a/interface/web/vm/templates/openvz_vm_list.htm b/interface/web/vm/templates/openvz_vm_list.htm index 516b536bb3..ee4084f4d1 100644 --- a/interface/web/vm/templates/openvz_vm_list.htm +++ b/interface/web/vm/templates/openvz_vm_list.htm @@ -49,7 +49,7 @@ <td><a href="#" data-load-content="vm/openvz_vm_edit.php?id={tmpl_var name='id'}">{tmpl_var name="ip_address"}</a></td> <td class="text-right"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="vm/openvz_action.php?id={tmpl_var name='id'}"><span class="icon icon-action"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_vm_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('vm/openvz_vm_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> -- GitLab From e958363340da23d59f2dd69bf25bda98b3913850 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 3 Oct 2019 16:56:59 +0200 Subject: [PATCH 152/571] Fixedm code typo in nginx_plugin.inc.php --- server/plugins-available/nginx_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 86d5aba14f..a8a3c3bf16 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -694,7 +694,7 @@ class nginx_plugin { //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { - if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language']), 0, 2)) { + if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { if(!file_exists($data['new']['document_root'].'/' . $web_folder . '/index.html')) $app->system->exec_safe('cp ? ?', $conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2), $data['new']['document_root'].'/' . $web_folder . '/index.html'); if(is_file($conf['rootpath'] . '/conf-custom/index/favicon.ico')) { -- GitLab From 9d5bde2cf44500d2815a93d7f60deb61ca5db9e2 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 4 Oct 2019 10:32:48 +0200 Subject: [PATCH 153/571] - Don't pass password to useradd and use chpasswd with proc_open instead, fixes #5416 --- server/lib/classes/system.inc.php | 27 +++++++++++++++++++ .../shelluser_base_plugin.inc.php | 12 +++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index c05d5ddf00..525bd7bda1 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2191,4 +2191,31 @@ class system{ return true; } + + public function pipe_exec($cmd, $stdin, &$retval = null, &$stderr = null) { + $descriptors = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + + $result = ''; + $pipes = null; + $proc = proc_open($cmd, $descriptors, $pipes); + if(is_resource($proc)) { + fwrite($pipes[0], $stdin); + fclose($pipes[0]); + + $result = stream_get_contents($pipes[1]); + $stderr = stream_get_contents($pipes[2]); + fclose($pipes[1]); + fclose($pipes[2]); + + $retval = proc_close($proc); + + return $result; + } else { + return false; + } + } } diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index b4e47b4e97..9f19c2be58 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -129,12 +129,20 @@ class shelluser_base_plugin { $app->system->chgrp($homedir,$data['new']['pgroup'],false); } $command = 'useradd -d ? -g ? -o'; // non unique - if($data['new']['password'] != '') $command .= ' -p ' . escapeshellarg($data['new']['password']); $command .= ' -s ? -u ? ?'; $app->system->exec_safe($command, $homedir, $data['new']['pgroup'], $data['new']['shell'], $uid, $data['new']['username']); $app->log("Executed command: ".$command, LOGLEVEL_DEBUG); $app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG); - + + if($data['new']['password'] != '') { + $retval = null; + $stderr = ''; + $app->system->pipe_exec('chpasswd -e ' . escapeshellarg($data['new']['username']), $data['new']['username'] . ':' . $data['new']['password'], $retval, $stderr); + if($retval != 0) { + $app->log("Command chpasswd failed for user ".$data['new']['username'] . ' with code ' . $retval . ': ' . $stderr, LOGLEVEL_WARN); + } + } + $app->system->chown($data['new']['dir'],$data['new']['username'],false); $app->system->chgrp($data['new']['dir'],$data['new']['pgroup'],false); -- GitLab From 126290c8e8d4a4bbba21f08b2f5dee4578d9224d Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 4 Oct 2019 12:05:35 +0200 Subject: [PATCH 154/571] - added possibility to execute mkdirpath, file_put_contents and file_get_contents as unprivileged user, partly implements #5417 --- server/lib/classes/system.inc.php | 78 +++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 525bd7bda1..3db57c510f 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -834,23 +834,55 @@ class system{ } } - function file_put_contents($filename, $data, $allow_symlink = false) { + function file_put_contents($filename, $data, $allow_symlink = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($filename) == false) { $app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN); return false; } - if(file_exists($filename)) unlink($filename); - return file_put_contents($filename, $data); + if($run_as_user !== null && $run_as_user !== 'root') { + if(!$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + if(file_exists($filename)) { + $cmd = $this->get_sudo_command('rm ' . escapeshellarg($filename), $run_as_user); + $this->exec_safe($cmd); + } + $cmd = $this->get_sudo_command('cat - > ' . escapeshellarg($filename), $run_as_user); + $retval = null; + $stderr = ''; + $this->pipe_exec($cmd, $data, $retval, $stderr); + if($retval > 0) { + $app->log("Safe file_put_contents failed: $stderr", LOGLEVEL_WARN); + return false; + } else { + $size = filesize($filename); + return $size; + } + } else { + if(file_exists($filename)) unlink($filename); + return file_put_contents($filename, $data); + } } - function file_get_contents($filename, $allow_symlink = false) { + function file_get_contents($filename, $allow_symlink = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($filename) == false) { $app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN); return false; } - return file_get_contents($filename, $data); + + if($run_as_user !== null && $run_as_user !== 'root') { + if(!$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + $cmd = $this->get_sudo_command('cat ' . escapeshellarg($filename), $run_as_user) . ' 2>/dev/null'; + return $this->system_safe($cmd); + } else { + return file_get_contents($filename); + } } function rename($filename, $new_filename, $allow_symlink = false) { @@ -862,13 +894,29 @@ class system{ return rename($filename, $new_filename); } - function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false) { + function mkdir($dirname, $allow_symlink = false, $mode = 0777, $recursive = false, $run_as_user = null) { global $app; if($allow_symlink == false && $this->checkpath($dirname) == false) { $app->log("Action aborted, file is a symlink: $dirname", LOGLEVEL_WARN); return false; } - if(@mkdir($dirname, $mode, $recursive)) { + if($run_as_user !== null && !$this->check_run_as_user($run_as_user)) { + $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); + return false; + } + $success = false; + if($run_as_user !== null && $run_as_user !== 'root') { + $cmd = $this->get_sudo_command('mkdir ' . ($recursive ? '-p ' : '') . escapeshellarg($dirname), $run_as_user) . ' >/dev/null 2>&1'; + $this->exec_safe($cmd); + if($this->last_exec_retcode() != 0) { + $success = false; + } else { + $success = true; + } + } else { + $success = @mkdir($dirname, $mode, $recursive); + } + if($success) { return true; } else { $app->log("mkdir failed: $dirname", LOGLEVEL_DEBUG); @@ -1677,14 +1725,14 @@ class system{ } //* Function to create directory paths and chown them to a user and group - function mkdirpath($path, $mode = 0755, $user = '', $group = '') { + function mkdirpath($path, $mode = 0755, $user = '', $group = '', $run_as_user = null) { $path_parts = explode('/', $path); $new_path = ''; if(is_array($path_parts)) { foreach($path_parts as $part) { $new_path .= '/'.$part; if(!@is_dir($new_path)) { - $this->mkdir($new_path); + $this->mkdir($new_path, false, 0777, false, $run_as_user); $this->chmod($new_path, $mode); if($user != '') $this->chown($new_path, $user); if($group != '') $this->chgrp($new_path, $group); @@ -2218,4 +2266,16 @@ class system{ return false; } } + + private function get_sudo_command($cmd, $run_as_user) { + return 'sudo -u ' . escapeshellarg($run_as_user) . ' sh -c ' . escapeshellarg($cmd); + } + + private function check_run_as_user($username) { + if(preg_match('/^[a-zA-Z0-9_\-]+$/', $username)) { + return true; + } else{ + return false; + } + } } -- GitLab From ed8922b48a67f981c44ee933633c403f27a1b882 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 4 Oct 2019 14:38:48 +0200 Subject: [PATCH 155/571] For issue #5415 --- interface/web/client/client_del.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php index 2bddd02a07..d92dc56008 100644 --- a/interface/web/client/client_del.php +++ b/interface/web/client/client_del.php @@ -58,9 +58,14 @@ class page_action extends tform_actions { if(!is_object($app->tform)) $app->uses('tform'); if($_POST["confirm"] == 'yes') { + if(isset($_POST['_csrf_id'])) $_GET['_csrf_id'] = $_POST['_csrf_id']; + if(isset($_POST['_csrf_key'])) $_GET['_csrf_key'] = $_POST['_csrf_key']; parent::onDelete(); } else { + // Check CSRF Token + $app->auth->csrf_token_check('GET'); + $app->uses('tpl'); $app->tpl->newTemplate("form.tpl.htm"); $app->tpl->setInclude('content_tpl', 'templates/client_del.htm'); @@ -100,6 +105,11 @@ class page_action extends tform_actions { $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_client_del.lng'; include $lng_file; $app->tpl->setVar($wb); + + // get new csrf token + $csrf_token = $app->auth->csrf_token_get('client_del'); + $app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']); + $app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']); $app->tpl_defaults(); $app->tpl->pparse(); -- GitLab From 559c694e648bcf52d7eb057a7b54a95de169738f Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 4 Oct 2019 17:33:43 +0200 Subject: [PATCH 156/571] Various fixes related to #5415 --- interface/web/sites/aps_do_operation.php | 3 +++ interface/web/sites/aps_install_package.php | 10 ++++++++-- interface/web/sites/aps_installedpackages_list.php | 10 ++++++++-- interface/web/sites/templates/aps_instances_list.htm | 2 +- interface/web/sites/templates/aps_packages_list.htm | 2 +- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/interface/web/sites/aps_do_operation.php b/interface/web/sites/aps_do_operation.php index ff0705f9bb..8de3ed4e29 100644 --- a/interface/web/sites/aps_do_operation.php +++ b/interface/web/sites/aps_do_operation.php @@ -64,6 +64,9 @@ if($_GET['action'] == 'change_status') } else if($_GET['action'] == 'delete_instance') { + // Check CSRF Token + $app->auth->csrf_token_check('GET'); + // Make sure a valid package ID is given (also corresponding to the calling user) $client_id = 0; $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false; diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php index 4739e25b8a..1a38190a9f 100644 --- a/interface/web/sites/aps_install_package.php +++ b/interface/web/sites/aps_install_package.php @@ -93,6 +93,9 @@ if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $doma $result['input'] = array(); if(count($_POST) > 1) { + // Check CSRF Token + $app->auth->csrf_token_check(); + $result = $gui->validateInstallerInput($_POST, $details, $domains, $settings); if(empty($result['error'])) { @@ -117,13 +120,16 @@ foreach($details as $key => $value) else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']); } +// get new csrf token +$csrf_token = $app->auth->csrf_token_get('aps_install_package'); +$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']); +$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']); + // Parse the template as far as possible, then do the rest manually $app->tpl_defaults(); $parsed_tpl = $app->tpl->grab(); -// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own... - // Print the domain list $domains_tpl = ''; if(!empty($domains)) diff --git a/interface/web/sites/aps_installedpackages_list.php b/interface/web/sites/aps_installedpackages_list.php index 28f334019f..32849ad740 100644 --- a/interface/web/sites/aps_installedpackages_list.php +++ b/interface/web/sites/aps_installedpackages_list.php @@ -112,12 +112,16 @@ if(!$is_admin) { $records = $app->db->queryAllRecords($query); $app->listform_actions->DataRowColor = '#FFFFFF'; +$csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); +$_csrf_id = $csrf_token['csrf_id']; +$_csrf_key = $csrf_token['csrf_key']; + // Re-form all result entries and add extra entries $records_new = array(); if(is_array($records)) { $app->listform_actions->idx_key = $app->listform->listDef["table_idx"]; - foreach($records as $rec) + foreach($records as $key => $rec) { // Set an abbreviated install location to beware the page layout $ils = ''; @@ -129,7 +133,9 @@ if(is_array($records)) if($rec['instance_status'] != INSTANCE_REMOVE && $rec['instance_status'] != INSTANCE_INSTALL) $rec['delete_possible'] = 'true'; - $records_new[] = $app->listform_actions->prepareDataRow($rec); + $records_new[$key] = $app->listform_actions->prepareDataRow($rec); + $records_new[$key]['csrf_id'] = $_csrf_id; + $records_new[$key]['csrf_key'] = $_csrf_key; } } $app->tpl->setLoop('records', $records_new); diff --git a/interface/web/sites/templates/aps_instances_list.htm b/interface/web/sites/templates/aps_instances_list.htm index cfde591b19..ae3d095e7b 100644 --- a/interface/web/sites/templates/aps_instances_list.htm +++ b/interface/web/sites/templates/aps_instances_list.htm @@ -40,7 +40,7 @@ <td><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td> <td class="text-right"> <tmpl_if name='delete_possible'> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_delete_confirmation'}')"><span class="icon icon-delete"></span></button> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}','{tmpl_var name='pkg_delete_confirmation'}')"><span class="icon icon-delete"></span></button> </tmpl_if> </td> </tr> diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm index 501e7aeedd..fa3582ed74 100644 --- a/interface/web/sites/templates/aps_packages_list.htm +++ b/interface/web/sites/templates/aps_packages_list.htm @@ -31,7 +31,7 @@ <td>{tmpl_var name='version'}-{tmpl_var name='release'}</td> <td>{tmpl_var name='category'}</td> <tmpl_if name='is_admin'> - <td><a href="javascript:ISPConfig.loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td> + <td><a href="javascript:ISPConfig.loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td> </tmpl_if> <td class="text-right"> </td> </tr> -- GitLab From 58b341857c056db03999e9a79404ffcffe153ec4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 8 Oct 2019 18:26:11 +0200 Subject: [PATCH 157/571] Implemented #5420 Improve input filters for Tools > Interface settings --- interface/web/admin/form/users.tform.php | 12 ++++++++++++ interface/web/admin/lib/lang/en_users.lng | 4 ++++ .../web/tools/form/interface_settings.tform.php | 12 ++++++++++++ interface/web/tools/interface_settings.php | 5 +++-- interface/web/tools/lib/lang/en_interface.lng | 4 ++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index 6a23559f12..b7f00b4eef 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -199,6 +199,12 @@ $form['tabs']['users'] = array ( 'startmodule' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'startmodule_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'startmodule_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => '', @@ -212,6 +218,12 @@ $form['tabs']['users'] = array ( 'app_theme' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'RADIO', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'app_theme_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'app_theme_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => 'default', diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng index 81f3742a35..931c73e8eb 100644 --- a/interface/web/admin/lib/lang/en_users.lng +++ b/interface/web/admin/lib/lang/en_users.lng @@ -33,4 +33,8 @@ $wb['username_error_collision'] = 'The username may not be web or web plus a num $wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin'; $wb['lost_password_function_txt'] = 'Forgot password function is available'; $wb['no_user_insert'] = 'CP-Users of type -user- get added and updated automatically when you add a client or reseller.'; +$wb['startmodule_empty'] = 'Startmodule empty.'; +$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; +$wb['app_theme_empty'] = 'App theme empty.'; +$wb['app_theme_regex'] = 'Invalid chars in App theme.'; ?> diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php index f213605bf7..9ab49eb0f1 100644 --- a/interface/web/tools/form/interface_settings.tform.php +++ b/interface/web/tools/form/interface_settings.tform.php @@ -144,6 +144,12 @@ $form['tabs']['main'] = array ( 'startmodule' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'startmodule_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'startmodule_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => '', @@ -157,6 +163,12 @@ $form['tabs']['main'] = array ( 'app_theme' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'app_theme_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'app_theme_regex'), + ), 'regex' => '', 'errmsg' => '', 'default' => 'default', diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php index d7a1333b59..b14b637375 100644 --- a/interface/web/tools/interface_settings.php +++ b/interface/web/tools/interface_settings.php @@ -81,7 +81,6 @@ class page_action extends tform_actions { if(!in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } - $this->updateSessionTheme(); } function onInsert() { @@ -96,7 +95,6 @@ class page_action extends tform_actions { if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; } - $this->updateSessionTheme(); } function updateSessionTheme() { @@ -120,6 +118,9 @@ class page_action extends tform_actions { } function onAfterUpdate() { + + $this->updateSessionTheme(); + if($this->_theme_changed == true) { // not the best way, but it works header('Content-Type: text/html'); diff --git a/interface/web/tools/lib/lang/en_interface.lng b/interface/web/tools/lib/lang/en_interface.lng index b15c7334b2..7cb0e2d8bc 100644 --- a/interface/web/tools/lib/lang/en_interface.lng +++ b/interface/web/tools/lib/lang/en_interface.lng @@ -4,4 +4,8 @@ $wb["interface_desc_txt"] = 'Modify your interface'; $wb["language_txt"] = 'Language'; $wb["startmodule_txt"] = 'Startmodule'; $wb["app_theme_txt"] = 'Design'; +$wb['startmodule_empty'] = 'Startmodule empty.'; +$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; +$wb['app_theme_empty'] = 'App theme empty.'; +$wb['app_theme_regex'] = 'Invalid chars in App theme.'; ?> \ No newline at end of file -- GitLab From a1d4fd4828408ba33c53dfcfe14b1618f4a68c56 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 9 Oct 2019 10:48:24 +0200 Subject: [PATCH 158/571] More fixes for issue #5415 --- interface/web/admin/software_package_del.php | 3 +++ interface/web/admin/software_package_install.php | 7 +++++++ interface/web/admin/software_package_list.php | 7 ++++++- interface/web/admin/templates/software_package_list.htm | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/software_package_del.php b/interface/web/admin/software_package_del.php index 31aeb1c09b..e1387f39c4 100644 --- a/interface/web/admin/software_package_del.php +++ b/interface/web/admin/software_package_del.php @@ -36,6 +36,9 @@ $app->auth->check_module_permissions('admin'); $app->auth->check_security_permissions('admin_allow_software_packages'); if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); +// Check CSRF Token +$app->auth->csrf_token_check('GET'); + $software_update_inst_id = $app->functions->intval($_GET['software_update_inst_id']); if($software_update_inst_id > 0) { diff --git a/interface/web/admin/software_package_install.php b/interface/web/admin/software_package_install.php index ccbfd73ebe..6a5326d51a 100644 --- a/interface/web/admin/software_package_install.php +++ b/interface/web/admin/software_package_install.php @@ -38,6 +38,13 @@ $app->auth->check_security_permissions('admin_allow_software_packages'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); +// Check CSRF Token +if(count($_POST) > 0) { + $app->auth->csrf_token_check('POST'); +} else { + $app->auth->csrf_token_check('GET'); +} + $package_name = $_REQUEST['package']; $install_server_id = $app->functions->intval($_REQUEST['server_id']); $install_key = trim($_REQUEST['install_key']); diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php index b6664d4234..8a21696c7f 100644 --- a/interface/web/admin/software_package_list.php +++ b/interface/web/admin/software_package_list.php @@ -145,6 +145,9 @@ $app->uses('tpl'); $app->tpl->newTemplate("form.tpl.htm"); $app->tpl->setInclude('content_tpl', 'templates/software_package_list.htm'); +$csrf_token = $app->auth->csrf_token_get('software_package_list'); +$_csrf_id = $csrf_token['csrf_id']; +$_csrf_key = $csrf_token['csrf_key']; $servers = $app->db->queryAllRecords('SELECT server_id, server_name FROM server ORDER BY server_name'); $packages = $app->db->queryAllRecords('SELECT * FROM software_package'); @@ -167,12 +170,14 @@ if(is_array($packages) && count($packages) > 0) { if($p['package_installable'] == 'no') { $installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."<br />"; } else { - $installed_txt .= $s['server_name'].": <a href=\"#\" data-load-content=\"admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."\">Install now</a><br />"; + $installed_txt .= $s['server_name'].": <a href=\"#\" data-load-content=\"admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."&_csrf_key=".$_csrf_key."&_csrf_id=".$_csrf_id."\">Install now</a><br />"; } } } $packages[$key]['software_update_inst_id'] = intval($inst['software_update_inst_id']); $packages[$key]['installed'] = $installed_txt; + $packages[$key]['csrf_id'] = $_csrf_id; + $packages[$key]['csrf_key'] = $_csrf_key; } $app->tpl->setVar('has_packages', 1); } else { diff --git a/interface/web/admin/templates/software_package_list.htm b/interface/web/admin/templates/software_package_list.htm index 31969c0575..e69e3780af 100644 --- a/interface/web/admin/templates/software_package_list.htm +++ b/interface/web/admin/templates/software_package_list.htm @@ -33,7 +33,7 @@ <td>ispapp{tmpl_var name="package_id"}</td> <td class="text-right"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="admin/software_package_edit.php?id={tmpl_var name='package_id'}"><span class="icon icon-edit"></span></a> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_package_del.php?software_update_inst_id={tmpl_var name='software_update_inst_id'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/software_package_del.php?software_update_inst_id={tmpl_var name='software_update_inst_id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_if> -- GitLab From 92184cbe2c093ddbcda168e63613e87d593947c4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 9 Oct 2019 16:03:58 +0200 Subject: [PATCH 159/571] Updated Brazilian Portuguese and Turkish language files. --- interface/lib/lang/br.lng | 108 ++-- interface/lib/lang/tr.lng | 127 ++--- interface/web/admin/lib/lang/br.lng | 35 +- .../admin/lib/lang/br_directive_snippets.lng | 10 +- .../lib/lang/br_directive_snippets_list.lng | 4 +- interface/web/admin/lib/lang/br_firewall.lng | 10 +- .../web/admin/lib/lang/br_firewall_list.lng | 2 +- interface/web/admin/lib/lang/br_groups.lng | 2 +- .../web/admin/lib/lang/br_groups_list.lng | 6 +- interface/web/admin/lib/lang/br_iptables.lng | 10 +- .../web/admin/lib/lang/br_iptables_list.lng | 8 +- .../web/admin/lib/lang/br_language_add.lng | 4 +- .../admin/lib/lang/br_language_complete.lng | 2 +- .../web/admin/lib/lang/br_language_edit.lng | 4 +- .../web/admin/lib/lang/br_language_export.lng | 4 +- .../web/admin/lib/lang/br_language_import.lng | 6 +- .../web/admin/lib/lang/br_language_list.lng | 6 +- .../web/admin/lib/lang/br_package_install.lng | 2 +- .../web/admin/lib/lang/br_remote_action.lng | 14 +- .../web/admin/lib/lang/br_remote_user.lng | 96 ++-- .../admin/lib/lang/br_remote_user_list.lng | 6 +- interface/web/admin/lib/lang/br_server.lng | 16 +- .../web/admin/lib/lang/br_server_config.lng | 506 +++++++++--------- interface/web/admin/lib/lang/br_server_ip.lng | 12 +- .../web/admin/lib/lang/br_server_ip_list.lng | 4 +- .../web/admin/lib/lang/br_server_ip_map.lng | 14 +- .../admin/lib/lang/br_server_ip_map_list.lng | 6 +- .../web/admin/lib/lang/br_server_list.lng | 6 +- .../web/admin/lib/lang/br_server_php.lng | 16 +- .../web/admin/lib/lang/br_server_php_list.lng | 4 +- .../lib/lang/br_software_package_list.lng | 8 +- .../web/admin/lib/lang/br_software_repo.lng | 2 +- .../lib/lang/br_software_update_list.lng | 8 +- .../web/admin/lib/lang/br_system_config.lng | 127 +++-- .../admin/lib/lang/br_tpl_default_admin.lng | 22 +- interface/web/admin/lib/lang/br_users.lng | 36 +- .../web/admin/lib/lang/br_users_list.lng | 8 +- interface/web/admin/lib/lang/tr.lng | 30 +- .../admin/lib/lang/tr_directive_snippets.lng | 16 +- .../lib/lang/tr_directive_snippets_list.lng | 10 +- interface/web/admin/lib/lang/tr_firewall.lng | 5 +- interface/web/admin/lib/lang/tr_groups.lng | 2 +- interface/web/admin/lib/lang/tr_iptables.lng | 2 + .../web/admin/lib/lang/tr_iptables_list.lng | 2 + .../web/admin/lib/lang/tr_language_import.lng | 4 +- interface/web/admin/lib/lang/tr_login_as.lng | 12 + .../web/admin/lib/lang/tr_remote_action.lng | 10 +- .../web/admin/lib/lang/tr_remote_user.lng | 48 +- interface/web/admin/lib/lang/tr_server.lng | 6 +- .../web/admin/lib/lang/tr_server_config.lng | 230 ++++---- interface/web/admin/lib/lang/tr_server_ip.lng | 6 +- .../web/admin/lib/lang/tr_server_ip_list.lng | 4 +- .../web/admin/lib/lang/tr_server_ip_map.lng | 20 +- .../admin/lib/lang/tr_server_ip_map_list.lng | 10 +- .../web/admin/lib/lang/tr_server_list.lng | 4 +- .../web/admin/lib/lang/tr_server_php.lng | 2 +- .../web/admin/lib/lang/tr_server_php_list.lng | 2 +- .../admin/lib/lang/tr_software_package.lng | 2 +- .../lib/lang/tr_software_update_list.lng | 2 +- .../web/admin/lib/lang/tr_system_config.lng | 70 ++- interface/web/admin/lib/lang/tr_users.lng | 20 +- .../web/admin/lib/lang/tr_users_list.lng | 2 +- interface/web/client/lib/lang/br.lng | 20 +- interface/web/client/lib/lang/br_client.lng | 258 ++++----- .../web/client/lib/lang/br_client_circle.lng | 4 +- .../client/lib/lang/br_client_circle_list.lng | 6 +- .../web/client/lib/lang/br_client_del.lng | 2 +- .../web/client/lib/lang/br_client_message.lng | 16 +- .../lib/lang/br_client_message_template.lng | 10 +- .../lang/br_client_message_template_list.lng | 2 +- .../client/lib/lang/br_client_template.lng | 179 ++++--- .../lib/lang/br_client_template_list.lng | 8 +- .../web/client/lib/lang/br_clients_list.lng | 10 +- interface/web/client/lib/lang/br_domain.lng | 6 +- interface/web/client/lib/lang/br_reseller.lng | 288 +++++----- .../web/client/lib/lang/br_resellers_list.lng | 2 +- interface/web/client/lib/lang/tr.lng | 17 +- interface/web/client/lib/lang/tr_client.lng | 180 ++++--- .../lib/lang/tr_client_message_template.lng | 12 +- .../lang/tr_client_message_template_list.lng | 4 +- .../client/lib/lang/tr_client_template.lng | 141 ++--- .../lib/lang/tr_client_template_list.lng | 8 +- .../web/client/lib/lang/tr_clients_list.lng | 8 +- interface/web/client/lib/lang/tr_domain.lng | 8 +- .../web/client/lib/lang/tr_domain_list.lng | 6 +- interface/web/client/lib/lang/tr_reseller.lng | 184 +++---- .../web/client/lib/lang/tr_resellers_list.lng | 2 +- interface/web/dashboard/lib/lang/br.lng | 2 +- .../lib/lang/br_dashlet_customer.lng | 2 +- .../lib/lang/br_dashlet_databasequota.lng | 4 +- .../br_dashlet_invoice_client_settings.lng | 2 +- .../lib/lang/br_dashlet_invoices.lng | 8 +- .../dashboard/lib/lang/br_dashlet_limits.lng | 62 +-- .../lib/lang/br_dashlet_mailquota.lng | 4 +- .../dashboard/lib/lang/br_dashlet_modules.lng | 2 +- .../lib/lang/br_dashlet_products.lng | 4 +- .../dashboard/lib/lang/br_dashlet_quota.lng | 4 +- .../dashboard/lib/lang/br_dashlet_shop.lng | 6 +- .../lib/lang/tr_dashlet_customer.lng | 4 +- .../lib/lang/tr_dashlet_databasequota.lng | 10 +- .../dashboard/lib/lang/tr_dashlet_donate.lng | 10 +- .../tr_dashlet_invoice_client_settings.lng | 4 +- .../lib/lang/tr_dashlet_invoices.lng | 32 +- .../dashboard/lib/lang/tr_dashlet_limits.lng | 32 +- .../lib/lang/tr_dashlet_mailquota.lng | 2 +- .../dashboard/lib/lang/tr_dashlet_modules.lng | 2 +- .../lib/lang/tr_dashlet_products.lng | 14 +- .../dashboard/lib/lang/tr_dashlet_quota.lng | 6 +- .../dashboard/lib/lang/tr_dashlet_shop.lng | 12 +- interface/web/dns/lib/lang/br.lng | 10 +- interface/web/dns/lib/lang/br_dns_a.lng | 16 +- interface/web/dns/lib/lang/br_dns_a_list.lng | 8 +- interface/web/dns/lib/lang/br_dns_aaaa.lng | 16 +- interface/web/dns/lib/lang/br_dns_alias.lng | 16 +- interface/web/dns/lib/lang/br_dns_caa.lng | 32 +- interface/web/dns/lib/lang/br_dns_cname.lng | 18 +- interface/web/dns/lib/lang/br_dns_dkim.lng | 14 +- interface/web/dns/lib/lang/br_dns_dmarc.lng | 64 +-- interface/web/dns/lib/lang/br_dns_ds.lng | 17 +- interface/web/dns/lib/lang/br_dns_hinfo.lng | 18 +- interface/web/dns/lib/lang/br_dns_import.lng | 20 +- interface/web/dns/lib/lang/br_dns_loc.lng | 16 +- interface/web/dns/lib/lang/br_dns_mx.lng | 18 +- interface/web/dns/lib/lang/br_dns_ns.lng | 16 +- interface/web/dns/lib/lang/br_dns_ptr.lng | 14 +- interface/web/dns/lib/lang/br_dns_rp.lng | 16 +- interface/web/dns/lib/lang/br_dns_slave.lng | 16 +- .../dns/lib/lang/br_dns_slave_admin_list.lng | 4 +- .../web/dns/lib/lang/br_dns_slave_list.lng | 4 +- interface/web/dns/lib/lang/br_dns_soa.lng | 48 +- .../dns/lib/lang/br_dns_soa_admin_list.lng | 9 +- .../web/dns/lib/lang/br_dns_soa_list.lng | 7 +- interface/web/dns/lib/lang/br_dns_spf.lng | 22 +- interface/web/dns/lib/lang/br_dns_srv.lng | 18 +- .../web/dns/lib/lang/br_dns_template.lng | 4 +- .../web/dns/lib/lang/br_dns_template_list.lng | 4 +- interface/web/dns/lib/lang/br_dns_tlsa.lng | 12 +- interface/web/dns/lib/lang/br_dns_txt.lng | 22 +- interface/web/dns/lib/lang/br_dns_wizard.lng | 44 +- interface/web/dns/lib/lang/tr.lng | 5 +- interface/web/dns/lib/lang/tr_dns_a.lng | 6 +- interface/web/dns/lib/lang/tr_dns_a_list.lng | 2 +- interface/web/dns/lib/lang/tr_dns_aaaa.lng | 8 +- interface/web/dns/lib/lang/tr_dns_alias.lng | 4 +- interface/web/dns/lib/lang/tr_dns_cname.lng | 4 +- interface/web/dns/lib/lang/tr_dns_dkim.lng | 22 +- interface/web/dns/lib/lang/tr_dns_dmarc.lng | 96 ++-- interface/web/dns/lib/lang/tr_dns_ds.lng | 31 +- interface/web/dns/lib/lang/tr_dns_hinfo.lng | 4 +- interface/web/dns/lib/lang/tr_dns_import.lng | 16 +- interface/web/dns/lib/lang/tr_dns_loc.lng | 28 +- interface/web/dns/lib/lang/tr_dns_mx.lng | 10 +- interface/web/dns/lib/lang/tr_dns_ns.lng | 4 +- interface/web/dns/lib/lang/tr_dns_rp.lng | 4 +- interface/web/dns/lib/lang/tr_dns_slave.lng | 2 +- interface/web/dns/lib/lang/tr_dns_soa.lng | 24 +- .../dns/lib/lang/tr_dns_soa_admin_list.lng | 2 +- .../web/dns/lib/lang/tr_dns_soa_list.lng | 4 +- interface/web/dns/lib/lang/tr_dns_spf.lng | 46 +- interface/web/dns/lib/lang/tr_dns_srv.lng | 4 +- .../web/dns/lib/lang/tr_dns_template.lng | 1 - interface/web/dns/lib/lang/tr_dns_tlsa.lng | 28 +- interface/web/dns/lib/lang/tr_dns_txt.lng | 10 +- interface/web/dns/lib/lang/tr_dns_wizard.lng | 32 +- interface/web/help/lib/lang/br.lng | 14 +- interface/web/help/lib/lang/br_faq_form.lng | 6 +- .../lib/lang/br_faq_manage_questions_list.lng | 10 +- .../help/lib/lang/br_faq_sections_form.lng | 2 +- .../lib/lang/br_help_faq_sections_list.lng | 8 +- .../web/help/lib/lang/br_support_message.lng | 20 +- .../help/lib/lang/br_support_message_list.lng | 6 +- interface/web/help/lib/lang/tr.lng | 1 + .../web/help/lib/lang/tr_support_message.lng | 4 +- interface/web/login/lib/lang/br.lng | 8 +- interface/web/login/lib/lang/br_login_as.lng | 14 +- interface/web/login/lib/lang/tr.lng | 16 +- interface/web/login/lib/lang/tr_login_as.lng | 9 +- interface/web/mail/lib/lang/br.lng | 78 +-- .../mail/lib/lang/br_backup_stats_list.lng | 10 +- interface/web/mail/lib/lang/br_mail_alias.lng | 16 +- .../web/mail/lib/lang/br_mail_alias_list.lng | 8 +- .../web/mail/lib/lang/br_mail_aliasdomain.lng | 8 +- .../lib/lang/br_mail_aliasdomain_list.lng | 5 +- .../web/mail/lib/lang/br_mail_backup_list.lng | 20 +- .../web/mail/lib/lang/br_mail_blacklist.lng | 4 +- .../mail/lib/lang/br_mail_blacklist_list.lng | 6 +- .../mail/lib/lang/br_mail_content_filter.lng | 6 +- .../lib/lang/br_mail_content_filter_list.lng | 2 +- .../web/mail/lib/lang/br_mail_domain.lng | 26 +- .../mail/lib/lang/br_mail_domain_catchall.lng | 13 +- .../lib/lang/br_mail_domain_catchall_list.lng | 6 +- .../web/mail/lib/lang/br_mail_forward.lng | 16 +- .../mail/lib/lang/br_mail_forward_list.lng | 6 +- interface/web/mail/lib/lang/br_mail_get.lng | 22 +- .../web/mail/lib/lang/br_mail_get_list.lng | 2 +- .../web/mail/lib/lang/br_mail_mailinglist.lng | 26 +- .../lib/lang/br_mail_mailinglist_list.lng | 2 +- .../mail/lib/lang/br_mail_relay_recipient.lng | 4 +- .../lib/lang/br_mail_relay_recipient_list.lng | 4 +- .../web/mail/lib/lang/br_mail_spamfilter.lng | 18 +- .../mail/lib/lang/br_mail_spamfilter_list.lng | 8 +- .../web/mail/lib/lang/br_mail_transport.lng | 4 +- .../mail/lib/lang/br_mail_transport_list.lng | 4 +- interface/web/mail/lib/lang/br_mail_user.lng | 86 +-- .../web/mail/lib/lang/br_mail_user_filter.lng | 20 +- .../lib/lang/br_mail_user_filter_list.lng | 2 +- .../mail/lib/lang/br_mail_user_stats_list.lng | 2 +- .../web/mail/lib/lang/br_mail_whitelist.lng | 6 +- .../mail/lib/lang/br_mail_whitelist_list.lng | 6 +- .../mail/lib/lang/br_spamfilter_blacklist.lng | 6 +- .../lib/lang/br_spamfilter_blacklist_list.lng | 6 +- .../mail/lib/lang/br_spamfilter_config.lng | 30 +- .../lib/lang/br_spamfilter_config_list.lng | 4 +- .../mail/lib/lang/br_spamfilter_policy.lng | 82 +-- .../lib/lang/br_spamfilter_policy_list.lng | 10 +- .../web/mail/lib/lang/br_spamfilter_users.lng | 2 +- .../lib/lang/br_spamfilter_users_list.lng | 8 +- .../mail/lib/lang/br_spamfilter_whitelist.lng | 6 +- .../lib/lang/br_spamfilter_whitelist_list.lng | 6 +- .../lib/lang/br_user_quota_stats_list.lng | 4 +- .../web/mail/lib/lang/br_xmpp_domain.lng | 74 +-- .../web/mail/lib/lang/br_xmpp_domain_list.lng | 2 +- interface/web/mail/lib/lang/br_xmpp_user.lng | 12 +- .../web/mail/lib/lang/br_xmpp_user_list.lng | 2 +- interface/web/mail/lib/lang/tr.lng | 35 +- .../mail/lib/lang/tr_backup_stats_list.lng | 14 +- interface/web/mail/lib/lang/tr_mail_alias.lng | 12 +- .../web/mail/lib/lang/tr_mail_aliasdomain.lng | 12 +- .../lib/lang/tr_mail_aliasdomain_list.lng | 5 +- .../web/mail/lib/lang/tr_mail_backup_list.lng | 28 +- .../web/mail/lib/lang/tr_mail_blacklist.lng | 2 +- .../mail/lib/lang/tr_mail_blacklist_list.lng | 2 +- .../mail/lib/lang/tr_mail_content_filter.lng | 4 +- .../web/mail/lib/lang/tr_mail_domain.lng | 34 +- .../lib/lang/tr_mail_domain_admin_list.lng | 6 +- .../mail/lib/lang/tr_mail_domain_catchall.lng | 10 +- .../lib/lang/tr_mail_domain_catchall_list.lng | 4 +- .../web/mail/lib/lang/tr_mail_domain_list.lng | 6 +- .../web/mail/lib/lang/tr_mail_forward.lng | 12 +- interface/web/mail/lib/lang/tr_mail_get.lng | 8 +- .../web/mail/lib/lang/tr_mail_mailinglist.lng | 14 +- .../lib/lang/tr_mail_mailinglist_list.lng | 4 +- .../mail/lib/lang/tr_mail_relay_recipient.lng | 2 +- .../web/mail/lib/lang/tr_mail_spamfilter.lng | 6 +- .../mail/lib/lang/tr_mail_spamfilter_list.lng | 4 +- .../web/mail/lib/lang/tr_mail_transport.lng | 4 +- .../mail/lib/lang/tr_mail_transport_list.lng | 2 +- interface/web/mail/lib/lang/tr_mail_user.lng | 52 +- .../web/mail/lib/lang/tr_mail_user_filter.lng | 4 +- .../web/mail/lib/lang/tr_mail_user_list.lng | 6 +- .../mail/lib/lang/tr_mail_user_stats_list.lng | 2 +- .../web/mail/lib/lang/tr_mail_whitelist.lng | 2 +- .../mail/lib/lang/tr_mail_whitelist_list.lng | 2 +- .../lib/lang/tr_spamfilter_blacklist_list.lng | 2 +- .../mail/lib/lang/tr_spamfilter_config.lng | 12 +- .../lib/lang/tr_spamfilter_config_list.lng | 2 +- .../mail/lib/lang/tr_spamfilter_policy.lng | 71 +-- .../lib/lang/tr_spamfilter_policy_list.lng | 6 +- .../lib/lang/tr_spamfilter_users_list.lng | 4 +- .../lib/lang/tr_spamfilter_whitelist_list.lng | 2 +- .../lib/lang/tr_user_quota_stats_list.lng | 2 +- .../web/mail/lib/lang/tr_xmpp_domain.lng | 120 ++--- .../lib/lang/tr_xmpp_domain_admin_list.lng | 12 +- .../web/mail/lib/lang/tr_xmpp_domain_list.lng | 10 +- interface/web/mail/lib/lang/tr_xmpp_user.lng | 26 +- .../web/mail/lib/lang/tr_xmpp_user_list.lng | 12 +- interface/web/mailuser/lib/lang/br.lng | 10 +- interface/web/mailuser/lib/lang/br_index.lng | 10 +- .../lib/lang/br_mail_user_autoresponder.lng | 14 +- .../web/mailuser/lib/lang/br_mail_user_cc.lng | 10 +- .../mailuser/lib/lang/br_mail_user_filter.lng | 14 +- .../lib/lang/br_mail_user_filter_list.lng | 2 +- .../lib/lang/br_mail_user_password.lng | 10 +- .../lib/lang/br_mail_user_spamfilter.lng | 2 +- interface/web/mailuser/lib/lang/tr.lng | 2 +- interface/web/mailuser/lib/lang/tr_index.lng | 8 +- .../mailuser/lib/lang/tr_mail_user_filter.lng | 4 +- .../lib/lang/tr_mail_user_filter_list.lng | 2 +- .../lib/lang/tr_mail_user_password.lng | 8 +- .../lib/lang/tr_mail_user_spamfilter.lng | 4 +- interface/web/monitor/lib/lang/br.lng | 225 ++++---- .../web/monitor/lib/lang/br_datalog_list.lng | 4 +- .../lib/lang/br_dataloghistory_list.lng | 12 +- .../lib/lang/br_dataloghistory_undo.lng | 10 +- .../lib/lang/br_dataloghistory_view.lng | 46 +- .../web/monitor/lib/lang/br_syslog_list.lng | 6 +- interface/web/monitor/lib/lang/tr.lng | 69 ++- interface/web/sites/lib/lang/br.lng | 21 +- interface/web/sites/lib/lang/br_aps.lng | 76 +-- .../sites/lib/lang/br_aps_instances_list.lng | 2 +- .../sites/lib/lang/br_aps_packages_list.lng | 2 +- .../lib/lang/br_aps_update_packagelist.lng | 4 +- .../sites/lib/lang/br_backup_stats_list.lng | 10 +- interface/web/sites/lib/lang/br_cron.lng | 28 +- interface/web/sites/lib/lang/br_cron_list.lng | 10 +- interface/web/sites/lib/lang/br_database.lng | 54 +- .../sites/lib/lang/br_database_admin_list.lng | 6 +- .../web/sites/lib/lang/br_database_list.lng | 6 +- .../lib/lang/br_database_quota_stats_list.lng | 8 +- .../web/sites/lib/lang/br_database_user.lng | 20 +- .../lib/lang/br_database_user_admin_list.lng | 4 +- .../sites/lib/lang/br_database_user_list.lng | 4 +- .../lib/lang/br_ftp_sites_stats_list.lng | 4 +- interface/web/sites/lib/lang/br_ftp_user.lng | 39 +- .../web/sites/lib/lang/br_shell_user.lng | 46 +- .../web/sites/lib/lang/br_shell_user_list.lng | 2 +- .../lib/lang/br_user_quota_stats_list.lng | 6 +- .../web/sites/lib/lang/br_web_aliasdomain.lng | 134 ++--- .../lib/lang/br_web_aliasdomain_list.lng | 10 +- .../web/sites/lib/lang/br_web_backup_list.lng | 27 +- .../web/sites/lib/lang/br_web_childdomain.lng | 148 ++--- .../lib/lang/br_web_childdomain_list.lng | 14 +- .../web/sites/lib/lang/br_web_domain.lng | 179 +++---- .../web/sites/lib/lang/br_web_folder.lng | 2 +- .../web/sites/lib/lang/br_web_folder_user.lng | 10 +- .../lib/lang/br_web_folder_user_list.lng | 4 +- .../web/sites/lib/lang/br_web_subdomain.lng | 34 +- .../sites/lib/lang/br_web_vhost_domain.lng | 199 +++---- .../lang/br_web_vhost_domain_admin_list.lng | 4 +- .../lib/lang/br_web_vhost_domain_list.lng | 6 +- .../sites/lib/lang/br_web_vhost_subdomain.lng | 159 +++--- .../web/sites/lib/lang/br_webdav_user.lng | 18 +- interface/web/sites/lib/lang/tr.lng | 12 +- interface/web/sites/lib/lang/tr_aps.lng | 23 +- .../sites/lib/lang/tr_aps_instances_list.lng | 4 +- .../sites/lib/lang/tr_backup_stats_list.lng | 14 +- interface/web/sites/lib/lang/tr_cron.lng | 6 +- interface/web/sites/lib/lang/tr_database.lng | 30 +- .../sites/lib/lang/tr_database_admin_list.lng | 8 +- .../web/sites/lib/lang/tr_database_list.lng | 2 +- .../lib/lang/tr_database_quota_stats_list.lng | 14 +- .../web/sites/lib/lang/tr_database_user.lng | 12 +- .../lib/lang/tr_ftp_sites_stats_list.lng | 16 +- interface/web/sites/lib/lang/tr_ftp_user.lng | 7 +- .../web/sites/lib/lang/tr_shell_user.lng | 4 +- .../web/sites/lib/lang/tr_shell_user_list.lng | 6 +- .../lib/lang/tr_user_quota_stats_list.lng | 2 +- .../web/sites/lib/lang/tr_web_aliasdomain.lng | 66 +-- .../lib/lang/tr_web_aliasdomain_list.lng | 16 +- .../web/sites/lib/lang/tr_web_backup_list.lng | 15 +- .../web/sites/lib/lang/tr_web_childdomain.lng | 178 +++--- .../lib/lang/tr_web_childdomain_list.lng | 20 +- .../lib/lang/tr_web_directive_snippets.lng | 2 +- .../web/sites/lib/lang/tr_web_domain.lng | 80 +-- .../lib/lang/tr_web_domain_admin_list.lng | 2 +- .../web/sites/lib/lang/tr_web_domain_list.lng | 2 +- .../web/sites/lib/lang/tr_web_folder_user.lng | 4 +- .../lib/lang/tr_web_sites_stats_list.lng | 2 +- .../web/sites/lib/lang/tr_web_subdomain.lng | 38 +- .../sites/lib/lang/tr_web_subdomain_list.lng | 6 +- .../sites/lib/lang/tr_web_vhost_domain.lng | 123 ++--- .../lang/tr_web_vhost_domain_admin_list.lng | 24 +- .../lib/lang/tr_web_vhost_domain_list.lng | 14 +- .../sites/lib/lang/tr_web_vhost_subdomain.lng | 77 +-- .../lib/lang/tr_web_vhost_subdomain_list.lng | 6 +- .../web/sites/lib/lang/tr_webdav_user.lng | 4 +- .../lib/lang/br_strengthmeter.lng | 4 +- interface/web/tools/lib/lang/br.lng | 12 +- .../tools/lib/lang/br_import_ispconfig.lng | 26 +- .../web/tools/lib/lang/br_import_vpopmail.lng | 9 +- interface/web/tools/lib/lang/br_index.lng | 2 +- interface/web/tools/lib/lang/br_interface.lng | 6 +- interface/web/tools/lib/lang/br_resync.lng | 72 +-- .../web/tools/lib/lang/br_tpl_default.lng | 4 +- .../web/tools/lib/lang/br_usersettings.lng | 12 +- interface/web/tools/lib/lang/tr.lng | 10 +- .../tools/lib/lang/tr_import_ispconfig.lng | 37 +- .../web/tools/lib/lang/tr_import_vpopmail.lng | 11 +- interface/web/tools/lib/lang/tr_index.lng | 2 +- interface/web/tools/lib/lang/tr_interface.lng | 2 +- interface/web/tools/lib/lang/tr_resync.lng | 98 ++-- .../web/tools/lib/lang/tr_usersettings.lng | 6 +- interface/web/vm/lib/lang/br.lng | 6 +- .../web/vm/lib/lang/br_openvz_action.lng | 18 +- interface/web/vm/lib/lang/br_openvz_ip.lng | 6 +- .../web/vm/lib/lang/br_openvz_ip_list.lng | 2 +- .../web/vm/lib/lang/br_openvz_ostemplate.lng | 6 +- .../vm/lib/lang/br_openvz_ostemplate_list.lng | 6 +- .../web/vm/lib/lang/br_openvz_template.lng | 146 ++--- .../vm/lib/lang/br_openvz_template_list.lng | 4 +- interface/web/vm/lib/lang/br_openvz_vm.lng | 43 +- .../web/vm/lib/lang/br_openvz_vm_list.lng | 6 +- interface/web/vm/lib/lang/tr.lng | 6 +- .../web/vm/lib/lang/tr_openvz_action.lng | 15 +- interface/web/vm/lib/lang/tr_openvz_ip.lng | 2 +- .../vm/lib/lang/tr_openvz_ostemplate_list.lng | 2 +- .../web/vm/lib/lang/tr_openvz_template.lng | 22 +- interface/web/vm/lib/lang/tr_openvz_vm.lng | 20 +- .../web/vm/lib/lang/tr_openvz_vm_list.lng | 4 +- 389 files changed, 4516 insertions(+), 4450 deletions(-) create mode 100644 interface/web/admin/lib/lang/tr_login_as.lng diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index 7db654bd05..60a0dcf910 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -1,45 +1,48 @@ <?php -$wb['conf_format_dateshort'] = 'd/m/Y'; +$wb['conf_format_dateshort'] = 'd-m-Y'; +$wb['conf_format_dateshort_human_readable'] = 'dd-mm-yyyy'; $wb['conf_format_datelong'] = 'l dS de F Y'; $wb['conf_format_timeshort'] = 'H:i'; $wb['conf_format_timelong'] = 'H:i:s'; -$wb['conf_format_datetime'] = 'd/m/Y H:i'; +$wb['conf_format_datetime'] = 'd-m-Y H:i'; $wb['number_format_decimals'] = '4'; $wb['number_format_decimals_client'] = '2'; $wb['number_format_dec_point'] = '.'; $wb['number_format_thousands_sep'] = '.'; $wb['error_301'] = 'Módulo não permitido para o usuário atual.'; -$wb['error_302'] = 'Módulo é inválido.'; -$wb['error_1001'] = 'Usuário ou senha em branco!'; -$wb['error_1002'] = 'Usuário ou senha incorretos!'; -$wb['error_1003'] = 'Usuário inativo!'; -$wb['delete_confirmation'] = 'Tem certeza de que deseja remover este registro?'; -$wb['error_no_view_permission'] = 'Você não tem permissão para visualizar este registro ou o mesmo não existe!'; +$wb['error_302'] = 'Módulo inválido.'; +$wb['error_1001'] = 'Usuário e/ou senha está em branco!'; +$wb['error_1002'] = 'Usuário e/ou senha incorretos!'; +$wb['error_1003'] = 'Usuário desabilitado!'; +$wb['delete_confirmation'] = 'Você tem certeza que deseja remover o registro?'; +$wb['error_no_view_permission'] = 'Você não tem permissão para visualizar este registro ou o registro não existe!'; $wb['error_no_delete_permission'] = 'Você não tem permissão para remover este registro!'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; -$wb['page_next_txt'] = 'Próximo'; -$wb['page_back_txt'] = 'Voltar'; +$wb['page_and_txt'] = 'e'; +$wb['page_next_txt'] = 'Próxima'; +$wb['page_back_txt'] = 'Anterior'; $wb['delete_txt'] = 'Remover'; $wb['filter_txt'] = 'Filtrar'; $wb['add_new_record_txt'] = 'Adicionar novo registro'; $wb['btn_save_txt'] = 'Salvar'; -$wb['btn_cancel_txt'] = 'Voltar'; -$wb['toolsarea_head_txt'] = 'Extras'; -$wb['page_and_txt'] = 'e'; +$wb['btn_cancel_txt'] = 'Cancelar'; $wb['top_menu_system'] = 'Sistema'; $wb['top_menu_client'] = 'Clientes'; -$wb['top_menu_email'] = 'e-Mails'; +$wb['top_menu_email'] = 'e-Mail'; $wb['top_menu_monitor'] = 'Monitor'; $wb['top_menu_sites'] = 'Sites'; $wb['top_menu_dns'] = 'DNS'; -$wb['top_menu_tools'] = 'Extras'; +$wb['top_menu_tools'] = 'Ferramentas'; $wb['top_menu_help'] = 'Ajuda'; -$wb['top_menu_billing'] = 'Faturas'; +$wb['top_menu_billing'] = 'Faturamento'; +$wb['top_menu_mailuser'] = 'Contas de e-mail'; $wb['top_menu_domain'] = 'DomÃnios'; $wb['top_menu_dashboard'] = 'InÃcio'; -$wb['latest_news_txt'] = 'Últimas notÃcias'; $wb['top_menu_vm'] = 'VPS'; +$wb['toolsarea_head_txt'] = 'Ferramentas'; +$wb['latest_news_txt'] = 'Novidades'; +$wb['logout_txt'] = 'Sair'; $wb['daynamesmin_su'] = 'Do'; $wb['daynamesmin_mo'] = 'Se'; $wb['daynamesmin_tu'] = 'Te'; @@ -68,27 +71,24 @@ $wb['monthnamesshort_nov'] = 'Nov'; $wb['monthnamesshort_dec'] = 'Dez'; $wb['datepicker_nextText'] = 'Próximo'; $wb['datepicker_prevText'] = 'Anterior'; -$wb['logout_txt'] = 'Sair'; -$wb['conf_format_dateshort_human_readable'] = 'dd-mm-aaaa'; -$wb['submit_confirmation'] = 'Você tem certeza que gostaria de executar esta ação?'; -$wb['top_menu_mailuser'] = 'e-Mails'; +$wb['submit_confirmation'] = 'Você tem certeza que deseja realizar esta ação?'; $wb['globalsearch_resultslimit_of_txt'] = 'de'; $wb['globalsearch_resultslimit_results_txt'] = 'resultados'; $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.'; $wb['globalsearch_noresults_limit_txt'] = '0 resultados'; $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar'; $wb['globalsearch_suggestions_text_txt'] = 'Sugestões'; -$wb['global_tabchange_warning_txt'] = 'As alterações efetuadas nesta aba terão efeito após você pressionar OK. Se cancelar, as alterações serão descartadas.'; -$wb['global_tabchange_discard_txt'] = 'Você não salvou as alterações nesta aba. As alterações serão descartadas se continuar.'; -$wb['datalog_changes_txt'] = 'As seguintes alterações ainda não foram realizadas em todos os servidores.'; -$wb['datalog_changes_end_txt'] = 'Gravar as atualizações pode demorar alguns minutos. Por favor, seja paciente.'; +$wb['global_tabchange_warning_txt'] = 'Para alterar dados nesta aba clique OK. Cancelar descarta todas as alterações.'; +$wb['global_tabchange_discard_txt'] = 'Você não salvou as alterações nesta aba. Todas as alterações serão descartadas caso prossiga.'; +$wb['datalog_changes_txt'] = 'As alterações ainda não propagaram em todos os servidores:'; +$wb['datalog_changes_end_txt'] = 'Gravar alterações pode levar alguns minutos. Por favor, seja paciente.'; $wb['datalog_status_i_web_database'] = 'Adicionar novo banco de dados'; $wb['datalog_status_u_web_database'] = 'Atualizar banco de dados'; $wb['datalog_status_d_web_database'] = 'Remover banco de dados'; -$wb['datalog_status_i_web_database_user'] = 'Adicionar usuário do banco de dados'; -$wb['datalog_status_u_web_database_user'] = 'Atualizar usuário do banco de dados'; -$wb['datalog_status_d_web_database_user'] = 'Remover usuário do banco de dados'; -$wb['datalog_status_i_web_domain'] = 'Adicionar novo site'; +$wb['datalog_status_i_web_database_user'] = 'Adicionar novo usuário de banco de dados'; +$wb['datalog_status_u_web_database_user'] = 'Atualizar usuário de banco de dados'; +$wb['datalog_status_d_web_database_user'] = 'Remover usuário de banco de dados'; +$wb['datalog_status_i_web_domain'] = 'Adicionar site'; $wb['datalog_status_u_web_domain'] = 'Atualizar site'; $wb['datalog_status_d_web_domain'] = 'Remover site'; $wb['datalog_status_i_ftp_user'] = 'Adicionar usuário ftp'; @@ -100,9 +100,12 @@ $wb['datalog_status_d_mail_domain'] = 'Remover domÃnio de e-mail'; $wb['datalog_status_i_mail_user'] = 'Adicionar conta de e-mail'; $wb['datalog_status_u_mail_user'] = 'Atualizar conta de e-mail'; $wb['datalog_status_d_mail_user'] = 'Remover conta de e-mail'; -$wb['datalog_status_i_mail_forwarding'] = 'Adicionar encaminhamento de e-mail'; -$wb['datalog_status_u_mail_forwarding'] = 'Atualizar encaminhamento de e-mail'; -$wb['datalog_status_d_mail_forwarding'] = 'Remover encaminhamento de e-mail'; +$wb['datalog_status_i_spamfilter_users'] = 'Adicionar filtros anti-spam'; +$wb['datalog_status_u_spamfilter_users'] = 'Atualizar filtros anti-spam'; +$wb['datalog_status_d_spamfilter_users'] = 'Remover filtros anti-spam'; +$wb['datalog_status_i_mail_forwarding'] = 'Adicionar endereço de e-mail'; +$wb['datalog_status_u_mail_forwarding'] = 'Atualizar endereço de e-mail'; +$wb['datalog_status_d_mail_forwarding'] = 'Remover endereço de e-mail'; $wb['datalog_status_i_dns_rr'] = 'Adicionar registro dns'; $wb['datalog_status_u_dns_rr'] = 'Atualizar registro dns'; $wb['datalog_status_d_dns_rr'] = 'Remover registro dns'; @@ -112,50 +115,47 @@ $wb['datalog_status_d_dns_soa'] = 'Remover zona dns'; $wb['datalog_status_i_cron'] = 'Adicionar tarefa no cron'; $wb['datalog_status_u_cron'] = 'Atualizar tarefa no cron'; $wb['datalog_status_d_cron'] = 'Remover tarefa no cron'; -$wb['datalog_status_i_mail_get'] = 'Adicionar conta de busca de e-mails'; -$wb['datalog_status_u_mail_get'] = 'Atualizar conta de busca de e-mails'; -$wb['datalog_status_d_mail_get'] = 'Remover conta de busca de e-mails'; +$wb['datalog_status_i_mail_get'] = 'Adicionar conta de busca de e-mail'; +$wb['datalog_status_u_mail_get'] = 'Atualizar conta de busca de e-mail'; +$wb['datalog_status_d_mail_get'] = 'Remover conta de busca de e-mail'; $wb['datalog_status_i_mail_mailinglist'] = 'Adicionar lista de e-mails'; $wb['datalog_status_u_mail_mailinglist'] = 'Atualizar lista de e-mails'; $wb['datalog_status_d_mail_mailinglist'] = 'Remover lista de e-mails'; -$wb['datalog_status_i_shell_user'] = 'Adicionar usuário shell'; -$wb['datalog_status_u_shell_user'] = 'Atualizar usuário shell'; -$wb['datalog_status_d_shell_user'] = 'Remover usuário shell'; +$wb['datalog_status_i_shell_user'] = 'Adicionar usuário do shell'; +$wb['datalog_status_u_shell_user'] = 'Atualizar usuário do shell'; +$wb['datalog_status_d_shell_user'] = 'Remover usuário do shell'; $wb['datalog_status_i_web_folder'] = 'Adicionar pasta protegida'; $wb['datalog_status_u_web_folder'] = 'Atualizar pasta protegida'; $wb['datalog_status_d_web_folder'] = 'Remover pasta protegida'; $wb['datalog_status_i_web_folder_user'] = 'Adicionar usuário de pasta protegida'; $wb['datalog_status_u_web_folder_user'] = 'Atualizar usuário de pasta protegida'; $wb['datalog_status_d_web_folder_user'] = 'Remover usuário de pasta protegida'; -$wb['datalog_status_i_spamfilter_users'] = 'Adicionar configurações de filtro anti-spam'; -$wb['datalog_status_u_spamfilter_users'] = 'Atualizar configurações de filtro anti-spam'; -$wb['datalog_status_d_spamfilter_users'] = 'Remover configurações de filtro anti-spam'; +$wb['datalog_status_i_xmpp_domain'] = 'Adicionar domÃnio xmpp'; +$wb['datalog_status_u_xmpp_domain'] = 'Atualizar domÃnio xmpp'; +$wb['datalog_status_d_xmpp_domain'] = 'Remover domÃnio xmpp'; +$wb['datalog_status_i_xmpp_user'] = 'Adicionar usuário xmpp'; +$wb['datalog_status_u_xmpp_user'] = 'Atualizar usuário xmpp'; +$wb['datalog_status_d_xmpp_user'] = 'Remover usuário xmpp'; +$wb['err_csrf_attempt_blocked'] = 'Tentativa de CSRF bloqueada.'; $wb['login_as_txt'] = 'Acessar como'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; $wb['no_destination_perm'] = 'Você não tem permissão para este destino.'; -$wb['client_you_are_locked'] = 'Você não tem permissão para alterar quaisquer configurações.'; +$wb['client_you_are_locked'] = 'Você não tem permissão para alterar nenhuma configuração.'; $wb['gender_m_txt'] = 'Sr.'; $wb['gender_f_txt'] = 'Sra.'; $wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'Este cliente possui registros no módulo de faturamento, portanto não pode ser removido.'; $wb['yes_txt'] = 'Sim'; $wb['no_txt'] = 'Não'; +$wb['None'] = 'Nenhum'; $wb['strength_1'] = 'Fraca'; $wb['strength_2'] = 'Razoável'; $wb['strength_3'] = 'Boa'; $wb['strength_4'] = 'Forte'; $wb['strength_5'] = 'Muito Forte'; -$wb['weak_password_txt'] = 'A senha escolhida não corresponde à s diretrizes de segurança. São necessários no mÃnimo {chars} caracteres e dificuldade {strength}.'; -$wb['weak_password_length_txt'] = 'A senha escolhida não corresponde à s diretrizes de segurança. São necessários no mÃnimo {chars} caracteres.'; -$wb['security_check1_txt'] = 'Verifique se há permissão de segurança:'; -$wb['security_check2_txt'] = 'falha'; -$wb['err_csrf_attempt_blocked'] = 'CSRF temporariamente bloqueado.'; +$wb['weak_password_txt'] = 'A senha configurada não obedece as diretivas de segurança. A senha deve possuir ao menos {chars} caracteres e ao menos um caractere maiúsculoe um caractere especial e dificuldade "{strength}".'; +$wb['weak_password_length_txt'] = 'A senha configurada não obedece as diretivas de segurança. A senha deve possuir ao menos {chars} de comprimento.'; +$wb['security_check1_txt'] = 'Verifique as permissões de segurança:'; +$wb['security_check2_txt'] = 'falhou.'; $wb['select_directive_snippet_txt'] = 'Diretiva de trechos de código'; $wb['select_master_directive_snippet_txt'] = 'Diretiva mestre de trechos de código'; -$wb['None'] = 'Nenhum'; -$wb['datalog_status_i_xmpp_domain'] = 'Adicionar domÃnio XMPP'; -$wb['datalog_status_u_xmpp_domain'] = 'Atualizar domÃnio XMPP'; -$wb['datalog_status_d_xmpp_domain'] = 'Remover domÃnio XMPP'; -$wb['datalog_status_i_xmpp_user'] = 'Adicionar usuário XMPP'; -$wb['datalog_status_u_xmpp_user'] = 'Atualizar usuário XMPP'; -$wb['datalog_status_d_xmpp_user'] = 'Remover usuário XMPP'; ?> diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 115bc890bb..cf4491ad5d 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -36,10 +36,10 @@ $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Araçlar'; $wb['top_menu_help'] = 'Yardım'; $wb['top_menu_billing'] = 'Faturalama'; -$wb['top_menu_mailuser'] = 'Posta Kullanıcısı'; +$wb['top_menu_mailuser'] = 'E-posta Kullanıcısı'; $wb['top_menu_domain'] = 'Alan Adları'; $wb['top_menu_dashboard'] = 'Açılış'; -$wb['top_menu_vm'] = 'SSunucu'; +$wb['top_menu_vm'] = 'sSunucu'; $wb['toolsarea_head_txt'] = 'Araçlar'; $wb['latest_news_txt'] = 'Haberler'; $wb['logout_txt'] = 'Oturumu Kapat'; @@ -74,65 +74,72 @@ $wb['datepicker_prevText'] = 'Önceki'; $wb['submit_confirmation'] = 'Bu iÅŸlemi yapmak istiyor musunuz?'; $wb['globalsearch_resultslimit_of_txt'] = '/'; $wb['globalsearch_resultslimit_results_txt'] = 'sonuç'; -$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.'; +$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.'; $wb['globalsearch_noresults_limit_txt'] = '0 sonuç'; $wb['globalsearch_searchfield_watermark_txt'] = 'Arama'; $wb['globalsearch_suggestions_text_txt'] = 'Öneriler'; -$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki deÄŸiÅŸiklikler Tamam düğmesine tıklandığında kaydedilir. Ä°ptal düğmesine tıklandığında yoksayılır.'; -$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiÅŸ deÄŸiÅŸiklikler var. Devam ederseniz deÄŸiÅŸiklikler yoksayılacak.'; +$wb['global_tabchange_warning_txt'] = 'Bu sekmedeki deÄŸiÅŸiklikler Tamam düğmesine tıklandığında kaydedilir. Ä°ptal düğmesine tıklandığında yok sayılır.'; +$wb['global_tabchange_discard_txt'] = 'Bu sekmede kaydedilmemiÅŸ deÄŸiÅŸiklikler var. Devam ederseniz deÄŸiÅŸiklikler yok sayılacak.'; + $wb['datalog_changes_txt'] = 'Åžu deÄŸiÅŸiklikler henüz tüm sunuculara dağıtılmadı:'; $wb['datalog_changes_end_txt'] = 'Güncellemelerin kaydedilmesi bir dakika kadar sürecek. Lütfen bekleyin.'; -$wb['datalog_status_i_web_database'] = 'Veritabanı ekle'; -$wb['datalog_status_u_web_database'] = 'Veritabanını güncelle'; -$wb['datalog_status_d_web_database'] = 'Veritabanını sil'; -$wb['datalog_status_i_web_database_user'] = 'Veritabanı kullanıcısı ekle'; -$wb['datalog_status_u_web_database_user'] = 'Veritabanı kullanıcısını güncelle'; -$wb['datalog_status_d_web_database_user'] = 'Veritabanı kullanıcısını sil'; -$wb['datalog_status_i_web_domain'] = 'Web sitesi ekle'; -$wb['datalog_status_u_web_domain'] = 'Web sitesi ayarlarını güncelle'; -$wb['datalog_status_d_web_domain'] = 'Web sitesini sil'; -$wb['datalog_status_i_ftp_user'] = 'FTP kullanıcısı ekle'; -$wb['datalog_status_u_ftp_user'] = 'FTP kullanıcısını güncelle'; -$wb['datalog_status_d_ftp_user'] = 'FTP kullanıcısını sil'; -$wb['datalog_status_i_mail_domain'] = 'E-posta alan adı ekle'; -$wb['datalog_status_u_mail_domain'] = 'E-posta alan adını güncelle'; -$wb['datalog_status_d_mail_domain'] = 'E-posta alan adını sil'; -$wb['datalog_status_i_mail_user'] = 'E-posta kullanıcısı ekle'; -$wb['datalog_status_u_mail_user'] = 'E-posta kullanıcısını güncelle'; -$wb['datalog_status_d_mail_user'] = 'E-posta kullanıcısını sil'; -$wb['datalog_status_i_spamfilter_users'] = 'Spam süzgeci ayarları ekle'; -$wb['datalog_status_u_spamfilter_users'] = 'Spam süzgeci ayarlarını güncelle'; -$wb['datalog_status_d_spamfilter_users'] = 'Spam süzgeci ayarlarını sil'; -$wb['datalog_status_i_mail_forwarding'] = 'E-posta adresi ekle'; -$wb['datalog_status_u_mail_forwarding'] = 'E-posta adresini güncelle'; -$wb['datalog_status_d_mail_forwarding'] = 'E-posta adresini sil'; -$wb['datalog_status_i_dns_rr'] = 'DNS kaydı ekle'; -$wb['datalog_status_u_dns_rr'] = 'DNS kaydını güncelle'; -$wb['datalog_status_d_dns_rr'] = 'DNS kaydını sil'; -$wb['datalog_status_i_dns_soa'] = 'DNS bölgesi ekle'; -$wb['datalog_status_u_dns_soa'] = 'DNS bölgesini güncelle'; -$wb['datalog_status_d_dns_soa'] = 'DNS bölgesini sil'; -$wb['datalog_status_i_cron'] = 'Zamanlanmış görev ekle'; -$wb['datalog_status_u_cron'] = 'Zamanlanmış görevi güncelle'; -$wb['datalog_status_d_cron'] = 'Zamanlanmış görevi sil'; -$wb['datalog_status_i_mail_get'] = 'E-posta alma hesabı ekle'; -$wb['datalog_status_u_mail_get'] = 'E-posta alma hesabını güncelle'; -$wb['datalog_status_d_mail_get'] = 'E-posta alma hesabını sil'; -$wb['datalog_status_i_mail_mailinglist'] = 'E-posta listesi ekle'; -$wb['datalog_status_u_mail_mailinglist'] = 'E-posta listesini güncelle'; -$wb['datalog_status_d_mail_mailinglist'] = 'E-posta listesini sil'; -$wb['datalog_status_i_shell_user'] = 'Kabuk kullanıcısı ekle'; -$wb['datalog_status_u_shell_user'] = 'Kabuk kullanıcısını güncelle'; -$wb['datalog_status_d_shell_user'] = 'Kabuk kullanıcısını sil'; -$wb['datalog_status_i_web_folder'] = 'Klasör koruması ekle'; -$wb['datalog_status_u_web_folder'] = 'Klasör korumasını güncelle'; -$wb['datalog_status_d_web_folder'] = 'Klasör korumasını sil'; -$wb['datalog_status_i_web_folder_user'] = 'Klasör koruma kullanıcısı ekle'; -$wb['datalog_status_u_web_folder_user'] = 'Klasör koruma kullanıcısını güncelle'; -$wb['datalog_status_d_web_folder_user'] = 'Klasör koruma kullanıcısını sil'; +$wb['datalog_status_i_web_database'] = 'Veritabanı Ekle'; +$wb['datalog_status_u_web_database'] = 'Veritabanını Güncelle'; +$wb['datalog_status_d_web_database'] = 'Veritabanını Sil'; +$wb['datalog_status_i_web_database_user'] = 'Veritabanı Kullanıcısı Ekle'; +$wb['datalog_status_u_web_database_user'] = 'Veritabanı Kullanıcısını Güncelle'; +$wb['datalog_status_d_web_database_user'] = 'Veritabanı Kullanıcısını Sil'; +$wb['datalog_status_i_web_domain'] = 'Web Sitesi Ekle'; +$wb['datalog_status_u_web_domain'] = 'Web Sitesi Ayarlarını Güncelle'; +$wb['datalog_status_d_web_domain'] = 'Web Sitesini Sil'; +$wb['datalog_status_i_ftp_user'] = 'FTP Kullanıcısı Ekle'; +$wb['datalog_status_u_ftp_user'] = 'FTP Kullanıcısını Güncelle'; +$wb['datalog_status_d_ftp_user'] = 'FTP Kullanıcısını Sil'; +$wb['datalog_status_i_mail_domain'] = 'E-posta Etki Alanı Ekle'; +$wb['datalog_status_u_mail_domain'] = 'E-posta Etki Alanını Güncelle'; +$wb['datalog_status_d_mail_domain'] = 'E-posta Etki Alanını Sil'; +$wb['datalog_status_i_mail_user'] = 'E-posta Kullanıcısı Ekle'; +$wb['datalog_status_u_mail_user'] = 'E-posta Kullanıcısını Güncelle'; +$wb['datalog_status_d_mail_user'] = 'E-posta Kullanıcısını Sil'; +$wb['datalog_status_i_spamfilter_users'] = 'Spam Süzgeci Ayarları Ekle'; +$wb['datalog_status_u_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Güncelle'; +$wb['datalog_status_d_spamfilter_users'] = 'Spam Süzgeci Ayarlarını Sil'; +$wb['datalog_status_i_mail_forwarding'] = 'E-posta Adresi Ekle'; +$wb['datalog_status_u_mail_forwarding'] = 'E-posta Adresini Güncelle'; +$wb['datalog_status_d_mail_forwarding'] = 'E-posta Adresini Sil'; +$wb['datalog_status_i_dns_rr'] = 'DNS Kaydı Ekle'; +$wb['datalog_status_u_dns_rr'] = 'DNS Kaydını Güncelle'; +$wb['datalog_status_d_dns_rr'] = 'DNS Kaydını Sil'; +$wb['datalog_status_i_dns_soa'] = 'DNS Bölgesi Ekle'; +$wb['datalog_status_u_dns_soa'] = 'DNS Bölgesini Güncelle'; +$wb['datalog_status_d_dns_soa'] = 'DNS Bölgesini Sil'; +$wb['datalog_status_i_cron'] = 'Zamanlanmış Görev Ekle'; +$wb['datalog_status_u_cron'] = 'Zamanlanmış Görevi Güncelle'; +$wb['datalog_status_d_cron'] = 'Zamanlanmış Görevi Sil'; +$wb['datalog_status_i_mail_get'] = 'E-posta Alma Hesabı Ekle'; +$wb['datalog_status_u_mail_get'] = 'E-posta Alma Hesabını Güncelle'; +$wb['datalog_status_d_mail_get'] = 'E-posta Alma Hesabını Sil'; +$wb['datalog_status_i_mail_mailinglist'] = 'E-posta Listesi Ekle'; +$wb['datalog_status_u_mail_mailinglist'] = 'E-posta Listesini Güncelle'; +$wb['datalog_status_d_mail_mailinglist'] = 'E-posta Listesini Sil'; +$wb['datalog_status_i_shell_user'] = 'Kabuk Kullanıcısı Ekle'; +$wb['datalog_status_u_shell_user'] = 'Kabuk Kullanıcısını Güncelle'; +$wb['datalog_status_d_shell_user'] = 'Kabuk Kullanıcısını Sil'; +$wb['datalog_status_i_web_folder'] = 'Klasör Koruması Ekle'; +$wb['datalog_status_u_web_folder'] = 'Klasör Korumasını Güncelle'; +$wb['datalog_status_d_web_folder'] = 'Klasör Korumasını Sil'; +$wb['datalog_status_i_web_folder_user'] = 'Klasör Koruma Kullanıcısı Ekle'; +$wb['datalog_status_u_web_folder_user'] = 'Klasör Koruma Kullanıcısını Güncelle'; +$wb['datalog_status_d_web_folder_user'] = 'Klasör Koruma Kullanıcısını Sil'; +$wb['datalog_status_i_xmpp_domain'] = 'XMPP etki alanı ekle'; +$wb['datalog_status_u_xmpp_domain'] = 'XMPP etki alanını düzenle'; +$wb['datalog_status_d_xmpp_domain'] = 'XMPP etki alanını sil'; +$wb['datalog_status_i_xmpp_user'] = 'XMPP kullanıcısı ekle'; +$wb['datalog_status_u_xmpp_user'] = 'XMPP kullanıcısını güncelle'; +$wb['datalog_status_d_xmpp_user'] = 'XMPP kullanıcısını sil'; $wb['err_csrf_attempt_blocked'] = 'CSRF giriÅŸimi engellendi.'; $wb['login_as_txt'] = 'Müşteri adıyla oturum aç'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['no_destination_perm'] = 'Bu hedef için izniniz yok.'; $wb['client_you_are_locked'] = 'Herhangi bir ayarı deÄŸiÅŸtirme izniniz yok.'; $wb['gender_m_txt'] = 'Bay'; @@ -146,16 +153,10 @@ $wb['strength_2'] = 'Yeterli'; $wb['strength_3'] = 'Ä°yi'; $wb['strength_4'] = 'Güçlü'; $wb['strength_5'] = 'Çok Güçlü'; -$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve \\"{strength}\\" güçlüğünde olmalı.'; +$wb['weak_password_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda ve "{strength}" güçlüğünde olmalı.'; $wb['weak_password_length_txt'] = 'Yazdığınız parola güvenlik ilkesine uygun deÄŸil. Parola en az {chars} karakter uzunluÄŸunda olmalı.'; $wb['security_check1_txt'] = 'Güvenlik iznini denetle:'; $wb['security_check2_txt'] = 'baÅŸarısız.'; -$wb['select_directive_snippet_txt'] = 'Directive Snippets'; -$wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets'; -$wb['datalog_status_i_xmpp_domain'] = 'Create XMPP domain'; -$wb['datalog_status_u_xmpp_domain'] = 'Update XMPP domain'; -$wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain'; -$wb['datalog_status_i_xmpp_user'] = 'Create XMPP user'; -$wb['datalog_status_u_xmpp_user'] = 'Update XMPP user'; -$wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user'; +$wb['select_directive_snippet_txt'] = 'Yönerge Kod Parçaları'; +$wb['select_master_directive_snippet_txt'] = 'Ana Komut Parçaları'; ?> diff --git a/interface/web/admin/lib/lang/br.lng b/interface/web/admin/lib/lang/br.lng index c4df3fe58b..b558a1510e 100644 --- a/interface/web/admin/lib/lang/br.lng +++ b/interface/web/admin/lib/lang/br.lng @@ -1,8 +1,8 @@ <?php -$wb['1001'] = 'Usuário ou senha está em branco.'; -$wb['1002'] = 'Usuário ou senha errados.'; +$wb['error_1001'] = 'Usuário ou senha está em branco.'; +$wb['error_1002'] = 'Usuário ou senha é inválido.'; $wb['Groups'] = 'Grupos'; -$wb['groups_description'] = 'Edição dos grupos de usuários do sistema'; +$wb['groups_description'] = 'Editar grupos e usuários do sistema.'; $wb['Servers'] = 'Servidores'; $wb['Config'] = 'Configuração'; $wb['Add user'] = 'Adicionar usuário'; @@ -11,30 +11,36 @@ $wb['Add group'] = 'Adicionar grupo'; $wb['Edit group'] = 'Editar grupo'; $wb['Edit server'] = 'Editar servidor'; $wb['Sync. Now'] = 'Sincronizar agora'; -$wb['DB Sync.'] = 'Sincronizar banco de dados'; -$wb['User Management'] = 'Gerenciamento de usuários'; -$wb['CP Users'] = 'Usuários do painel'; +$wb['DB Sync.'] = 'Sincronização do BD.'; +$wb['User Management'] = 'Gerência de usuário'; +$wb['CP Users'] = 'Usuários ISPConfig'; $wb['Remote Users'] = 'Usuários remotos'; $wb['System'] = 'Sistema'; $wb['Server Services'] = 'Serviços do servidor'; $wb['Services'] = 'Serviços'; $wb['Server Config'] = 'Configuração do servidor'; -$wb['Mail'] = 'E-mails'; +$wb['Server'] = 'Servidor'; +$wb['Mail'] = 'e-Mail'; $wb['Getmail'] = 'Getmail'; -$wb['Web'] = 'Sites'; +$wb['Web'] = 'Web'; $wb['FastCGI'] = 'FastCGI'; $wb['Jailkit'] = 'Jailkit'; $wb['Rescue'] = 'Manutenção'; -$wb['Server IP addresses'] = 'Endereço IP do servidor'; +$wb['Server IP addresses'] = 'Endereços IP do servidor'; +$wb['Server IPv4 mapping'] = 'Mapeamento IPv4 do servidor'; $wb['Additional PHP Versions'] = 'Versões adicionais do php'; +$wb['Directive Snippets'] = 'Diretiva de trechos de código'; $wb['Firewall'] = 'Firewall'; $wb['Interface'] = 'Interface'; $wb['Interface Config'] = 'Configuração principal'; +$wb['Sites'] = 'Sites'; +$wb['DNS'] = 'DNS'; $wb['Domains'] = 'DomÃnios'; $wb['Misc'] = 'Diversos'; -$wb['Software'] = 'Software'; +$wb['Software'] = 'APPs e complementos'; $wb['Repositories'] = 'Repositórios'; $wb['Packages'] = 'Pacotes'; +$wb['Updates'] = 'Atualizações'; $wb['Language Editor'] = 'Editor de idiomas'; $wb['Languages'] = 'Idiomas'; $wb['New Language'] = 'Novo idioma'; @@ -42,11 +48,6 @@ $wb['Merge'] = 'Mesclar'; $wb['Export'] = 'Exportar'; $wb['Import'] = 'Importar'; $wb['Remote Actions'] = 'Ações remotas'; -$wb['Do OS-Update'] = 'Atualização do SO'; -$wb['Do ISPConfig-Update'] = 'Atualização do ISPConfig'; -$wb['Directive Snippets'] = 'Diretivas de trechos de código'; -$wb['Sites'] = 'Sites'; -$wb['DNS'] = 'DNS'; -$wb['Server'] = 'Servidor'; -$wb['Updates'] = 'Atualizações'; +$wb['Do OS-Update'] = 'Atualizar sistema operacional'; +$wb['Do ISPConfig-Update'] = 'Atualizar o ISPConfig'; ?> diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng index ae56153844..43c46c69b9 100644 --- a/interface/web/admin/lib/lang/br_directive_snippets.lng +++ b/interface/web/admin/lib/lang/br_directive_snippets.lng @@ -2,11 +2,11 @@ $wb['Directive Snippets'] = 'Diretiva de trechos de código'; $wb['name_txt'] = 'Nome da diretiva'; $wb['type_txt'] = 'Tipo'; -$wb['snippet_txt'] = 'Diretiva'; +$wb['snippet_txt'] = 'Trecho de código'; $wb['active_txt'] = 'Ativo'; -$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva'; -$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva de trechos de código com este nome.'; +$wb['directive_snippets_name_empty'] = 'Por favor, insira um nome para a diretiva.'; +$wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva com este nome.'; $wb['variables_txt'] = 'Variáveis'; -$wb['customer_viewable_txt'] = 'Visualizada pelo cliente'; -$wb['required_php_snippets_txt'] = 'Diretiva obrigatória para PHP'; +$wb['customer_viewable_txt'] = 'Visualização personalizada'; +$wb['required_php_snippets_txt'] = 'Trecho de código exige php'; ?> diff --git a/interface/web/admin/lib/lang/br_directive_snippets_list.lng b/interface/web/admin/lib/lang/br_directive_snippets_list.lng index 8e08580ad2..70af844dd6 100644 --- a/interface/web/admin/lib/lang/br_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/br_directive_snippets_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Diretivas de trechos de código'; +$wb['list_head_txt'] = 'Diretiva de trechos de código'; $wb['active_txt'] = 'Ativo'; $wb['name_txt'] = 'Nome da diretiva'; $wb['type_txt'] = 'Tipo'; -$wb['add_new_record_txt'] = 'Adicionar nova diretiva'; +$wb['add_new_record_txt'] = 'Adicionar diretiva'; $wb['customer_viewable_txt'] = 'VisÃvel para o cliente'; ?> diff --git a/interface/web/admin/lib/lang/br_firewall.lng b/interface/web/admin/lib/lang/br_firewall.lng index 0bd3cdc74f..da0936b007 100644 --- a/interface/web/admin/lib/lang/br_firewall.lng +++ b/interface/web/admin/lib/lang/br_firewall.lng @@ -1,11 +1,11 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['tcp_port_txt'] = 'Portas TCP abertas'; -$wb['udp_port_txt'] = 'Portas UDP abertas'; +$wb['tcp_port_txt'] = 'Portas tcp abertas'; +$wb['udp_port_txt'] = 'Portas udp abertas'; $wb['tcp_port_help_txt'] = 'Separado por vÃrgula'; $wb['udp_port_help_txt'] = 'Separado por vÃrgula'; $wb['active_txt'] = 'Ativo'; -$wb['firewall_error_unique'] = 'Já existe uma regra de firewall para este servidor!'; -$wb['tcp_ports_error_regex'] = 'Caractere não permitido para definição de porta tcp. São permitidos somente números, \':\' e \',\'.'; -$wb['udp_ports_error_regex'] = 'Caractere não permitido para definição de porta udp. São permitidos somente números, \':\' e \',\'.'; +$wb['firewall_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.'; +$wb['tcp_ports_error_regex'] = 'Caractere não permitido para configuração de porta tcp: Caracteres permitidos são números, ":" e ",".'; +$wb['udp_ports_error_regex'] = 'Caractere não permitido para configuração de porta udp: Caracteres permitidos são números, ":" e ",".'; ?> diff --git a/interface/web/admin/lib/lang/br_firewall_list.lng b/interface/web/admin/lib/lang/br_firewall_list.lng index 8ff52ee241..94ef3aab7d 100644 --- a/interface/web/admin/lib/lang/br_firewall_list.lng +++ b/interface/web/admin/lib/lang/br_firewall_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['tcp_port_txt'] = 'Portas tcp abertas'; $wb['udp_port_txt'] = 'Portas udp abertas'; -$wb['add_new_record_txt'] = 'Adicionar regra de firewall'; +$wb['add_new_record_txt'] = 'Adicionar nova regra'; ?> diff --git a/interface/web/admin/lib/lang/br_groups.lng b/interface/web/admin/lib/lang/br_groups.lng index 735bd864a9..22a1a5c63d 100644 --- a/interface/web/admin/lib/lang/br_groups.lng +++ b/interface/web/admin/lib/lang/br_groups.lng @@ -1,5 +1,5 @@ <?php $wb['description_txt'] = 'Descrição'; $wb['name_txt'] = 'Grupo'; -$wb['name_err'] = 'O nome do grupo deve conter de 1 a 30 caracteres!'; +$wb['name_err'] = 'O grupo deve conter no mÃnimo 1 e no máximo 30 caracteres.'; ?> diff --git a/interface/web/admin/lib/lang/br_groups_list.lng b/interface/web/admin/lib/lang/br_groups_list.lng index f31a85d126..74a414f52d 100644 --- a/interface/web/admin/lib/lang/br_groups_list.lng +++ b/interface/web/admin/lib/lang/br_groups_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Grupos de usuários do sistema'; +$wb['list_head_txt'] = 'Grupos'; $wb['description_txt'] = 'Descrição'; $wb['name_txt'] = 'Grupo'; -$wb['add_new_record_txt'] = 'Adicionar novo Grupo'; -$wb['warning_txt'] = '<b>AVISO:</b> Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos aqui pode ocasionar perda de dados!'; +$wb['add_new_record_txt'] = 'Adicionar novo grupo'; +$wb['warning_txt'] = '<b>ALERTA:</b> Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!'; ?> diff --git a/interface/web/admin/lib/lang/br_iptables.lng b/interface/web/admin/lib/lang/br_iptables.lng index e44fcf1e68..f899d53178 100644 --- a/interface/web/admin/lib/lang/br_iptables.lng +++ b/interface/web/admin/lib/lang/br_iptables.lng @@ -1,13 +1,13 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['multiport_txt'] = 'Múltiplas portas'; -$wb['singleport_txt'] = 'Porta simples'; +$wb['multiport_txt'] = 'Multi-portas'; +$wb['singleport_txt'] = 'Portas simples'; $wb['protocol_txt'] = 'Protocolo'; $wb['table_txt'] = 'Tabela'; $wb['target_txt'] = 'Alvo'; $wb['state_txt'] = 'Estado'; -$wb['destination_ip_txt'] = 'Endereço IP de destino'; -$wb['source_ip_txt'] = 'Endereço IP de origem'; +$wb['destination_ip_txt'] = 'Endereço de destino'; +$wb['source_ip_txt'] = 'Endereço de origem'; $wb['active_txt'] = 'Ativo'; -$wb['iptables_error_unique'] = 'Já existe um registro de firewall igual para este servidor.'; +$wb['iptables_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.'; ?> diff --git a/interface/web/admin/lib/lang/br_iptables_list.lng b/interface/web/admin/lib/lang/br_iptables_list.lng index 2cd7fdfb53..3326ac060a 100644 --- a/interface/web/admin/lib/lang/br_iptables_list.lng +++ b/interface/web/admin/lib/lang/br_iptables_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Firewall'; -$wb['add_new_rule_txt'] = 'Adicionar nova regra'; +$wb['add_new_rule_txt'] = 'Adicionar regra de firewall'; $wb['server_id_txt'] = 'Servidor'; $wb['multiport_txt'] = 'Multi portas'; $wb['singleport_txt'] = 'Porta simples'; @@ -8,8 +8,8 @@ $wb['protocol_txt'] = 'Protocolo'; $wb['table_txt'] = 'Tabela'; $wb['target_txt'] = 'Alvo'; $wb['state_txt'] = 'Estado'; -$wb['destination_ip_txt'] = 'Endereço IP de destino'; -$wb['source_ip_txt'] = 'Endereço IP de origem'; +$wb['destination_ip_txt'] = 'Endereço de destino'; +$wb['source_ip_txt'] = 'Endereço de origem'; $wb['active_txt'] = 'Ativo'; -$wb['iptables_error_unique'] = 'Já existe um registro de firewall igual para este servidor.'; +$wb['iptables_error_unique'] = 'Já existe uma regra idêntica para este servidor.'; ?> diff --git a/interface/web/admin/lib/lang/br_language_add.lng b/interface/web/admin/lib/lang/br_language_add.lng index eaa0808199..f63441c55d 100644 --- a/interface/web/admin/lib/lang/br_language_add.lng +++ b/interface/web/admin/lib/lang/br_language_add.lng @@ -1,8 +1,8 @@ <?php $wb['list_head_txt'] = 'Adicionar novo idioma'; -$wb['language_select_txt'] = 'Selecionar o idioma base'; +$wb['language_select_txt'] = 'Selecionar idioma base'; $wb['language_new_txt'] = 'Novo idioma'; -$wb['language_new_hint_txt'] = '2 letras código ISO 639-1 (veja http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)'; +$wb['language_new_hint_txt'] = '2 caracteres ISO 639-1 para o código do idioma (veja em http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)'; $wb['btn_save_txt'] = 'Adicionar novo conjunto de idiomas'; $wb['btn_cancel_txt'] = 'Voltar'; ?> diff --git a/interface/web/admin/lib/lang/br_language_complete.lng b/interface/web/admin/lib/lang/br_language_complete.lng index 84d5e3393c..cb0ea2eb24 100644 --- a/interface/web/admin/lib/lang/br_language_complete.lng +++ b/interface/web/admin/lib/lang/br_language_complete.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Mesclar idioma'; +$wb['list_head_txt'] = 'Mesclar idiomas'; $wb['list_desc_txt'] = 'Mesclar o arquivo de idioma selecionado com o arquivo de idioma principal (em inglês). <br />Isto permite completar qualquer falha de tradução, com o arquivo principal original em inglês.'; $wb['language_select_txt'] = 'Selecionar idioma'; $wb['btn_save_txt'] = 'Mesclar arquivos agora'; diff --git a/interface/web/admin/lib/lang/br_language_edit.lng b/interface/web/admin/lib/lang/br_language_edit.lng index 887080b6d5..ed0e6bb84d 100644 --- a/interface/web/admin/lib/lang/br_language_edit.lng +++ b/interface/web/admin/lib/lang/br_language_edit.lng @@ -1,6 +1,6 @@ <?php -$wb['list_head_txt'] = 'Editor de idiomas'; -$wb['language_select_txt'] = 'Selecione o idioma'; +$wb['list_head_txt'] = 'Editor de arquivos de idiomas'; +$wb['language_select_txt'] = 'Selecionar idioma'; $wb['module_txt'] = 'Módulo'; $wb['lang_file_txt'] = 'Arquivo de idioma'; $wb['btn_save_txt'] = 'Salvar'; diff --git a/interface/web/admin/lib/lang/br_language_export.lng b/interface/web/admin/lib/lang/br_language_export.lng index d484661389..7d75f7b6dd 100644 --- a/interface/web/admin/lib/lang/br_language_export.lng +++ b/interface/web/admin/lib/lang/br_language_export.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Exportar arquivos de idioma'; -$wb['language_select_txt'] = 'Selecione o idioma'; -$wb['btn_save_txt'] = 'Exportar idioma selecionado para um arquivo'; +$wb['language_select_txt'] = 'Selecionar idioma'; +$wb['btn_save_txt'] = 'Exportar arquivo de idioma selecionado'; $wb['btn_cancel_txt'] = 'Voltar'; ?> diff --git a/interface/web/admin/lib/lang/br_language_import.lng b/interface/web/admin/lib/lang/br_language_import.lng index e99756b376..99db339812 100644 --- a/interface/web/admin/lib/lang/br_language_import.lng +++ b/interface/web/admin/lib/lang/br_language_import.lng @@ -1,9 +1,9 @@ <?php $wb['list_head_txt'] = 'Importar arquivo de idioma'; -$wb['language_import_txt'] = 'Buscar arquivo de idioma'; +$wb['list_desc_txt'] = 'ALERTA: Não importe arquivos de idioma de origem desconhecida.'; +$wb['language_import_txt'] = 'Selecionar arquivo de idioma'; $wb['btn_save_txt'] = 'Importar arquivo de idioma selecionado'; -$wb['language_overwrite_txt'] = 'Sobrescrever o arquivo se existir.'; +$wb['language_overwrite_txt'] = 'Sobrescrever arquivo, se existir.'; $wb['btn_cancel_txt'] = 'Voltar'; $wb['ignore_version_txt'] = 'Ignorar verificação da versão do ISPConfig'; -$wb['list_desc_txt'] = 'ATENÇÃO: Não importe arquivos de idioma de fontes desconhecidas.'; ?> diff --git a/interface/web/admin/lib/lang/br_language_list.lng b/interface/web/admin/lib/lang/br_language_list.lng index cd00833419..37941c4472 100644 --- a/interface/web/admin/lib/lang/br_language_list.lng +++ b/interface/web/admin/lib/lang/br_language_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Editor de arquivo de idioma'; -$wb['language_select_txt'] = 'Selecione o idioma'; +$wb['list_head_txt'] = 'Editor de arquivos de idioma'; +$wb['language_select_txt'] = 'Selecionar idioma'; $wb['module_txt'] = 'Módulo'; -$wb['lang_file_txt'] = 'Arquido de idioma'; +$wb['lang_file_txt'] = 'Arquivo de idioma'; $wb['lang_file_date_txt'] = 'Última modificação'; ?> diff --git a/interface/web/admin/lib/lang/br_package_install.lng b/interface/web/admin/lib/lang/br_package_install.lng index 5b54c3080a..bbe518549a 100644 --- a/interface/web/admin/lib/lang/br_package_install.lng +++ b/interface/web/admin/lib/lang/br_package_install.lng @@ -1,7 +1,7 @@ <?php $wb['repo_name_txt'] = 'Repositório'; $wb['repo_url_txt'] = 'URL'; -$wb['repo_username_txt'] = 'Usuário (opcional)'; +$wb['repo_username_txt'] = 'Usário (opcional)'; $wb['repo_password_txt'] = 'Senha (opcional)'; $wb['active_txt'] = 'Ativo'; ?> diff --git a/interface/web/admin/lib/lang/br_remote_action.lng b/interface/web/admin/lib/lang/br_remote_action.lng index e06a6382b9..80d3a05c53 100644 --- a/interface/web/admin/lib/lang/br_remote_action.lng +++ b/interface/web/admin/lib/lang/br_remote_action.lng @@ -1,12 +1,12 @@ <?php -$wb['select_server_txt'] = 'Selecione o Servidor'; +$wb['select_server_txt'] = 'Selecionar servidor'; $wb['btn_do_txt'] = 'Executar ação'; -$wb['do_osupdate_caption'] = 'Atualização do sistema operacional no servidor'; -$wb['do_osupdate_desc'] = 'Este comando fará um aptitude -y upgrade no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; -$wb['do_ispcupdate_caption'] = 'Atualização do ISPConfig 3 no servidor'; -$wb['do_ispcupdate_desc'] = 'Esta ação fará uma atualização do ISPConfig3 no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; -$wb['action_scheduled'] = 'Esta ação está agendada para execução'; +$wb['do_osupdate_caption'] = 'Atualizar sistema operacional no servidor remoto'; +$wb['do_osupdate_desc'] = 'Esta ação fará o comando \'aptitude -y upgrade\' no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; +$wb['do_ispcupdate_caption'] = 'Atualizar ISPConfig 3 - Atualizar o servidor remoto'; +$wb['do_ispcupdate_desc'] = 'Esta ação atualizará o ISPConfig3 no servidor selecionado.<br><br><strong>UTILIZE POR SUA CONTA E RISCO!</strong>'; +$wb['action_scheduled'] = 'A ação foi agendada.'; $wb['select_all_server'] = 'Todos os servidores'; $wb['ispconfig_update_title'] = 'Instruções de atualização do ISPConfig'; -$wb['ispconfig_update_text'] = 'Acesse como root no shell do seu servidor e execute os seguintes comandos<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />para iniciar a atualização do ISPConfig.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Clique aqui para instruções detalhadas sobre atualização</a>'; +$wb['ispconfig_update_text'] = 'Acesse com o usuário root no shell do servidor e execute o comando<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />para iniciar a atualização do ISPConfig.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Clique aqui para instruções detalhadas</a>'; ?> diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index 95657a283d..fcaa6732c8 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -1,50 +1,68 @@ <?php -$wb['username_txt'] = 'Nome do usuário'; +$wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; -$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['username_error_unique'] = 'Nome do usuário deve ser exclusivo.'; +$wb['username_error_empty'] = 'Nome do usuário está em branco.'; +$wb['password_error_empty'] = 'Senha do usuário está em branco.'; $wb['password_strength_txt'] = 'Dificuldade da senha'; +$wb['Server functions'] = 'Funções de servidor'; +$wb['Record permission changes'] = 'Permissões de alteração de registros'; +$wb['Domaintool functions'] = 'Funções ferramentas de domÃnios'; +$wb['Quota functions'] = 'Funções de cotas'; $wb['Mail domain functions'] = 'Funções de domÃnios 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 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 domain alias functions'] = 'Funções de alias de domÃnios de e-mail'; +$wb['Mail mailinglist functions'] = 'Funções de lista de e-mails'; +$wb['Mail user functions'] = 'Funções de contas de e-mails'; +$wb['Mail alias functions'] = 'Funções de alias de e-mails'; +$wb['Mail forward functions'] = 'Funções de encaminhamento de e-mails'; +$wb['Mail relay functions'] = 'Funções de retransmissão de e-mails'; +$wb['Mail catchall functions'] = 'Funções de contas cata-tudo'; +$wb['Mail transport functions'] = 'Funções de transporte de e-mails'; +$wb['Mail whitelist functions'] = 'Funções de lista branca'; +$wb['Mail blacklist functions'] = 'Funções de lista negra'; +$wb['Mail spamfilter user functions'] = 'Funções de filtros anti-spam'; +$wb['Mail spamfilter policy functions'] = 'Funções de polÃticas anti-spam'; $wb['Mail fetchmail functions'] = 'Funções de contas de busca de e-mails'; -$wb['Mail user filter functions'] = 'Funções de filtro de e-mails para contas de e-mail'; -$wb['Mail filter functions'] = 'Funções de filtros de e-mail'; +$wb['Mail spamfilter whitelist functions'] = 'Funções de lista branca de e-mails'; +$wb['Mail spamfilter blacklist functions'] = 'Funções de lista negra de e-mails'; +$wb['Mail user filter functions'] = 'Funções de filtros de e-mails para contas de e-mails'; +$wb['Mail Backup functions'] = 'Funções de backup de e-mails'; +$wb['Mail filter functions'] = 'Funções de filtros de e-mails'; +$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 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 cron functions'] = 'Funções de tarefas no cron'; +$wb['Sites database functions'] = 'Funções de banco de dados'; +$wb['Sites Protected folder functions'] = 'Funções de pastas protegidas'; +$wb['Sites FTP-User functions'] = 'Funções de usuários ftp'; +$wb['Sites Shell-User functions'] = 'Funções de usuários do shell'; $wb['Sites Domain functions'] = 'Funções de domÃnios de 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['DNS zone functions'] = 'Funções de zona dns'; +$wb['Sites Backup functions'] = 'Funções de backup de sites'; +$wb['Sites Aliasdomain functions'] = 'Funções de alias de domÃnios de sites'; +$wb['Sites Subdomain functions'] = 'Funções de subdomÃnios de sites'; +$wb['Sites APS functions'] = 'Funções de apps e complementos'; +$wb['Sites WebDAV-User functions'] = 'Funções de usuários webdav'; +$wb['DNS zone functions'] = 'Funções de zonas 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 hinfo functions'] = 'Funções de registro HINFO dns'; -$wb['DNS mx functions'] = 'Funções de registro MX 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['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 <i>um</i>)'; -$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do servidor é inválido.'; -$wb['Mail mailing list functions'] = 'Mail mailinglist functions'; +$wb['DNS alias functions'] = 'Funções de ALIAS dns'; +$wb['DNS cname functions'] = 'Funções de CNAME dns'; +$wb['DNS hinfo functions'] = 'Funções de HINFO dns'; +$wb['DNS mx functions'] = 'Funções de MX dns'; +$wb['DNS ns functions'] = 'Funções de NS dns'; +$wb['DNS ptr functions'] = 'Funções de PTR dns'; +$wb['DNS rp functions'] = 'Funções de RP dns'; +$wb['DNS srv functions'] = 'Funções de SVR dns'; +$wb['DNS txt functions'] = 'Funções de TXT dns'; +$wb['DNS ds functions'] = 'Funções de DS dns'; +$wb['DNS loc functions'] = 'Funções de LOC dns'; +$wb['DNS tlsa functions'] = 'Funções de TLSA dns'; +$wb['OpenVZ VM functions'] = 'Funções do openvz'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['remote_access_txt'] = 'Acesso Remoto'; +$wb['remote_ips_txt'] = 'Endereços IPs ou nome(s) do(s) host(s) para acesso remoto (separado por vÃrgula e deixar em branco para <i>qualquer um</i>)'; +$wb['remote_user_error_ips'] = 'Ao menos um endereço IP ou nome do host informado é inválido.'; ?> diff --git a/interface/web/admin/lib/lang/br_remote_user_list.lng b/interface/web/admin/lib/lang/br_remote_user_list.lng index f95d782ce6..0f0381a6f4 100644 --- a/interface/web/admin/lib/lang/br_remote_user_list.lng +++ b/interface/web/admin/lib/lang/br_remote_user_list.lng @@ -1,7 +1,7 @@ <?php $wb['list_head_txt'] = 'Usuários remotos'; -$wb['list_desc_txt'] = ''; +$wb['list_desc_txt'] = 'Usuário remoto'; $wb['add_new_record_txt'] = 'Adicionar novo usuário'; -$wb['parent_remote_userid_txt'] = 'ID'; -$wb['username_txt'] = 'Nome do usuário'; +$wb['parent_remote_userid_txt'] = 'ID do usuário'; +$wb['username_txt'] = 'Nome'; ?> diff --git a/interface/web/admin/lib/lang/br_server.lng b/interface/web/admin/lib/lang/br_server.lng index 930b990f42..a896d0b49a 100644 --- a/interface/web/admin/lib/lang/br_server.lng +++ b/interface/web/admin/lib/lang/br_server.lng @@ -2,15 +2,15 @@ $wb['config_txt'] = 'Configuração'; $wb['server_name_txt'] = 'Nome do servidor'; $wb['mail_server_txt'] = 'Servidor de e-mails'; -$wb['web_server_txt'] = 'Servidor de páginas'; +$wb['web_server_txt'] = 'Servidor web'; $wb['dns_server_txt'] = 'Servidor dns'; -$wb['file_server_txt'] = 'Servidor de arquivo'; +$wb['file_server_txt'] = 'Servidor ftp'; $wb['db_server_txt'] = 'Servidor de banco de dados'; -$wb['vserver_server_txt'] = 'Servidor virtual'; -$wb['active_txt'] = 'Ativo'; -$wb['mirror_server_id_txt'] = 'É um espelho de servidor?'; -$wb['- None -'] = '- Nenhum -'; +$wb['vserver_server_txt'] = 'Servidor de virtualização'; $wb['proxy_server_txt'] = 'Servidor proxy'; -$wb['firewall_server_txt'] = 'Servidor de firewall'; -$wb['xmpp_server_txt'] = 'Servidor XMPP'; +$wb['firewall_server_txt'] = 'Servidor firewall'; +$wb['active_txt'] = 'Ativo'; +$wb['mirror_server_id_txt'] = 'É um espelho de servidor'; +$wb['- None -'] = '-Nenhum-'; +$wb['xmpp_server_txt'] = 'Servidor xmpp'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 25ffb06996..f57a2310f2 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -1,303 +1,303 @@ <?php -$wb['jailkit_chroot_home_txt'] = 'Raiz do chroot jailkit'; -$wb['jailkit_chroot_app_sections_txt'] = 'Aplicações no jailkit chroot (sessões)'; -$wb['jailkit_chroot_app_programs_txt'] = 'Aplicações no jailkit em ambiente chroot'; +$wb['ufw_enable_txt'] = 'Habilitar'; +$wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas'; +$wb['ufw_ipv6_txt'] = 'Habilitar IPv6'; +$wb['ufw_default_input_policy_txt'] = 'PolÃtica de entrada padrão'; +$wb['ufw_default_output_policy_txt'] = 'PolÃtica de saÃda padrão'; +$wb['ufw_default_forward_policy_txt'] = 'PolÃtica de encaminhamento padrão'; +$wb['ufw_default_application_policy_txt'] = 'PolÃtica de aplicações padrão'; +$wb['ufw_log_level_txt'] = 'NÃvel do log'; +$wb['jailkit_chroot_home_txt'] = 'Diretório em chroot do jailkit'; +$wb['jailkit_chroot_app_sections_txt'] = 'Seções de aplicações em chroot no jailkit'; +$wb['jailkit_chroot_app_programs_txt'] = 'Aplicações em chroot no jailkit'; +$wb['jailkit_chroot_cron_programs_txt'] = 'Tarefas de aplicações em chroot no jailkit'; $wb['website_path_txt'] = 'Caminho do site'; -$wb['website_symlinks_txt'] = 'Site symlinks: links simbólicos'; -$wb['website_symlinks_rel_txt'] = 'Criar links simbólicos relativos'; -$wb['website_basedir_txt'] = 'Site basedir: Diretório base '; -$wb['vhost_conf_dir_txt'] = 'Diretório de configuração para vhost'; -$wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração para vhost ativo'; +$wb['website_symlinks_txt'] = 'Links simbólicos de sites'; +$wb['website_symlinks_rel_txt'] = 'Adicionar links simbólicos relativos'; +$wb['website_basedir_txt'] = 'Diretório base - site'; +$wb['website_autoalias_txt'] = 'Auto alias - site'; +$wb['website_autoalias_note_txt'] = 'Ãrea reservada:'; +$wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost'; +$wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado'; $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail'; -$wb['fastcgi_starter_path_txt'] = 'FastCGI: Caminho do diretório do scritp de inicialização'; -$wb['fastcgi_starter_script_txt'] = 'FastCGI: Script de inicialização'; -$wb['fastcgi_alias_txt'] = 'FastCGI: Alias (apelido)'; -$wb['fastcgi_phpini_path_txt'] = 'FastCGI: Caminho do php.ini '; -$wb['fastcgi_children_txt'] = 'FastCGI: Filhos'; -$wb['fastcgi_max_requests_txt'] = 'FastCGI: Limite de requisições'; -$wb['fastcgi_bin_txt'] = 'Binário do FastCGI'; +$wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI'; +$wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI'; +$wb['fastcgi_alias_txt'] = 'Alias FastCGI'; +$wb['fastcgi_phpini_path_txt'] = 'Caminho do php.ini FastCGI'; +$wb['fastcgi_children_txt'] = 'Processos filhos do FastCGI'; +$wb['fastcgi_max_requests_txt'] = 'Limite de requisições do FastCGI'; +$wb['fastcgi_bin_txt'] = 'Binário FastCGI'; $wb['module_txt'] = 'Módulo'; -$wb['maildir_path_txt'] = 'Caminho do diretório maildir'; +$wb['maildir_path_txt'] = 'Caminho do maildir'; $wb['maildir_format_txt'] = 'Formato do maildir'; -$wb['homedir_path_txt'] = 'Caminho do diretório home'; +$wb['homedir_path_txt'] = 'Caminho do homedir'; +$wb['dkim_path_txt'] = 'Caminho do DKIM'; $wb['mailuser_uid_txt'] = 'UID do mailuser'; $wb['mailuser_gid_txt'] = 'GID do mailuser'; $wb['mailuser_name_txt'] = 'Nome do mailuser'; -$wb['mailuser_group_txt'] = 'Grupo do mailuser'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Mapear UID Linux de sites para mailbox'; -$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Configuração única para sites e servidor de e-mails permitida apenas em configuração de servidor individual'; -$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'UID não pode ser mapeado em uma configuração multiservidor.'; -$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Mapeamento de UID só pode ser usada com o dovecot.'; -$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Mapeamento de UID não pode ser modificada se já existirem e-mails cadastrados.'; +$wb['mailuser_group_txt'] = 'Grupo do maildir'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Usar uid linux para sites e conta de e-mail'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Permitido apenas para configuração de servidor único.'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'O uid linux não pode ser mapeado em configuração multi-servidor.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'O uid linux não pode ser usado com o dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'O uid não pode ser alterado se já existir contas de e-mail.'; $wb['relayhost_txt'] = 'Servidor de retransmissão'; -$wb['relayhost_user_txt'] = 'Usuário do servidor de retransmissão'; -$wb['relayhost_password_txt'] = 'Senha do servidor de retransmissão'; -$wb['reject_sender_login_mismatch_txt'] = 'Rejeitar remetente e acesso com erros'; -$wb['mailbox_size_limit_txt'] = 'Limite da conta de e-mail'; -$wb['message_size_limit_txt'] = 'Limite do tamanho máximo das mensagens'; +$wb['relayhost_user_txt'] = 'Usuário de retransmissão'; +$wb['relayhost_password_txt'] = 'Senha do usuário de retransmissão'; +$wb['reject_sender_login_mismatch_txt'] = 'Rejeitar acesso com erro de usuário e/ou senha'; +$wb['mailbox_size_limit_txt'] = 'Limite do tamanho da conta de e-mail'; +$wb['message_size_limit_txt'] = 'Limite do tamanho da mensagem'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['netmask_txt'] = 'Máscara de rede'; +$wb['netmask_txt'] = 'Máscara'; $wb['gateway_txt'] = 'Gateway'; -$wb['hostname_txt'] = 'Servidor'; -$wb['nameservers_txt'] = 'Servidores dns'; +$wb['hostname_txt'] = 'Nome do host'; +$wb['nameservers_txt'] = 'Servidor(es) dns'; $wb['auto_network_configuration_txt'] = 'Configuração de rede'; -$wb['ip_address_error_wrong'] = 'Endereço IP inválido!'; -$wb['netmask_error_wrong'] = 'Máscara de rede inválida!'; -$wb['gateway_error_wrong'] = 'Gateway inválido!'; -$wb['hostname_error_empty'] = 'Por favor, insira o servidor.'; -$wb['nameservers_error_empty'] = 'Por favor, insira o servidor dns.'; -$wb['jailkit_chroot_cron_programs_txt'] = 'Tarefas do cron para aplicações no Jailkit em ambiente chroot'; -$wb['config_dir_txt'] = 'Diretório de configuração'; +$wb['ip_address_error_wrong'] = 'Endereço IP com formato inválido.'; +$wb['netmask_error_wrong'] = 'Máscara de rede com formato inválido.'; +$wb['gateway_error_wrong'] = 'Gateway da rede com formado inválido.'; +$wb['hostname_error_empty'] = 'O nome do host está em branco.'; +$wb['hostname_error_regex'] = 'O nome do host é inválido.'; +$wb['nameservers_error_empty'] = 'O servidor(es) dns está em branco.'; +$wb['config_dir_txt'] = 'Diretório de configurações'; $wb['init_script_txt'] = 'Nome do script de inicialização do cron'; -$wb['crontab_dir_txt'] = 'Caminho para tabelas de tarefas individuais no cron'; -$wb['wget_txt'] = 'Caminho para o wget'; -$wb['web_user_txt'] = 'Usuário apache'; -$wb['web_group_txt'] = 'Grupo apache'; +$wb['crontab_dir_txt'] = 'Caminho para crontabs individuais.'; +$wb['wget_txt'] = 'Caminho do binário wget'; +$wb['web_user_txt'] = 'Usuário do apache'; +$wb['web_group_txt'] = 'Grupo do apache'; $wb['security_level_txt'] = 'NÃvel de segurança'; -$wb['loglevel_txt'] = 'NÃvel do log (Loglevel)'; -$wb['apps_vhost_port_txt'] = 'Porta para apps-vhost'; -$wb['apps_vhost_ip_txt'] = 'IP para apps-vhost'; -$wb['apps_vhost_servername_txt'] = 'DomÃnio para apps-vhost'; -$wb['bind_user_txt'] = 'Usuário bind'; -$wb['bind_group_txt'] = 'Grupo bind'; -$wb['bind_zonefiles_dir_txt'] = 'Diretório de arquivos de zona do bind'; +$wb['loglevel_txt'] = 'NÃvel do log'; +$wb['apps_vhost_port_txt'] = 'Porta dos apps-vhost'; +$wb['apps_vhost_ip_txt'] = 'IP dos apps-vhost'; +$wb['apps_vhost_servername_txt'] = 'DomÃnio dos apps-vhost'; +$wb['bind_user_txt'] = 'Usuário do bind'; +$wb['bind_group_txt'] = 'Grupo do bind'; +$wb['bind_zonefiles_dir_txt'] = 'Diretório de zonas'; $wb['named_conf_path_txt'] = 'Caminho do named.conf'; $wb['bind_user_error_empty'] = 'Usuário do bind está em branco.'; $wb['bind_group_error_empty'] = 'Grupo do bind está em branco.'; -$wb['bind_zonefiles_dir_error_empty'] = 'Diretório de arquivos de zona está em branco.'; -$wb['named_conf_path_error_empty'] = 'Caminho do named.conf.'; +$wb['bind_zonefiles_dir_error_empty'] = 'Diretório de zonas está em branco.'; +$wb['named_conf_path_error_empty'] = 'Caminho do named.conf está em branco.'; $wb['named_conf_local_path_error_empty'] = 'Caminho do named.conf.local está em branco.'; -$wb['mail_filter_syntax_txt'] = 'Sintaxe do mailfilter'; -$wb['pop3_imap_daemon_txt'] = 'Serviço POP3/IMAP'; -$wb['php_open_basedir_txt'] = 'Diretório PHP open_basedir'; -$wb['php_open_basedir_error_empty'] = 'Diretório PHP open_basedir está em branco.'; +$wb['mail_filter_syntax_txt'] = 'Sintaxe do filtro de e-mail'; +$wb['pop3_imap_daemon_txt'] = 'Daemon POP3/IMAP'; +$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; +$wb['php_open_basedir_error_empty'] = 'O diretório do open_basedir PHP está em branco.'; $wb['htaccess_allow_override_txt'] = 'Diretiva .htaccess AllowOverride'; $wb['htaccess_allow_override_error_empty'] = 'Diretiva .htaccess AllowOverride está em branco.'; -$wb['awstats_conf_dir_txt'] = 'Diretório de configuração do awstats'; -$wb['awstats_data_dir_txt'] = 'Diretório de dados do awstats'; +$wb['awstats_conf_dir_txt'] = 'Pasta de configuração do awstats'; +$wb['awstats_data_dir_txt'] = 'Pasta de dados do awstats'; $wb['awstats_pl_txt'] = 'Script awstats.pl'; $wb['awstats_buildstaticpages_pl_txt'] = 'Script awstats_buildstaticpages.pl'; $wb['backup_dir_txt'] = 'Diretório de backup'; +$wb['backup_tmp_txt'] = 'Diretório para backup temporário quando utilizado zip'; $wb['named_conf_local_path_txt'] = 'Caminho do named.conf.local'; -$wb['php_ini_path_cgi_txt'] = 'Caminho do php.ini CGI'; -$wb['php_ini_path_apache_txt'] = 'Caminho do php.ini apache'; -$wb['check_apache_config_txt'] = 'Testar a configuração do apache ao reiniciar'; -$wb['network_config_warning_txt'] = 'A configuração de rede só está disponÃvel para servidores Debian e Ubuntu. Não ative esta configuração se a adaptadora de rede no sistema for diferente de eth0.'; -$wb['CA_path_txt'] = 'Caminho do CA'; -$wb['CA_pass_txt'] = 'Senha do CA'; -$wb['ufw_enable_txt'] = 'Habilitar'; -$wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas'; -$wb['ufw_ipv6_txt'] = 'Habilitar IPv6'; -$wb['ufw_default_input_policy_txt'] = 'PolÃtica padrão para entrada'; -$wb['ufw_default_output_policy_txt'] = 'PolÃtica padrão para saÃda'; -$wb['ufw_default_forward_policy_txt'] = 'PolÃtica padrão para encaminhamento'; -$wb['ufw_default_application_policy_txt'] = 'PolÃtica padrão para aplicações'; -$wb['ufw_log_level_txt'] = 'NÃvel do log'; -$wb['fastcgi_config_syntax_txt'] = 'Sintaxe das configurações FastCGI'; -$wb['server_type_txt'] = 'Tipo de servidor'; -$wb['nginx_vhost_conf_dir_txt'] = 'Diretório de configuração do vhost nginx'; -$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Configuração do diretório do vhost nginx habilitada'; +$wb['php_ini_path_cgi_txt'] = 'Caminho do php.ini do cgi'; +$wb['php_ini_path_apache_txt'] = 'Caminho do php.ini do apache'; +$wb['check_apache_config_txt'] = 'Verificar as configurações do apache quando reiniciar'; +$wb['network_config_warning_txt'] = 'A configuração de rede está disponÃvel apenas para servidores Debian e Ubuntu. Não habilite esta opção se a interface de rede for diferente de eth0.'; +$wb['CA_path_txt'] = 'Caminho da CA'; +$wb['CA_pass_txt'] = 'Senha da CA'; +$wb['fastcgi_config_syntax_txt'] = 'Sintaxe das configurações do FastCGI'; +$wb['backup_mode_txt'] = 'Modo do backup'; +$wb['backup_mode_userzip'] = 'Arquivos de backup com propriedade do usuário web e compactados como zip'; +$wb['backup_mode_rootgz'] = 'Todos os arquivos no diretório web com proprietário root'; +$wb['tmpdir_path_error_empty'] = 'Caminho do diretório temporário está em branco.'; +$wb['tmpdir_path_error_regex'] = 'Caminho do diretório temporário é inválido.'; +$wb['backup_time_txt'] = 'Hora do backup'; +$wb['server_type_txt'] = 'Tipo do servidor'; +$wb['nginx_vhost_conf_dir_txt'] = 'Diretório de configurações vhost do nginx'; +$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Diretório de configurações vhost do nginx habilitado'; $wb['nginx_user_txt'] = 'Usuário nginx'; -$wb['nginx_group_txt'] = 'Grupo nginx'; -$wb['nginx_cgi_socket_txt'] = 'Soquete CGI nginx'; +$wb['nginx_group_txt'] = 'Grupo do nginx'; +$wb['nginx_cgi_socket_txt'] = 'Socket CGI do nginx'; $wb['backup_dir_error_empty'] = 'Diretório de backup está em branco.'; $wb['maildir_path_error_empty'] = 'Caminho do maildir está em branco.'; $wb['homedir_path_error_empty'] = 'Caminho do homedir está em branco.'; -$wb['mailuser_uid_error_empty'] = 'UID do mailuser está em branco.'; -$wb['mailuser_gid_error_empty'] = 'GID do mailuser está em branco.'; -$wb['mailuser_name_error_empty'] = 'Nome do mailuser está em branco.'; -$wb['mailuser_group_error_empty'] = 'Grupo do mailuser está em branco.'; -$wb['getmail_config_dir_error_empty'] = 'Configuração do diretório getmail está em branco.'; -$wb['website_basedir_error_empty'] = 'Diretório padrão (basedir) do site está em branco.'; -$wb['website_path_error_empty'] = 'Caminho do diretório base (basedir) do site está em branco.'; -$wb['website_symlinks_error_empty'] = 'Links simbólicos para site está em branco.'; -$wb['vhost_conf_dir_error_empty'] = 'Configuração do diretório para vhost está em branco.'; -$wb['vhost_conf_enabled_dir_error_empty'] = 'Configuração habilitada do diretório vhost está em branco.'; -$wb['nginx_vhost_conf_dir_error_empty'] = 'Configuração do diretório vhost do nginx está em branco.'; -$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Configuração habilitada do diretório vhost do nginx está em branco.'; -$wb['apache_user_error_empty'] = 'Usuário apache está em branco.'; -$wb['apache_group_error_empty'] = 'Grupo apache está em branco.'; -$wb['nginx_user_error_empty'] = 'Usuário nginx está em branco.'; -$wb['nginx_group_error_empty'] = 'Grupo nginx está em branco.'; -$wb['php_ini_path_apache_error_empty'] = 'Caminho do php.ini apache está em branco.'; +$wb['mailuser_uid_error_empty'] = 'UID do mailuser UID está em branco.'; +$wb['mailuser_gid_error_empty'] = 'GID do mailuser GID está em branco.'; +$wb['mailuser_name_error_empty'] = 'Usuário do mailuser está em branco.'; +$wb['mailuser_group_error_empty'] = 'Grupo do mailuser Group está em branco.'; +$wb['getmail_config_dir_error_empty'] = 'Diretório de configurações do getmail está em branco.'; +$wb['website_basedir_error_empty'] = 'Diretório basedir de sites está em branco.'; +$wb['website_path_error_empty'] = 'Caminho do site está em branco.'; +$wb['website_symlinks_error_empty'] = 'Links simbólicos de site está em branco.'; +$wb['vhost_conf_dir_error_empty'] = 'Diretório de configurações do vhost está em branco.'; +$wb['vhost_conf_enabled_dir_error_empty'] = 'Diretório de configurações vhost habilitadas está em branco.'; +$wb['nginx_vhost_conf_dir_error_empty'] = 'Diretório de configurações vhost do nginx está em branco.'; +$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Diretório de configurações vhost habilitadas do nginx está em branco.'; +$wb['apache_user_error_empty'] = 'Usuário do apache está em branco.'; +$wb['apache_group_error_empty'] = 'Grupo do apache está em branco.'; +$wb['nginx_user_error_empty'] = 'Usuário do nginx está em branco.'; +$wb['nginx_group_error_empty'] = 'Grupo do nginx está em branco.'; +$wb['php_ini_path_apache_error_empty'] = 'Caminho do php.ini do apache está em branco.'; $wb['php_ini_path_cgi_error_empty'] = 'Caminho do php.ini CGI está em branco.'; -$wb['nginx_cgi_socket_empty'] = 'Soquete do CGI nginx está em branco.'; -$wb['apps_vhost_port_error_empty'] = 'Porta de apps-vhost está em branco.'; -$wb['apps_vhost_ip_error_empty'] = 'IP para apps-vhost está em branco.'; -$wb['fastcgi_starter_path_error_empty'] = 'Caminho do programa de inicialização do FastCGI está em branco.'; +$wb['nginx_cgi_socket_empty'] = 'O socket CGI do nginx está em branco.'; +$wb['apps_vhost_port_error_empty'] = 'Portas de apps-vhost está em branco.'; +$wb['apps_vhost_ip_error_empty'] = 'IP do apps-vhost está em branco.'; +$wb['fastcgi_starter_path_error_empty'] = 'Caminho do script de inicialização do FastCGI está em branco.'; $wb['fastcgi_starter_script_error_empty'] = 'Script de inicialização do FastCGI está em branco.'; -$wb['fastcgi_alias_error_empty'] = 'Alias (apelido) do FastCGI está em branco.'; -$wb['fastcgi_phpini_path_error_empty'] = 'Caminho do php.ini do FastCGI está em branco.'; -$wb['fastcgi_children_error_empty'] = 'Filhos do FastCGI está em branco.'; -$wb['fastcgi_max_requests_error_empty'] = 'Limite de requisições do FastCGI está em branco.'; -$wb['fastcgi_bin_error_empty'] = 'Binário do FastCGI está em branco.'; -$wb['jailkit_chroot_home_error_empty'] = 'Diretório raiz do jailkit está em branco.'; -$wb['jailkit_chroot_app_sections_error_empty'] = 'Aplicações no jailkit chroot (sessões) está em branco.'; -$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicações no jailkit em ambiente chroot está em branco.'; -$wb['jailkit_chroot_cron_programs_error_empty'] = 'Tarefas no cron de aplicações no jailkit em ambiente chroot está em branco.'; -$wb['vlogger_config_dir_error_empty'] = 'Diretório de configurações está em branco.'; -$wb['cron_init_script_error_empty'] = 'Nome do script de inicialização do cron está em branco.'; -$wb['crontab_dir_error_empty'] = 'Caminho para tabelas de tarefas individuais no cron está em branco.'; -$wb['cron_wget_error_empty'] = 'Caminho do programa wget está em branco.'; -$wb['php_fpm_init_script_txt'] = 'Script de inicialização do PHP-FPM'; -$wb['php_fpm_init_script_error_empty'] = 'Script de inicialização do PHP-FPM está em branco.'; -$wb['php_fpm_ini_path_txt'] = 'Caminho do php.ini do PHP-FPM'; -$wb['php_fpm_ini_path_error_empty'] = 'Caminho do php.ini do PHP-FPM está em branco.'; -$wb['php_fpm_pool_dir_txt'] = 'Diretório de faixas (pool) do PHP-FPM'; -$wb['php_fpm_pool_dir_error_empty'] = 'Diretório de faixas (pool) do PHP-FPM está em branco.'; -$wb['php_fpm_start_port_txt'] = 'Porta de inicialização do PHP-FPM'; -$wb['php_fpm_start_port_error_empty'] = 'Porta de inicialização do PHP-FPM está em branco.'; -$wb['php_fpm_socket_dir_txt'] = 'Diretório do soquete PHP-FPM'; -$wb['php_fpm_socket_dir_error_empty'] = 'Diretório do soquete PHP-FPM está em branco.'; -$wb['try_rescue_txt'] = 'Habilitar serviço de monitoramento e reiniciar em caso de falha'; -$wb['do_not_try_rescue_mysql_txt'] = 'Desabilitar monitoramento do MySQL'; -$wb['do_not_try_rescue_mail_txt'] = 'Desabilitar monitoramento do servidor de e-mails'; -$wb['rescue_description_txt'] = '<b>Informação:</b> Se você deseja desligar o MySQL deverá selecionar \'Desabilitar monitoramento do MySQL\' e aguardar em torno de 2 a 3 minutos...<br>se não aguardar em torno de 2 a 3 minutos, o serviço tentará reiniciar o MySQL!'; +$wb['fastcgi_alias_error_empty'] = 'Alias do FastCGI está em branco.'; +$wb['fastcgi_phpini_path_error_empty'] = 'O caminho do php.ini do FastCGI está em branco.'; +$wb['fastcgi_children_error_empty'] = 'Os processos filhos do FastCGI está em branco.'; +$wb['fastcgi_max_requests_error_empty'] = 'O limite de requisições FastCGI está em branco.'; +$wb['fastcgi_bin_error_empty'] = 'O binário do FastCGI está em branco.'; +$wb['jailkit_chroot_home_error_empty'] = 'O home em chroot do jailkit está em branco.'; +$wb['jailkit_chroot_app_sections_error_empty'] = 'Seções de aplicações no jailkit está em branco.'; +$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicações no jailkit está em branco.'; +$wb['jailkit_chroot_cron_programs_error_empty'] = 'Tarefas de aplicações no jailkit está em branco.'; +$wb['vlogger_config_dir_error_empty'] = 'Diretório de configuração está em branco.'; +$wb['cron_init_script_error_empty'] = 'Script de inicialização do cron está em branco.'; +$wb['crontab_dir_error_empty'] = 'Caminho para tarefas individuais no cron está em branco.'; +$wb['cron_wget_error_empty'] = 'Caminho do binário wget está em branco.'; +$wb['php_fpm_init_script_txt'] = 'Script de inicialização do php-fpm'; +$wb['php_fpm_init_script_error_empty'] = 'Script de inicialização do php-fpm está em branco.'; +$wb['php_fpm_ini_path_txt'] = 'Caminho do php.ini do php-fpm'; +$wb['php_fpm_ini_path_error_empty'] = 'Caminho do php.ini do php-fpm está em branco.'; +$wb['php_fpm_pool_dir_txt'] = 'Diretório de faixas do php-fpm'; +$wb['php_fpm_pool_dir_error_empty'] = 'Diretório de faixas do php-fpm está em branco.'; +$wb['php_fpm_start_port_txt'] = 'Porta do php-fpm'; +$wb['php_fpm_start_port_error_empty'] = 'Porta do php-fpm está em branco.'; +$wb['php_fpm_socket_dir_txt'] = 'Diretório do socket php-fpm'; +$wb['php_fpm_socket_dir_error_empty'] = 'O diretório do socket php-fpm está em branco.'; +$wb['try_rescue_txt'] = 'Habilitar monitoramento de reiniciar em caso de falha'; +$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do httpd'; +$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do mongodb'; +$wb['do_not_try_rescue_mysql_txt'] = 'Desabilitar monitoramento do mysql'; +$wb['do_not_try_rescue_mail_txt'] = 'Desabilitar monitoramento de e-mail'; +$wb['rescue_description_txt'] = '<b>Informação:</b> Se o serviço mysql for desligado e estiver selecionado "Desabilitar monitoramento do mysql" aguarde entre 2 e 3 minutos sem abandonar a aba. <br>Se não aguardar o sistema de recuperação de falhas tentará reiniciar o mysql!'; $wb['enable_sni_txt'] = 'Habilitar SNI'; -$wb['do_not_try_rescue_httpd_txt'] = 'Desabilitar monitoramento do HTTPD'; -$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta na atualização'; -$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar usuários de site (web) para grupo -sshusers-'; -$wb['connect_userid_to_webid_txt'] = 'Mapear userID Linux para webID'; -$wb['connect_userid_to_webid_start_txt'] = 'Iniciar ID para userID/webID se conectar'; -$wb['website_autoalias_txt'] = 'Auto apelido (alias) para sites'; -$wb['website_autoalias_note_txt'] = 'Ãrea reservada:'; -$wb['backup_mode_txt'] = 'Modo do backup'; -$wb['backup_mode_userzip'] = 'Arquivos de backup com propriedade do usuário web e compactados como zip'; -$wb['backup_mode_rootgz'] = 'Todos os arquivos no diretório web com proprietário root'; -$wb['realtime_blackhole_list_txt'] = 'RBL em tempo real'; -$wb['realtime_blackhole_list_note_txt'] = '(Separar RBL\'s por vÃrgulas)'; +$wb['set_folder_permissions_on_update_txt'] = 'Configurar permissões de pasta quando atualizar'; +$wb['add_web_users_to_sshusers_group_txt'] = 'Adicionar novos usuários web para o grupo ssh'; +$wb['connect_userid_to_webid_txt'] = 'Conectar o UID do usuário no sistema para webID'; +$wb['connect_userid_to_webid_start_txt'] = 'Conexão do ID inicial do usuário com o webID'; +$wb['realtime_blackhole_list_txt'] = 'Lista RBL em tempo real'; +$wb['realtime_blackhole_list_note_txt'] = '(separar as RBLs com vÃrgulas)'; $wb['ssl_settings_txt'] = 'Configurações SSL'; $wb['permissions_txt'] = 'Permissões'; -$wb['php_settings_txt'] = 'Configurações PHP'; -$wb['apps_vhost_settings_txt'] = 'Configurações apps-vhost'; -$wb['awstats_settings_txt'] = 'Configurações awstats'; +$wb['php_settings_txt'] = 'Configurações php'; +$wb['apps_vhost_settings_txt'] = 'Configurações de apps vhost'; +$wb['awstats_settings_txt'] = 'Configurações do awstats'; $wb['firewall_txt'] = 'Firewall'; -$wb['mailbox_quota_stats_txt'] = 'EstatÃsticas de cota das contas de e-mail'; -$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas (*) para IP'; +$wb['mailbox_quota_stats_txt'] = 'EstatÃsticas das cotas das contas de e-mail'; +$wb['enable_ip_wildcard_txt'] = 'Habilitar curingas de IP (*)'; $wb['web_folder_protection_txt'] = 'Tornar pastas web imutáveis (atributos estendidos)'; -$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de cota de tráfego excedida para o administrador'; -$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de cota de tráfego excedida para o cliente'; -$wb['rbl_error_regex'] = 'Por favor, insira um nome de servidor válido para RBL.'; -$wb['overquota_notify_admin_txt'] = 'Enviar alertas de cota para o administrador'; -$wb['overquota_notify_client_txt'] = 'Enviar alertas de cota para o cliente'; -$wb['overquota_notify_onok_txt'] = 'Enviar mensagem de cota OK para o cliente'; -$wb['overquota_notify_freq_txt'] = 'Enviar alertas de cota a cada N dias'; -$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, não repetir'; -$wb['admin_notify_events_txt'] = 'Enviar e-mail para o admin quando iniciando com o seguinte nÃvel'; -$wb['no_notifications_txt'] = 'Sem Notificações'; -$wb['monit_url_txt'] = 'URL do Monit'; -$wb['monit_user_txt'] = 'Usuário do Monit'; -$wb['monit_password_txt'] = 'Senha do Monit'; -$wb['monit_url_error_regex'] = 'URL do Monit inválida.'; +$wb['overtraffic_notify_admin_txt'] = 'Enviar notificação de tráfego excedido para o administrador'; +$wb['overtraffic_notify_client_txt'] = 'Enviar notificação de tráfego excedido para o cliente'; +$wb['rbl_error_regex'] = 'Por favor, nomes de host válidos para RBLs.'; +$wb['overquota_notify_admin_txt'] = 'Enviar alerta da cota para o administrador'; +$wb['overquota_notify_client_txt'] = 'Enviar alerta da cota para o cliente'; +$wb['overquota_notify_onok_txt'] = 'Enviar mensagem da cota para o cliente'; +$wb['overquota_notify_freq_txt'] = 'Enviar alerta da cota a cada X dias'; +$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensagem apenas uma vez, sem repetir'; +$wb['admin_notify_events_txt'] = 'Enviar e-mail para o administrador iniciando com o seguinte nÃvel'; +$wb['no_notifications_txt'] = 'Sem notificações'; +$wb['monit_url_txt'] = 'URL de monitoramento do monit'; +$wb['monit_user_txt'] = 'Usuário do monit'; +$wb['monit_password_txt'] = 'Senha do monit'; +$wb['monit_url_error_regex'] = 'URL do monit é inválida'; $wb['monit_url_note_txt'] = 'Ãrea reservada:'; -$wb['munin_url_txt'] = 'URL do Munin'; -$wb['munin_user_txt'] = 'Usuário do Munin'; -$wb['munin_password_txt'] = 'Senha do Munin'; -$wb['munin_url_error_regex'] = 'URL do Munin inválida.'; +$wb['munin_url_txt'] = 'URL do munin'; +$wb['munin_user_txt'] = 'Usuário do munin'; +$wb['munin_password_txt'] = 'Senda do munin'; +$wb['munin_url_error_regex'] = 'URL do munin e inválida'; $wb['munin_url_note_txt'] = 'Ãrea reservada:'; -$wb['dkim_path_txt'] = 'Caminho do DKIM'; -$wb['backup_delete_txt'] = 'Remover backups do domÃnio/site'; $wb['v6_prefix_txt'] = 'Prefixo IPv6'; -$wb['vhost_rewrite_v6_txt'] = 'Reescrever prefixo IPv6 no espelho'; -$wb['v6_prefix_length'] = 'Prefixo longo definido de acordo com IPv6'; -$wb['backup_dir_is_mount_txt'] = 'Diretório de backup está montado?'; -$wb['monitor_system_updates_txt'] = 'Verificar por atualizações Linux'; -$wb['hostname_error_regex'] = 'Nome do servidor é inválido.'; -$wb['invalid_apache_user_txt'] = 'Usuário do Apache é inválido.'; -$wb['invalid_apache_group_txt'] = 'Grupo do Apache é inválido.'; +$wb['vhost_rewrite_v6_txt'] = 'Reescrever IPv6 no espelho'; +$wb['v6_prefix_length'] = 'O prefixo é muito longo de acordo com as definições IPv6.'; +$wb['backup_dir_is_mount_txt'] = 'O diretório de backup está montando?'; +$wb['backup_dir_mount_cmd_txt'] = 'Comando mount, se o diretório não está montado'; +$wb['backup_delete_txt'] = 'Remover backups de domÃnios/site'; +$wb['overquota_db_notify_admin_txt'] = 'Enviar alerta da cota do banco de dados para o administrador'; +$wb['overquota_db_notify_client_txt'] = 'Enviar alerta da cota do banco de dados para o cliente'; +$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema'; +$wb['php_handler_txt'] = 'Manipulador padrão do php'; +$wb['php_fpm_incron_reload_txt'] = 'Instale o arquivo de disparo do incron para recarregar o php-fpm.'; +$wb['disabled_txt'] = 'Desabilitado'; +$wb['dkim_strength_txt'] = 'Dificuldade do DKIM'; +$wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema'; +$wb['invalid_apache_user_txt'] = 'Usuário do apache é inválido.'; +$wb['invalid_apache_group_txt'] = 'Grupo do apache é inválido.'; $wb['backup_dir_error_regex'] = 'Diretório de backup é inválido.'; -$wb['maildir_path_error_regex'] = 'Caminho do Maildir é inválido.'; -$wb['homedir_path_error_regex'] = 'Caminho do Home é inválido.'; -$wb['mailuser_name_error_regex'] = 'Nome do Mailuser é inválido.'; -$wb['mailuser_group_name_error_regex'] = 'Grupo do Mailuser é inválido.'; -$wb['mailuser_uid_error_range'] = 'A UID do Mailuser deve ser >= 2000'; -$wb['mailuser_gid_error_range'] = 'A GID do Mailuser deve ser >= 2000'; -$wb['getmail_config_dir_error_regex'] = 'Configuração do diretório do getmail inválida.'; -$wb['website_basedir_error_regex'] = 'Diretório base (basedir) para sites é inválido.'; -$wb['website_symlinks_error_regex'] = 'Links simbólicos para sites é inválido.'; -$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações para vhost é inválido.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações para vhost habilitado é inválido.'; +$wb['maildir_path_error_regex'] = 'Caminho do maildir é inválido.'; +$wb['homedir_path_error_regex'] = 'Caminho do homedir é inválido.'; +$wb['mailuser_name_error_regex'] = 'Caminho do mailuser é inválido.'; +$wb['mailuser_group_name_error_regex'] = 'Grupo do mailuser é inválido.'; +$wb['mailuser_uid_error_range'] = 'A UID do mailuser deve ser >= 2000.'; +$wb['mailuser_gid_error_range'] = 'A GID do mailuser deve ser >= 2000.'; +$wb['getmail_config_dir_error_regex'] = 'Diretório de configurações do getmail é inválido.'; +$wb['website_basedir_error_regex'] = 'Caminho do basedir para sites é inválido. Comprimento mÃnimo 5 caracteres.'; +$wb['website_symlinks_error_regex'] = 'Links simbólicos para site são inválidos.'; +$wb['vhost_conf_dir_error_regex'] = 'Diretório de configurações vhost é inválido.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Diretório de configuração vhost habilitado é inválido.'; $wb['nginx_vhost_conf_dir_error_regex'] = 'Diretório de configurações do nginx é inválido.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações nginx habilitado é inválido.'; -$wb['ca_path_error_regex'] = 'Caminho do CA é inválido.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Diretório de configurações do nginx habilitado é inválido.'; +$wb['ca_path_error_regex'] = 'Caminho da CA é inválido.'; $wb['invalid_nginx_user_txt'] = 'Usuário do nginx é inválido.'; $wb['invalid_nginx_group_txt'] = 'Grupo do nginx é inválido.'; -$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini apache é inválido.'; -$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini CGI é inválido.'; -$wb['php_fpm_init_script_error_regex'] = 'Caminho do script de inicialização do PHP-FPM é inválido.'; -$wb['php_fpm_ini_path_error_regex'] = 'Caminho do php.ini PHP-FPM é inválido.'; -$wb['php_fpm_pool_dir_error_regex'] = 'Diretório de faixas (pool) PHP-FPM é inválido.'; -$wb['php_fpm_socket_dir_error_regex'] = 'Diretório do sqouete PHP-FPM é inválido.'; -$wb['php_open_basedir_error_regex'] = 'Diretório base (open_basedir) PHP é inválido.'; -$wb['awstats_data_dir_empty'] = 'Diretório de dados do awstats está em branco.'; -$wb['awstats_data_dir_error_regex'] = 'Diretório de dados do do awstats é inválido.'; -$wb['awstats_pl_empty'] = 'Configuração do script awstats.pl está em branco.'; -$wb['awstats_pl_error_regex'] = 'Caminho do script awstats.pl é inválido.'; -$wb['awstats_buildstaticpages_pl_empty'] = 'Script awstats_buildstaticpages.pl está em branco.'; -$wb['awstats_buildstaticpages_pl_error_regex'] = 'Camindho do script awstats_buildstaticpages.pl é inválido.'; -$wb['invalid_bind_user_txt'] = 'Usuário bind é inválido.'; -$wb['invalid_bind_group_txt'] = 'Grupo bind é inválido.'; -$wb['bind_zonefiles_dir_error_regex'] = 'Diretório de zonas do bind é inválido.'; -$wb['named_conf_path_error_regex'] = 'Caminho do named.conf é inválido.'; -$wb['named_conf_local_path_error_regex'] = 'Caminho do named.conf.local é inválido.'; -$wb['fastcgi_starter_path_error_regex'] = 'Caminho do scritp de inicialização FASTCGI é inválido.'; -$wb['fastcgi_starter_script_error_regex'] = 'Script de inicizalização FASTCGI é inválido.'; -$wb['fastcgi_alias_error_regex'] = 'Apelido (alias) do FASTCGI é inválido.'; -$wb['fastcgi_phpini_path_error_regex'] = 'Caminho do FASTCGI é inválido.'; -$wb['fastcgi_bin_error_regex'] = 'Binário do FASTCGI é inválido.'; -$wb['jailkit_chroot_home_error_regex'] = 'Raiz do chroot jailkit inválida.'; -$wb['jailkit_chroot_app_sections_error_regex'] = 'Aplicações no jailkit chroot (sessões) são inválidas.'; -$wb['jailkit_chroot_app_programs_error_regex'] = 'Aplicações no jailkit em ambiente chroot são inválidas.'; -$wb['jailkit_chroot_cron_programs_error_regex'] = 'Programas no cron em ambiente chroot jailkit são inválidos.'; -$wb['vlogger_config_dir_error_regex'] = 'Diretório de configuração do vlogger é inválido.'; -$wb['cron_init_script_error_regex'] = 'Script de inicialização do Cron é inválido.'; -$wb['crontab_dir_error_regex'] = 'Diretório para tabelas de tarefas individuais no cron é inválido.'; -$wb['cron_wget_error_regex'] = 'Caminho do wget para cron é inválido.'; +$wb['php_ini_path_apache_error_regex'] = 'Caminho do php.ini do apache é inválido.'; +$wb['php_ini_path_cgi_error_regex'] = 'Caminho do php.ini do cgi é inválido.'; +$wb['php_fpm_init_script_error_regex'] = 'Script de inicialização do php-fpm é inválido.'; +$wb['php_fpm_ini_path_error_regex'] = 'Caminho de inicialização do php-fpm é inválido.'; +$wb['php_fpm_pool_dir_error_regex'] = 'Caminho do diretório de faixas do php-fpm é inválido.'; +$wb['php_fpm_socket_dir_error_regex'] = 'Caminho do diretório de socket do php-fpm é inválido.'; +$wb['php_open_basedir_error_regex'] = 'Caminho do open_basedir do php é inválido.'; +$wb['awstats_data_dir_empty'] = 'O diretório de dados do awstats está em branco.'; +$wb['awstats_data_dir_error_regex'] = 'O diretório de dados do awstats é inválido.'; +$wb['awstats_pl_empty'] = 'A configuração do awstats.pl está em branco.'; +$wb['awstats_pl_error_regex'] = 'O caminho do awstats.pl é inválido.'; +$wb['awstats_buildstaticpages_pl_empty'] = 'O awstats_buildstaticpages.pl está em branco'; +$wb['awstats_buildstaticpages_pl_error_regex'] = 'O caminho do awstats_buildstaticpages.pl é inválido.'; +$wb['invalid_bind_user_txt'] = 'O usuário do bind é inválido.'; +$wb['invalid_bind_group_txt'] = 'O grupo do bind é inválido.'; +$wb['bind_zonefiles_dir_error_regex'] = 'O diretório de zonas do bind é inválido.'; +$wb['named_conf_path_error_regex'] = 'O caminho do named.conf é inválido.'; +$wb['named_conf_local_path_error_regex'] = 'O caminho do named.conf.local é inválido.'; +$wb['fastcgi_starter_path_error_regex'] = 'O caminho do script de inicialização do fastcgi é inválido.'; +$wb['fastcgi_starter_script_error_regex'] = 'O script de inicialização do fastcgi é inválido.'; +$wb['fastcgi_alias_error_regex'] = 'O alias do fastcgi é inválido.'; +$wb['fastcgi_phpini_path_error_regex'] = 'O caminho do fastcgi é inválido.'; +$wb['fastcgi_bin_error_regex'] = 'O binário do fastcgi é inválido.'; +$wb['jailkit_chroot_home_error_regex'] = 'O diretório home em chroot do jailkit é inválido.'; +$wb['jailkit_chroot_app_sections_error_regex'] = 'As seções de aplicações no jaikit são inválidas.'; +$wb['jailkit_chroot_app_programs_error_regex'] = 'As aplicações em chroot no jailkit são inválidas.'; +$wb['jailkit_chroot_cron_programs_error_regex'] = 'As tarefas de aplicações em chroot no jailkit são inválidas.'; +$wb['vlogger_config_dir_error_regex'] = 'Diretório de configurações do vlogger é inválido.'; +$wb['cron_init_script_error_regex'] = 'Script de inicialização do cron é inválido.'; +$wb['crontab_dir_error_regex'] = 'Diretório do cron é inválido.'; +$wb['cron_wget_error_regex'] = 'Caminho do wget no cron é inválido.'; $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede'; -$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta no log para bind9.'; -$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost'; -$wb['do_not_try_rescue_mongodb_txt'] = 'Desabilitar monitoramento do MongoDB'; -$wb['backup_dir_mount_cmd_txt'] = 'Usar o comando mount, se o diretório de backups não estiver montado'; -$wb['overquota_db_notify_admin_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o administrador'; -$wb['overquota_db_notify_client_txt'] = 'Enviar mensagens de alerta de cota do banco de dados para o cliente'; -$wb['php_handler_txt'] = 'Manipulador padrão PHP'; -$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['disabled_txt'] = 'Desabilitado'; -$wb['dkim_strength_txt'] = 'Dificuldade do DKIM'; -$wb['php_ini_check_minutes_txt'] = 'Verificar modificações do php.ini a cada N minutos'; -$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor de quantas vezes o php.ini deve ser verificado por modificações.'; -$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificação'; +$wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos'; +$wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.'; +$wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações'; $wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponÃvel'; -$wb['web_settings_txt'] = 'Servidor de páginas'; -$wb['xmpp_server_txt'] = 'Servidor XMPP'; +$wb['web_settings_txt'] = 'Servidor web'; +$wb['xmpp_server_txt'] = 'Servidor xmpp'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'O limite de tempo para falta de atividade BOSH'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira uma faixa de tempo - entre 15 e 360 - para verificar falta de atividade BOSH.'; -$wb['xmpp_module_saslauth'] = 'saslauth'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'Tempo de inatividade do BOSH'; +$wb['xmpp_bosh_timeout_range_wrong'] = 'Por favor, insira um valor para o timeout do bosh entre 15 e 360.'; +$wb['xmpp_module_saslauth'] = 'Autenticação SASL'; $wb['xmpp_server_admins_txt'] = 'Administradores do servidor (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Habilitar plugins no lado servidor (um por linha)'; +$wb['xmpp_modules_enabled_txt'] = 'Plugins habilitados no servidor (um por linha)'; $wb['xmpp_ports_txt'] = 'Portas dos componentes'; -$wb['xmpp_port_http_txt'] = 'HTTP'; -$wb['xmpp_port_https_txt'] = 'HTTPS'; +$wb['xmpp_port_http_txt'] = 'http'; +$wb['xmpp_port_https_txt'] = 'https'; $wb['xmpp_port_pastebin_txt'] = 'Pastebin'; $wb['xmpp_port_bosh_txt'] = 'BOSH'; -$wb['backup_time_txt'] = 'Hora do backup'; +$wb['disable_bind_log_txt'] = 'Desabilitar mensagens de alerta do bind9'; +$wb['apps_vhost_enabled_txt'] = 'Habilitar apps-vhost'; $wb['skip_le_check_txt'] = 'Ignorar verificação do Lets Encrypt'; -$wb['migration_mode_txt'] = 'Habilitar modo de migração do servidor'; -$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; -$wb['backup_tmp_txt'] = 'Backup tmp directory for zip'; -$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.'; -$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.'; -$wb['logging_txt'] = 'Store website access and error logs'; -$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; -$wb['log_retention_txt'] = 'Log retention (days)'; -$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; -$wb['php_default_name_txt'] = 'Description Default PHP-Version'; -$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; -$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; -$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; -$wb['content_filter_txt'] = 'Content Filter'; -$wb['rspamd_url_txt'] = 'Rspamd URL'; -$wb['rspamd_user_txt'] = 'Rspamd User'; -$wb['rspamd_password_txt'] = 'Rspamd Password'; -?> +$wb['migration_mode_txt'] = 'Modo migração de servidor'; +$wb['nginx_enable_pagespeed_txt'] = 'Tornar pagespeed disponÃvel'; +$wb['logging_txt'] = 'Gravar logs de acesso e erros de sites'; +$wb['logging_desc_txt'] = 'Usar Ferramentas > Sicronizar para aplicar mudanças em sites existentes. Para o Apache, os logs de acesso e erros podem ser anonimizados. Para o nginx, apenas o log de acesso é anonimizado, o log de erros conterá endereços IP.'; +$wb['log_retention_txt'] = 'Tempo de retenção do log (dias)'; +$wb['log_retention_error_ispositive'] = 'O tempo de retenção do log deve ser um número > 0.'; +$wb['php_default_name_txt'] = 'Descrição da versão padrão do php'; +$wb['php_default_name_error_empty'] = 'A descrição da versão padrão do php está em branco.'; +$wb['error_mailbox_message_size_txt'] = 'O tamanho da cota da conta de e-mail deve ser maior ou igual o tamanho da cota de mensagens.'; +$wb['php_fpm_reload_mode_txt'] = 'Modo da recarga do php-fpm'; +$wb['content_filter_txt'] = 'Filtro de conteúdo'; +$wb['rspamd_url_txt'] = 'URL do rspamd'; +$wb['rspamd_user_txt'] = 'Usuário do rspamd'; +$wb['rspamd_password_txt'] = 'Senha do rspamd'; diff --git a/interface/web/admin/lib/lang/br_server_ip.lng b/interface/web/admin/lib/lang/br_server_ip.lng index b921578940..b9bbd47949 100644 --- a/interface/web/admin/lib/lang/br_server_ip.lng +++ b/interface/web/admin/lib/lang/br_server_ip.lng @@ -1,11 +1,11 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['ip_address_txt'] = 'Endereço IP'; -$wb['virtualhost_txt'] = 'Nome do virtualHost http'; -$wb['ip_error_wrong'] = 'Endereço IP inválido!'; -$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.'; $wb['client_id_txt'] = 'Cliente'; $wb['ip_type_txt'] = 'Tipo'; -$wb['virtualhost_port_txt'] = 'Portas http'; -$wb['error_port_syntax'] = 'Caracteres inválidos no campo -portas http-, insira somente números separados por vÃrgula. Exemplo: 80,443'; +$wb['ip_address_txt'] = 'Endereço IP'; +$wb['virtualhost_txt'] = 'Nome do vhost http'; +$wb['virtualhost_port_txt'] = 'Porta http'; +$wb['ip_error_wrong'] = 'O endereço IP é inválido.'; +$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.'; +$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vÃrgula. Exemplo: 80,443.'; ?> diff --git a/interface/web/admin/lib/lang/br_server_ip_list.lng b/interface/web/admin/lib/lang/br_server_ip_list.lng index c7b22097bf..0ae892af87 100644 --- a/interface/web/admin/lib/lang/br_server_ip_list.lng +++ b/interface/web/admin/lib/lang/br_server_ip_list.lng @@ -1,10 +1,10 @@ <?php $wb['list_head_txt'] = 'Endereço IP'; $wb['server_id_txt'] = 'Servidor'; +$wb['client_id_txt'] = 'Cliente'; $wb['ip_address_txt'] = 'Endereço IP'; $wb['add_new_record_txt'] = 'Adicionar novo endereço IP'; -$wb['client_id_txt'] = 'Cliente'; -$wb['virtualhost_txt'] = 'Vhost http'; +$wb['virtualhost_txt'] = 'Virtual host http'; $wb['virtualhost_port_txt'] = 'Portas http'; $wb['ip_type_txt'] = 'Tipo'; ?> diff --git a/interface/web/admin/lib/lang/br_server_ip_map.lng b/interface/web/admin/lib/lang/br_server_ip_map.lng index 44b7648277..81a2bb4b96 100644 --- a/interface/web/admin/lib/lang/br_server_ip_map.lng +++ b/interface/web/admin/lib/lang/br_server_ip_map.lng @@ -1,12 +1,12 @@ <?php -$wb['server_id_txt'] = 'Servidor'; +$wb['server_id_txt'] = 'Servidor para mapeamento IP'; $wb['source_txt'] = 'Endereço IP de origem'; $wb['destination_txt'] = 'Endereço IP de destino'; $wb['active_txt'] = 'Ativo'; -$wb['ip_error_wrong'] = 'Endereço IP é inválido.'; -$wb['destination_ip_empty'] = 'Endereço IP de destino está em branco.'; -$wb['source_ip_empty'] = 'Endereço IP de origem está em branco.'; -$wb['server_empty_error'] = 'Servidor está em branco.'; -$wb['duplicate_mapping_error'] = 'Mapeamento já existe.'; -$wb['ip_mapping_error'] = 'Endereço IP de origem não pode ser um endereço IP do servidor.'; +$wb['ip_error_wrong'] = 'O endereço IP de destino é inválido.'; +$wb['destination_ip_empty'] = 'O endereço IP de destino está em branco.'; +$wb['source_ip_empty'] = 'O endereço IP de origem está em branco.'; +$wb['server_empty_error'] = 'O servidor está em branco.'; +$wb['duplicate_mapping_error'] = 'Este mapeamento IP já existe.'; +$wb['ip_mapping_error'] = 'Endereço IP de origem não pode ser o mesmo IP do servidor para o mapeamento.'; ?> diff --git a/interface/web/admin/lib/lang/br_server_ip_map_list.lng b/interface/web/admin/lib/lang/br_server_ip_map_list.lng index f5682f31ac..8cb0a1e20f 100644 --- a/interface/web/admin/lib/lang/br_server_ip_map_list.lng +++ b/interface/web/admin/lib/lang/br_server_ip_map_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Mapeamento IPv4 - servidor web'; +$wb['list_head_txt'] = 'Mapeamento IPv4'; $wb['server_id_txt'] = 'Servidor'; -$wb['source_ip_txt'] = 'IP de origem'; -$wb['destination_ip_txt'] = 'IP de destino'; +$wb['source_ip_txt'] = 'Endereço de origem'; +$wb['destination_ip_txt'] = 'Endereço de destino'; $wb['active_txt'] = 'Ativo'; ?> diff --git a/interface/web/admin/lib/lang/br_server_list.lng b/interface/web/admin/lib/lang/br_server_list.lng index b4a1fcafc6..ae3bb52810 100644 --- a/interface/web/admin/lib/lang/br_server_list.lng +++ b/interface/web/admin/lib/lang/br_server_list.lng @@ -1,14 +1,14 @@ <?php $wb['list_head_txt'] = 'Servidor'; $wb['server_name_txt'] = 'Nome'; -$wb['mail_server_txt'] = 'e-Mails'; -$wb['web_server_txt'] = 'Sites'; +$wb['mail_server_txt'] = 'E-MAIL'; +$wb['web_server_txt'] = 'SITES'; $wb['dns_server_txt'] = 'DNS'; $wb['file_server_txt'] = 'FTP'; $wb['db_server_txt'] = 'BD'; $wb['vserver_server_txt'] = 'VPS'; -$wb['add_new_record_txt'] = 'Adicionar novo servidor'; $wb['proxy_server_txt'] = 'Proxy'; $wb['firewall_server_txt'] = 'Firewall'; +$wb['add_new_record_txt'] = 'Adicionar novo servidor'; $wb['xmpp_server_txt'] = 'XMPP'; ?> diff --git a/interface/web/admin/lib/lang/br_server_php.lng b/interface/web/admin/lib/lang/br_server_php.lng index 459b4d9e0c..377763ce45 100644 --- a/interface/web/admin/lib/lang/br_server_php.lng +++ b/interface/web/admin/lib/lang/br_server_php.lng @@ -1,17 +1,17 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['client_id_txt'] = 'Cliente'; -$wb['name_txt'] = 'Nome do php'; +$wb['name_txt'] = 'Nome da versão do php'; $wb['Name'] = 'Nome'; $wb['FastCGI Settings'] = 'Configurações FastCGI'; $wb['PHP-FPM Settings'] = 'Configurações PHP-FPM'; $wb['Additional PHP Versions'] = 'Versões adicionais do php'; -$wb['Form to edit additional PHP versions'] = 'Formulário de edição de versões adicionais do php'; -$wb['server_php_name_error_empty'] = 'Nome está em branco.'; -$wb['php_fastcgi_binary_txt'] = 'Caminho do binário FastCGI'; -$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['Form to edit additional PHP versions'] = 'Editar verões adicionais do php'; +$wb['server_php_name_error_empty'] = 'O campo nome está em branco.'; +$wb['php_fastcgi_binary_txt'] = 'Caminho do binário do FastCGI'; +$wb['php_fastcgi_ini_dir_txt'] = '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'; +$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório pool do php-fpm'; +$wb['active_txt'] = 'Ativo'; ?> diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng index 88f1e38d21..38ebdd3568 100644 --- a/interface/web/admin/lib/lang/br_server_php_list.lng +++ b/interface/web/admin/lib/lang/br_server_php_list.lng @@ -3,6 +3,6 @@ $wb['list_head_txt'] = 'Versões adicionais do php'; $wb['server_id_txt'] = 'Servidor'; $wb['add_new_record_txt'] = 'Adicionar nova versão do php'; $wb['client_id_txt'] = 'Cliente'; -$wb['name_txt'] = 'Nome da versão do php'; -$wb['active_txt'] = 'Active'; +$wb['name_txt'] = 'Nome da versão'; +$wb['active_txt'] = 'Ativo'; ?> diff --git a/interface/web/admin/lib/lang/br_software_package_list.lng b/interface/web/admin/lib/lang/br_software_package_list.lng index 093f52bca3..de62e3d305 100644 --- a/interface/web/admin/lib/lang/br_software_package_list.lng +++ b/interface/web/admin/lib/lang/br_software_package_list.lng @@ -1,13 +1,13 @@ <?php -$wb['list_head_txt'] = 'Pacotes de software'; +$wb['list_head_txt'] = 'Pacotes de APPs e complementos'; $wb['installed_txt'] = 'Estado'; $wb['package_title_txt'] = 'Pacote'; $wb['package_description_txt'] = 'Descrição'; -$wb['action_txt'] = 'Acão'; +$wb['action_txt'] = 'Ação'; $wb['toolsarea_head_txt'] = 'Pacotes'; $wb['repoupdate_txt'] = 'Atualizar lista de pacotes'; -$wb['package_id_txt'] = 'ID local do app'; -$wb['no_packages_txt'] = 'Nenhum pacote disponÃvel'; +$wb['package_id_txt'] = 'ID local do APP'; +$wb['no_packages_txt'] = 'Nenhum pacote disponÃvel.'; $wb['edit_txt'] = 'Editar'; $wb['delete_txt'] = 'Remover'; ?> diff --git a/interface/web/admin/lib/lang/br_software_repo.lng b/interface/web/admin/lib/lang/br_software_repo.lng index b535850138..dbc14e2032 100644 --- a/interface/web/admin/lib/lang/br_software_repo.lng +++ b/interface/web/admin/lib/lang/br_software_repo.lng @@ -4,5 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Usuário (opcional)'; $wb['repo_password_txt'] = 'Senha (opcional)'; $wb['active_txt'] = 'Ativo'; -$wb['Software Repository which may contain addons or updates'] = 'Repositório de softwares podem conter complementos ou atualizações'; +$wb['Software Repository which may contain addons or updates'] = 'Repositório de software pode conter complementos ou atualizações'; ?> diff --git a/interface/web/admin/lib/lang/br_software_update_list.lng b/interface/web/admin/lib/lang/br_software_update_list.lng index 0592ca7f26..0dff3a245c 100644 --- a/interface/web/admin/lib/lang/br_software_update_list.lng +++ b/interface/web/admin/lib/lang/br_software_update_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Atualizações de programas'; -$wb['server_select_txt'] = 'Selecione o servidor'; -$wb['installed_txt'] = 'Ações'; +$wb['list_head_txt'] = 'Atualizações de Software'; +$wb['server_select_txt'] = 'Selecionar o servidor'; +$wb['installed_txt'] = 'Ação'; $wb['update_title_txt'] = 'Atualizar'; $wb['version_txt'] = 'Versão'; $wb['action_txt'] = 'Ação'; -$wb['no_updates_txt'] = 'Nenhuma atualização disponÃvel'; +$wb['no_updates_txt'] = 'Nenhuma atualização disponÃvel.'; ?> diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 8688ca53aa..98bd4c9614 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -1,58 +1,58 @@ <?php -$wb['system_config_desc_txt'] = ''; +$wb['system_config_desc_txt'] = 'Configurações do Sistema'; +$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.'; +$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)'; +$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom (clientes)'; $wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!'; -$wb['dbname_prefix_txt'] = 'Prefixo do banco de dados'; -$wb['dbuser_prefix_txt'] = 'Prefixo do usuário do banco de dados'; -$wb['shelluser_prefix_txt'] = 'Prefixo do usuário shell'; -$wb['ftpuser_prefix_txt'] = 'Prefixo do usuário ftp'; -$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do banco de dados!'; -$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário do banco de dados!'; -$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário ftp!'; -$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do usuário shell!'; +$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba'; +$wb['tab_change_warning_txt'] = 'Alerta de alterações'; +$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.'; +$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados'; +$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados'; +$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell'; +$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav'; +$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp'; +$wb['vhost_subdomains_txt'] = 'Adicionar subdomÃnios como um site'; +$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomÃnios vhost no sistema!'; +$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domÃnio como um site'; +$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domÃnios vhost no sistema!'; +$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.'; +$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.'; +$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.'; +$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.'; +$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.'; $wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin'; +$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado'; $wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail'; $wb['webmail_url_txt'] = 'URL do webmail'; -$wb['phpmyadmin_url_txt'] = 'URL do phpmyadmin'; -$wb['use_domain_module_txt'] = 'Use o módulo domÃnios para adicionar novos domÃnios'; -$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domÃnios que o administrador cria para eles. Eles não podem editar o campo domÃnio livremente. Você deve sair e acessar novamente depois de alterar este valor para que as mudanças sejam visÃveis.'; -$wb['new_domain_txt'] = 'HTML para criar um novo domÃnio'; -$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)'; -$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom (clientes)'; -$wb['webdavuser_prefix_txt'] = 'Prefixo do usuário webdav'; -$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido no prefixo do usuário webdav.'; -$wb['webftp_url_txt'] = 'URL do webFTP'; -$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails'; -$wb['mailmailinglist_url_txt'] = 'URL para lista de e-mails'; -$wb['admin_mail_txt'] = 'e-Mail do administrador'; +$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails'; +$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails'; +$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin'; +$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domÃnios'; +$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domÃnios que o administrador adicionar para eles. Eles não podem editar o campo domÃnio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.'; +$wb['new_domain_txt'] = 'Código HTML para criar um novo domÃnio'; +$wb['webftp_url_txt'] = 'URL do FTPweb'; +$wb['admin_mail_txt'] = 'Administrador(es) de e-mails'; +$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar'; $wb['admin_name_txt'] = 'Nome do administrador'; -$wb['enable_custom_login_txt'] = 'Permite nome de acesso personalizado'; -$wb['monitor_key_txt'] = 'Monitorar palavra reservada'; $wb['maintenance_mode_txt'] = 'Modo manutenção'; -$wb['smtp_enabled_txt'] = 'Usar SMPT para enviar e-mails do sistema'; -$wb['smtp_host_txt'] = 'Servidor SMTP'; -$wb['smtp_port_txt'] = 'Porta'; -$wb['smtp_user_txt'] = 'Usuário'; -$wb['smtp_pass_txt'] = 'Senha'; -$wb['smtp_crypt_txt'] = 'Usar criptografia SSL/TLS para conexões SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.'; -$wb['tab_change_discard_txt'] = 'Descartar modificações nesta aba'; -$wb['tab_change_warning_txt'] = 'Alerta de modificações'; -$wb['tab_change_warning_note_txt'] = 'Exibir alertas de modificações nesta aba se qualquer dados for modificado pelo usuário.'; -$wb['vhost_subdomains_txt'] = 'Adicionar subdomÃnios vhost como site'; -$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomÃnios vhost no sistema!'; -$wb['vhost_aliasdomains_txt'] = 'Adicionar apelidos de domÃnios vhost como site'; -$wb['vhost_aliasdomains_note_txt'] = 'Você nao pode desabilitar esta configuração enquanto existirem apelidos de domÃnio vhost no sistema!'; -$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin inválida.'; -$wb['use_combobox_txt'] = 'Usar jQuery UI Combobox'; +$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema'; +$wb['smtp_host_txt'] = 'Host SMTP'; +$wb['smtp_port_txt'] = 'Porta SMTP'; +$wb['smtp_user_txt'] = 'Usuário SMTP'; +$wb['smtp_pass_txt'] = 'Senha do SMTP'; +$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.'; +$wb['use_combobox_txt'] = 'Usar combobox jQuery UI'; $wb['use_loadindicator_txt'] = 'Usar indicador de carga'; $wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada \'web\' para nome do usuário (não recomendado!).'; -$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota para site.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Exir aba autoresposta nos detalhes da conta de e-mail'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba filtros de e-mail nos detalhes da conta de e-mail'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba filtros de e-mail personalizados nos detalhes da conta de e-mail'; -$wb['webmail_url_error_regex'] = 'URL do webmail inválida'; +$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).'; +$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.'; +$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.'; $wb['phpmyadmin_url_note_txt'] = 'Ãrea reservada:'; $wb['webmail_url_note_txt'] = 'Ãrea reservada:'; $wb['available_dashlets_note_txt'] = 'Dashlets disponÃveis:'; @@ -64,30 +64,29 @@ $wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes'; $wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes'; $wb['customer_no_template_txt'] = 'No. do gabarito do cliente'; $wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.'; -$wb['customer_no_start_txt'] = 'Valor inicial do código do cliente'; -$wb['customer_no_counter_txt'] = 'Contador de código do cliente'; +$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente'; +$wb['customer_no_counter_txt'] = 'Contador do código de 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['No'] = 'Não'; $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'; -$wb['reseller_can_use_options_txt'] = 'Revendas podem usar o menu sites'; -$wb['custom_login_text_txt'] = 'Texto personalizado para página de acesso'; -$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso'; -$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido'; $wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; $wb['default_webserver_txt'] = 'Servidor web padrão'; $wb['default_dnsserver_txt'] = 'Servidor dns padrão'; $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; -$wb['No'] = 'Não'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['company_name_txt'] = 'Nome da empresa para tÃtulo da página'; +$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites'; +$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso'; +$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso'; +$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido'; +$wb['ca_name_txt'] = 'Nome'; +$wb['ca_issue_txt'] = 'Questão'; +$wb['ca_wildcard_txt'] = 'Usar curingas'; +$wb['ca_iodef_txt'] = 'Definições de E/S'; +$wb['active_txt'] = 'Ativo'; +$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_cancel_txt'] = 'Cancelar'; +$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)'; ?> diff --git a/interface/web/admin/lib/lang/br_tpl_default_admin.lng b/interface/web/admin/lib/lang/br_tpl_default_admin.lng index 0a53752e4b..dbad6b1766 100644 --- a/interface/web/admin/lib/lang/br_tpl_default_admin.lng +++ b/interface/web/admin/lib/lang/br_tpl_default_admin.lng @@ -1,18 +1,18 @@ <?php -$wb['tpl_default_admin_head_txt'] = 'Configurações de tema global padrão'; -$wb['tpl_default_admin_desc_txt'] = ''; +$wb['tpl_default_admin_head_txt'] = 'Configurações globais do tema padrão'; +$wb['tpl_default_admin_desc_txt'] = 'Descrição'; $wb['server_id_txt'] = 'Servidor'; $wb['client_id_txt'] = 'Cliente'; -$wb['name_txt'] = 'Nome do PHP'; +$wb['name_txt'] = 'Nome da versão do php'; $wb['Name'] = 'Nome'; -$wb['FastCGI Settings'] = 'Configurações do FastCGI'; -$wb['PHP-FPM Settings'] = 'Configurações do PHP-FPM'; +$wb['FastCGI Settings'] = 'Configurações FastCGI'; +$wb['PHP-FPM Settings'] = 'Configurações PHP-FPM'; $wb['Additional PHP Versions'] = 'Versões adicionais do php'; -$wb['Form to edit additional PHP versions'] = 'Formulário de edição de versões adicionais do php'; -$wb['server_php_name_error_empty'] = 'Nome está em branco.'; -$wb['php_fastcgi_binary_txt'] = 'Caminho do binário FastCGI'; +$wb['Form to edit additional PHP versions'] = 'Editar versões adicionais do php'; +$wb['server_php_name_error_empty'] = 'O nome está em branco.'; +$wb['php_fastcgi_binary_txt'] = 'Caminho do binário do FastCGI'; $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 PHP-FPM'; -$wb['php_fpm_ini_dir_txt'] = 'Caminho do diretório php.ini'; -$wb['php_fpm_pool_dir_txt'] = 'Caminho do diretório de faixas (pool) do PHP-FPM'; +$wb['php_fpm_init_script_txt'] = 'Caminho do script de inicialização 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 php-fpm'; ?> diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng index d16bcf1cb1..6d71a39e4c 100644 --- a/interface/web/admin/lib/lang/br_users.lng +++ b/interface/web/admin/lib/lang/br_users.lng @@ -1,36 +1,36 @@ <?php $wb['username_txt'] = 'Usuário'; -$wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos!'; -$wb['username_empty'] = 'Por favor, entre com o nome do usuário.'; -$wb['username_unique'] = 'Já existe um usuário com este nome!'; +$wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos.'; +$wb['username_empty'] = 'O nome do usuário está em branco.'; +$wb['username_unique'] = 'Já existe um usuário com este nome.'; $wb['passwort_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['modules_txt'] = 'Módulos'; -$wb['startmodule_txt'] = 'Módulo Inicial'; +$wb['modules_txt'] = 'Módulo'; +$wb['startmodule_txt'] = 'Módulo inicial'; $wb['app_theme_txt'] = 'Tema'; $wb['typ_txt'] = 'Tipo'; $wb['active_txt'] = 'Ativo'; $wb['language_txt'] = 'Idioma'; $wb['name_txt'] = 'Nome'; -$wb['vorname_txt'] = 'Sobrenome'; +$wb['vorname_txt'] = 'Segundo nome'; $wb['unternehmen_txt'] = 'Empresa'; $wb['strasse_txt'] = 'Endereço'; $wb['ort_txt'] = 'Cidade'; $wb['plz_txt'] = 'CEP'; $wb['land_txt'] = 'PaÃs'; -$wb['email_txt'] = 'e-mail'; -$wb['url_txt'] = 'Site'; +$wb['email_txt'] = 'e-Mail'; +$wb['url_txt'] = 'URL'; $wb['telefon_txt'] = 'Telefone'; $wb['fax_txt'] = 'Fax'; $wb['groups_txt'] = 'Grupos'; -$wb['default_group_txt'] = 'Grupo Padrão'; -$wb['startmodule_err'] = 'O módulo inicial não está contido nos módulos.'; -$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['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.'; +$wb['default_group_txt'] = 'Grupo padrão'; +$wb['startmodule_err'] = 'Módulo inicial não está dentro de módulos.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['username_error_collision'] = 'O nome de usuário não pode conter a palavra "web" ou "web" seguida de um número."'; +$wb['client_not_admin_err'] = 'Um usuário que pertence a um cliente não pode ser configurado para: admin.'; +$wb['lost_password_function_txt'] = 'Função de senha esquecida disponÃvel'; +$wb['no_user_insert'] = 'Os usuários do Painel de Controle (ISPC) do tipo -user- são adicionados e atualizados automaticamente quando você adiciona um cliente ou revenda.'; ?> diff --git a/interface/web/admin/lib/lang/br_users_list.lng b/interface/web/admin/lib/lang/br_users_list.lng index 3422f78355..26910186c5 100644 --- a/interface/web/admin/lib/lang/br_users_list.lng +++ b/interface/web/admin/lib/lang/br_users_list.lng @@ -1,9 +1,9 @@ <?php $wb['list_head_txt'] = 'Usuários'; -$wb['username_txt'] = 'Nome do usuário'; -$wb['client_id_txt'] = 'ID do cliente'; +$wb['username_txt'] = 'Usuário'; +$wb['client_id_txt'] = 'ID do usuário'; $wb['active_txt'] = 'Ativo'; -$wb['add_new_record_txt'] = 'Adicionar novo usuário'; -$wb['warning_txt'] = '<b>AVISO:</b> Não modifique ou edite qualquer configuração de usuário aqui. Use o módulo de clientes ou revendas. Modificar ou alterar usuários e grupos nesta aba pode ocasionar perda de dados!'; $wb['groups_txt'] = 'Grupos'; +$wb['add_new_record_txt'] = 'Adicionar novo usuário'; +$wb['warning_txt'] = '<b>ALERTA:</b> Não editar ou alterar qualquer configuração de usuário aqui. Use o módulo de clientes e revendas para isso. Editar ou alterar usuários ou grupos aqui pode causar perda de dados!'; ?> diff --git a/interface/web/admin/lib/lang/tr.lng b/interface/web/admin/lib/lang/tr.lng index 23dbc45a49..9b0dfc59ec 100644 --- a/interface/web/admin/lib/lang/tr.lng +++ b/interface/web/admin/lib/lang/tr.lng @@ -1,20 +1,26 @@ <?php $wb['1001'] = 'Kullanıcı adı ya da parola boÅŸ.'; $wb['1002'] = 'Kullanıcı adı ya da parola hatalı.'; + $wb['Groups'] = 'Gruplar'; $wb['groups_description'] = 'Sistem kullanıcısı gruplarını düzenleme formu.'; + $wb['Servers'] = 'Sunucular'; $wb['Config'] = 'Ayarlar'; -$wb['Add user'] = 'Kullanıcı ekle'; -$wb['Edit user'] = 'Kullanıcıyı düzenle'; -$wb['Add group'] = 'Grup ekle'; -$wb['Edit group'] = 'Grubu düzenle'; -$wb['Edit server'] = 'Sunucuyu düzenle'; -$wb['Sync. Now'] = 'Åžimdi EÅŸleÅŸtir'; -$wb['DB Sync.'] = 'Veritabanı EÅŸleÅŸtirme'; + +$wb['Add user'] = 'Kullanıcı Ekle'; +$wb['Edit user'] = 'Kullanıcıyı Düzenle'; +$wb['Add group'] = 'Grup Ekle'; +$wb['Edit group'] = 'Grubu Düzenle'; +$wb['Edit server'] = 'Sunucuyu Düzenle'; + +$wb['Sync. Now'] = 'Åžimdi EÅŸitle'; +$wb['DB Sync.'] = 'Veritabanı EÅŸitleme'; + $wb['User Management'] = 'Kullanıcı Yönetimi'; $wb['CP Users'] = 'Panel Kullanıcıları'; $wb['Remote Users'] = 'Uzak Kullanıcılar'; + $wb['System'] = 'Sistem'; $wb['Server Services'] = 'Sunucu Hizmetleri'; $wb['Services'] = 'Hizmetler'; @@ -28,25 +34,29 @@ $wb['Jailkit'] = 'Jailkit'; $wb['Rescue'] = 'Kurtarma'; $wb['Server IP addresses'] = 'Sunucu IP Adresleri'; $wb['Additional PHP Versions'] = 'DiÄŸer PHP Sürümleri'; -$wb['Directive Snippets'] = 'Yönerge Parçacıkları'; +$wb['Directive Snippets'] = 'Yönerge Kod Parçaları'; $wb['Firewall'] = 'Güvenlik Duvarı'; + $wb['Interface'] = 'Arayüz'; $wb['Interface Config'] = 'Temel Ayarlar'; +$wb['Sites'] = 'Siteler'; +$wb['DNS'] = 'DNS'; $wb['Domains'] = 'Alan Adları'; $wb['Misc'] = 'ÇeÅŸitli'; + $wb['Software'] = 'Uygulama ve Eklentiler'; $wb['Repositories'] = 'Depolar'; $wb['Packages'] = 'Paketler'; $wb['Updates'] = 'Güncellemeler'; + $wb['Language Editor'] = 'Dil Ä°ÅŸlemleri'; $wb['Languages'] = 'Dil Dosyaları'; $wb['New Language'] = 'Dil Ekleme'; $wb['Merge'] = 'Dil BirleÅŸtirme'; $wb['Export'] = 'Dil Ä°ndirme'; $wb['Import'] = 'Dil Yükleme'; + $wb['Remote Actions'] = 'Uzak Ä°ÅŸlemler'; $wb['Do OS-Update'] = 'Ä°ÅŸletim Sistemi Güncelleme'; $wb['Do ISPConfig-Update'] = 'ISPConfig Güncelleme'; -$wb['Sites'] = 'Sites'; -$wb['DNS'] = 'DNS'; ?> diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng index f503486528..448d453672 100644 --- a/interface/web/admin/lib/lang/tr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/tr_directive_snippets.lng @@ -1,12 +1,12 @@ <?php -$wb['Directive Snippets'] = 'Yönerge Parçacıkları'; -$wb['name_txt'] = 'Parçacık Adı'; -$wb['type_txt'] = 'Tip'; -$wb['snippet_txt'] = 'Parçacık'; +$wb['Directive Snippets'] = 'Yönerge Kod Parçaları'; +$wb['name_txt'] = 'Kod Parçası Adı'; +$wb['type_txt'] = 'Tür'; +$wb['snippet_txt'] = 'Kod Parçası'; $wb['active_txt'] = 'Etkin'; -$wb['directive_snippets_name_empty'] = 'Parçacık adı boÅŸ olamaz.'; -$wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge parçacığı zaten var.'; +$wb['directive_snippets_name_empty'] = 'Kod Parçası adı boÅŸ olamaz.'; +$wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge kod parçası zaten var.'; $wb['variables_txt'] = 'DeÄŸiÅŸkenler'; -$wb['customer_viewable_txt'] = 'Customer viewable'; -$wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['customer_viewable_txt'] = 'Müşteri görebilir'; +$wb['required_php_snippets_txt'] = 'Gerekli PHP Parçası'; ?> diff --git a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng index 766a194dc1..4a1fb954a5 100644 --- a/interface/web/admin/lib/lang/tr_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/tr_directive_snippets_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Yönerge Parçacıkları'; +$wb['list_head_txt'] = 'Yönerge Kod Parçaları'; $wb['active_txt'] = 'Etkin'; -$wb['name_txt'] = 'Parçacık Adı'; -$wb['type_txt'] = 'Tip'; -$wb['add_new_record_txt'] = 'Yönerge Parçacığı Ekle'; -$wb['customer_viewable_txt'] = 'Customer viewable'; +$wb['name_txt'] = 'Kod Parçası Adı'; +$wb['type_txt'] = 'Tür'; +$wb['add_new_record_txt'] = 'Yönerge Kod Parçası Ekle'; +$wb['customer_viewable_txt'] = 'Müşteri Görebilsin'; ?> diff --git a/interface/web/admin/lib/lang/tr_firewall.lng b/interface/web/admin/lib/lang/tr_firewall.lng index a45998d4e1..9e853c7bde 100644 --- a/interface/web/admin/lib/lang/tr_firewall.lng +++ b/interface/web/admin/lib/lang/tr_firewall.lng @@ -6,6 +6,7 @@ $wb['tcp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; +$wb['active_txt'] = 'Etkin'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; ?> diff --git a/interface/web/admin/lib/lang/tr_groups.lng b/interface/web/admin/lib/lang/tr_groups.lng index d41fcace9d..4bf60a284b 100644 --- a/interface/web/admin/lib/lang/tr_groups.lng +++ b/interface/web/admin/lib/lang/tr_groups.lng @@ -1,5 +1,5 @@ <?php $wb['description_txt'] = 'Açıklama'; $wb['name_txt'] = 'Grup'; -$wb['name_err'] = 'Grup 1-30 karakter arasında olmalı.'; +$wb['name_err'] = 'Grup 1 ile 30 karakter arasında olmalı.'; ?> diff --git a/interface/web/admin/lib/lang/tr_iptables.lng b/interface/web/admin/lib/lang/tr_iptables.lng index dcec556485..970bc23931 100644 --- a/interface/web/admin/lib/lang/tr_iptables.lng +++ b/interface/web/admin/lib/lang/tr_iptables.lng @@ -1,4 +1,5 @@ <?php + $wb['server_id_txt'] = 'Sunucu'; $wb['multiport_txt'] = 'Çok Kapı'; $wb['singleport_txt'] = 'Tek Kapı'; @@ -10,4 +11,5 @@ $wb['destination_ip_txt'] = 'Hedef Adresi'; $wb['source_ip_txt'] = 'Kaynak Adresi'; $wb['active_txt'] = 'Etkin'; $wb['iptables_error_unique'] = 'Bu sunucu için zaten bir güvenlik duvarı kaydı var.'; + ?> diff --git a/interface/web/admin/lib/lang/tr_iptables_list.lng b/interface/web/admin/lib/lang/tr_iptables_list.lng index a884ef7f78..ba8a1345fe 100644 --- a/interface/web/admin/lib/lang/tr_iptables_list.lng +++ b/interface/web/admin/lib/lang/tr_iptables_list.lng @@ -1,4 +1,5 @@ <?php + $wb['list_head_txt'] = 'IPTables'; $wb['add_new_rule_txt'] = 'IPTables Kuralı Ekle'; $wb['server_id_txt'] = 'Sunucu'; @@ -12,4 +13,5 @@ $wb['destination_ip_txt'] = 'Hedef Adresi'; $wb['source_ip_txt'] = 'Kaynak Adresi'; $wb['active_txt'] = 'Etkin'; $wb['iptables_error_unique'] = 'Bu sunucu için zaten bir güvenlik duvarı kaydı var.'; + ?> diff --git a/interface/web/admin/lib/lang/tr_language_import.lng b/interface/web/admin/lib/lang/tr_language_import.lng index 581fcb5974..be319837dd 100644 --- a/interface/web/admin/lib/lang/tr_language_import.lng +++ b/interface/web/admin/lib/lang/tr_language_import.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Dil Paketi Yükleme'; $wb['list_desc_txt'] = 'UYARI: Güvenilmeyen kaynaklardan aldığınız dil paketlerini yüklemeyin.'; $wb['language_import_txt'] = 'Yüklenecek Dil Dosyası'; $wb['btn_save_txt'] = 'Dil Paketini Yükle'; -$wb['language_overwrite_txt'] = 'Var olan dosyaları deÄŸiÅŸtir'; +$wb['language_overwrite_txt'] = 'Var Olan Dosyalar DeÄŸiÅŸtirilsin'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['ignore_version_txt'] = 'ISPConfig sürümüne bakma'; +$wb['ignore_version_txt'] = 'ISPConfig Sürümü Denetlenmesin'; ?> diff --git a/interface/web/admin/lib/lang/tr_login_as.lng b/interface/web/admin/lib/lang/tr_login_as.lng new file mode 100644 index 0000000000..b7fc8ff987 --- /dev/null +++ b/interface/web/admin/lib/lang/tr_login_as.lng @@ -0,0 +1,12 @@ +<?php +$wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz'; +$wb['login_2_txt'] = '"Geri dönmek" için oturumu kapat üzerine tıklayın.'; +$wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç'; +$wb['btn_back_txt'] = 'Hayır, listeye geri dön'; +$wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; +$wb['active_txt'] = 'Etkin'; +$wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; +$wb['active_txt'] = 'Etkin'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +?> diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng index c067f67e88..b2ed0a6da7 100644 --- a/interface/web/admin/lib/lang/tr_remote_action.lng +++ b/interface/web/admin/lib/lang/tr_remote_action.lng @@ -1,12 +1,12 @@ <?php $wb['select_server_txt'] = 'Sunucu Seçin'; -$wb['btn_do_txt'] = 'Ä°ÅŸlemi BaÅŸlatın'; -$wb['do_osupdate_caption'] = 'Uzak sunucudaki iÅŸletim sistemini güncelleyin'; -$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda \\"aptitude -y upgrade\\" komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; -$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelleyin'; +$wb['btn_do_txt'] = 'Ä°ÅŸlemi BaÅŸlat'; +$wb['do_osupdate_caption'] = 'Uzak sunucudaki iÅŸletim sistemini güncelle'; +$wb['do_osupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda komutunu yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÄ°ZE AÄ°TTÄ°R!</strong>'; +$wb['do_ispcupdate_caption'] = 'Uzak sunucudaki ISPConfig 3 - sürümünü güncelle'; $wb['do_ispcupdate_desc'] = 'Bu iÅŸlem seçilmiÅŸ sunucuda ISPConfig3 güncellemesini yürütür.<br><br><strong>OLUÅžABÄ°LECEK RÄ°SKLER SÃœZE AÄ°TTÄ°R!</strong>'; $wb['action_scheduled'] = 'Ä°ÅŸlem yürütülmek üzere zamanlandı'; $wb['select_all_server'] = 'Tüm Sunucularda'; $wb['ispconfig_update_title'] = 'ISPConfig güncelleme yönergeleri'; -$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href=\\"http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\\" target=\\"_blank\\">Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; +$wb['ispconfig_update_text'] = 'Sunucunuzda root kullanıcısı ile bir kabuk oturumu açın ve ISPConfig güncellemesini baÅŸlatmak için<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />komutunu yürütün.<br /><br /><a href= target=>Ayrıntılı güncelleme bilgilerine bakmak için buraya tıklayın</a>'; ?> diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index d9e11f8308..a713cad0d4 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -1,37 +1,37 @@ <?php -$wb['username_txt'] = 'Kullanıcı adı:'; +$wb['username_txt'] = 'Kullanıcı Adı:'; $wb['password_txt'] = 'Parola:'; $wb['function_txt'] = 'Ä°ÅŸlevler:'; $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var'; $wb['username_error_empty'] = 'Kullanıcı adı boÅŸ olamaz'; $wb['password_error_empty'] = 'Parola boÅŸ olamaz'; -$wb['password_strength_txt'] = 'Parola Güçlüğü:'; -$wb['Mail domain functions'] = 'Posta alan adı iÅŸlevleri'; -$wb['Mail mailing list functions'] = 'Posta posta listesi iÅŸlevleri'; -$wb['Mail user functions'] = 'Posta kullanıcı iÅŸlevleri'; -$wb['Mail alias functions'] = 'Posta takma ad iÅŸlevleri'; -$wb['Mail forward functions'] = 'Posta yönlendirme iÅŸlevleri'; -$wb['Mail catchall functions'] = 'Posta tümünü al iÅŸlevleri'; -$wb['Mail transport functions'] = 'Posta aktarım iÅŸlevleri'; -$wb['Mail whitelist functions'] = 'Posta beyaz liste iÅŸlevleri'; -$wb['Mail blacklist functions'] = 'Posta kara liste iÅŸlevleri'; -$wb['Mail spamfilter user functions'] = 'Posta önemsiz posta süzgeci kullanıcı iÅŸlevleri'; -$wb['Mail spamfilter policy functions'] = 'Posta önemsiz posta süzgeci kuralları iÅŸlevleri'; -$wb['Mail fetchmail functions'] = 'Posta posta alma iÅŸlevleri'; -$wb['Mail user filter functions'] = 'Posta kullanıcı ve süzgeç iÅŸlevleri'; -$wb['Mail filter functions'] = 'Posta süzgeç iÅŸlevleri'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu:'; +$wb['Mail domain functions'] = 'E-posta etki alanı iÅŸlevleri'; +$wb['Mail mailing list functions'] = 'E-posta e-posta listesi iÅŸlevleri'; +$wb['Mail user functions'] = 'E-posta kullanıcı iÅŸlevleri'; +$wb['Mail alias functions'] = 'E-posta takma ad iÅŸlevleri'; +$wb['Mail forward functions'] = 'E-posta yönlendirme iÅŸlevleri'; +$wb['Mail catchall functions'] = 'E-posta tümünü al iÅŸlevleri'; +$wb['Mail transport functions'] = 'E-posta aktarım iÅŸlevleri'; +$wb['Mail whitelist functions'] = 'E-posta beyaz liste iÅŸlevleri'; +$wb['Mail blacklist functions'] = 'E-posta kara liste iÅŸlevleri'; +$wb['Mail spamfilter user functions'] = 'E-posta önemsiz ileti süzgeci kullanıcı iÅŸlevleri'; +$wb['Mail spamfilter policy functions'] = 'E-posta önemsiz ileti süzgeci kuralları iÅŸlevleri'; +$wb['Mail fetchmail functions'] = 'E-posta e-posta alma iÅŸlevleri'; +$wb['Mail user filter functions'] = 'E-posta kullanıcı ve süzgeç iÅŸlevleri'; +$wb['Mail filter functions'] = 'E-posta süzgeç iÅŸlevleri'; $wb['Client functions'] = 'Müşteri iÅŸlevleri'; $wb['Sites cron functions'] = 'Sitelerin zamanlanmış görev iÅŸlevleri'; $wb['Sites database functions'] = 'Sitelerin veritabanı iÅŸlevleri'; $wb['Sites FTP-User functions'] = 'Sitelerin FTP kullanıcısı iÅŸlevleri'; $wb['Sites Shell-User functions'] = 'Sitelerin kabuk kullanıcısı iÅŸlevleri'; -$wb['Sites Domain functions'] = 'Sitelerin alan adı iÅŸlevleri'; -$wb['Sites Aliasdomain functions'] = 'Sitelerin takma alan adı iÅŸlevleri'; -$wb['Sites Subdomain functions'] = 'Sitelerin alt alan adı iÅŸlevleri'; +$wb['Sites Domain functions'] = 'Sitelerin etki alanı iÅŸlevleri'; +$wb['Sites Aliasdomain functions'] = 'Sitelerin takma etki alanı iÅŸlevleri'; +$wb['Sites Subdomain functions'] = 'Sitelerin alt etki alanı iÅŸlevleri'; $wb['DNS zone functions'] = 'DNS bölgesi iÅŸlevleri'; $wb['DNS a functions'] = 'DNS a iÅŸlevleri'; $wb['DNS aaaa functions'] = 'DNS aaaa iÅŸlevleri'; -$wb['DNS alias functions'] = 'DNS takma ad iÅŸlevleri'; +$wb['DNS alias functions'] = 'DNS alias iÅŸlevleri'; $wb['DNS cname functions'] = 'DNS cname iÅŸlevleri'; $wb['DNS hinfo functions'] = 'DNS hinfo iÅŸlevleri'; $wb['DNS mx functions'] = 'DNS mx iÅŸlevleri'; @@ -40,11 +40,11 @@ $wb['DNS ptr functions'] = 'DNS ptr iÅŸlevleri'; $wb['DNS rp functions'] = 'DNS rp iÅŸlevleri'; $wb['DNS srv functions'] = 'DNS srv iÅŸlevleri'; $wb['DNS txt functions'] = 'DNS txt iÅŸlevleri'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['remote_access_txt'] = 'Remote Access'; -$wb['remote_ips_txt'] = 'Remote Access IPs / Hostnames (separate by , and leave blank for <i>any</i>)'; -$wb['remote_user_error_ips'] = 'At least one of the entered ip addresses or hostnames is invalid.'; +$wb['remote_access_txt'] = 'Uzaktan EriÅŸim'; +$wb['remote_ips_txt'] = 'Uzaktan EriÅŸim IP Adresleri / Sunucu Adları (, ile ayırarak yazın ve <i>tümü</i> için boÅŸ bırakın)'; +$wb['remote_user_error_ips'] = 'Yazılmış IP adresi ya da sunucu adlarından en az biri geçersiz.'; ?> diff --git a/interface/web/admin/lib/lang/tr_server.lng b/interface/web/admin/lib/lang/tr_server.lng index 61e0b7dd6b..bdc70761e1 100644 --- a/interface/web/admin/lib/lang/tr_server.lng +++ b/interface/web/admin/lib/lang/tr_server.lng @@ -1,16 +1,16 @@ <?php $wb['config_txt'] = 'Ayarlar'; $wb['server_name_txt'] = 'Sunucu Adı'; -$wb['mail_server_txt'] = 'Posta Sunucusu'; +$wb['mail_server_txt'] = 'E-posta Sunucusu'; $wb['web_server_txt'] = 'Web Sunucusu'; $wb['dns_server_txt'] = 'DNS Sunucusu'; $wb['file_server_txt'] = 'Dosya Sunucusu'; $wb['db_server_txt'] = 'Veritabanı Sunucusu'; -$wb['vserver_server_txt'] = 'SSunucu Sunucusu'; +$wb['vserver_server_txt'] = 'sSunucu Sunucusu'; $wb['proxy_server_txt'] = 'Vekil Sunucu'; $wb['firewall_server_txt'] = 'Güvenlik Duvarı Sunucusu'; $wb['active_txt'] = 'Etkin'; $wb['mirror_server_id_txt'] = 'Sunucunun Yansısı'; $wb['- None -'] = '- Hiçbiri -'; -$wb['xmpp_server_txt'] = 'XMPP Server'; +$wb['xmpp_server_txt'] = 'XMPP Sunucusu'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index efe24bf3a4..3b63e881f9 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -13,13 +13,13 @@ $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chroot Uygulamaları'; $wb['jailkit_chroot_cron_programs_txt'] = 'Jailkit Zamanlanmış Görev chroot Uygulamaları'; $wb['website_path_txt'] = 'Web Sitesi Yolu'; $wb['website_symlinks_txt'] = 'Web Sitesi Sembolik BaÄŸlantıları'; -$wb['website_symlinks_rel_txt'] = 'Sembolik BaÄŸlantılar Bağıl Olsun'; +$wb['website_symlinks_rel_txt'] = 'Sembolik BaÄŸlantılar Göreli Olsun'; $wb['website_basedir_txt'] = 'Web Sitesi Klasörü'; $wb['website_autoalias_txt'] = 'Otomatik Web Sitesi Takma Adı'; $wb['website_autoalias_note_txt'] = 'Kodlar:'; -$wb['vhost_conf_dir_txt'] = 'SSunucu Ayar Klasörü'; -$wb['vhost_conf_enabled_dir_txt'] = 'Etkin SSunucu Ayar Klasörü'; -$wb['getmail_config_dir_txt'] = 'Getmail Ayar Klasörü'; +$wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü'; +$wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü'; +$wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü'; $wb['fastcgi_starter_path_txt'] = 'FastCGI BaÅŸlatıcı Yolu'; $wb['fastcgi_starter_script_txt'] = 'FastCGI BaÅŸlatıcı BetiÄŸi'; $wb['fastcgi_alias_txt'] = 'FastCGI Takma Adı'; @@ -28,16 +28,24 @@ $wb['fastcgi_children_txt'] = 'FastCGI ÇocuÄŸu'; $wb['fastcgi_max_requests_txt'] = 'FastCGI En Fazla Ä°stek'; $wb['fastcgi_bin_txt'] = 'FastCGI Bin'; $wb['module_txt'] = 'Modül'; -$wb['maildir_path_txt'] = 'Posta Klasörü Yolu'; +$wb['maildir_path_txt'] = 'E-posta Klasörü Yolu'; +$wb['maildir_format_txt'] = 'E-posta Klasörü Biçimi'; $wb['homedir_path_txt'] = 'Kullanıcı Klasörü Yolu'; -$wb['mailuser_uid_txt'] = 'Posta Kullanıcısı UID'; -$wb['mailuser_gid_txt'] = 'Posta Kullanıcısı GID'; -$wb['mailuser_name_txt'] = 'Posta Kullanıcısı Adı'; -$wb['mailuser_group_txt'] = 'Posta Kullanıcısı Grubu'; +$wb['dkim_path_txt'] = 'DKIM Yolu'; +$wb['mailuser_uid_txt'] = 'E-posta Kullanıcısı UID'; +$wb['mailuser_gid_txt'] = 'E-posta Kullanıcısı GID'; +$wb['mailuser_name_txt'] = 'E-posta Kullanıcısı Adı'; +$wb['mailuser_group_txt'] = 'E-posta Kullanıcısı Grubu'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'E-posta Kutusunda Web Sitesinin Linux Kullanıcı Kodu Kullanılsın'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'Yalnız tek bir web ve e-posta sunucusu kurulumunda'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Çoklu sunucu kurulumunda UID eÅŸleÅŸtirilemez.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'UID eÅŸleÅŸtirmesi yalnız dovecot ile kullanılabilir.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Daha önce oluÅŸturulmuÅŸ e-posta kullanıcıları varsa UID eÅŸleÅŸtirme deÄŸiÅŸtirilemez.'; $wb['relayhost_txt'] = 'Aktarım Sunucusu'; $wb['relayhost_user_txt'] = 'Aktarım Sunucu Kullanıcı Adı'; $wb['relayhost_password_txt'] = 'Aktarım Sunucu Parolası'; -$wb['mailbox_size_limit_txt'] = 'Posta Kutusu Boyutu Sınırı'; +$wb['reject_sender_login_mismatch_txt'] = 'Gönderen ile Oturum Açmış Kullanıcı EÅŸleÅŸmiyorsa Reddedilsin'; +$wb['mailbox_size_limit_txt'] = 'E-posta Kutusu Boyutu Sınırı'; $wb['message_size_limit_txt'] = 'Ä°leti Boyutu Sınırı'; $wb['ip_address_txt'] = 'IP Adresi'; $wb['netmask_txt'] = 'AÄŸ Maskesi'; @@ -51,69 +59,73 @@ $wb['gateway_error_wrong'] = 'AÄŸ geçidi biçimi geçersiz.'; $wb['hostname_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['hostname_error_regex'] = 'Sunucu adı geçersiz.'; $wb['nameservers_error_empty'] = 'Ad sunucusu boÅŸ olamaz.'; -$wb['config_dir_txt'] = 'Ayar Klasörü'; +$wb['config_dir_txt'] = 'Ayarlar Klasörü'; $wb['init_script_txt'] = 'Zamanlanmış Görev BaÅŸlatma BetiÄŸinin Adı'; $wb['crontab_dir_txt'] = 'Bireysel Zamanlanmış Görevler Yolu'; -$wb['wget_txt'] = 'wget Yazılımının Yolu'; +$wb['wget_txt'] = 'wget Uygulamasının Yolu'; $wb['web_user_txt'] = 'Apache Kullanıcı Adı'; $wb['web_group_txt'] = 'Apache Grubu'; $wb['security_level_txt'] = 'Güvenlik Düzeyi'; $wb['loglevel_txt'] = 'Günlükleme Düzeyi'; -$wb['apps_vhost_port_txt'] = 'Apps-vhost Kapısı'; -$wb['apps_vhost_ip_txt'] = 'Apps-vhost IP Adresi'; -$wb['apps_vhost_servername_txt'] = 'Apps-vhost Alan Adı'; +$wb['apps_vhost_port_txt'] = 'Uygulama Sanal Sunucusu Kapısı'; +$wb['apps_vhost_ip_txt'] = 'Uygulama Sanal Sunucusu IP Adresi'; +$wb['apps_vhost_servername_txt'] = 'Uygulama Sanal Sunucusu Etki Alanı'; $wb['bind_user_txt'] = 'BIND Kullanıcı Adı'; $wb['bind_group_txt'] = 'BIND Grubu'; -$wb['bind_zonefiles_dir_txt'] = 'BIND zonefiles Klasörü'; +$wb['bind_zonefiles_dir_txt'] = 'BIND Bölge Dosyaları Klasörü'; $wb['named_conf_path_txt'] = 'BIND named.conf Dosyası Yolu'; $wb['bind_user_error_empty'] = 'BIND kullanıcı adı boÅŸ olamaz.'; $wb['bind_group_error_empty'] = 'BIND grubu boÅŸ olamaz.'; -$wb['bind_zonefiles_dir_error_empty'] = 'BIND zonefiles klasörü boÅŸ olamaz.'; +$wb['bind_zonefiles_dir_error_empty'] = 'BIND bölge dosyaları klasörü boÅŸ olamaz.'; $wb['named_conf_path_error_empty'] = 'BIND named.conf dosyası yolu boÅŸ olamaz.'; $wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local dosyasının yolu boÅŸ olamaz.'; -$wb['mail_filter_syntax_txt'] = 'Posta Süzgeci Yazımı'; +$wb['mail_filter_syntax_txt'] = 'E-posta Süzgeci Yazımı'; $wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Sunucusu'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['php_open_basedir_error_empty'] = 'PHP open_basedir boÅŸ olamaz.'; $wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride'; $wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride boÅŸ olamaz.'; -$wb['awstats_conf_dir_txt'] = 'Awstats Ayar Klasörü'; +$wb['awstats_conf_dir_txt'] = 'Awstats Ayarları Klasörü'; $wb['awstats_data_dir_txt'] = 'Awstats Veri Klasörü'; $wb['awstats_pl_txt'] = 'awstats.pl BetiÄŸi'; $wb['awstats_buildstaticpages_pl_txt'] = 'awstats_buildstaticpages.pl BetiÄŸi'; $wb['backup_dir_txt'] = 'Yedek Klasörü'; +$wb['backup_tmp_txt'] = 'Geçici Zip Yedek Klasörü'; $wb['named_conf_local_path_txt'] = 'BIND named.conf.local Yolu'; $wb['php_ini_path_cgi_txt'] = 'CGI php.ini Yolu'; $wb['php_ini_path_apache_txt'] = 'Apache php.ini Yolu'; -$wb['check_apache_config_txt'] = 'Yeniden baÅŸlatıldığında apache ayarları denetlensin'; -$wb['network_config_warning_txt'] = 'AÄŸ ayarlama seçeneÄŸi yalnız Debian ve Ubuntu sunucularda kullanılabilir. AÄŸ arayüzünüz eth0 deÄŸil ise bu seçeneÄŸi etkinleÅŸtirmeyin.'; +$wb['check_apache_config_txt'] = 'Apache Ayarları Yeniden BaÅŸlatmalarda Denetlensin'; +$wb['network_config_warning_txt'] = 'AÄŸ ayarlama seçeneÄŸi yalnız Debian ve Ubuntu sunucularda kullanılabilir. AÄŸ arayüzü eth0 deÄŸil ise bu seçeneÄŸi etkinleÅŸtirmeyin.'; $wb['CA_path_txt'] = 'CA Yolu'; -$wb['CA_pass_txt'] = 'CA parolası'; +$wb['CA_pass_txt'] = 'CA Parolası'; $wb['fastcgi_config_syntax_txt'] = 'FastCGI Ayar Yazımı'; $wb['backup_mode_txt'] = 'Yedekleme Kipi'; $wb['backup_mode_userzip'] = 'Web kullanıcısına ait web dosyaları ZIP biçiminde yedeklensin'; $wb['backup_mode_rootgz'] = 'Web klasöründeki tüm dosyalar root kullanıcısı olarak yedeklensin'; -$wb['server_type_txt'] = 'Sunucu Tipi'; -$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Vhost ayar klasörü'; -$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx Vhost etkin ayar klasörü'; +$wb['tmpdir_path_error_empty'] = 'tmp klasörü yolu boÅŸ olamaz.'; +$wb['tmpdir_path_error_regex'] = 'tmp klasörü yolu geçersiz.'; +$wb['backup_time_txt'] = 'Yedekleme Zamanı'; +$wb['server_type_txt'] = 'Sunucu Türü'; +$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Sanal Sunucu Ayarları Klasörü'; +$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Etkin Nginx sanal sunucu ayarları klasörü'; $wb['nginx_user_txt'] = 'Nginx kullanıcı adı'; $wb['nginx_group_txt'] = 'Nginx grubu'; $wb['nginx_cgi_socket_txt'] = 'Nginx CGI Soketi'; $wb['backup_dir_error_empty'] = 'Yedekleme klasörü boÅŸ olamaz.'; -$wb['maildir_path_error_empty'] = 'Posta klasörü yolu boÅŸ olamaz.'; +$wb['maildir_path_error_empty'] = 'E-posta klasörü yolu boÅŸ olamaz.'; $wb['homedir_path_error_empty'] = 'Kullanıcı klasörü yolu boÅŸ olamaz.'; -$wb['mailuser_uid_error_empty'] = 'Posta kullanıcısı UID boÅŸ olamaz.'; -$wb['mailuser_gid_error_empty'] = 'Posta kullanıcısı GID boÅŸ olamaz.'; -$wb['mailuser_name_error_empty'] = 'Posta kullanıcısı adı boÅŸ olamaz.'; -$wb['mailuser_group_error_empty'] = 'Posta kullanıcısı grubu boÅŸ olamaz.'; -$wb['getmail_config_dir_error_empty'] = 'Getmail ayar klasörü boÅŸ olamaz.'; +$wb['mailuser_uid_error_empty'] = 'E-posta kullanıcısı UID boÅŸ olamaz.'; +$wb['mailuser_gid_error_empty'] = 'E-posta kullanıcısı GID boÅŸ olamaz.'; +$wb['mailuser_name_error_empty'] = 'E-posta kullanıcısı adı boÅŸ olamaz.'; +$wb['mailuser_group_error_empty'] = 'E-posta kullanıcısı grubu boÅŸ olamaz.'; +$wb['getmail_config_dir_error_empty'] = 'Getmail ayarları klasörü boÅŸ olamaz.'; $wb['website_basedir_error_empty'] = 'Web sitesi kök klasörü boÅŸ olamaz.'; $wb['website_path_error_empty'] = 'Web sitesi yolu boÅŸ olamaz.'; $wb['website_symlinks_error_empty'] = 'Web sitesi sembolik baÄŸlantısı boÅŸ olamaz.'; -$wb['vhost_conf_dir_error_empty'] = 'Vhost ayar klasörü boÅŸ olamaz.'; -$wb['vhost_conf_enabled_dir_error_empty'] = 'Vhost etkin ayar klasörü boÅŸ olamaz.'; -$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx Vhost ayar klasörü boÅŸ olamaz.'; -$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx Vhost etkin ayar klasörü boÅŸ olamaz.'; +$wb['vhost_conf_dir_error_empty'] = 'Sanal sunucu ayarları klasörü boÅŸ olamaz.'; +$wb['vhost_conf_enabled_dir_error_empty'] = 'Etkin sanal sunucu ayarları klasörü boÅŸ olamaz.'; +$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx sanal sunucu ayarları klasörü boÅŸ olamaz.'; +$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Etkin nginx sanal sunucu ayarları klasörü boÅŸ olamaz.'; $wb['apache_user_error_empty'] = 'Apache kullanıcısı boÅŸ olamaz.'; $wb['apache_group_error_empty'] = 'Apache grubu boÅŸ olamaz.'; $wb['nginx_user_error_empty'] = 'Nginx kullanıcısı boÅŸ olamaz.'; @@ -121,8 +133,8 @@ $wb['nginx_group_error_empty'] = 'Nginx grubu boÅŸ olamaz.'; $wb['php_ini_path_apache_error_empty'] = 'Apache php.ini yolu boÅŸ olamaz.'; $wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini yolu boÅŸ olamaz.'; $wb['nginx_cgi_socket_empty'] = 'Nginx CGI soketi boÅŸ olamaz.'; -$wb['apps_vhost_port_error_empty'] = 'Apps-vhost kapısı boÅŸ olamaz.'; -$wb['apps_vhost_ip_error_empty'] = 'Apps-vhost IP adresi boÅŸ olamaz.'; +$wb['apps_vhost_port_error_empty'] = 'Uygulama sanal sunucusu kapısı boÅŸ olamaz.'; +$wb['apps_vhost_ip_error_empty'] = 'Uygulama sanal sunucusu IP adresi boÅŸ olamaz.'; $wb['fastcgi_starter_path_error_empty'] = 'FastCGI baÅŸlatıcı yolu boÅŸ olamaz.'; $wb['fastcgi_starter_script_error_empty'] = 'FastCGI baÅŸlatıcı betiÄŸi boÅŸ olamaz.'; $wb['fastcgi_alias_error_empty'] = 'FastCGI takma adı boÅŸ olamaz.'; @@ -137,7 +149,7 @@ $wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit zamanlanmış görev $wb['vlogger_config_dir_error_empty'] = 'Ayarlar klasörü boÅŸ olamaz.'; $wb['cron_init_script_error_empty'] = 'Zamanlanmış görevler baÅŸlatma betiÄŸi adı boÅŸ olamaz.'; $wb['crontab_dir_error_empty'] = 'Bireysel zamanlanmış görev yolu boÅŸ olamaz.'; -$wb['cron_wget_error_empty'] = 'wget yazılımı yolu boÅŸ olamaz.'; +$wb['cron_wget_error_empty'] = 'wget uygulaması yolu boÅŸ olamaz.'; $wb['php_fpm_init_script_txt'] = 'PHP-FPM BaÅŸlatma BetiÄŸi'; $wb['php_fpm_init_script_error_empty'] = 'PHP-FPM baÅŸlatma betiÄŸi boÅŸ olamaz.'; $wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini Yolu'; @@ -148,11 +160,12 @@ $wb['php_fpm_start_port_txt'] = 'PHP-FPM BaÅŸlangıç Kapısı'; $wb['php_fpm_start_port_error_empty'] = 'PHP-FPM baÅŸlangıç kapısı boÅŸ olamaz.'; $wb['php_fpm_socket_dir_txt'] = 'PHP-FPM Soket Klasörü'; $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM soket klasörü boÅŸ olamaz.'; -$wb['try_rescue_txt'] = 'Hizmetler izlensin ve sorun çıktığında yeniden baÅŸlatılsın'; -$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD izlenmesin'; -$wb['do_not_try_rescue_mysql_txt'] = 'MySQL izlenmesin'; -$wb['do_not_try_rescue_mail_txt'] = 'E-posta izlenmesin'; -$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız \\"MySQL izlenmesin\\" seçeneÄŸini iÅŸaretleyip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; +$wb['try_rescue_txt'] = 'Hizmetler Ä°zlensin ve Sorun Çıktığında Yeniden BaÅŸlatılsın'; +$wb['do_not_try_rescue_httpd_txt'] = 'HTTPD Ä°zlenmesin'; +$wb['do_not_try_rescue_mongodb_txt'] = 'MongoDB Ä°zlenmesin'; +$wb['do_not_try_rescue_mysql_txt'] = 'MySQL Ä°zlenmesin'; +$wb['do_not_try_rescue_mail_txt'] = 'E-posta Ä°zlenmesin'; +$wb['rescue_description_txt'] = '<b>Uyarı:</b> mysql sunucusunu kapatmak istiyorsanız "MySQL Ä°zlenmesin" seçeneÄŸini etkinleÅŸtirip 2-3 dakika bekleyin.<br>2-3 dakika beklemezseniz, kurtarma iÅŸlemi mysql sunucusunu yeniden baÅŸlatmaya çalışır!'; $wb['enable_sni_txt'] = 'SNI Kullanılsın'; $wb['set_folder_permissions_on_update_txt'] = 'Güncellenirken klasör izinleri ayarlansın'; $wb['add_web_users_to_sshusers_group_txt'] = 'Web kullanıcıları -sshusers- grubuna eklensin'; @@ -163,20 +176,20 @@ $wb['realtime_blackhole_list_note_txt'] = '(RBL adlarını virgül ile ayırarak $wb['ssl_settings_txt'] = 'SSL Ayarları'; $wb['permissions_txt'] = 'Ä°zinler'; $wb['php_settings_txt'] = 'PHP Ayarları'; -$wb['apps_vhost_settings_txt'] = 'Uygulama SSunucu Ayarları'; +$wb['apps_vhost_settings_txt'] = 'Uygulama Sanal Sunucu Ayarları'; $wb['awstats_settings_txt'] = 'AWStats Ayarları'; $wb['firewall_txt'] = 'Güvenlik Duvarı'; -$wb['mailbox_quota_stats_txt'] = 'Posta Kutusu Kota Ä°statistikleri'; -$wb['enable_ip_wildcard_txt'] = 'IP genel karakteri (*) kullanılsın'; +$wb['mailbox_quota_stats_txt'] = 'E-posta Kutusu Kota Ä°statistikleri'; +$wb['enable_ip_wildcard_txt'] = 'IP Genel Karakteri (*) Kullanılsın'; $wb['web_folder_protection_txt'] = 'Web klasörleri ayarlanamasın (geniÅŸletilmiÅŸ öznitelikler)'; -$wb['overtraffic_notify_admin_txt'] = 'Yöneticiye aşırı trafik bildirimi gönderilsin'; -$wb['overtraffic_notify_client_txt'] = 'Müşteriye aşırı trafik bildirimi gönderilsin'; +$wb['overtraffic_notify_admin_txt'] = 'Trafik Aşımı Bildirimi Yöneticiye Gönderilsin'; +$wb['overtraffic_notify_client_txt'] = 'Trafik Aşımı Bildirimi Müşteriye Gönderilsin'; $wb['rbl_error_regex'] = 'Lütfen geçerli RBL sunucu adları yazın.'; -$wb['overquota_notify_admin_txt'] = 'Yöneticiye kota uyarıları gönderilsin'; -$wb['overquota_notify_client_txt'] = 'Müşteriye kota uyarıları gönderilsin'; -$wb['overquota_notify_onok_txt'] = 'Müşteriye kota tamam iletisi gönderilsin'; -$wb['overquota_notify_freq_txt'] = 'Kota uyarılarının kaç günde bir gönderileceÄŸi'; -$wb['overquota_notify_freq_note_txt'] = '0 = ileti yalnız bir kez gönderilir, yinelenmez'; +$wb['overquota_notify_admin_txt'] = 'Kota Uyarıları Yöneticiye Gönderilsin'; +$wb['overquota_notify_client_txt'] = 'Kota Uyarıları Müşteriye Gönderilsin'; +$wb['overquota_notify_onok_txt'] = 'Kota Tamam Ä°letisi Müşteriye Gönderilsin'; +$wb['overquota_notify_freq_txt'] = 'Kota Uyarısı Gönderim Sıklığı (Gün)'; +$wb['overquota_notify_freq_note_txt'] = '0 yazıldığında ileti yalnız bir kez gönderilir, yinelenmez'; $wb['admin_notify_events_txt'] = 'Yönetici Bildirim Düzeyi'; $wb['no_notifications_txt'] = 'Bildirim Gönderilmesin'; $wb['monit_url_txt'] = 'Monit Adresi'; @@ -189,24 +202,35 @@ $wb['munin_user_txt'] = 'Munin Kullanıcı Adı'; $wb['munin_password_txt'] = 'Munin Parolası'; $wb['munin_url_error_regex'] = 'Munin adresi geçersiz'; $wb['munin_url_note_txt'] = 'Kod:'; +$wb['v6_prefix_txt'] = 'IPv6 Ön Eki'; +$wb['vhost_rewrite_v6_txt'] = 'Yansı Ãœzerinde IPv6 Yeniden Yazılsın'; +$wb['v6_prefix_length'] = 'Ön ek tanımlanmış IPv6 adresine göre çok uzun '; $wb['backup_dir_is_mount_txt'] = 'Yedek Klasörü Takılı mı?'; +$wb['backup_dir_mount_cmd_txt'] = 'Mount komutu, yedek klasörü takılı deÄŸil ise'; +$wb['backup_delete_txt'] = 'Etki alanı ya da web sitesi silindiÄŸinde yedekler de silinsin'; +$wb['overquota_db_notify_admin_txt'] = 'Veritabanı Kotası Bildirimleri Yöneticiye Gönderilsin'; +$wb['overquota_db_notify_client_txt'] = 'Veritabanı Kotası Bildirimleri Müşteriye Gönderilsin'; +$wb['monitor_system_updates_txt'] = 'Linux Güncellemeleri Denetlensin'; +$wb['php_handler_txt'] = 'Varsayılan PHP Ä°ÅŸleyici'; +$wb['disabled_txt'] = 'Devre Dışı'; +$wb['dkim_strength_txt'] = 'DKIM zorluÄŸu'; $wb['monitor_system_updates_txt'] = 'Linux Güncelleme Denetimi'; $wb['invalid_apache_user_txt'] = 'Apache kullanıcısı geçersiz.'; $wb['invalid_apache_group_txt'] = 'Apache grubu geçersiz.'; $wb['backup_dir_error_regex'] = 'Yedek klasörü geçersiz.'; -$wb['maildir_path_error_regex'] = 'Posta klasörü yolu geçersiz.'; +$wb['maildir_path_error_regex'] = 'E-posta klasörü yolu geçersiz.'; $wb['homedir_path_error_regex'] = 'Kullanıcı klasörü yolu geçersiz.'; -$wb['mailuser_name_error_regex'] = 'Posta kullanıcısı adı geçersiz.'; -$wb['mailuser_group_name_error_regex'] = 'Posta kullanıcısı grup adı geçersiz.'; -$wb['mailuser_uid_error_range'] = 'Posta kullanıcısı UID deÄŸeri >= 2000 olmalıdır'; -$wb['mailuser_gid_error_range'] = 'Posta kullanıcısı GID deÄŸeri >= 2000 olmalıdır'; -$wb['getmail_config_dir_error_regex'] = 'Getmail ayar klasörü geçersiz.'; +$wb['mailuser_name_error_regex'] = 'E-posta kullanıcısı adı geçersiz.'; +$wb['mailuser_group_name_error_regex'] = 'E-posta kullanıcısı grup adı geçersiz.'; +$wb['mailuser_uid_error_range'] = 'E-posta kullanıcısı UID deÄŸeri >= 2000 olmalıdır'; +$wb['mailuser_gid_error_range'] = 'E-posta kullanıcısı GID deÄŸeri >= 2000 olmalıdır'; +$wb['getmail_config_dir_error_regex'] = 'Getmail ayarları klasörü geçersiz.'; $wb['website_basedir_error_regex'] = 'Web sitesi kök klasörü geçersiz.'; $wb['website_symlinks_error_regex'] = 'Web sitesi sembolik baÄŸlantıları geçersiz.'; -$wb['vhost_conf_dir_error_regex'] = 'Vhost ayar klasörü geçersiz.'; -$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin vhost ayar klasörü geçersiz.'; -$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayar klasörü geçersiz.'; -$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayar klasörü geçersiz.'; +$wb['vhost_conf_dir_error_regex'] = 'Sanal sunucu ayarları klasörü geçersiz.'; +$wb['vhost_conf_enabled_dir_error_regex'] = 'Etkin sanal sunucu ayarları klasörü geçersiz.'; +$wb['nginx_vhost_conf_dir_error_regex'] = 'Nginx ayarları klasörü geçersiz.'; +$wb['nginx_vhost_conf_enabled_dir_error_regex'] = 'Etkin nginx ayarları klasörü geçersiz.'; $wb['ca_path_error_regex'] = 'CA yolu geçersiz.'; $wb['invalid_nginx_user_txt'] = 'nginx kullanıcısı geçersiz.'; $wb['invalid_nginx_group_txt'] = 'nginx grubu geçersiz.'; @@ -225,7 +249,7 @@ $wb['awstats_buildstaticpages_pl_empty'] = 'awstats_buildstaticpages.pl boÅŸ ola $wb['awstats_buildstaticpages_pl_error_regex'] = 'awstats_buildstaticpages.pl yolu geçersiz.'; $wb['invalid_bind_user_txt'] = 'BIND kullanıcısı geçersiz.'; $wb['invalid_bind_group_txt'] = 'BIND grubu geçersiz.'; -$wb['bind_zonefiles_dir_error_regex'] = 'BIND zonefiles klasörü geçersiz.'; +$wb['bind_zonefiles_dir_error_regex'] = 'BIND bölge dosyaları klasörü geçersiz.'; $wb['named_conf_path_error_regex'] = 'named.conf yolu geçersiz.'; $wb['named_conf_local_path_error_regex'] = 'named.conf.local yolu geçersiz.'; $wb['fastcgi_starter_path_error_regex'] = 'fastcgi baÅŸlatıcı yolu geçersiz.'; @@ -237,67 +261,37 @@ $wb['jailkit_chroot_home_error_regex'] = 'Jailkit chroot kök klasörü geçersi $wb['jailkit_chroot_app_sections_error_regex'] = 'Jailkit chroot bölümleri geçersiz.'; $wb['jailkit_chroot_app_programs_error_regex'] = 'Jailkit chroot app uygulama yazılımları geçersiz.'; $wb['jailkit_chroot_cron_programs_error_regex'] = 'Jailkit chroot zamanlanmış görev yazılımları geçersiz.'; -$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayar klasörü geçersiz.'; +$wb['vlogger_config_dir_error_regex'] = 'Vlogger ayarları klasörü geçersiz.'; $wb['cron_init_script_error_regex'] = 'Zamanlanmış görev baÅŸlatma betiÄŸi geçersiz.'; $wb['crontab_dir_error_regex'] = 'Zamanlanmış görev klasörü geçersiz.'; $wb['cron_wget_error_regex'] = 'Zamanlanmış görev wget yolu geçersiz.'; $wb['network_filesystem_txt'] = 'AÄŸ Dosya Sistemi'; -$wb['maildir_format_txt'] = 'Maildir Format'; -$wb['dkim_path_txt'] = 'DKIM Path'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; -$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; -$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; -$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; -$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; -$wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; -$wb['backup_time_txt'] = 'Backup time'; -$wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; -$wb['v6_prefix_txt'] = 'IPv6 Prefix'; -$wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror'; -$wb['v6_prefix_length'] = 'Prefix too long according to defined IPv6 '; -$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; -$wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; -$wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; -$wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; -$wb['php_handler_txt'] = 'Default PHP Handler'; -$wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['disabled_txt'] = 'Disabled'; -$wb['dkim_strength_txt'] = 'DKIM strength'; -$wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; -$wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; -$wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; -$wb['web_settings_txt'] = 'Web Server'; -$wb['xmpp_server_txt'] = 'XMPP Server'; -$wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; -$wb['xmpp_bosh_max_inactivity_txt'] = 'Max. BOSH inactivity time'; -$wb['xmpp_bosh_timeout_range_wrong'] = 'Please enter a bosh timeout range between 15 - 360'; +$wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki deÄŸiÅŸiklikler denetlensin'; +$wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki deÄŸiÅŸikliklerin kaç dakikada bir denetleneceÄŸini yazın.'; +$wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz'; +$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın'; +$wb['web_settings_txt'] = 'Web Sunucu'; +$wb['xmpp_server_txt'] = 'XMPP Sunucu'; +$wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın'; +$wb['xmpp_bosh_max_inactivity_txt'] = 'BOSH için en uzun iÅŸlem yapılmama süresi'; +$wb['xmpp_bosh_timeout_range_wrong'] = '15 ile 360 arasında bir bosh zaman aşımı süresi yazın'; $wb['xmpp_module_saslauth'] = 'saslauth'; -$wb['xmpp_server_admins_txt'] = 'Server Admins (JIDs)'; -$wb['xmpp_modules_enabled_txt'] = 'Serverwide enabled plugins (one per line)'; -$wb['xmpp_ports_txt'] = 'Component ports'; +$wb['xmpp_server_admins_txt'] = 'Sunucu Yöneticileri (JID)'; +$wb['xmpp_modules_enabled_txt'] = 'Sunucu genelinde etkinleÅŸtirilecek uygulama ekleri (her satıra bir tane yazın)'; +$wb['xmpp_ports_txt'] = 'BileÅŸen Kapı Numaraları'; $wb['xmpp_port_http_txt'] = 'HTTP'; $wb['xmpp_port_https_txt'] = 'HTTPS'; $wb['xmpp_port_pastebin_txt'] = 'Pastebin'; $wb['xmpp_port_bosh_txt'] = 'BOSH'; -$wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; -$wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; -$wb['skip_le_check_txt'] = 'Skip Lets Encrypt Check'; -$wb['migration_mode_txt'] = 'Server Migration Mode'; -$wb['nginx_enable_pagespeed_txt'] = 'Makes Pagespeed available'; -$wb['backup_tmp_txt'] = 'Backup tmp directory for zip'; -$wb['tmpdir_path_error_empty'] = 'tmp-dir Path is empty.'; -$wb['tmpdir_path_error_regex'] = 'Invalid tmp-dir path.'; -$wb['logging_txt'] = 'Store website access and error logs'; -$wb['logging_desc_txt'] = 'Use Tools > Resync to apply changes to existing sites. For Apache, access and error log can be anonymized. For nginx, only the access log is anonymized, the error log will contain IP addresses.'; -$wb['log_retention_txt'] = 'Log retention (days)'; -$wb['log_retention_error_ispositive'] = 'Log retention must be a number > 0'; -$wb['php_default_name_txt'] = 'Description Default PHP-Version'; -$wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; -$wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; -$wb['php_fpm_reload_mode_txt'] = 'PHP-FPM reload mode'; -$wb['content_filter_txt'] = 'Content Filter'; -$wb['rspamd_url_txt'] = 'Rspamd URL'; -$wb['rspamd_user_txt'] = 'Rspamd User'; -$wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['disable_bind_log_txt'] = 'UYARI günlük düzeyi iletileri için bind9 iletileri devre dışı bırakılsın'; +$wb['apps_vhost_enabled_txt'] = 'Uygulama Sanal Sunucusu Kullanılsın'; +$wb['skip_le_check_txt'] = 'Lets Encrypt Denetimi Atlansın'; +$wb['migration_mode_txt'] = 'Sunucu Aktarımı Kipi'; +$wb['nginx_enable_pagespeed_txt'] = 'Pagespeed uygulamasını etkinleÅŸtirir'; +$wb['logging_txt'] = 'Web Sitesi EriÅŸim ve Hata Günlükleri Kaydedilsin'; +$wb['logging_desc_txt'] = 'DeÄŸiÅŸiklikleri var olan sitelere uygulamak için Araçlar > Yeniden EÅŸitle komutunu kullanın. Apache için, eriÅŸim ve hata günlükleri anonimleÅŸtirilebilir. nginx için, only eriÅŸim günlüğü anonimleÅŸtirilebilir, hata günlüğüne IP adresleri kaydedilir.'; +$wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)'; +$wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 deÄŸerinden büyük bir sayı olmalıdır'; +$wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması'; +$wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boÅŸ olamaz'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_ip.lng b/interface/web/admin/lib/lang/tr_server_ip.lng index 3ebdbd0830..4b2cb1187d 100644 --- a/interface/web/admin/lib/lang/tr_server_ip.lng +++ b/interface/web/admin/lib/lang/tr_server_ip.lng @@ -1,10 +1,10 @@ <?php $wb['server_id_txt'] = 'Sunucu'; $wb['client_id_txt'] = 'Müşteri'; -$wb['ip_type_txt'] = 'Tip'; +$wb['ip_type_txt'] = 'Tür'; $wb['ip_address_txt'] = 'IP Adresi'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['virtualhost_port_txt'] = 'HTTP Kapıları'; +$wb['virtualhost_txt'] = 'HTTP sSunucu Adı'; +$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları'; $wb['ip_error_wrong'] = 'IP adresi geçersiz'; $wb['ip_error_unique'] = 'Aynı IP adresi zaten var'; $wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443'; diff --git a/interface/web/admin/lib/lang/tr_server_ip_list.lng b/interface/web/admin/lib/lang/tr_server_ip_list.lng index 9b25c605e7..d252da3df4 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_list.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_list.lng @@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['client_id_txt'] = 'Müşteri'; $wb['ip_address_txt'] = 'IP Adresi'; $wb['add_new_record_txt'] = 'IP Adresi Ekle'; -$wb['virtualhost_txt'] = 'HTTP SSunucu'; +$wb['virtualhost_txt'] = 'HTTP sSunucu'; $wb['virtualhost_port_txt'] = 'HTTP Kapıları'; -$wb['ip_type_txt'] = 'Tip'; +$wb['ip_type_txt'] = 'Tür'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_ip_map.lng b/interface/web/admin/lib/lang/tr_server_ip_map.lng index 68b196fb23..c05e19c4b1 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_map.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_map.lng @@ -1,12 +1,12 @@ <?php -$wb['server_id_txt'] = 'Rewrite on Server'; -$wb['source_txt'] = 'Source IP'; -$wb['destination_txt'] = 'Destination IP'; -$wb['active_txt'] = 'Active'; -$wb['ip_error_wrong'] = 'The Destination IP address is invalid'; -$wb['destination_ip_empty'] = 'The Destination IP is empty.'; -$wb['source_ip_empty'] = 'The Source IP is empty.'; -$wb['server_empty_error'] = 'The Server is empty.'; -$wb['duplicate_mapping_error'] = 'Mapping already exists.'; -$wb['ip_mapping_error'] = 'Source IP can not be an IP of the Rewrite-Server'; +$wb['server_id_txt'] = 'Sunucuda Yeniden Yazma'; +$wb['source_txt'] = 'Kaynak IP'; +$wb['destination_txt'] = 'Hedef IP'; +$wb['active_txt'] = 'Etkin'; +$wb['ip_error_wrong'] = 'Hedef IP adresi geçersiz'; +$wb['destination_ip_empty'] = 'Hedef IP adresi boÅŸ olamaz.'; +$wb['source_ip_empty'] = 'Kaynak IP adresi boÅŸ olamaz.'; +$wb['server_empty_error'] = 'Sunucu boÅŸ olamaz.'; +$wb['duplicate_mapping_error'] = 'EÅŸleÅŸme zaten var.'; +$wb['ip_mapping_error'] = 'Kaynak IP adresi Yeniden yazma sunucusunun IP adreslerinden biri olamaz'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng index 1fedc10b2e..e0ee9a9729 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_map_list.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_map_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'IP Mappings'; -$wb['server_id_txt'] = 'Server'; -$wb['source_ip_txt'] = 'Source IP'; -$wb['destination_ip_txt'] = 'Destination IP'; -$wb['active_txt'] = 'Active'; +$wb['list_head_txt'] = 'IP EÅŸleÅŸtirmeleri'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['source_ip_txt'] = 'Kaynak IP'; +$wb['destination_ip_txt'] = 'Hedef IP'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_list.lng b/interface/web/admin/lib/lang/tr_server_list.lng index 9f791f78a1..8e22a526c8 100644 --- a/interface/web/admin/lib/lang/tr_server_list.lng +++ b/interface/web/admin/lib/lang/tr_server_list.lng @@ -1,12 +1,12 @@ <?php $wb['list_head_txt'] = 'Sunucu'; $wb['server_name_txt'] = 'Ad'; -$wb['mail_server_txt'] = 'Posta'; +$wb['mail_server_txt'] = 'E-posta'; $wb['web_server_txt'] = 'Web'; $wb['dns_server_txt'] = 'DNS'; $wb['file_server_txt'] = 'Dosya'; $wb['db_server_txt'] = 'Veritabanı'; -$wb['vserver_server_txt'] = 'SSunucu'; +$wb['vserver_server_txt'] = 'sSunucu'; $wb['proxy_server_txt'] = 'Vekil Sunucu'; $wb['firewall_server_txt'] = 'Güvenlik Duvarı'; $wb['add_new_record_txt'] = 'Sunucu Ekle'; diff --git a/interface/web/admin/lib/lang/tr_server_php.lng b/interface/web/admin/lib/lang/tr_server_php.lng index 8728444f13..e0437e94b3 100644 --- a/interface/web/admin/lib/lang/tr_server_php.lng +++ b/interface/web/admin/lib/lang/tr_server_php.lng @@ -13,5 +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'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng index dd3d6b730c..06319e9855 100644 --- a/interface/web/admin/lib/lang/tr_server_php_list.lng +++ b/interface/web/admin/lib/lang/tr_server_php_list.lng @@ -4,5 +4,5 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['add_new_record_txt'] = 'PHP Sürümü Ekle'; $wb['client_id_txt'] = 'Müşteri'; $wb['name_txt'] = 'PHP Adı'; -$wb['active_txt'] = 'Active'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng index dfd4981832..addda60195 100644 --- a/interface/web/admin/lib/lang/tr_software_package.lng +++ b/interface/web/admin/lib/lang/tr_software_package.lng @@ -2,5 +2,5 @@ $wb['package_title_txt'] = 'Paket BaÅŸlığı'; $wb['package_key_txt'] = 'Paket Anahtarı'; $wb['Software Package'] = 'Yazılım Paketi'; -$wb['Modify software package details'] = 'Yazılım paketi ayrıntılarını düzenleyin'; +$wb['Modify software package details'] = 'Yazılım paketi bilgilerini düzenle'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_update_list.lng b/interface/web/admin/lib/lang/tr_software_update_list.lng index 4ee824a6e1..a462d90faa 100644 --- a/interface/web/admin/lib/lang/tr_software_update_list.lng +++ b/interface/web/admin/lib/lang/tr_software_update_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Yazılım Güncellemeleri'; -$wb['server_select_txt'] = 'Sunucu seçin'; +$wb['server_select_txt'] = 'Sunucu Seçin'; $wb['installed_txt'] = 'Ä°ÅŸlem'; $wb['update_title_txt'] = 'Güncelleme'; $wb['version_txt'] = 'Sürüm'; diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index c52893f6b4..3ef8e26875 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -1,11 +1,11 @@ <?php $wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'SMTP posta göndermesini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.'; +$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.'; $wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının Ä°nternet adresi (yönetici)'; $wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının Ä°nternet adresi (bayi)'; $wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının Ä°nternet adresi (müşteri)'; $wb['warning'] = 'Bu deÄŸerleri deÄŸiÅŸtirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.'; -$wb['tab_change_discard_txt'] = 'Sekme deÄŸiÅŸtirildiÄŸinde deÄŸiÅŸiklikler yoksayılsın'; +$wb['tab_change_discard_txt'] = 'Sekme deÄŸiÅŸtirildiÄŸinde deÄŸiÅŸiklikler yok sayılsın'; $wb['tab_change_warning_txt'] = 'Sekme deÄŸiÅŸtirme uyarısı'; $wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir deÄŸiÅŸiklik yapmışsa sekme deÄŸiÅŸtirilmek istendiÄŸinde bir uyarı görüntülenir.'; $wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki'; @@ -13,8 +13,10 @@ $wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki'; $wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki'; $wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki'; $wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki'; -$wb['vhost_subdomains_txt'] = 'Alt alanlar web sitesi ÅŸeklinde oluÅŸturulsun'; -$wb['vhost_subdomains_note_txt'] = 'Sistemde SSunucu alt alan adları varken bu seçenek devre dışı bırakılamaz!'; +$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi ÅŸeklinde oluÅŸturulsun'; +$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!'; +$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin'; +$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!'; $wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var'; $wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var'; $wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var'; @@ -22,20 +24,23 @@ $wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin veri $wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.'; $wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin baÄŸlantısı'; $wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin'; -$wb['mailboxlist_webmail_link_txt'] = 'Posta kutusu listesinde Webmail baÄŸlantısı'; +$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail baÄŸlantısı'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; $wb['webmail_url_txt'] = 'Webmail Adresi'; -$wb['mailmailinglist_link_txt'] = 'Posta Listeleri listesinde Posta Listesi baÄŸlantısı'; -$wb['mailmailinglist_url_txt'] = 'Posta Listesi Adresi'; +$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi baÄŸlantısı'; +$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi'; $wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi'; -$wb['use_domain_module_txt'] = 'Alan adı eklemek için alan adı modülü kullanılsın'; -$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluÅŸturduÄŸu alan adlarından birini seçebilir. Alan adı alanını özgürce düzenleyemez. Bu deÄŸeri deÄŸiÅŸtirdikten sonra deÄŸiÅŸikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.'; -$wb['new_domain_txt'] = 'Yeni alan adı oluÅŸturma HTML kodu'; +$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın'; +$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluÅŸturduÄŸu etki alanlarından birini seçebilir. Etki alanını istediÄŸi gibi yazamaz. Bu deÄŸeri deÄŸiÅŸtirdikten sonra deÄŸiÅŸikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.'; +$wb['new_domain_txt'] = 'Yeni etki alanı oluÅŸturma HTML kodu'; $wb['webftp_url_txt'] = 'WebFTP Adresi'; $wb['admin_mail_txt'] = 'Yönetici E-posta Adresi'; $wb['monitor_key_txt'] = 'Ä°zlenecek Kelime'; $wb['admin_name_txt'] = 'Yönetici Adı'; $wb['maintenance_mode_txt'] = 'Bakım Kipi'; -$wb['smtp_enabled_txt'] = 'Sistem postaları SMTP ile gönderilsin'; +$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin'; $wb['smtp_host_txt'] = 'SMTP Sunucusu'; $wb['smtp_port_txt'] = 'SMTP Kapısı'; $wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı'; @@ -46,9 +51,10 @@ $wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın'; $wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın'; $wb['f5_to_reload_js_txt'] = 'Bu deÄŸer deÄŸiÅŸtirildiÄŸinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuÅŸuna basmalı ya da web tarayıcının ön belleÄŸini temizlemelisiniz.'; $wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Posta hesabı ayrıntılarında posta süzgeci sekmesi görüntülensin'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Posta hesabı ayrıntılarında isteÄŸe baÄŸlı posta süzgeci sekmesi görüntülensin'; +$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; $wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz'; $wb['phpmyadmin_url_note_txt'] = 'Kod:'; $wb['webmail_url_note_txt'] = 'Kod:'; @@ -64,30 +70,18 @@ $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersi $wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; $wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)'; -$wb['session_allow_endless_txt'] = '\\"Oturum açık kalsın\\" kullanılabilsin'; +$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu'; -$wb['min_password_strength_txt'] = 'En Az Parola Güçlüğü'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu'; +$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; +$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; +$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu'; +$wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; +$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; +$wb['company_name_txt'] = 'Sayfa baÅŸlığı için kurum adı'; +$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin'; +$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni'; +$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası BaÄŸlantısı'; +$wb['login_link_error_regex'] = 'Oturum Açma BaÄŸlantısı Geçersiz'; ?> diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index 0029214773..72aa9d1813 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -1,22 +1,22 @@ <?php -$wb['username_txt'] = 'Kullanıcı adı'; +$wb['username_txt'] = 'Kullanıcı Adı'; $wb['username_err'] = 'Kullanıcı adı çok uzun ya da geçersiz karakterler içeriyor.'; $wb['username_empty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['username_unique'] = 'Bu adla bir kullanıcı zaten var.'; $wb['passwort_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['modules_txt'] = 'Modül'; $wb['startmodule_txt'] = 'BaÅŸlangıç modülü'; $wb['app_theme_txt'] = 'Tasarım'; -$wb['typ_txt'] = 'Tip'; +$wb['typ_txt'] = 'Tür'; $wb['active_txt'] = 'Etkin'; $wb['language_txt'] = 'Dil'; $wb['name_txt'] = 'Ad'; $wb['vorname_txt'] = 'Takma ad'; -$wb['unternehmen_txt'] = 'Kurum'; +$wb['unternehmen_txt'] = 'KuruluÅŸ'; $wb['strasse_txt'] = 'Adres'; $wb['ort_txt'] = 'Ä°l'; -$wb['plz_txt'] = 'Posta kodu'; +$wb['plz_txt'] = 'Posta Kodu'; $wb['land_txt'] = 'Ãœlke'; $wb['email_txt'] = 'E-posta'; $wb['url_txt'] = 'Ä°nternet Adresi'; @@ -25,12 +25,12 @@ $wb['fax_txt'] = 'Faks'; $wb['groups_txt'] = 'Gruplar'; $wb['default_group_txt'] = 'Varsayılan Grup'; $wb['startmodule_err'] = 'BaÅŸlangıç modülü, modüllerin arasında deÄŸil.'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['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.'; +$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 türü admin olarak atanamaz'; +$wb['lost_password_function_txt'] = 'Parolamı unuttum özelliÄŸi kullanılabilir'; +$wb['no_user_insert'] = 'Bir müşteri ya da bayi eklediÄŸinizde -user- türündeki kontrol panosu kullanıcıları otomatik olarak eklenir ve güncellenir .'; ?> diff --git a/interface/web/admin/lib/lang/tr_users_list.lng b/interface/web/admin/lib/lang/tr_users_list.lng index 31dbee7000..182ab3ca7c 100644 --- a/interface/web/admin/lib/lang/tr_users_list.lng +++ b/interface/web/admin/lib/lang/tr_users_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Kullanıcılar'; -$wb['username_txt'] = 'Kullanıcı adı'; +$wb['username_txt'] = 'Kullanıcı Adı'; $wb['client_id_txt'] = 'Müşteri Kodu'; $wb['active_txt'] = 'Etkin'; $wb['groups_txt'] = 'Gruplar'; diff --git a/interface/web/client/lib/lang/br.lng b/interface/web/client/lib/lang/br.lng index 2228cf3e21..538a3e2e85 100644 --- a/interface/web/client/lib/lang/br.lng +++ b/interface/web/client/lib/lang/br.lng @@ -10,20 +10,20 @@ $wb['Limit-Templates'] = 'Gabaritos de limites'; $wb['Add Reseller'] = 'Adicionar revenda'; $wb['Edit Reseller'] = 'Editar revenda'; $wb['Resellers'] = 'Revendas'; -$wb['error_has_clients'] = 'Esta revenda possui clientes. Você deve remover os clientes primeiro.'; +$wb['error_has_clients'] = 'Esta revenda possui clientes associados. Certifique-se de remover os clientes associados a mesma antes de removê-la.'; $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado'; $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado'; -$wb['Messaging'] = 'CÃrculos'; +$wb['Messaging'] = 'Mensagens'; $wb['Send email'] = 'Enviar e-mail'; -$wb['Edit Client Circle'] = 'Editar cÃrculo'; +$wb['Edit Client Circle'] = 'Editar cÃrculo de clientes'; $wb['Domains'] = 'DomÃnios'; $wb['domain_txt'] = 'DomÃnio'; $wb['client_txt'] = 'Cliente'; -$wb['error_domain_in mailuse'] = 'Este domÃnio não pode ser removido porque está em uso como um domÃnio de e-mail.'; -$wb['error_domain_in webuse'] = 'Este domÃnio não pode ser removido porque está em uso como um domÃnio de site.'; -$wb['error_client_can_not_add_domain'] = 'Você não pode adicionar um novo domÃnio.'; -$wb['error_client_group_id_empty'] = 'Você deve selecionar um cliente<br>'; -$wb['error_domain_in dnsuse'] = 'Este domÃnio não pode ser removido porque está em uso como uma zona dns.'; -$wb['error_domain_in dnsslaveuse'] = 'Este domÃnio não pode ser removido porque está em uso como uma zona dns secundária.'; -$wb['Email-Templates'] = 'Gabaritos de e-mails'; +$wb['error_domain_in dnsuse'] = 'Este domÃnio não pode ser removido pois é utilizado em uma zona dns.'; +$wb['error_domain_in dnsslaveuse'] = 'Este domÃnio não pode ser removido pois é utilizado em uma zona dns secundária.'; +$wb['error_domain_in mailuse'] = 'Este domÃnio não pode ser removido pois é utilizado como um domÃnio de e-mail.'; +$wb['error_domain_in webuse'] = 'Este domÃnio não pode ser removido pois é utilizado como um domÃnio de site.'; +$wb['error_client_can_not_add_domain'] = 'Você não tem permissão para adicionar novos domÃnios.'; +$wb['error_client_group_id_empty'] = 'Você deve selecionar um cliente.'; +$wb['Email-Templates'] = 'Gabaritos de e-mail'; ?> diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index 992c1ea2ca..c640be54fb 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -1,26 +1,29 @@ <?php $wb['limit_maildomain_txt'] = 'Limite de domÃnios de e-mail'; -$wb['limit_mailbox_txt'] = 'Limite de caixas postais'; -$wb['limit_mailalias_txt'] = 'Limite de apelidos de domÃnio de e-mail'; -$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail'; -$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; -$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mail'; +$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail'; +$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail'; +$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail'; +$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domÃnios'; +$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail'; +$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo'; +$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail'; $wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail'; $wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; -$wb['limit_mailquota_txt'] = 'Cota de e-mail'; -$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra'; -$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam'; +$wb['limit_mailquota_txt'] = 'Cota da conta de e-mail'; +$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"'; +$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por conta de e-mail'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; -$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; +$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_firstname_txt'] = 'Nome do contato'; -$wb['contact_name_txt'] = 'Sobrenome do contato'; -$wb['username_txt'] = 'Nome do usuário'; +$wb['contact_name_txt'] = 'Contato'; +$wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; +$wb['password_click_to_set_txt'] = 'Clique para configurar'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['language_txt'] = 'Idioma'; $wb['usertheme_txt'] = 'Tema'; -$wb['street_txt'] = 'Rua'; +$wb['street_txt'] = 'Endereço'; $wb['zip_txt'] = 'CEP'; $wb['city_txt'] = 'Cidade'; $wb['state_txt'] = 'Estado'; @@ -28,177 +31,174 @@ $wb['country_txt'] = 'PaÃs'; $wb['telephone_txt'] = 'Telefone'; $wb['mobile_txt'] = 'Celular'; $wb['fax_txt'] = 'Fax'; -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['internet_txt'] = 'Internet'; -$wb['icq_txt'] = 'Skype/Telegram'; +$wb['icq_txt'] = 'Redes sociais'; $wb['notes_txt'] = 'Notas'; $wb['company_txt'] = 'Empresa'; -$wb['title_txt'] = 'TÃtulo'; +$wb['title_txt'] = 'Cargo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; $wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; -$wb['limit_webquota_txt'] = 'Limite da cota de site'; +$wb['limit_webquota_txt'] = 'Limite da cota de sites'; $wb['limit_database_txt'] = 'Limite de banco de dados'; +$wb['limit_cron_txt'] = 'Limite de tarefas no cron'; +$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chroot e url implÃcitas)'; +$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções'; $wb['ip_address_txt'] = 'Endereço IP'; $wb['limit_client_error_notint'] = 'Limite de clientes deve ser um número.'; $wb['firstname_error_empty'] = 'Nome está em branco.'; $wb['contact_error_empty'] = 'Contato está em branco.'; -$wb['default_webserver_txt'] = 'Servidor de páginas padrão'; -$wb['limit_web_domain_txt'] = 'Limite de de domÃnios de site'; -$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domÃnio'; -$wb['limit_web_subdomain_txt'] = 'Limite de subdomÃnios'; +$wb['default_webserver_txt'] = 'Servidor web padrão'; +$wb['limit_web_domain_txt'] = 'Limite de domÃnios de site'; +$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domÃnios de site'; +$wb['limit_web_subdomain_txt'] = 'Limite de subdomÃnios de site'; $wb['limit_ftp_user_txt'] = 'Limite de usuários ftp'; $wb['default_dnsserver_txt'] = 'Servidor dns padrão'; $wb['limit_dns_zone_txt'] = 'Limite de zonas dns'; $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias'; $wb['limit_dns_record_txt'] = 'Limite de registros dns'; -$wb['limit_shell_user_txt'] = 'Limite de usuários shell'; +$wb['limit_shell_user_txt'] = 'Limite de usuários do shell'; +$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav'; +$wb['limit_backup_txt'] = 'Função de backup disponÃvel'; $wb['limit_client_txt'] = 'Limite de clientes'; $wb['username_error_empty'] = 'Nome do usuário está em branco.'; $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; -$wb['limit_maildomain_error_notint'] = 'Limite de contas de e-mail deve ser um número.'; -$wb['limit_mailbox_error_notint'] = 'Limite da contas de e-mail deve ser um número.'; -$wb['limit_mailalias_error_notint'] = 'Limite do apelidos de e-mail deve ser um número.'; -$wb['limit_mailforward_error_notint'] = 'Limite de redirecionamentos de e-mail deve ser um número.'; -$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número.'; -$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mail deve ser um número.'; -$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mail deve ser um número.'; -$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.'; -$wb['limit_mailquota_error_notint'] = 'A cota de e-mail deve ser um número.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número.'; -$wb['limit_spamfilter_user_error_notint'] = 'Limite de filtros anti-spam por usuário deve ser um número.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Limite de polÃticas de filtros anti-spam deve ser um número.'; -$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número.'; -$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domÃnios deve ser um número.'; -$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomÃnios deve ser um número.'; -$wb['limit_ftp_user_error_notint'] = 'Limite de usuários ftp deve ser um número.'; -$wb['limit_shell_user_error_notint'] = 'Limite de usuários shell deve ser um número.'; -$wb['limit_dns_zone_error_notint'] = 'Limite de registros dns deve ser um número.'; -$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas dns secundárias deve ser um número.'; +$wb['limit_maildomain_error_notint'] = 'O limite de domÃnios de e-mail deve ser um número.'; +$wb['limit_mailmailinglist_error_notint'] = 'O limite de listas de e-mail deve ser um número.'; +$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.'; +$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.'; +$wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domÃnios de e-mail deve ser um número.'; +$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos de e-mail deve ser um número.'; +$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.'; +$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.'; +$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.'; +$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; +$wb['limit_mailquota_error_notint'] = 'O limite das cotas de e-mail deve ser um número.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.'; +$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.'; +$wb['limit_spamfilter_policy_error_notint'] = 'O limite de polÃticas anti-spam deve ser um número.'; +$wb['limit_web_domain_error_notint'] = 'O limite de domÃnios de site deve ser um número.'; +$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domÃnios de site deve ser um número.'; +$wb['limit_web_subdomain_error_notint'] = 'O limite de subdomÃnios de site deve ser um número.'; +$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.'; +$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.'; +$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.'; +$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.'; +$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.'; +$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.'; $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; -$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número.'; +$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.'; +$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.'; +$wb['limit_cron_error_frequency'] = 'O limite de frequência de tarefas no cron deve ser um número.'; $wb['username_error_regex'] = 'O nome de usuário contém caracteres inválidos.'; -$wb['template_master_txt'] = 'Gabarito principal'; +$wb['template_master_txt'] = 'Gabarito mestre'; $wb['template_additional_txt'] = 'Gabarito personalizado'; -$wb['ssh_chroot_txt'] = 'Opções do SSH Chroot'; -$wb['web_php_options_txt'] = 'Opções do PHP'; -$wb['limit_client_error'] = 'O limite de clientes foi alcançado.'; -$wb['limit_cron_txt'] = 'Limite de tarefas no cron.'; -$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefas no cron (em chroot e url completas)'; -$wb['limit_cron_frequency_txt'] = 'Intervalo mÃnimo entre as execuções'; -$wb['limit_cron_error_notint'] = 'Limite do cron deve ser um número.'; -$wb['limit_cron_error_frequency'] = 'Limite de frequência do cron deve ser um número.'; -$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domÃnios'; -$wb['limit_mailaliasdomain_error_notint'] = 'Limite de apelidos de domÃnio deve ser um número.'; -$wb['limit_web_quota_txt'] = 'Cota de site'; -$wb['limit_traffic_quota_txt'] = 'Cota de tráfego'; -$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego dever ser um número.'; -$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav'; -$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.'; -$wb['limit_backup_txt'] = 'Função de backup disponÃvel'; -$wb['customer_no_txt'] = 'Código do cliente'; -$wb['vat_id_txt'] = 'VAT ID'; -$wb['required_fields_txt'] = '*Campos obrigatórios'; -$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail'; -$wb['limit_mailmailinglist_error_notint'] = 'Limite do listas de e-mail deve ser um número.'; -$wb['company_id_txt'] = 'ID da Empresa'; -$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais'; -$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual'; -$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.'; -$wb['web_php_options_notempty'] = 'Nenhuma opção PHP selecionada. Selecione ao menos uma opção.'; -$wb['ssh_chroot_notempty'] = 'Nenhuma opção de SSH chroot selecionada. Selecione ao menos uma opção.'; -$wb['username_error_collision'] = 'O usuário não pode ter como iniciais as palavras -web- ou -web- seguida por um número.'; +$wb['active_template_additional_txt'] = 'Ativar gabarito personalizado'; $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado'; $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado'; +$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot'; +$wb['web_php_options_txt'] = 'Opções PHP'; $wb['limit_cgi_txt'] = 'CGI disponÃvel'; $wb['limit_ssi_txt'] = 'SSI disponÃvel'; $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'] = 'Custom error docs disponÃvel'; -$wb['limit_wildcard_txt'] = 'Curingas de subdomÃnios disponÃveis'; +$wb['limit_hterror_txt'] = 'Custom errordocs disponÃvel'; +$wb['limit_wildcard_txt'] = 'Curingas de subdomÃnio disponÃvel'; $wb['limit_ssl_txt'] = 'SSL disponÃvel'; -$wb['bank_account_number_txt'] = 'Conta corrente no.'; +$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponÃvel'; +$wb['limit_client_error'] = 'O limite de clientes foi alcançado.'; +$wb['limit_web_quota_txt'] = 'Cota de site'; +$wb['limit_traffic_quota_txt'] = 'Cota de tráfego'; +$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.'; +$wb['customer_no_txt'] = 'Código do cliente.'; +$wb['vat_id_txt'] = 'VAT ID'; +$wb['required_fields_txt'] = '*Campos obrigatórios'; +$wb['company_id_txt'] = 'Código da empresa'; +$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais'; +$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de máquina virtual'; +$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.'; +$wb['web_php_options_notempty'] = 'Nenhuma opção php selecionada. Selecione ao menos uma opção.'; +$wb['ssh_chroot_notempty'] = 'Nenhuma opção ssh chroot selecionada. Selecione ao menos uma opção.'; +$wb['username_error_collision'] = 'O nome de usuário não pode conter as palavras "web" ou "web" seguida de um número.'; +$wb['bank_account_number_txt'] = 'Conta corrente'; +$wb['bank_account_owner_txt'] = 'Proprietário da conta corrente'; $wb['bank_code_txt'] = 'Código do banco'; $wb['bank_name_txt'] = 'Nome do banco'; $wb['bank_account_iban_txt'] = 'IBAN'; $wb['bank_account_swift_txt'] = 'BIC/Swift'; -$wb['web_limits_txt'] = 'Limites web'; -$wb['email_limits_txt'] = 'Limites de e-mails'; +$wb['web_limits_txt'] = 'Limites de site'; +$wb['email_limits_txt'] = 'Limites de e-mail'; +$wb['xmpp_limits_txt'] = 'Limites xmpp'; $wb['database_limits_txt'] = 'Limites de banco de dados'; $wb['cron_job_limits_txt'] = 'Limites de tarefas no cron'; -$wb['dns_limits_txt'] = 'Limites de DNS'; -$wb['virtualization_limits_txt'] = 'Limites de virtualização'; -$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['active_template_additional_txt'] = 'Complementos ativos'; -$wb['bank_account_owner_txt'] = 'Proprietário da conta corrente'; -$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['dns_limits_txt'] = 'Limites de registros dns'; +$wb['virtualization_limits_txt'] = 'Limites de máquinas virtuais'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['email_error_isemail'] = 'Por favor, insira um endereço de e-mail válido.'; +$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo ou não pode estar está 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['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.'; +$wb['paypal_email_txt'] = 'e-Mail do PayPal'; +$wb['err_msg_master_tpl_set'] = 'Todas as configurações de limites serão ignoradas se for selecionado a opção de gabarito personalizado.'; +$wb['aps_limits_txt'] = 'Limites de instalações de APPs'; +$wb['limit_aps_txt'] = 'Limite de instâncias de APPs'; +$wb['limit_aps_error_notint'] = 'O limite de instâncias de APPs deve ser um número.'; $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; -$wb['locked_txt'] = 'Bloqueado (web desabilitado)'; -$wb['canceled_txt'] = 'Cancelado (acesso do cliente desabilitado)'; +$wb['locked_txt'] = 'Bloqueado (desabilita todos os sites, etc.)'; +$wb['canceled_txt'] = 'Cancelado (desabilita o acesso do cliente.)'; $wb['gender_txt'] = 'TÃtulo'; $wb['gender_m_txt'] = 'Sr.'; $wb['gender_f_txt'] = 'Sra.'; -$wb['added_by_txt'] = 'Cadastrado por'; -$wb['added_date_txt'] = 'Data do cadastro'; -$wb['parent_client_id_txt'] = 'Cliente da revenda'; -$wb['none_txt'] = 'nenhum'; -$wb['email_error_empty'] = 'e-mail está em branco.'; -$wb['xmpp_limits_txt'] = 'Limites XMPP'; $wb['web_servers_txt'] = 'Servidores web'; -$wb['web_servers_placeholder'] = 'Selecionar servidores web'; -$wb['no_web_server_error'] = 'Ao menos um servidor de páginas deve ser selecionado.'; -$wb['web_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de páginas. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['dns_servers_txt'] = 'Servidores dns'; -$wb['dns_servers_placeholder'] = 'Selecionar servidores dns'; -$wb['no_dns_server_error'] = 'Ao menos um servidor dns deve ser selecionado.'; -$wb['dns_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor dns. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['db_servers_txt'] = 'Servidor de banco de dados'; -$wb['db_servers_placeholder'] = 'Selecione o servidor de banco de dados'; +$wb['web_servers_placeholder'] = 'Selecione os servidores web'; +$wb['no_web_server_error'] = 'Ao menos um servidor web deve ser selecionado.'; +$wb['web_servers_used'] = 'O servidor web que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.'; +$wb['dns_servers_txt'] = 'Servidores DNS'; +$wb['dns_servers_placeholder'] = 'Selecione os servidores dns'; +$wb['no_dns_server_error'] = 'Ao menos um servidor DNS deve ser selecionado.'; +$wb['dns_servers_used'] = 'O servidor dns que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.'; +$wb['db_servers_txt'] = 'Servidores de banco de dados'; +$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados'; $wb['no_db_server_error'] = 'Ao menos um servidor de banco de dados deve ser selecionado.'; -$wb['db_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de banco de dados. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.'; +$wb['db_servers_used'] = 'O servidor de banco de dados que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.'; $wb['mail_servers_txt'] = 'Servidores de e-mail'; $wb['mail_servers_placeholder'] = 'Selecione os servidores de e-mail'; -$wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado'; -$wb['mail_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor de e-mail. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.'; +$wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado.'; +$wb['mail_servers_used'] = 'O servidor de e-mail que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.'; $wb['xmpp_servers_txt'] = 'Servidores XMPP'; -$wb['xmpp_servers_placeholder'] = 'Selecione os servidores XMPP'; -$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.'; -$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor XMPP. Tenha certeza que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['limit_xmpp_domain_error_notint'] = 'Limite de domÃnios XMPP deve ser um número.'; -$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários XMPP deve ser um número.'; -$wb['limit_xmpp_domain_txt'] = 'Limite de domÃnios XMPP'; -$wb['limit_xmpp_user_txt'] = 'Limite de contas XMPP'; -$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponÃvel'; +$wb['xmpp_servers_placeholder'] = 'Selecione o(s) servidor(es) xmpp'; +$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.'; +$wb['xmpp_servers_used'] = 'O servidor xmpp que você está tentando remover para este cliente é utilizado pelo mesmo. Certifique-se que este servidor não esteja em uso pelo cliente antes de removê-lo.'; +$wb['limit_xmpp_domain_error_notint'] = 'O limite de domÃnios xmpp deve ser um número.'; +$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.'; +$wb['limit_xmpp_domain_txt'] = 'Limite de domÃnios xmpp'; +$wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp'; +$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário (MUC) disponÃvel'; $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponÃvel'; -$wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponÃvel'; +$wb['limit_xmpp_httparchive_txt'] = 'Arquivos http para MUC disponÃvel'; $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponÃvel'; -$wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponÃvel'; +$wb['limit_xmpp_vjud_txt'] = 'Diretório de usuários VJUD disponÃvel'; $wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponÃvel'; $wb['limit_xmpp_status_txt'] = 'Estado do host disponÃvel'; -$wb['limit_database_quota_txt'] = 'Cota para banco de dados'; -$wb['limit_database_quota_error_notint'] = 'A cota para banco de dados deve ser um número.'; +$wb['added_by_txt'] = 'Cadastrado por'; +$wb['added_date_txt'] = 'Data do cadastro'; +$wb['parent_client_id_txt'] = 'Cliente da revenda'; +$wb['none_txt'] = 'nenhum'; +$wb['limit_database_quota_txt'] = 'Cota do banco de dados'; +$wb['limit_database_quota_error_notint'] = 'O limite da cota de banco de dados deve ser um número.'; +$wb['limit_database_user_txt'] = 'Limite de usuários do banco de dados'; +$wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.'; $wb['reseller_txt'] = 'Revenda'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['invalid_vat_id'] = 'O VAT ID é inválido.'; -$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados'; -$wb['limit_database_user_error_notint'] = 'Limite de usuários de banco de dados deve ser um número.'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponÃvel'; -$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configurações do servidor de páginas'; -$wb['password_click_to_set_txt'] = 'Selecionar para configurar'; -$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.'; +$wb['invalid_vat_id'] = 'O ID do VAT é inválido.'; +$wb['email_error_empty'] = 'O e-mail está em branco'; +$wb['limit_directive_snippets_txt'] = 'Exibir configurações de seleção do servidor web'; $wb['Limits'] = 'Limites'; ?> diff --git a/interface/web/client/lib/lang/br_client_circle.lng b/interface/web/client/lib/lang/br_client_circle.lng index 364172f1ae..6c6cb13271 100644 --- a/interface/web/client/lib/lang/br_client_circle.lng +++ b/interface/web/client/lib/lang/br_client_circle.lng @@ -1,6 +1,6 @@ <?php -$wb['Client Circle'] = 'CÃrculo de cliente'; -$wb['Circle'] = 'CÃrculo'; +$wb['Client Circle'] = 'CÃrculos de clientes'; +$wb['Circle'] = 'CÃrculos'; $wb['circle_txt'] = 'CÃrculo'; $wb['circle_name_txt'] = 'Nome do cÃrculo'; $wb['client_ids_txt'] = 'Clientes/Revendas'; diff --git a/interface/web/client/lib/lang/br_client_circle_list.lng b/interface/web/client/lib/lang/br_client_circle_list.lng index 857984f892..1c1a43f49a 100644 --- a/interface/web/client/lib/lang/br_client_circle_list.lng +++ b/interface/web/client/lib/lang/br_client_circle_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'CÃrculos de Clientes'; -$wb['circle_id_txt'] = 'ID do CÃrculo'; -$wb['circle_name_txt'] = 'Nome do CÃrculo'; +$wb['list_head_txt'] = 'CÃrculo de clientes'; +$wb['circle_id_txt'] = 'ID do cÃrculo'; +$wb['circle_name_txt'] = 'Nome do cÃrculo'; $wb['description_txt'] = 'Descrição'; $wb['add_new_record_txt'] = 'Adicionar novo cÃrculo'; $wb['filter_txt'] = 'Filtro'; diff --git a/interface/web/client/lib/lang/br_client_del.lng b/interface/web/client/lib/lang/br_client_del.lng index 6c3e4e668a..880c12c36a 100644 --- a/interface/web/client/lib/lang/br_client_del.lng +++ b/interface/web/client/lib/lang/br_client_del.lng @@ -1,6 +1,6 @@ <?php $wb['confirm_action_txt'] = 'Confirmar ação'; -$wb['delete_explanation'] = 'Atenção: está ação removerá todos os objetos associados ao cliente!'; +$wb['delete_explanation'] = 'Esta ação removerá os seguintes registros associados a este cliente.'; $wb['btn_save_txt'] = 'Remover o cliente'; $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente'; $wb['confirm_client_delete_txt'] = 'Você tem certeza que deseja remover este cliente?'; diff --git a/interface/web/client/lib/lang/br_client_message.lng b/interface/web/client/lib/lang/br_client_message.lng index 802dcca368..75aa3480c5 100644 --- a/interface/web/client/lib/lang/br_client_message.lng +++ b/interface/web/client/lib/lang/br_client_message.lng @@ -1,16 +1,16 @@ <?php +$wb['page_head_txt'] = 'Enviar informações do cliente'; $wb['btn_send_txt'] = 'Enviar e-mail'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['sender_txt'] = 'Remetente'; +$wb['sender_txt'] = 'e-Mail do remetente'; $wb['subject_txt'] = 'Assunto'; $wb['message_txt'] = 'Mensagem'; -$wb['form_legend_client_txt'] = 'Enviar mensagem a todos os clientes.'; -$wb['form_legend_admin_txt'] = 'Enviar mensagem a todos clientes e revendas.'; -$wb['sender_invalid_error'] = 'O e-mail do remetente é é inválido.'; -$wb['subject_invalid_error'] = 'O assunto está em branco.'; -$wb['message_invalid_error'] = 'A mensagem está em branco.'; -$wb['email_sent_to_txt'] = 'Enviar e-mail para:'; -$wb['page_head_txt'] = 'Enviar informações aos clientes'; +$wb['form_legend_client_txt'] = 'Enviar e-mail para clientes.'; +$wb['form_legend_admin_txt'] = 'Enviar e-mail para clientes e revendas.'; +$wb['sender_invalid_error'] = 'Remetente inválido.'; +$wb['subject_invalid_error'] = 'Assunto está em branco.'; +$wb['message_invalid_error'] = 'Mensagem está em branco.'; +$wb['email_sent_to_txt'] = 'e-Mail enviado para:'; $wb['recipient_txt'] = 'Destinatário'; $wb['all_clients_resellers_txt'] = 'Todos os clientes e revendas'; $wb['all_clients_txt'] = 'Todos os clientes'; 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 eb3c0b9938..8fb0934837 100644 --- a/interface/web/client/lib/lang/br_client_message_template.lng +++ b/interface/web/client/lib/lang/br_client_message_template.lng @@ -4,10 +4,10 @@ $wb['template_name_txt'] = 'Nome do gabarito'; $wb['subject_txt'] = 'Assunto'; $wb['message_txt'] = 'Mensagem'; $wb['Email template'] = 'Gabarito do e-mail'; -$wb['Settings'] = 'Configuração'; +$wb['Settings'] = 'Configurações'; $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'; +$wb['variables_description_txt'] = '(Variáveis de usuário e senha só estão disponÃveis em e-mail de boas-vindas.)'; +$wb['duplicate_welcome_error'] = 'Só pode existir apenas um gabarito de e-mail de boas-vindas. Edite o modelo existente ao invés de adicionar um novo.'; +$wb['subject_error_empty'] = 'Assunto está em branco.'; +$wb['message_error_empty'] = 'Mensagem está em branco.'; ?> diff --git a/interface/web/client/lib/lang/br_client_message_template_list.lng b/interface/web/client/lib/lang/br_client_message_template_list.lng index 9853a71ad3..3673769354 100644 --- a/interface/web/client/lib/lang/br_client_message_template_list.lng +++ b/interface/web/client/lib/lang/br_client_message_template_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Gabarito de e-mails'; +$wb['list_head_txt'] = 'Gabaritos de e-mail'; $wb['template_type_txt'] = 'Mensagem de'; $wb['template_name_txt'] = 'Nome do gabarito'; ?> diff --git a/interface/web/client/lib/lang/br_client_template.lng b/interface/web/client/lib/lang/br_client_template.lng index 4b2ce6555b..c09c622bb2 100644 --- a/interface/web/client/lib/lang/br_client_template.lng +++ b/interface/web/client/lib/lang/br_client_template.lng @@ -1,123 +1,126 @@ <?php -$wb['limit_client_error_notint'] = 'Limite de clientes não é um número.'; +$wb['template_type_txt'] = 'Tipo de gabarito'; +$wb['template_name_txt'] = 'Nome do gabarito'; +$wb['limit_client_error_notint'] = 'Limite de cliente não é um número.'; +$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão'; $wb['limit_maildomain_txt'] = 'Limite de domÃnios de e-mail'; -$wb['limit_mailbox_txt'] = 'Limite de caixas postais'; -$wb['limit_mailalias_txt'] = 'Limite de apelidos de e-mail'; -$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail'; -$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; -$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mails'; +$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail'; +$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail'; +$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domÃnios de e-mail'; +$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail'; +$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail'; +$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo'; +$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail'; $wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail'; $wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; -$wb['limit_mailquota_txt'] = 'Espaço da caixa postal'; -$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam permitidos lista branca/negra'; -$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam'; +$wb['limit_mailquota_txt'] = 'Cota da conta de e-mail'; +$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"'; +$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam para conta de e-mail'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; -$wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; -$wb['limit_webquota_txt'] = 'Cota de site'; +$wb['limit_subdomain_txt'] = 'Limite de sub-domÃnios'; +$wb['limit_webquota_txt'] = 'Limite da cota de site'; $wb['limit_database_txt'] = 'Limite de banco de dados'; +$wb['limit_cron_txt'] = 'Limite de tarefas no cron'; +$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chroot e url implÃcitas)'; +$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções'; +$wb['default_webserver_txt'] = 'Servidor web padrão'; $wb['limit_web_domain_txt'] = 'Limite de domÃnios de site'; -$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domÃnio de site'; -$wb['limit_web_subdomain_txt'] = 'Limite de subdomÃnios de site'; -$wb['limit_ftp_user_txt'] = 'Limite de usuários ftp'; -$wb['limit_dns_zone_txt'] = 'Limite de zonas dns primárias'; +$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domÃnios de site'; +$wb['limit_web_subdomain_txt'] = 'Limite de sud-domÃnios de site'; +$wb['limit_ftp_user_txt'] = 'Limite de usuário FTP'; +$wb['default_dnsserver_txt'] = 'Servidor DNS padrão'; +$wb['limit_dns_zone_txt'] = 'Limite de zonas dns'; +$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário'; $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias'; $wb['limit_dns_record_txt'] = 'Limite de registros dns'; -$wb['limit_shell_user_txt'] = 'Limite de usuários shell'; +$wb['limit_shell_user_txt'] = 'Limite de usuários do shell'; +$wb['limit_webdav_user_txt'] = 'Limite de usuário Webdav'; +$wb['limit_backup_txt'] = 'Funções de backup disponÃvel'; $wb['limit_client_txt'] = 'Limite de clientes'; -$wb['limit_maildomain_error_notint'] = 'Limite de e-mails deve ser um número'; -$wb['limit_mailbox_error_notint'] = 'Limite de caixas postais deve ser um número'; -$wb['limit_mailalias_error_notint'] = 'Limite de apelidos de domÃnio de e-mails deve ser um número'; -$wb['limit_mailforward_error_notint'] = 'Limite de redirecionamentos de e-mail deve ser um número'; -$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número'; -$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mails deve ser um número'; -$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mails deve ser um número.'; -$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.'; -$wb['limit_mailquota_error_notint'] = 'Cota de e-mail deve ser um número.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número'; -$wb['limit_spamfilter_user_error_notint'] = 'Limite de filtros anti-spam deve ser um número.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Limite de polÃticas anti-spam deve ser um número.'; -$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número'; -$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domÃnio de site deve ser um número'; -$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomÃnios de site deve ser um número'; -$wb['limit_ftp_user_error_notint'] = 'Limite de contas FTP deve ser um número'; -$wb['limit_shell_user_error_notint'] = 'Limite de contas shell deve ser um número'; -$wb['limit_dns_zone_error_notint'] = 'Limite de zonas DNS primárias deve ser um número'; -$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas DNS secundárias deve ser um número.'; -$wb['limit_dns_record_error_notint'] = 'Limite de registros DNS deve ser um número.'; -$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número'; -$wb['error_template_name_empty'] = 'Por favor insira o nome do gabarito'; -$wb['limit_cron_txt'] = 'Limite de tarefas no cron'; -$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefas no cron (em chroot e url completas)'; -$wb['limit_cron_frequency_txt'] = 'Intervalo mÃnimo entre as execuções'; -$wb['limit_cron_error_notint'] = 'Limite do cron deve ser um número.'; -$wb['limit_cron_error_frequency'] = 'Limite de frequência do cron deve ser um número.'; -$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domÃnio de e-mails'; -$wb['limit_mailaliasdomain_error_notint'] = 'Limite de apelidos de domÃnio de e-mails deve ser um número.'; +$wb['limit_maildomain_error_notint'] = 'O limite de domÃnios de e-mail deve ser um número.'; +$wb['limit_mailmailinglist_error_notint'] = 'O limite de listas de e-mail deve ser um número.'; +$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.'; +$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.'; +$wb['limit_mailaliasdomain_error_notint'] = 'O limite de alias de domÃnios deve ser um número.'; +$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamento de e-mails deve ser um número.'; +$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.'; +$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.'; +$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.'; +$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; +$wb['limit_mailquota_error_notint'] = 'O limite da cota de e-mails deve ser um número.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.'; +$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.'; +$wb['limit_spamfilter_policy_error_notint'] = 'O limite de polÃticas anti-spam deve ser um número.'; +$wb['limit_web_domain_error_notint'] = 'O limite de sites deve ser um número.'; +$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domÃnio para sites deve ser um número.'; +$wb['limit_web_subdomain_error_notint'] = 'O limite de sub-domÃnios para site deve ser um número.'; +$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.'; +$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.'; +$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.'; +$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.'; +$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.'; +$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.'; +$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; +$wb['limit_database_txt'] = 'Limite de banco de dados'; +$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.'; +$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.'; +$wb['limit_cron_error_frequency'] = 'O limite de execuções no cron deve ser um número.'; +$wb['error_template_name_empty'] = 'Por favor, insira um nome para o gabarito'; $wb['limit_web_quota_txt'] = 'Cota de site'; -$wb['limit_traffic_quota_txt'] = 'Cota de Tráfego'; -$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego deve ser um número.'; -$wb['template_del_aborted_txt'] = 'Remoção abortada. Ainda existem clientes com o gabarito selecionado.'; -$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav'; -$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.'; -$wb['limit_backup_txt'] = 'Funções de backup disponÃveis'; -$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails'; -$wb['limit_mailmailinglist_error_notint'] = 'Limite de listas de e-mails deve ser um número.'; -$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais'; -$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual'; -$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.'; -$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot'; +$wb['limit_traffic_quota_txt'] = 'Cota de tráfego'; +$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.'; +$wb['template_del_aborted_txt'] = 'Remover cancelado. Ainda existe algum cliente com este gabarito em uso.'; +$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais'; +$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito para máquina virtual'; +$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.'; +$wb['ssh_chroot_txt'] = 'Opções de SSH-Chroot'; $wb['web_php_options_txt'] = 'Opções PHP'; -$wb['template_type_txt'] = 'Tipo de Gabarito'; -$wb['template_name_txt'] = 'Nome do Gabarito'; $wb['limit_cgi_txt'] = 'CGI disponÃvel'; $wb['limit_ssi_txt'] = 'SSI disponÃvel'; $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_wildcard_txt'] = 'Curingas de subdomÃnios disponÃveis'; +$wb['limit_hterror_txt'] = 'Custom-error-docs disponÃvel'; +$wb['limit_wildcard_txt'] = 'Curingas de sub-domÃnio disponÃvel'; $wb['limit_ssl_txt'] = 'SSL disponÃvel'; -$wb['web_limits_txt'] = 'Limites web'; -$wb['email_limits_txt'] = 'Limites de e-mail'; +$wb['limit_ssl_letsencrypt_txt'] = 'Let'; +$wb['web_limits_txt'] = 'Limites de site'; +$wb['email_limits_txt'] = 'Limites de e-mails'; $wb['database_limits_txt'] = 'Limites de banco de dados'; -$wb['cron_job_limits_txt'] = 'Limites de tarefas no cron'; +$wb['cron_job_limits_txt'] = 'Limite de tarefas no cron'; $wb['dns_limits_txt'] = 'Limites de DNS'; $wb['virtualization_limits_txt'] = 'Limites de virtualização'; -$wb['aps_limits_txt'] = 'Limites de instalações de apps'; -$wb['limit_aps_txt'] = 'Limites de instâncias de apps'; -$wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.'; +$wb['aps_limits_txt'] = 'Limites de instalações de aplicações - APPs'; +$wb['limit_aps_txt'] = 'Limite de instâncias para APPs'; +$wb['limit_aps_error_notint'] = 'O limite de instância para APPs deve ser um número.'; $wb['limit_domainmodule_txt'] = 'Limites de módulos de domÃnio'; $wb['client_limits_txt'] = 'Limites de clientes'; -$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; -$wb['default_webserver_txt'] = 'Servidor de páginas padrão'; -$wb['default_dnsserver_txt'] = 'Servidor DNS padrão'; -$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário padrão'; -$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; -$wb['limit_database_quota_txt'] = 'Cota para banco de dados'; -$wb['limit_database_quota_error_notint'] = 'Limite da cota para banco de dados deve ser um número.'; -$wb['xmpp_limits_txt'] = 'Limites XMPP'; -$wb['xmpp_servers_txt'] = 'Servidores XMPP'; -$wb['xmpp_servers_placeholder'] = 'Selecionar servidores XMPP'; -$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.'; -$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor XMPP. Tenha certeza que este servidor não é usando por este cliente antes de removê-lo.'; -$wb['limit_xmpp_domain_error_notint'] = 'Limite de domÃnios XMPP deve ser um número.'; -$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários XMPP deve ser um número.'; -$wb['limit_xmpp_domain_txt'] = 'Limite de domÃnios XMPP'; -$wb['limit_xmpp_user_txt'] = 'Limite de contas XMPP'; +$wb['limit_database_quota_txt'] = 'Cotas de banco de dados'; +$wb['limit_database_quota_error_notint'] = 'O limite das cotas de banco de dados deve ser um número.'; +$wb['xmpp_limits_txt'] = 'Limites de xmpp'; +$wb['xmpp_servers_txt'] = 'Servidores xmpp'; +$wb['xmpp_servers_placeholder'] = 'Selecione o(s) servidor(es) xmpp'; +$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.'; +$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é usado como um servidor xmpp. Garanta que este servidor não é usado por este cliente antes de removê-lo.'; +$wb['limit_xmpp_domain_error_notint'] = 'O limite de domÃnios xmpp deve ser um número.'; +$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.'; +$wb['limit_xmpp_domain_txt'] = 'Limite de domÃnios xmpp'; +$wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp'; $wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponÃvel'; $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponÃvel'; -$wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponÃvel'; +$wb['limit_xmpp_httparchive_txt'] = 'Arquivos http para MUC disponÃvel'; $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponÃvel'; $wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponÃvel'; $wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponÃvel'; $wb['limit_xmpp_status_txt'] = 'Estado do host disponÃvel'; -$wb['dns_servers_txt'] = 'Servidores DNS'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponÃvel'; -$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do servidor de páginas'; -$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados'; +$wb['dns_servers_txt'] = 'Servidores dns'; +$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configurações do servidor web'; +$wb['limit_database_user_txt'] = 'Limite de usuários do banco de dados'; $wb['web_servers_txt'] = 'Servidores web'; +$wb['dns_servers_txt'] = 'Servidores dns'; +$wb['xmpp_servers_txt'] = 'Servidores xmpp'; $wb['db_servers_txt'] = 'Servidores de banco de dados'; $wb['mail_servers_txt'] = 'Servidores de e-mail'; $wb['Limits'] = 'Limites'; diff --git a/interface/web/client/lib/lang/br_client_template_list.lng b/interface/web/client/lib/lang/br_client_template_list.lng index db73df8efd..47bd2e5779 100644 --- a/interface/web/client/lib/lang/br_client_template_list.lng +++ b/interface/web/client/lib/lang/br_client_template_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Gabarito de limites para clientes'; +$wb['list_head_txt'] = 'Gabaritos de clientes e revendas'; $wb['template_type_txt'] = 'Tipo'; -$wb['template_name_txt'] = 'Nome do Gabarito'; -$wb['template_id_txt'] = 'ID do Gabarito'; -$wb['sys_groupid_txt'] = 'Reseller'; +$wb['template_name_txt'] = 'Nome do gabarito'; +$wb['template_id_txt'] = 'ID do gabarito'; +$wb['sys_groupid_txt'] = 'Revenda'; ?> diff --git a/interface/web/client/lib/lang/br_clients_list.lng b/interface/web/client/lib/lang/br_clients_list.lng index 7470bd27c4..8016151a9b 100644 --- a/interface/web/client/lib/lang/br_clients_list.lng +++ b/interface/web/client/lib/lang/br_clients_list.lng @@ -3,12 +3,12 @@ $wb['list_head_txt'] = 'Clientes'; $wb['client_id_txt'] = 'ID'; $wb['company_name_txt'] = 'Empresa'; $wb['contact_name_txt'] = 'Contato'; +$wb['username_txt'] = 'Usuário'; $wb['city_txt'] = 'Cidade'; $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'; +$wb['customer_no_txt'] = 'Código do cliente'; +$wb['locked_txt'] = 'Bloqueado'; +$wb['yes_txt'] = 'Sim'; +$wb['no_txt'] = 'Não'; ?> diff --git a/interface/web/client/lib/lang/br_domain.lng b/interface/web/client/lib/lang/br_domain.lng index 26c205a56b..988976d2ce 100644 --- a/interface/web/client/lib/lang/br_domain.lng +++ b/interface/web/client/lib/lang/br_domain.lng @@ -1,6 +1,6 @@ <?php -$wb['domain_error_empty'] = 'Nome do domÃnio está em branco.'; -$wb['domain_error_unique'] = 'Nome do domÃnio já existe.'; -$wb['domain_error_regex'] = 'Nome do domÃnio não é permitido.'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['domain_error_unique'] = 'O domÃnio já existe.'; +$wb['domain_error_regex'] = 'O nome do domÃnio não é permitido.'; $wb['Domain'] = 'DomÃnio'; ?> diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index d90d3b15a2..12a8a2953f 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -1,26 +1,29 @@ <?php -$wb['limit_maildomain_txt'] = 'Limite de domÃnios de e-mails'; -$wb['limit_mailbox_txt'] = 'Limite de contas de e-mails'; -$wb['limit_mailalias_txt'] = 'Limite de apelidos de domÃnio de e-mails'; -$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mails'; -$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; -$wb['limit_mailrouting_txt'] = 'Limite de transportes de e-mails'; -$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mails'; -$wb['limit_fetchmail_txt'] = 'Limite de contas de busca '; -$wb['limit_mailquota_txt'] = 'Cota de e-mail'; -$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra'; -$wb['limit_spamfilter_user_txt'] = 'Limite de usuários de filtros anti-spam'; +$wb['limit_maildomain_txt'] = 'Limite de domÃnios de e-mail'; +$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mail'; +$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail'; +$wb['limit_mailalias_txt'] = 'Limite de alias de e-mail'; +$wb['limit_mailaliasdomain_txt'] = 'Limite de alias de domÃnios'; +$wb['limit_mailforward_txt'] = 'Limite de encaminhamentos de e-mail'; +$wb['limit_mailcatchall_txt'] = 'Limite de contas cata-tudo'; +$wb['limit_mailrouting_txt'] = 'Limite de rotas de e-mail'; +$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail'; +$wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; +$wb['limit_mailquota_txt'] = 'Cota de contas de e-mail'; +$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam "lista branca/negra"'; +$wb['limit_spamfilter_user_txt'] = 'Limite de filtros anti-spam por usuário'; $wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; -$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; +$wb['default_mailserver_txt'] = 'Servidor de e-mail padrão'; $wb['company_name_txt'] = 'Empresa'; -$wb['contact_firstname_txt'] = 'Nome do contato'; -$wb['contact_name_txt'] = 'Sobrenome do contato'; +$wb['contact_firstname_txt'] = 'Contato'; +$wb['contact_name_txt'] = 'Nome do contato'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; +$wb['password_click_to_set_txt'] = 'Clique para configurar'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['language_txt'] = 'Idioma'; $wb['usertheme_txt'] = 'Tema'; -$wb['street_txt'] = 'Rua'; +$wb['street_txt'] = 'Endereço'; $wb['zip_txt'] = 'CEP'; $wb['city_txt'] = 'Cidade'; $wb['state_txt'] = 'Estado'; @@ -28,180 +31,177 @@ $wb['country_txt'] = 'PaÃs'; $wb['telephone_txt'] = 'Telefone'; $wb['mobile_txt'] = 'Celular'; $wb['fax_txt'] = 'Fax'; -$wb['email_txt'] = 'e-mail'; -$wb['internet_txt'] = 'Internet'; -$wb['icq_txt'] = 'Skype/Telegram'; -$wb['notes_txt'] = 'Notas'; +$wb['email_txt'] = 'e-Mail'; +$wb['internet_txt'] = 'Site'; +$wb['icq_txt'] = 'Redes Sociais'; +$wb['notes_txt'] = 'Observações'; $wb['company_txt'] = 'Empresa'; $wb['title_txt'] = 'TÃtulo'; $wb['firstname_txt'] = 'Nome'; $wb['surname_txt'] = 'Sobrenome'; $wb['limit_domain_txt'] = 'Limite de domÃnios'; $wb['limit_subdomain_txt'] = 'Limite de subdomÃnios'; -$wb['limit_webquota_txt'] = 'Cota de site'; +$wb['limit_webquota_txt'] = 'Cota de sites'; $wb['limit_database_txt'] = 'Limite de banco de dados'; +$wb['limit_database_user_txt'] = 'Limite de usuários do banco de dados'; $wb['limit_cron_txt'] = 'Limite de tarefas no cron'; -$wb['limit_cron_type_txt'] = 'Limites de tarefas no cron (em chroot e url completas)'; -$wb['limit_cron_frequency_txt'] = 'Limite de tempo entre as execuções'; +$wb['limit_cron_type_txt'] = 'Limite de tipos de tarefa no cron (chrooted e url implÃcitas)'; +$wb['limit_cron_frequency_txt'] = 'Tempo de espera entre as execuções'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['limit_client_error_notint'] = 'Limite de clientes para revenda deve ser um número.'; +$wb['limit_client_error_notint'] = 'O limite de clientes deve ser um número.'; $wb['firstname_error_empty'] = 'Nome está em branco.'; $wb['contact_error_empty'] = 'Contato está em branco.'; -$wb['default_webserver_txt'] = 'Servidor de páginas padrão'; +$wb['default_webserver_txt'] = 'Servidor web padrão'; $wb['limit_web_domain_txt'] = 'Limite de domÃnios de site'; -$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos'; -$wb['limit_web_subdomain_txt'] = 'Limite de subdomÃnios'; +$wb['limit_web_aliasdomain_txt'] = 'Limite de alias de domÃnios de site'; +$wb['limit_web_subdomain_txt'] = 'Limite subdomÃnios de site'; $wb['limit_ftp_user_txt'] = 'Limite de usuários ftp'; -$wb['default_dnsserver_txt'] = 'Servidor dns Padrão'; -$wb['limit_dns_zone_txt'] = 'Limite de de zonas dns'; +$wb['default_dnsserver_txt'] = 'Servidor dns padrão'; +$wb['limit_dns_zone_txt'] = 'Limite de zonas dns'; $wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias'; $wb['limit_dns_record_txt'] = 'Limite de registros dns'; -$wb['limit_shell_user_txt'] = 'Limite de usuários shell'; +$wb['limit_shell_user_txt'] = 'Limite de usuários do shell'; +$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav'; +$wb['limit_backup_txt'] = 'Função de backup disponÃvel'; $wb['limit_client_txt'] = 'Limite de clientes'; -$wb['username_error_empty'] = 'Nome do usuário está em branco.'; -$wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; -$wb['limit_maildomain_error_notint'] = 'Limite de domÃnios de e-mails deve ser um número.'; -$wb['limit_mailbox_error_notint'] = 'Limite de contas de e-mails deve ser um número.'; -$wb['limit_mailalias_error_notint'] = 'Limite de apelidos de domÃnio de e-mails deve ser um número.'; -$wb['limit_mailforward_error_notint'] = 'Limite de encaminhamentos de e-mails deve ser um número.'; -$wb['limit_mailcatchall_error_notint'] = 'Limite de contas cata tudo deve ser um número.'; -$wb['limit_mailrouting_error_notint'] = 'Limite de transportes de e-mails deve ser um número.'; -$wb['limit_mailfilter_error_notint'] = 'Limite de filtros de e-mails deve ser um número.'; -$wb['limit_mailfetchmail_error_notint'] = 'Limite de contas de busca deve ser um número.'; -$wb['limit_mailquota_error_notint'] = 'A cota de e-mail deve ser um número.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Limite de filtros anti-spam lista branca/negra deve ser um número.'; -$wb['limit_spamfilter_user_error_notint'] = 'Limite de usuários de filtros anti-spam deve ser um número.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Limite de polÃticas anti-spam deve ser um número.'; -$wb['limit_web_domain_error_notint'] = 'Limite de sites deve ser um número.'; -$wb['limit_web_aliasdomain_error_notint'] = 'Limite de apelidos de domÃnio de site deve ser um número.'; -$wb['limit_web_subdomain_error_notint'] = 'Limite de subdomÃnios de site deve ser um número.'; -$wb['limit_ftp_user_error_notint'] = 'Limite de usuários ftp deve ser um número.'; -$wb['limit_shell_user_error_notint'] = 'Limite de usuários shell deve ser um número.'; -$wb['limit_dns_zone_error_notint'] = 'Limite de registros dns deve ser um número.'; -$wb['limit_dns_slave_zone_error_notint'] = 'Limite de zonas dns secundárias deve ser um número.'; -$wb['limit_dns_record_error_notint'] = 'Limite de registros dns deve ser um número.'; +$wb['username_error_empty'] = 'Usuário está em branco.'; +$wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo.'; +$wb['limit_maildomain_error_notint'] = 'O limite de domÃnios de e-mail deve ser um número.'; +$wb['limit_mailmailinglist_error_notint'] = 'O limite de registro de listas de e-mail deve ser um número.'; +$wb['limit_mailbox_error_notint'] = 'O limite de contas de e-mail deve ser um número.'; +$wb['limit_mailalias_error_notint'] = 'O limite de alias de e-mail deve ser um número.'; +$wb['limit_mailforward_error_notint'] = 'O limite de encaminhamentos deve ser um número.'; +$wb['limit_mailcatchall_error_notint'] = 'O limite de contas cata-tudo deve ser um número.'; +$wb['limit_mailrouting_error_notint'] = 'O limite de rotas de e-mail deve ser um número.'; +$wb['limit_mailfilter_error_notint'] = 'O limite de filtros de e-mail deve ser um número.'; +$wb['limit_mailfetchmail_error_notint'] = 'O limite de contas de busca deve ser um número.'; +$wb['limit_mailquota_error_notint'] = 'O limite das cotas de e-mail deve ser um número.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'O limite de filtros anti-spam "lista branca/negra" deve ser um número.'; +$wb['limit_spamfilter_user_error_notint'] = 'O limite de filtros anti-spam por conta de e-mail deve ser um número.'; +$wb['limit_spamfilter_policy_error_notint'] = 'O limite de polÃticas anti-spam deve ser um número.'; +$wb['limit_web_domain_error_notint'] = 'O limite de sites deve ser um número.'; +$wb['limit_web_aliasdomain_error_notint'] = 'O limite de alias de domÃnios de site deve ser um número.'; +$wb['limit_web_subdomain_error_notint'] = 'O limite de subdomÃnios de site deve ser um número.'; +$wb['limit_ftp_user_error_notint'] = 'O limite de usuários ftp deve ser um número.'; +$wb['limit_webdav_user_error_notint'] = 'O limite de usuários webdav deve ser um número.'; +$wb['limit_shell_user_error_notint'] = 'O limite de usuários do shell deve ser um número.'; +$wb['limit_dns_zone_error_notint'] = 'O limite de zonas dns deve ser um número.'; +$wb['limit_dns_slave_zone_error_notint'] = 'O limite de zonas dns secundárias deve ser um número.'; +$wb['limit_dns_record_error_notint'] = 'O limite de registros dns deve ser um número.'; $wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; -$wb['limit_database_error_notint'] = 'Limite de banco de dados deve ser um número.'; -$wb['limit_cron_error_notint'] = 'Limite de tarefas no cron deve ser um número.'; -$wb['limit_cron_error_frequency'] = 'Limite de frequência no cron deve ser um número.'; +$wb['limit_database_error_notint'] = 'O limite de banco de dados deve ser um número.'; +$wb['limit_cron_error_notint'] = 'O limite de tarefas no cron deve ser um número.'; +$wb['limit_cron_error_frequency'] = 'O limite da frequência de execuções no cron deve ser um número.'; $wb['username_error_regex'] = 'O nome do usuário contém caracteres inválidos.'; -$wb['template_master_txt'] = 'Gabarito mestre'; -$wb['template_additional_txt'] = 'Gabarito personalizado'; -$wb['ssh_chroot_txt'] = 'Opções do Chroot SSH'; -$wb['web_php_options_txt'] = 'Opções do PHP'; -$wb['limit_client_error'] = 'Limite de clientes foi alcançado.'; -$wb['limit_client_error_positive_or_unlimited'] = 'Limite de clientes deve ser > 0'; -$wb['limit_web_quota_txt'] = 'Cota de site'; -$wb['limit_traffic_quota_txt'] = 'Cota de tráfego'; -$wb['limit_trafficquota_error_notint'] = 'A cota de tráfego deve ser um número.'; -$wb['customer_no_txt'] = 'Código do cliente.'; -$wb['vat_id_txt'] = 'VAT ID'; -$wb['required_fields_txt'] = '*Campos obrigatórios'; -$wb['limit_mailmailinglist_txt'] = 'Limite de listas de e-mails'; -$wb['limit_mailmailinglist_error_notint'] = 'Limite de listas de e-mails deve ser um número.'; -$wb['limit_webdav_user_txt'] = 'Limite de usuário webdav'; -$wb['limit_webdav_user_error_notint'] = 'Limite de usuários webdav deve ser um número.'; -$wb['limit_backup_txt'] = 'Função de backup disponÃvel'; -$wb['limit_mailaliasdomain_txt'] = 'Limite de apelidos de domÃnio de e-mails'; -$wb['limit_openvz_vm_txt'] = 'Limite de servidores virtuais'; -$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito de servidor virtual'; -$wb['limit_openvz_vm_error_notint'] = 'Limite de servidores virtuais deve ser um número.'; -$wb['web_php_options_notempty'] = 'Nenhuma opção do php selecionada. Selecione ao menos uma opção.'; -$wb['ssh_chroot_notempty'] = 'Nenhuma opção do ssh-chroot selecionada. Selecione ao menos uma opção.'; -$wb['username_error_collision'] = 'O nome do usuário não pode iniciar com a palavra -web- ou -web- seguida de um número.'; +$wb['template_master_txt'] = 'Gabarito Mestre'; +$wb['template_additional_txt'] = 'Gabarito Personalizado'; $wb['add_additional_template_txt'] = 'Adicionar gabarito personalizado'; $wb['delete_additional_template_txt'] = 'Remover gabarito personalizado'; +$wb['ssh_chroot_txt'] = 'Opções SSH-Chroot'; +$wb['web_php_options_txt'] = 'Opções PHP'; $wb['limit_cgi_txt'] = 'CGI disponÃvel'; $wb['limit_ssi_txt'] = 'SSI disponÃvel'; $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'] = 'SuEXEC forced'; +$wb['force_suexec_txt'] = 'Forçar SuEXEC'; $wb['limit_hterror_txt'] = 'Custom error docs disponÃvel'; -$wb['limit_wildcard_txt'] = 'Curingas de subdomÃnios disponÃveis'; +$wb['limit_wildcard_txt'] = 'Curingas de subdomÃnios disponÃvel'; $wb['limit_ssl_txt'] = 'SSL disponÃvel'; -$wb['web_limits_txt'] = 'Limites web'; -$wb['email_limits_txt'] = 'Limites de e-mails'; -$wb['database_limits_txt'] = 'Limites de banco de dados'; -$wb['cron_job_limits_txt'] = 'Limites de tarefas no cron'; -$wb['dns_limits_txt'] = 'Limites de dns'; -$wb['virtualization_limits_txt'] = 'Limites de virtualização'; -$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['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponÃvel'; +$wb['limit_client_error'] = 'O limite de clientes para esta conta foi alcançado.'; +$wb['limit_client_error_positive_or_unlimited'] = 'O número de clientes deve ser > 0 ou -1 (ilimitado)'; +$wb['limit_web_quota_txt'] = 'Cota web'; +$wb['limit_traffic_quota_txt'] = 'Cota de tráfego'; +$wb['limit_trafficquota_error_notint'] = 'Cota de tráfego deve ser um número.'; +$wb['customer_no_txt'] = 'Código do cliente'; +$wb['vat_id_txt'] = 'VAT ID'; +$wb['required_fields_txt'] = '*Campos obrigatórios'; +$wb['limit_openvz_vm_txt'] = 'Limite de máquinas virtuais'; +$wb['limit_openvz_vm_template_id_txt'] = 'Forçar gabarito para máquina virtual'; +$wb['limit_openvz_vm_error_notint'] = 'O limite de máquinas virtuais deve ser um número.'; +$wb['web_php_options_notempty'] = 'Nenhuma opção PHP selecionado. Selecione ao menos uma opção PHP.'; +$wb['ssh_chroot_notempty'] = 'Nenhuma opção SSH chroot selecionada. Selecione ao menos uma opção SSH chroot.'; +$wb['username_error_collision'] = 'O nome de usuário não pode iniciar com -web- ou -web- seguida de um número.'; +$wb['web_limits_txt'] = 'Limite de site'; +$wb['email_limits_txt'] = 'Limites de e-mail'; +$wb['database_limits_txt'] = 'Limite de banco de dados'; +$wb['cron_job_limits_txt'] = 'Limites de tarefa no Cron'; +$wb['dns_limits_txt'] = 'Limites de DNS'; +$wb['virtualization_limits_txt'] = 'Limites de máquinas virtuais'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['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 deixe em branco).'; +$wb['customer_no_error_unique'] = 'O código do cliente deve ser exclusivo e não pode estar está 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['company_id_txt'] = 'ID da empresa'; -$wb['bank_account_number_txt'] = 'Conta corrente'; -$wb['bank_account_owner_txt'] = 'Proprietário'; -$wb['bank_code_txt'] = 'Codigo do banco'; +$wb['paypal_email_txt'] = 'e-Mail PayPal'; +$wb['company_id_txt'] = 'Código da Empresa'; +$wb['bank_account_number_txt'] = 'Conta bancária'; +$wb['bank_account_owner_txt'] = 'Proprietário da conta bancária'; +$wb['bank_code_txt'] = 'Código do banco'; $wb['bank_name_txt'] = 'Nome do banco'; $wb['bank_account_iban_txt'] = 'IBAN'; $wb['bank_account_swift_txt'] = 'BIC/Swift'; -$wb['aps_limits_txt'] = 'Limites de instalações de apps'; -$wb['limit_aps_txt'] = 'Limites de instâncias de apps'; -$wb['limit_aps_error_notint'] = 'Limite de instâncias de apps deve ser um número.'; -$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; +$wb['aps_limits_txt'] = 'Limites de instaladores de APPs'; +$wb['limit_aps_txt'] = 'Limite de instâncias de APPs'; +$wb['limit_aps_error_notint'] = 'O limite de instâncias de APPs deve ser um número.'; +$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundário padrão'; $wb['locked_txt'] = 'Bloqueado'; $wb['canceled_txt'] = 'Cancelado'; $wb['gender_m_txt'] = 'Sr.'; $wb['gender_f_txt'] = 'Sra.'; $wb['gender_txt'] = 'TÃtulo'; -$wb['customer_no_template_txt'] = 'No. do gabarito do cliente'; -$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito contém caracteres inválidos.'; -$wb['customer_no_start_txt'] = 'Valor inicial do código do cliente'; -$wb['customer_no_counter_txt'] = 'Contador de código do cliente'; -$wb['added_by_txt'] = 'Cadastrado por'; -$wb['added_date_txt'] = 'Data do cadastro'; -$wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domÃnio deve ser um número.'; -$wb['limit_domainmodule_txt'] = 'Limites de módulos de domÃnio'; -$wb['client_limits_txt'] = 'Limite de clientes'; -$wb['err_msg_master_tpl_set'] = 'Todas as configurações personalizadas de limites serão ignoradas se um gabarito mestre ou \\"personalizado\\" for selecionado.'; -$wb['btn_save_txt'] = 'Salvar'; -$wb['btn_cancel_txt'] = 'Cancelar'; -$wb['email_error_empty'] = 'e-mail está em branco.'; -$wb['web_servers_txt'] = 'Servidores web'; -$wb['web_servers_placeholder'] = 'Selecionar servidores web'; -$wb['no_web_server_error'] = 'Ao menos um servidor de páginas deve ser selecionado.'; -$wb['web_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de páginas. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['dns_servers_txt'] = 'Servidores dns'; -$wb['dns_servers_placeholder'] = 'Selecione os servidores dns'; -$wb['no_dns_server_error'] = 'Ao menos um servidor dns deve ser selecionado.'; -$wb['dns_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor dns. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['db_servers_txt'] = 'Servidores de banco de dados'; -$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados.'; +$wb['web_servers_txt'] = 'Servidores Web'; +$wb['web_servers_placeholder'] = 'Selecione o(s) servidor(es) web'; +$wb['no_web_server_error'] = 'Ao menos um servidor web deve ser selecionado.'; +$wb['web_servers_used'] = 'O servidor web que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.'; +$wb['dns_servers_txt'] = 'Servidor DNS'; +$wb['dns_servers_placeholder'] = 'Selecione os servidores DNS'; +$wb['no_dns_server_error'] = 'Ao menos um servidor DNS deve ser selecionado.'; +$wb['dns_servers_used'] = 'O servidor DNS que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.'; +$wb['db_servers_txt'] = 'Servidor de banco de dados'; +$wb['db_servers_placeholder'] = 'Selecione os servidores de banco de dados'; $wb['no_db_server_error'] = 'Ao menos um servidor de banco de dados deve ser selecionado.'; -$wb['db_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de banco de dados. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['mail_servers_txt'] = 'Servidores de e-mails'; -$wb['mail_servers_placeholder'] = 'Selecionar servidores de e-mails'; +$wb['db_servers_used'] = 'O servidor de banco de dados que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.'; +$wb['mail_servers_txt'] = 'Servidores de e-mail'; +$wb['mail_servers_placeholder'] = 'Selecione os servidores de e-mail'; $wb['no_mail_server_error'] = 'Ao menos um servidor de e-mail deve ser selecionado.'; -$wb['mail_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor de e-mails. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['xmpp_limits_txt'] = 'Limites XMPP'; -$wb['xmpp_servers_txt'] = 'Servidores XMPP'; -$wb['xmpp_servers_placeholder'] = 'Selecione os servidores XMPP'; -$wb['no_xmpp_server_error'] = 'Ao menos um servidor XMPP deve ser selecionado.'; -$wb['xmpp_servers_used'] = 'O servidor que você está tentando remover para este cliente é utilizado como um servidor xmpp. Certifique-se de que este servidor não é usado por este cliente antes de removê-lo.'; -$wb['limit_xmpp_domain_error_notint'] = 'Limite de domÃnios xmpp deve ser um número.'; -$wb['limit_xmpp_user_error_notint'] = 'Limite de usuários xmpp deve ser um número.'; +$wb['mail_servers_used'] = 'O servidor de e-mails que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.'; +$wb['customer_no_template_txt'] = 'Código do gabarito de clientes'; +$wb['customer_no_template_error_regex_txt'] = 'O código de gabarito de clientes possui caracteres inválidos.'; +$wb['customer_no_start_txt'] = 'Iniciar código de clientes em'; +$wb['customer_no_counter_txt'] = 'Contador de código do cliente'; +$wb['xmpp_limits_txt'] = 'Limites xmpp'; +$wb['xmpp_servers_txt'] = 'Servidores xmpp'; +$wb['xmpp_servers_placeholder'] = 'Selecione os servidores xmpp'; +$wb['no_xmpp_server_error'] = 'Ao menos um servidor xmpp deve ser selecionado.'; +$wb['xmpp_servers_used'] = 'O servidor xmpp que você está tentando remover para este cliente é usado pelo mesmo. Certifique-se que este servidor não esteja em uso para este cliente antes de removê-lo.'; +$wb['limit_xmpp_domain_error_notint'] = 'O limite de domÃnios xmpp deve ser um número.'; +$wb['limit_xmpp_user_error_notint'] = 'O limite de usuários xmpp deve ser um número.'; $wb['limit_xmpp_domain_txt'] = 'Limite de domÃnios xmpp'; $wb['limit_xmpp_user_txt'] = 'Limite de usuários xmpp'; -$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário disponÃvel'; +$wb['limit_xmpp_muc_txt'] = 'Chat multiusuário (MUC) disponÃvel'; $wb['limit_xmpp_pastebin_txt'] = 'Pastebin para MUC disponÃvel'; $wb['limit_xmpp_httparchive_txt'] = 'Arquivo HTTP para MUC disponÃvel'; $wb['limit_xmpp_anon_txt'] = 'Host anônimo disponÃvel'; $wb['limit_xmpp_vjud_txt'] = 'Diretório de usuário VJUD disponÃvel'; -$wb['limit_xmpp_proxy_txt'] = 'Proxy bytestream disponÃvel'; +$wb['limit_xmpp_proxy_txt'] = 'Proxy Bytestream disponÃvel'; $wb['limit_xmpp_status_txt'] = 'Estado do host disponÃvel'; -$wb['invalid_vat_id'] = 'O VAT ID é é inválido.'; -$wb['limit_database_user_txt'] = 'Limite de usuários de banco de dados'; -$wb['limit_database_user_error_notint'] = 'Limite de usuários de banco de dados deve ser um número.'; -$wb['limit_database_quota_txt'] = 'Cota para banco de dados'; -$wb['limit_database_quota_error_notint'] = 'A cota para banco de dados deve ser um número.'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt disponÃvel'; -$wb['limit_directive_snippets_txt'] = 'Exibir seleção das configurações do servidor de páginas'; -$wb['password_click_to_set_txt'] = 'Configurar'; +$wb['added_by_txt'] = 'Cadastrado por'; +$wb['added_date_txt'] = 'Data do cadastro'; +$wb['limit_domainmodule_error_notint'] = 'Limite de módulos de domÃnio deve ser um número.'; +$wb['limit_domainmodule_txt'] = 'Limite de módulos de domÃnio'; +$wb['client_limits_txt'] = 'Limite de clientes'; +$wb['err_msg_master_tpl_set'] = 'Todas as configurações de limites serão ignoradas se qualquer gabarito mestre ou personalizado for selecionado.'; +$wb['invalid_vat_id'] = 'O ID do VAT é inválido.'; +$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_cancel_txt'] = 'Cancelar'; +$wb['email_error_empty'] = 'O endereço de e-mail está em branco.'; +$wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do servidor web'; +$wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.'; +$wb['limit_database_quota_txt'] = 'Cota do banco de dados'; +$wb['limit_database_quota_error_notint'] = 'A cota do banco de dados deve ser um número.'; $wb['Limits'] = 'Limites'; ?> diff --git a/interface/web/client/lib/lang/br_resellers_list.lng b/interface/web/client/lib/lang/br_resellers_list.lng index 5a64358af9..1f67e7f593 100644 --- a/interface/web/client/lib/lang/br_resellers_list.lng +++ b/interface/web/client/lib/lang/br_resellers_list.lng @@ -6,6 +6,6 @@ $wb['contact_name_txt'] = 'Contato'; $wb['city_txt'] = 'Cidade'; $wb['country_txt'] = 'PaÃs'; $wb['add_new_record_txt'] = 'Adicionar nova revenda'; -$wb['customer_no_txt'] = 'Código do Cliente'; +$wb['customer_no_txt'] = 'Código do cliente'; $wb['username_txt'] = 'Usuário'; ?> diff --git a/interface/web/client/lib/lang/tr.lng b/interface/web/client/lib/lang/tr.lng index 0f3df4d7a3..cc2e8aa022 100644 --- a/interface/web/client/lib/lang/tr.lng +++ b/interface/web/client/lib/lang/tr.lng @@ -16,14 +16,15 @@ $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil'; $wb['Messaging'] = 'Ä°letiÅŸim'; $wb['Send email'] = 'E-posta Gönderimi'; $wb['Edit Client Circle'] = 'Müşteri Grubu Düzenleme'; -$wb['Domains'] = 'Alan Adları'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['Domains'] = 'Etki Alanları'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['client_txt'] = 'Müşteri'; -$wb['error_domain_in mailuse'] = 'Bu alan adı e-posta alan adı olarak kullanıldığından silinemez'; -$wb['error_domain_in webuse'] = 'Bu alan adı web alan adı olarak kullanıldığından silinemez'; -$wb['error_client_can_not_add_domain'] = 'Yeni bir alan adı ekleyemezsiniz'; +$wb['error_domain_in dnsuse'] = 'Bu etki alanı birincil DNS bölgesi olarak kullanıldığından silinemez'; +$wb['error_domain_in dnsslaveuse'] = 'Bu etki alanı ikincil DNS bölgesi olarak kullanıldığından silinemez'; +$wb['error_domain_in mailuse'] = 'Bu etki alanı e-posta etki alanı olarak kullanıldığından silinemez'; +$wb['error_domain_in webuse'] = 'Bu etki alanı web etki alanı olarak kullanıldığından silinemez'; +$wb['error_client_can_not_add_domain'] = 'Yeni bir etki alanı ekleyemezsiniz'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['error_client_group_id_empty'] = 'Bir müşteri seçmelisiniz<br>'; -$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'] = 'Email-Templates'; +$wb['Email-Templates'] = 'E-posta Kalıpları'; ?> diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index 765d9f1980..f071170966 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -1,24 +1,26 @@ <?php -$wb['limit_maildomain_txt'] = 'En Fazla E-posta Alan Adı Sayısı'; -$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı'; -$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı'; +$wb['limit_maildomain_txt'] = 'En Fazla E-posta Etki Alanı Sayısı'; +$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı'; +$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı'; $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı'; -$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; +$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirme Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; -$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı'; -$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası'; -$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı'; -$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kullanıcısı Sayısı'; -$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kuralı Sayısı'; -$wb['default_mailserver_txt'] = 'Varsayılan Posta Sunucusu'; -$wb['company_name_txt'] = 'Kurum Adı'; +$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; +$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; +$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; +$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kullanıcısı Sayısı'; +$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kuralı Sayısı'; +$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; +$wb['company_name_txt'] = 'KuruluÅŸ Adı'; +$wb['contact_firstname_txt'] = 'Ä°lgili Adı'; $wb['contact_name_txt'] = 'Ä°lgili Adı'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['language_txt'] = 'Dil'; $wb['usertheme_txt'] = 'Tema'; $wb['street_txt'] = 'Adres'; @@ -33,8 +35,8 @@ $wb['email_txt'] = 'E-posta'; $wb['internet_txt'] = 'Ä°nternet'; $wb['icq_txt'] = 'ICQ'; $wb['notes_txt'] = 'Notlar'; -$wb['company_txt'] = 'Kurum'; -$wb['title_txt'] = 'Ãœnvan'; +$wb['company_txt'] = 'KuruluÅŸ'; +$wb['title_txt'] = 'Unvan'; $wb['firstname_txt'] = 'Ad'; $wb['surname_txt'] = 'Soyad'; $wb['limit_domain_txt'] = 'limit_domain'; @@ -42,16 +44,16 @@ $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı'; $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı'; -$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi Sayısı (chroot ve tam Ä°nternet adresi uygulama)'; +$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü Sayısı (chroot ve tam Ä°nternet adresi uygulama)'; $wb['limit_cron_frequency_txt'] = 'Ä°ki Çalıştırma Arasındaki Süre'; $wb['ip_address_txt'] = 'ip_address'; $wb['limit_client_error_notint'] = 'Alt müşteri sınırı bir sayı olmalıdır.'; $wb['firstname_error_empty'] = 'Ad boÅŸ olamaz.'; $wb['contact_error_empty'] = 'Ä°lgili adı boÅŸ olamaz.'; $wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; -$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı'; -$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; -$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı'; +$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı'; +$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; +$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı'; $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcısı Sayısı'; $wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu'; $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı'; @@ -59,32 +61,35 @@ $wb['limit_dns_slave_zone_txt'] = 'En Fazla Ä°kincil DNS Bölgesi Sayısı'; $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı'; $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı'; $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı'; +$wb['limit_backup_txt'] = 'Yedekleme ÖzelliÄŸi Kullanılsın'; $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı'; $wb['username_error_empty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.'; -$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.'; -$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.'; +$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.'; $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.'; -$wb['limit_mailaliasdomain_error_notint'] = 'E-posta takma alan adı sınırı bir sayı olmalıdır.'; +$wb['limit_mailaliasdomain_error_notint'] = 'E-posta takma etki alanı sınırı bir sayı olmalıdır.'; $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; $wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcısı sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kuralı sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcısı sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kuralı sınırı bir sayı olmalıdır.'; $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.'; -$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan adı sınırı bir sayı olmalıdır.'; +$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.'; $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcısı sınırı bir sayı olmalıdır.'; $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcısı sınırı bir sayı olmalıdır.'; $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcısı sınırı bir sayı olmalıdır.'; -$wb['limit_dns_zone_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_dns_zone_error_notint'] = 'Birincil DNS kaydı sınırı bir sayı olmalıdır.'; $wb['limit_dns_slave_zone_error_notint'] = 'Ä°kincil DNS bölgesi sınırı bir sayı olmalıdır.'; +$wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.'; $wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; +$wb['limit_database_txt'] = 'Veritabanı Sayısı'; $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_notint'] = 'Zamanlanmış Görev sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_frequency'] = 'Zamanlanmış Görev sıklığı sınırı bir sayı olmalıdır.'; @@ -96,15 +101,16 @@ $wb['add_additional_template_txt'] = 'Ek Kalıbı Ekle'; $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil'; $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları'; $wb['web_php_options_txt'] = 'PHP Ayarları'; -$wb['limit_cgi_txt'] = 'CGI Kullanılabilir'; -$wb['limit_ssi_txt'] = 'SSI Kullanılabilir'; -$wb['limit_perl_txt'] = 'Perl Kullanılabilir'; -$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir'; -$wb['limit_python_txt'] = 'Python Kullanılabilir'; -$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış'; -$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir'; -$wb['limit_wildcard_txt'] = 'Genel Alt Alan Adı Kullanılabilir'; -$wb['limit_ssl_txt'] = 'SSL Kullanılabilir'; +$wb['limit_cgi_txt'] = 'CGI Kullanılsın'; +$wb['limit_ssi_txt'] = 'SSI Kullanılsın'; +$wb['limit_perl_txt'] = 'Perl Kullanılsın'; +$wb['limit_ruby_txt'] = 'Ruby Kullanılsın'; +$wb['limit_python_txt'] = 'Python Kullanılsın'; +$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın'; +$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın'; +$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın'; +$wb['limit_ssl_txt'] = 'SSL Kullanılsın'; +$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın'; $wb['limit_client_error'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla müşteri sınırına ulaÅŸtınız.'; $wb['limit_web_quota_txt'] = 'Web Kotası'; $wb['limit_traffic_quota_txt'] = 'Trafik Kotası'; @@ -127,11 +133,12 @@ $wb['bank_account_iban_txt'] = 'IBAN'; $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['web_limits_txt'] = 'Web Sınırları'; $wb['email_limits_txt'] = 'E-posta Sınırları'; +$wb['xmpp_limits_txt'] = 'XMPP Sınırları'; $wb['database_limits_txt'] = 'Veritabanı Sınırları'; $wb['cron_job_limits_txt'] = 'Zamanlanmış Görev Sınırları'; $wb['dns_limits_txt'] = 'DNS Sınırları'; $wb['virtualization_limits_txt'] = 'SanallaÅŸtırma Sınırları'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; @@ -139,66 +146,61 @@ $wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; $wb['customer_no_error_unique'] = 'Müşteri numarası eÅŸsiz (ya da boÅŸ) olmalıdır.'; $wb['paypal_email_error_isemail'] = 'Lütfen geçerli bir PayPal e-posta adresi yazın.'; $wb['paypal_email_txt'] = 'PayPal E-posta Adresi'; -$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; +$wb['err_msg_master_tpl_set'] = '"Özel" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yok sayılır.'; $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları'; $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı'; $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.'; $wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; $wb['locked_txt'] = 'Kilitli<br/>(tüm web vb. devre dışı)'; $wb['canceled_txt'] = 'Ä°ptal<br/>(müşteri oturumu devre dışı)'; -$wb['gender_txt'] = 'Ãœnvan'; +$wb['gender_txt'] = 'Unvan'; $wb['gender_m_txt'] = 'Bay'; $wb['gender_f_txt'] = 'Bayan'; +$wb['web_servers_txt'] = 'Web Sunucuları'; +$wb['web_servers_placeholder'] = 'Web Sunucularını Seçin'; +$wb['no_web_server_error'] = 'En az bir web sunucusu seçilmelidir.'; +$wb['web_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir web sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['dns_servers_txt'] = 'DNS Sunucular'; +$wb['dns_servers_placeholder'] = 'DNS Sunucuları Seçin'; +$wb['no_dns_server_error'] = 'En az bir DNS sunucusu seçilmelidir.'; +$wb['dns_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir DNS sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun'; +$wb['db_servers_txt'] = 'Veritabanı Sunucuları'; +$wb['db_servers_placeholder'] = 'Veritabanı Sunucularını Seçin'; +$wb['no_db_server_error'] = 'En az bir veritabanı sunucusu seçilmelidir.'; +$wb['db_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir veritabanı sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['mail_servers_txt'] = 'E-posta Sunucuları'; +$wb['mail_servers_placeholder'] = 'E-posta Sunucularını Seçin'; +$wb['no_mail_server_error'] = 'En az bir e-posta sunucusu seçilmelidir.'; +$wb['mail_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir e-posta sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; + +$wb['xmpp_servers_txt'] = 'XMPP Sunucular'; +$wb['xmpp_servers_placeholder'] = 'XMPP Sunucuları Seçin'; +$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.'; +$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_domain_txt'] = 'En Fazla XMPP Etki Alanı Sayısı'; +$wb['limit_xmpp_user_txt'] = 'En Fazla XMPP Hesabı Sayısı'; +$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın'; +$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın'; +$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP ArÅŸivi Kullanılsın'; +$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın'; +$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın'; +$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın'; +$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın'; $wb['added_by_txt'] = 'Ekleyen'; $wb['added_date_txt'] = 'EklendiÄŸi Tarih'; $wb['parent_client_id_txt'] = 'Bayi Müşterisi'; -$wb['none_txt'] = 'yok'; -$wb['contact_firstname_txt'] = 'Contact firstname'; -$wb['password_click_to_set_txt'] = 'Click to set'; -$wb['limit_backup_txt'] = 'Backupfunction available'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; -$wb['xmpp_limits_txt'] = 'XMPP Limits'; -$wb['web_servers_txt'] = 'Webservers'; -$wb['web_servers_placeholder'] = 'Select webservers'; -$wb['no_web_server_error'] = 'At least one webserver must be selected.'; -$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before you remove it.'; -$wb['dns_servers_txt'] = 'DNS servers'; -$wb['dns_servers_placeholder'] = 'Select DNS servers'; -$wb['no_dns_server_error'] = 'At least one DNS server must be selected.'; -$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before you remove it.'; -$wb['db_servers_txt'] = 'Database servers'; -$wb['db_servers_placeholder'] = 'Select database servers'; -$wb['no_db_server_error'] = 'At least one Database server must be selected.'; -$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before you remove it.'; -$wb['mail_servers_txt'] = 'Mailservers'; -$wb['mail_servers_placeholder'] = 'Select mailservers'; -$wb['no_mail_server_error'] = 'At least one mailserver must be selected.'; -$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before you remove it.'; -$wb['xmpp_servers_txt'] = 'XMPP Servers'; -$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers'; -$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.'; -$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.'; -$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.'; -$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.'; -$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains'; -$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts'; -$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available'; -$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available'; -$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available'; -$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_database_quota_txt'] = 'Database quota'; -$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; -$wb['limit_database_user_txt'] = 'Max. Database users'; -$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.'; -$wb['reseller_txt'] = 'Reseller'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['invalid_vat_id'] = 'The VAT ID is invalid.'; -$wb['email_error_empty'] = 'Email is empty'; -$wb['limit_directive_snippets_txt'] = 'Show web server config selection'; -$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; -$wb['Limits'] = 'Limits'; +$wb['none_txt'] = 'Yok'; +$wb['limit_database_quota_txt'] = 'Veritabanı Kotası'; +$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.'; +$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı'; +$wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.'; +$wb['reseller_txt'] = 'Bayi'; +$wb['btn_save_txt'] = 'Kaydet'; +$wb['btn_cancel_txt'] = 'Ä°ptal'; +$wb['invalid_vat_id'] = 'Vergi numarası geçersiz.'; +$wb['email_error_empty'] = 'E-posta boÅŸ olamaz.'; +$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin'; +$wb['Limits'] = 'Sınırlar'; ?> 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 885e2afc86..2b2994c557 100644 --- a/interface/web/client/lib/lang/tr_client_message_template.lng +++ b/interface/web/client/lib/lang/tr_client_message_template.lng @@ -1,13 +1,13 @@ <?php -$wb['template_type_txt'] = 'E-posta tipi'; -$wb['template_name_txt'] = 'Kalıp adı'; +$wb['template_type_txt'] = 'E-posta Türü'; +$wb['template_name_txt'] = 'Kalıp Adı'; $wb['subject_txt'] = 'Konu'; $wb['message_txt'] = 'Ä°leti'; -$wb['Email template'] = 'E-posta kalıbı'; +$wb['Email template'] = 'E-posta Kalıbı'; $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'; +$wb['duplicate_welcome_error'] = 'Yalnız bir varsayılan hoÅŸgeldiniz e-postası kalıbı bulunabilir. Lütfen yeni bir tema eklemek yerine var olan temayı düzenlemeyi deneyin.'; +$wb['subject_error_empty'] = 'Konu boÅŸ olamaz'; +$wb['message_error_empty'] = 'Ä°leti boÅŸ olamaz'; ?> diff --git a/interface/web/client/lib/lang/tr_client_message_template_list.lng b/interface/web/client/lib/lang/tr_client_message_template_list.lng index d0f50c7fea..fb7fd944fe 100644 --- a/interface/web/client/lib/lang/tr_client_message_template_list.lng +++ b/interface/web/client/lib/lang/tr_client_message_template_list.lng @@ -1,5 +1,5 @@ <?php $wb['list_head_txt'] = 'E-posta Kalıpları'; -$wb['template_type_txt'] = 'Ä°leti grubu'; -$wb['template_name_txt'] = 'Kalıp adı'; +$wb['template_type_txt'] = 'Ä°leti Grubu'; +$wb['template_name_txt'] = 'Kalıp Adı'; ?> diff --git a/interface/web/client/lib/lang/tr_client_template.lng b/interface/web/client/lib/lang/tr_client_template.lng index da9f19f794..3091176448 100644 --- a/interface/web/client/lib/lang/tr_client_template.lng +++ b/interface/web/client/lib/lang/tr_client_template.lng @@ -1,61 +1,68 @@ <?php -$wb['template_type_txt'] = 'Kalıp Tipi'; +$wb['template_type_txt'] = 'Kalıp Türü'; $wb['template_name_txt'] = 'Kalıp Adı'; -$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalı.'; -$wb['limit_maildomain_txt'] = 'En Fazla E-posta Alan Adı Sayısı'; -$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı'; +$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalıdır.'; +$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; +$wb['limit_maildomain_txt'] = 'En Fazla E-posta Etki Alanı Sayısı'; +$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı'; $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı'; -$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; -$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı'; +$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; +$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; -$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı'; -$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası'; -$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı'; -$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kullanıcı Sayısı'; -$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Süzgeci Kuralı Sayısı'; +$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; +$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; +$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; +$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kullanıcı Sayısı'; +$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Süzgeci Kuralı Sayısı'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı'; $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı'; -$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi (chroot ve tam Ä°nternet adresi uygulanan)'; +$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü (chroot ve tam Ä°nternet adresi uygulanan)'; $wb['limit_cron_frequency_txt'] = 'Ä°ki çalıştırma arasındaki süre'; -$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı'; -$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; -$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı'; +$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; +$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı'; +$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; +$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı'; $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcısı Sayısı'; +$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu'; $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı'; -$wb['limit_dns_slave_zone_txt'] = 'En Fazla Ä°kinci DNS Bölgesi Sayısı'; +$wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; +$wb['limit_dns_slave_zone_txt'] = 'En Fazla Ä°kincil DNS Bölgesi Sayısı'; $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı'; $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı'; $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı'; +$wb['limit_backup_txt'] = 'Yedekleme ÖzelliÄŸi Kullanılsın'; $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı'; -$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.'; -$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.'; +$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.'; $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.'; -$wb['limit_mailaliasdomain_error_notint'] = 'Takma e-posta alan adı sınırı bir sayı olmalıdır.'; +$wb['limit_mailaliasdomain_error_notint'] = 'Takma e-posta etki alanı sınırı bir sayı olmalıdır.'; $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirme sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; -$wb['limit_mailfetchmail_error_notint'] = 'Posta alma sınırı bir sayı olmalıdır.'; +$wb['limit_mailfetchmail_error_notint'] = 'E-posta alma sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kotası sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcı sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kural sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti süzgeci beyaz/kara liste sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcı sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kural sınırı bir sayı olmalıdır.'; $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.'; -$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan sınırı bir sayı olmalıdır.'; +$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.'; $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcı sınırı bir sayı olmalıdır.'; $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcı sınırı bir sayı olmalıdır.'; $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcı sınırı bir sayı olmalıdır.'; -$wb['limit_dns_zone_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_dns_zone_error_notint'] = 'Birincil DNS kaydı sınırı bir sayı olmalıdır.'; $wb['limit_dns_slave_zone_error_notint'] = 'Ä°kinci DNS bölgesi sınırı bir sayı olmalıdır.'; $wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.'; +$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; +$wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı'; $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_notint'] = 'Zamanlanmış Görev sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_frequency'] = 'Zamanlanmış Görev sıklığı sınırı bir sayı olmalıdır.'; @@ -69,15 +76,16 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Dayatılacak Sanal Sunucu Kalıbı'; $wb['limit_openvz_vm_error_notint'] = 'Sanal sunucu sınırı bir sayı olmalıdır.'; $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları'; $wb['web_php_options_txt'] = 'PHP Ayarları'; -$wb['limit_cgi_txt'] = 'CGI Kullanılabilir'; -$wb['limit_ssi_txt'] = 'SSI Kullanılabilir'; -$wb['limit_perl_txt'] = 'Perl Kullanılabilir'; -$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir'; -$wb['limit_python_txt'] = 'Python Kullanılabilir'; -$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış'; -$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir'; -$wb['limit_wildcard_txt'] = 'Genel Alt Alan Adı Kullanılabilir'; -$wb['limit_ssl_txt'] = 'SSL Kullanılabilir'; +$wb['limit_cgi_txt'] = 'CGI Kullanılsın'; +$wb['limit_ssi_txt'] = 'SSI Kullanılsın'; +$wb['limit_perl_txt'] = 'Perl Kullanılsın'; +$wb['limit_ruby_txt'] = 'Ruby Kullanılsın'; +$wb['limit_python_txt'] = 'Python Kullanılsın'; +$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın'; +$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın'; +$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın'; +$wb['limit_ssl_txt'] = 'SSL Kullanılsın'; +$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın'; $wb['web_limits_txt'] = 'Web Sınırları'; $wb['email_limits_txt'] = 'E-posta Sınırları'; $wb['database_limits_txt'] = 'Veritabanı Sınırları'; @@ -87,38 +95,33 @@ $wb['virtualization_limits_txt'] = 'SanallaÅŸtırma Sınırları'; $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları'; $wb['limit_aps_txt'] = 'En fazla APS kopyası sayısı'; $wb['limit_aps_error_notint'] = 'APS kopyaları sınırı bir sayı olmalıdır.'; -$wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı'; +$wb['limit_domainmodule_txt'] = 'Etki Alanı Modülü Sınırı'; $wb['client_limits_txt'] = 'Müşteri Sınırları'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['limit_backup_txt'] = 'Backupfunction available'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; -$wb['limit_database_quota_txt'] = 'Database quota'; -$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; -$wb['xmpp_limits_txt'] = 'XMPP Limits'; -$wb['xmpp_servers_txt'] = 'XMPP Servers'; -$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers'; -$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.'; -$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.'; -$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.'; -$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.'; -$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains'; -$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts'; -$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available'; -$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available'; -$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available'; -$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['dns_servers_txt'] = 'DNS servers'; -$wb['limit_directive_snippets_txt'] = 'Show web server config selection'; -$wb['limit_database_user_txt'] = 'Max. Database users'; -$wb['web_servers_txt'] = 'Webservers'; -$wb['db_servers_txt'] = 'Database servers'; -$wb['mail_servers_txt'] = 'Mailservers'; -$wb['Limits'] = 'Limits'; +$wb['limit_database_quota_txt'] = 'Veritabanı Kotası'; +$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı deÄŸeri bir sayı olmalıdır.'; +$wb['xmpp_limits_txt'] = 'XMPP Sınırları'; +$wb['xmpp_servers_txt'] = 'XMPP Sunucuları'; +$wb['xmpp_servers_placeholder'] = 'XMPP Sunucularını Seçin'; +$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.'; +$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_domain_txt'] = 'En fazla XMPP etki alanı sayısı'; +$wb['limit_xmpp_user_txt'] = 'En fazla XMPP hesabı sayısı'; +$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın'; +$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın'; +$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP ArÅŸivi Kullanılsın'; +$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın'; +$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın'; +$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın'; +$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın'; +$wb['dns_servers_txt'] = 'DNS Sunucular'; +$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin'; +$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı'; +$wb['web_servers_txt'] = 'Web Sunucuları'; +$wb['db_servers_txt'] = 'Veritabanı Sunucuları'; +$wb['xmpp_servers_txt'] = 'XMPP Sunucuları'; +$wb['db_servers_txt'] = 'Veritabanı Sunucuları'; +$wb['mail_servers_txt'] = 'E-posta Sunucuları'; +$wb['Limits'] = 'Sınırlar'; ?> diff --git a/interface/web/client/lib/lang/tr_client_template_list.lng b/interface/web/client/lib/lang/tr_client_template_list.lng index fbe35efc9e..cab3f906a4 100644 --- a/interface/web/client/lib/lang/tr_client_template_list.lng +++ b/interface/web/client/lib/lang/tr_client_template_list.lng @@ -1,7 +1,7 @@ <?php $wb['list_head_txt'] = 'Müşteri ve Bayi Kalıpları'; -$wb['template_type_txt'] = 'Tip'; -$wb['template_name_txt'] = 'Kalıp adı'; -$wb['template_id_txt'] = 'Kalıp kodu'; -$wb['sys_groupid_txt'] = 'Reseller'; +$wb['template_type_txt'] = 'Tür'; +$wb['template_name_txt'] = 'Kalıp Adı'; +$wb['template_id_txt'] = 'Kalıp Kodu'; +$wb['sys_groupid_txt'] = 'Bayi'; ?> diff --git a/interface/web/client/lib/lang/tr_clients_list.lng b/interface/web/client/lib/lang/tr_clients_list.lng index d59411a3d1..8b13f1c81b 100644 --- a/interface/web/client/lib/lang/tr_clients_list.lng +++ b/interface/web/client/lib/lang/tr_clients_list.lng @@ -1,14 +1,14 @@ <?php $wb['list_head_txt'] = 'Müşteriler'; $wb['client_id_txt'] = 'Kod'; -$wb['company_name_txt'] = 'Kurum Adı'; +$wb['company_name_txt'] = 'KuruluÅŸ Adı'; $wb['contact_name_txt'] = 'Ä°lgili Adı'; $wb['username_txt'] = 'Kullanıcı Adı'; $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'; +$wb['locked_txt'] = 'Kilitli'; +$wb['yes_txt'] = 'Evet'; +$wb['no_txt'] = 'Hayır'; ?> diff --git a/interface/web/client/lib/lang/tr_domain.lng b/interface/web/client/lib/lang/tr_domain.lng index ba5dab700d..d0b4e228da 100644 --- a/interface/web/client/lib/lang/tr_domain.lng +++ b/interface/web/client/lib/lang/tr_domain.lng @@ -1,6 +1,6 @@ <?php -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz'; -$wb['domain_error_unique'] = 'Aynı alan adı zaten var'; -$wb['domain_error_regex'] = 'Bu alan adına izin verilmiyor'; -$wb['Domain'] = 'Alan Adı'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz'; +$wb['domain_error_unique'] = 'Aynı etki alanı zaten var'; +$wb['domain_error_regex'] = 'Bu etki alanına izin verilmiyor'; +$wb['Domain'] = 'Etki Alanı'; ?> diff --git a/interface/web/client/lib/lang/tr_domain_list.lng b/interface/web/client/lib/lang/tr_domain_list.lng index d422ef3d5d..8b6f75be84 100644 --- a/interface/web/client/lib/lang/tr_domain_list.lng +++ b/interface/web/client/lib/lang/tr_domain_list.lng @@ -1,6 +1,6 @@ <?php -$wb['list_head_txt'] = 'Alan Adları'; -$wb['add_new_record_txt'] = 'Alan Adı Ekle'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['list_head_txt'] = 'Etki Alanları'; +$wb['add_new_record_txt'] = 'Etki Alanı Ekle'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['user_txt'] = 'Müşteri'; ?> diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index 4906a894c0..e042301400 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -1,28 +1,30 @@ <?php -$wb['limit_maildomain_txt'] = 'En Fazla Alan Adı Sayısı'; -$wb['limit_mailmailinglist_txt'] = 'En Fazla Posta Listesi Sayısı'; -$wb['limit_mailbox_txt'] = 'En Fazla Posta Kutusu Sayısı'; +$wb['limit_maildomain_txt'] = 'En Fazla Etki Alanı Sayısı'; +$wb['limit_mailmailinglist_txt'] = 'En Fazla E-posta Listesi Sayısı'; +$wb['limit_mailbox_txt'] = 'En Fazla E-posta Kutusu Sayısı'; $wb['limit_mailalias_txt'] = 'En Fazla Takma E-posta Sayısı'; -$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; +$wb['limit_mailaliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; $wb['limit_mailforward_txt'] = 'En Fazla E-posta Yönlendirici Sayısı'; $wb['limit_mailcatchall_txt'] = 'En Fazla E-posta Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'En Fazla E-posta Yöneltici Sayısı'; $wb['limit_mailfilter_txt'] = 'En Fazla E-posta Süzgeci Sayısı'; -$wb['limit_fetchmail_txt'] = 'En Fazla Posta Alma Hesabı Sayısı'; -$wb['limit_mailquota_txt'] = 'Posta Kutusu Kotası'; -$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Posta Beyaz/Kara Liste Süzgeci Sayısı'; -$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Posta Kullanıcısı Sayısı'; -$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Posta Kuralı Sayısı'; -$wb['default_mailserver_txt'] = 'Varsayılan Posta Sunucusu'; -$wb['company_name_txt'] = 'Kurum Adı'; +$wb['limit_fetchmail_txt'] = 'En Fazla E-posta Alma Hesabı Sayısı'; +$wb['limit_mailquota_txt'] = 'E-posta Kutusu Kotası'; +$wb['limit_spamfilter_wblist_txt'] = 'En Fazla Önemsiz Ä°leti Beyaz/Kara Liste Süzgeci Sayısı'; +$wb['limit_spamfilter_user_txt'] = 'En Fazla Önemsiz Ä°leti Kullanıcısı Sayısı'; +$wb['limit_spamfilter_policy_txt'] = 'En Fazla Önemsiz Ä°leti Kuralı Sayısı'; +$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; +$wb['company_name_txt'] = 'KuruluÅŸ Adı'; +$wb['contact_firstname_txt'] = 'Ä°lgili Adı'; $wb['contact_name_txt'] = 'Ä°lgili Adı'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['language_txt'] = 'Dil'; $wb['usertheme_txt'] = 'Tema'; $wb['street_txt'] = 'Adres'; -$wb['zip_txt'] = 'Posta kodu'; +$wb['zip_txt'] = 'Posta Kodu'; $wb['city_txt'] = 'Ä°lçe'; $wb['state_txt'] = 'Ä°l'; $wb['country_txt'] = 'Ãœlke'; @@ -33,25 +35,26 @@ $wb['email_txt'] = 'E-posta'; $wb['internet_txt'] = 'Ä°nternet'; $wb['icq_txt'] = 'ICQ'; $wb['notes_txt'] = 'Notlar'; -$wb['company_txt'] = 'Kurum'; -$wb['title_txt'] = 'Ãœnvan'; +$wb['company_txt'] = 'KuruluÅŸ'; +$wb['title_txt'] = 'Unvan'; $wb['firstname_txt'] = 'Adı'; $wb['surname_txt'] = 'Soyadı'; $wb['limit_domain_txt'] = 'limit_domain'; $wb['limit_subdomain_txt'] = 'limit_subdomain'; $wb['limit_webquota_txt'] = 'limit_webquota'; $wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı'; +$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı'; $wb['limit_cron_txt'] = 'En Fazla Zamanlanmış Görev Sayısı'; -$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Tipi (chroot ve tam Ä°nternet adresi uygulaması)'; +$wb['limit_cron_type_txt'] = 'En Fazla Zamanlanmış Görev Türü (chroot ve tam Ä°nternet adresi uygulaması)'; $wb['limit_cron_frequency_txt'] = 'Ä°ki Çalıştırma Arasındaki Süre'; $wb['ip_address_txt'] = 'ip_adresi'; $wb['limit_client_error_notint'] = 'Alt müşteri sınırı bir sayı olmalıdır.'; $wb['firstname_error_empty'] = 'Adı boÅŸ olamaz.'; $wb['contact_error_empty'] = 'Ä°lgili adı boÅŸ olamaz.'; $wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; -$wb['limit_web_domain_txt'] = 'En Fazla Alan Adı Sayısı'; -$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Alan Adı Sayısı'; -$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Alan Adı Sayısı'; +$wb['limit_web_domain_txt'] = 'En Fazla Etki Alanı Sayısı'; +$wb['limit_web_aliasdomain_txt'] = 'En Fazla Takma Etki Alanı Sayısı'; +$wb['limit_web_subdomain_txt'] = 'En Fazla Alt Etki Alanı Sayısı'; $wb['limit_ftp_user_txt'] = 'En Fazla FTP Kullanıcı Sayısı'; $wb['default_dnsserver_txt'] = 'Varsayılan DNS Sunucusu'; $wb['limit_dns_zone_txt'] = 'En Fazla DNS Bölgesi Sayısı'; @@ -59,32 +62,35 @@ $wb['limit_dns_slave_zone_txt'] = 'En Fazla Ä°kincil DNS Bölgesi Sayısı'; $wb['limit_dns_record_txt'] = 'En Fazla DNS Kaydı Sayısı'; $wb['limit_shell_user_txt'] = 'En Fazla Kabuk Kullanıcısı Sayısı'; $wb['limit_webdav_user_txt'] = 'En Fazla Webdav Kullanıcısı Sayısı'; +$wb['limit_backup_txt'] = 'Yedekleme ÖzelliÄŸi Kullanılsın'; $wb['limit_client_txt'] = 'En Fazla Müşteri Sayısı'; $wb['username_error_empty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.'; -$wb['limit_maildomain_error_notint'] = 'E-posta alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_mailmailinglist_error_notint'] = 'Posta listesi kaydı sınırı bir sayı olmalıdır.'; -$wb['limit_mailbox_error_notint'] = 'Posta kutusu sınırı bir sayı olmalıdır.'; +$wb['limit_maildomain_error_notint'] = 'E-posta etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_mailmailinglist_error_notint'] = 'E-posta listesi kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_mailbox_error_notint'] = 'E-posta kutusu sınırı bir sayı olmalıdır.'; $wb['limit_mailalias_error_notint'] = 'Takma e-posta sınırı bir sayı olmalıdır.'; $wb['limit_mailforward_error_notint'] = 'E-posta yönlendirici sınırı bir sayı olmalıdır.'; $wb['limit_mailcatchall_error_notint'] = 'E-posta tümünü al hesabı sınırı bir sayı olmalıdır.'; $wb['limit_mailrouting_error_notint'] = 'E-posta yöneltici sınırı bir sayı olmalıdır.'; $wb['limit_mailfilter_error_notint'] = 'E-posta süzgeci sınırı bir sayı olmalıdır.'; -$wb['limit_mailfetchmail_error_notint'] = 'Posta alıcısı sınırı bir sayı olmalıdır.'; +$wb['limit_mailfetchmail_error_notint'] = 'E-posta alıcısı sınırı bir sayı olmalıdır.'; $wb['limit_mailquota_error_notint'] = 'E-posta kota sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz posta beyaz/kara liste süzgeci sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz posta süzgeci kullanıcısı sınırı bir sayı olmalıdır.'; -$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz posta süzgeci kuralı sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_wblist_error_notint'] = 'Önemsiz ileti beyaz/kara liste süzgeci sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_user_error_notint'] = 'Önemsiz ileti süzgeci kullanıcısı sınırı bir sayı olmalıdır.'; +$wb['limit_spamfilter_policy_error_notint'] = 'Önemsiz ileti süzgeci kuralı sınırı bir sayı olmalıdır.'; $wb['limit_web_domain_error_notint'] = 'Web sitesi sınırı bir sayı olmalıdır.'; -$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma alan adı sınırı bir sayı olmalıdır.'; -$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt alan adı sınırı bir sayı olmalıdır.'; +$wb['limit_web_aliasdomain_error_notint'] = 'Web sitesi takma etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_web_subdomain_error_notint'] = 'Web sitesi alt etki alanı sınırı bir sayı olmalıdır.'; $wb['limit_ftp_user_error_notint'] = 'FTP kullanıcı sınırı bir sayı olmalıdır.'; $wb['limit_webdav_user_error_notint'] = 'Webdav kullanıcısı sınırı bir sayı olmalıdır.'; $wb['limit_shell_user_error_notint'] = 'Kabuk kullanıcısı sınırı bir sayı olmalıdır.'; -$wb['limit_dns_zone_error_notint'] = 'DNS bölgesi sınırı bir sayı olmalıdır.'; +$wb['limit_dns_zone_error_notint'] = 'Birincil DNS bölgesi sınırı bir sayı olmalıdır.'; $wb['limit_dns_slave_zone_error_notint'] = 'Ä°kincil DNS bölgesi sınırı bir sayı olmalıdır.'; $wb['limit_dns_record_error_notint'] = 'DNS kaydı sınırı bir sayı olmalıdır.'; +$wb['limit_client_error_notint'] = 'Müşteri sınırı bir sayı olmalıdır.'; $wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; +$wb['limit_database_txt'] = 'En Fazla Veritabanı Sayısı'; $wb['limit_database_error_notint'] = 'Veritabanı sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_notint'] = 'Zamanlanmış görev sınırı bir sayı olmalıdır.'; $wb['limit_cron_error_frequency'] = 'Zamanlanmış görev sıklığı sınırı bir sayı olmalıdır.'; @@ -95,16 +101,18 @@ $wb['add_additional_template_txt'] = 'Ek Kalıbı Ekle'; $wb['delete_additional_template_txt'] = 'Ek Kalıbı Sil'; $wb['ssh_chroot_txt'] = 'SSH-Chroot Ayarları'; $wb['web_php_options_txt'] = 'PHP Ayarları'; -$wb['limit_cgi_txt'] = 'CGI Kullanılabilir'; -$wb['limit_ssi_txt'] = 'SSI Kullanılabilir'; -$wb['limit_perl_txt'] = 'Perl Kullanılabilir'; -$wb['limit_ruby_txt'] = 'Ruby Kullanılabilir'; -$wb['limit_python_txt'] = 'Python Kullanılabilir'; -$wb['force_suexec_txt'] = 'SuEXEC Dayatılmış'; -$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılabilir'; -$wb['limit_wildcard_txt'] = 'Genel Alt Alan Kullanılabilir'; -$wb['limit_ssl_txt'] = 'SSL Kullanılabilir'; +$wb['limit_cgi_txt'] = 'CGI Kullanılsın'; +$wb['limit_ssi_txt'] = 'SSI Kullanılsın'; +$wb['limit_perl_txt'] = 'Perl Kullanılsın'; +$wb['limit_ruby_txt'] = 'Ruby Kullanılsın'; +$wb['limit_python_txt'] = 'Python Kullanılsın'; +$wb['force_suexec_txt'] = 'SuEXEC Dayatılsın'; +$wb['limit_hterror_txt'] = 'Özel Hata Sayfaları Kullanılsın'; +$wb['limit_wildcard_txt'] = 'Genel Alt Etki Alanı Kullanılsın'; +$wb['limit_ssl_txt'] = 'SSL Kullanılsın'; +$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt Kullanılsın'; $wb['limit_client_error'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla müşteri sayısına ulaÅŸtınız.'; +$wb['limit_client_error_positive_or_unlimited'] = 'Müşteri sayısı > 0 ya da -1 (sınırsız) olmalıdır'; $wb['limit_web_quota_txt'] = 'Web Kotası'; $wb['limit_traffic_quota_txt'] = 'Trafik Kotası'; $wb['limit_trafficquota_error_notint'] = 'Trafik kotası bir sayı olmalıdır.'; @@ -123,7 +131,7 @@ $wb['database_limits_txt'] = 'Veritabanı Sınırları'; $wb['cron_job_limits_txt'] = 'Zamanlanmış Görev Sınırları'; $wb['dns_limits_txt'] = 'DNS Sınırları'; $wb['virtualization_limits_txt'] = 'SanallaÅŸtırma Sınırları'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; @@ -146,62 +154,58 @@ $wb['locked_txt'] = 'Kilitli'; $wb['canceled_txt'] = 'Ä°ptal edilmiÅŸ'; $wb['gender_m_txt'] = 'Bay'; $wb['gender_f_txt'] = 'Bayan'; -$wb['gender_txt'] = 'Ãœnvan'; +$wb['gender_txt'] = 'Unvan'; +$wb['web_servers_txt'] = 'Web Sunucuları'; +$wb['web_servers_placeholder'] = 'Web Sunucularını Seçin'; +$wb['no_web_server_error'] = 'En az bir web sunucusu seçilmelidir.'; +$wb['web_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir web sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['dns_servers_txt'] = 'DNS Sunucular'; +$wb['dns_servers_placeholder'] = 'DNS Sunucuları Seçin'; +$wb['no_dns_server_error'] = 'En az bir DNS sunucusu seçilmelidir.'; +$wb['dns_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir DNS sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun'; +$wb['db_servers_txt'] = 'Veritabanı Sunucuları'; +$wb['db_servers_placeholder'] = 'Veritabanı Sunucularını Seçin'; +$wb['no_db_server_error'] = 'En az bir veritabanı sunucusu seçilmelidir.'; +$wb['db_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir veritabanı sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['mail_servers_txt'] = 'E-posta Sunucuları'; +$wb['mail_servers_placeholder'] = 'E-posta Sunucularını Seçin'; +$wb['no_mail_server_error'] = 'En az bir e-posta sunucusu seçilmelidir.'; +$wb['mail_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir e-posta sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; $wb['customer_no_template_txt'] = 'Müşteri No Kalıbı'; $wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var'; $wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; $wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; + +$wb['xmpp_limits_txt'] = 'XMPP Sınırları'; +$wb['xmpp_servers_txt'] = 'XMPP Sunucular'; +$wb['xmpp_servers_placeholder'] = 'XMPP Sunucuları Seçin'; +$wb['no_xmpp_server_error'] = 'En az bir XMPP sunucusu seçilmelidir.'; +$wb['xmpp_servers_used'] = 'Bu müşteriden kaldırmaya çalıştığınız sunucu bir XMPP sunucusu olarak kullanılıyor. Kaldırmadan önce bu sunucunun bu müşteri tarafından kullanılmadığından emin olun.'; +$wb['limit_xmpp_domain_error_notint'] = 'XMPP etki alanı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_user_error_notint'] = 'XMPP kullanıcı sınırı bir sayı olmalıdır.'; +$wb['limit_xmpp_domain_txt'] = 'En Fazla XMPP Etki Alanı Sayısı'; +$wb['limit_xmpp_user_txt'] = 'En Fazla XMPP Hesabı Sayısı'; +$wb['limit_xmpp_muc_txt'] = 'Çok Kullanıcılı Sohbet (ÇKS) Kullanılsın'; +$wb['limit_xmpp_pastebin_txt'] = 'ÇKS için Pastebin Kullanılsın'; +$wb['limit_xmpp_httparchive_txt'] = 'ÇKS için HTTP ArÅŸivi Kullanılsın'; +$wb['limit_xmpp_anon_txt'] = 'Adsız Sunucu Kullanılsın'; +$wb['limit_xmpp_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın'; +$wb['limit_xmpp_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın'; +$wb['limit_xmpp_status_txt'] = 'Durum Sunucusu Kullanılsın'; $wb['added_by_txt'] = 'Ekleyen'; $wb['added_date_txt'] = 'EklendiÄŸi Tarih'; -$wb['limit_domainmodule_error_notint'] = 'Alan adı modülü sınırı bir sayı olmalıdır.'; -$wb['limit_domainmodule_txt'] = 'Alan Adı Modülü Sınırı'; +$wb['limit_domainmodule_error_notint'] = 'Etki alanı modülü sınırı bir sayı olmalıdır.'; +$wb['limit_domainmodule_txt'] = 'Etki Alanı Modülü Sınırı'; $wb['client_limits_txt'] = 'Müşteri Sınırları'; -$wb['err_msg_master_tpl_set'] = '\\"Özel\\" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yoksayılır.'; -$wb['contact_firstname_txt'] = 'Contact firstname'; -$wb['password_click_to_set_txt'] = 'Click to set'; -$wb['limit_database_user_txt'] = 'Max. Database users'; -$wb['limit_backup_txt'] = 'Backupfunction available'; -$wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; -$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0 or -1 (unlimited)'; -$wb['web_servers_txt'] = 'Webservers'; -$wb['web_servers_placeholder'] = 'Select Webservers'; -$wb['no_web_server_error'] = 'At least one webserver must be selected.'; -$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before to remove it.'; -$wb['dns_servers_txt'] = 'DNS Server'; -$wb['dns_servers_placeholder'] = 'Select DNS Servers'; -$wb['no_dns_server_error'] = 'At least one DNS server must be selected.'; -$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before to remove it.'; -$wb['db_servers_txt'] = 'Database Server'; -$wb['db_servers_placeholder'] = 'Select Database Servers'; -$wb['no_db_server_error'] = 'At least one Database server must be selected.'; -$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before to remove it.'; -$wb['mail_servers_txt'] = 'Mailservers'; -$wb['mail_servers_placeholder'] = 'Select Mailservers'; -$wb['no_mail_server_error'] = 'At least one Mailserver must be selected.'; -$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before to remove it.'; -$wb['xmpp_limits_txt'] = 'XMPP Limits'; -$wb['xmpp_servers_txt'] = 'XMPP Servers'; -$wb['xmpp_servers_placeholder'] = 'Select XMPP Servers'; -$wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.'; -$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.'; -$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.'; -$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.'; -$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains'; -$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts'; -$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available'; -$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available'; -$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available'; -$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['invalid_vat_id'] = 'The VAT ID is invalid.'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['email_error_empty'] = 'Email is empty'; -$wb['limit_directive_snippets_txt'] = 'Show web server config selection'; -$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.'; -$wb['limit_database_quota_txt'] = 'Database quota'; -$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; -$wb['Limits'] = 'Limits'; +$wb['err_msg_master_tpl_set'] = '"Özel" kalıptan baÅŸka bir ana kalıp seçilirse, tüm özel sınırlama ayarları yok sayılır.'; +$wb['invalid_vat_id'] = 'Vergi numarası geçersiz.'; +$wb['btn_save_txt'] = 'Kaydet'; +$wb['btn_cancel_txt'] = 'Ä°ptal'; +$wb['email_error_empty'] = 'E-posta boÅŸ olamaz.'; +$wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin'; +$wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı'; +$wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.'; +$wb['limit_database_quota_txt'] = 'Veritabanı Kotası'; +$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.'; +$wb['Limits'] = 'Sınırlar'; ?> diff --git a/interface/web/client/lib/lang/tr_resellers_list.lng b/interface/web/client/lib/lang/tr_resellers_list.lng index 2cb388b96e..62116103c1 100644 --- a/interface/web/client/lib/lang/tr_resellers_list.lng +++ b/interface/web/client/lib/lang/tr_resellers_list.lng @@ -1,7 +1,7 @@ <?php $wb['list_head_txt'] = 'Bayiler'; $wb['client_id_txt'] = 'Kod'; -$wb['company_name_txt'] = 'Kurum Adı'; +$wb['company_name_txt'] = 'KuruluÅŸ Adı'; $wb['contact_name_txt'] = 'Ä°lgili Adı'; $wb['city_txt'] = 'Ä°l'; $wb['country_txt'] = 'Ãœlke'; diff --git a/interface/web/dashboard/lib/lang/br.lng b/interface/web/dashboard/lib/lang/br.lng index 05935493bb..4ad7fc9c3c 100644 --- a/interface/web/dashboard/lib/lang/br.lng +++ b/interface/web/dashboard/lib/lang/br.lng @@ -1,4 +1,4 @@ <?php $wb['welcome_user_txt'] = 'Bem-vindo %s'; -$wb['available_modules_txt'] = 'Módulos DisponÃveis'; +$wb['available_modules_txt'] = 'Módulos disponÃveis'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_customer.lng b/interface/web/dashboard/lib/lang/br_dashlet_customer.lng index 5e73e41ff9..8c110cc29b 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_customer.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_customer.lng @@ -1,4 +1,4 @@ <?php -$wb['customerdata_txt'] = 'Meus Dados'; +$wb['customerdata_txt'] = 'Meus dados'; $wb['edit_txt'] = 'Editar'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng index de92eef6bf..9279d2230a 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_databasequota.lng @@ -1,6 +1,6 @@ <?php -$wb['databasequota_txt'] = 'Cota para banco de dados'; -$wb['database_txt'] = 'Nome do banco de dados'; +$wb['databasequota_txt'] = 'Cota do banco de dados'; +$wb['database_txt'] = 'Banco de dados'; $wb['used_txt'] = 'Espaço utilizado'; $wb['quota_txt'] = 'Cota'; $wb['no_database_accounts_txt'] = 'Nenhum banco de dados encontrado.'; diff --git a/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng index 413177c83d..1ac4ee2fae 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_invoice_client_settings.lng @@ -1,4 +1,4 @@ <?php -$wb['invoice_client_settings_txt'] = 'Configuração de Faturas do Cliente'; +$wb['invoice_client_settings_txt'] = 'Configurações de fatura de clientes'; $wb['edit_txt'] = 'Editar'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng index 2a5a0d9bcc..545c6994a6 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_invoices.lng @@ -1,18 +1,18 @@ <?php $wb['invoices_txt'] = 'Faturas'; -$wb['invoice_no_txt'] = 'No. da Fatura'; +$wb['invoice_no_txt'] = 'No. da fatura'; $wb['amount_txt'] = 'Quantidade'; $wb['date_txt'] = 'Data'; $wb['invoice_status_txt'] = 'Estado'; $wb['no_invoices_txt'] = 'Nenhuma fatura disponÃvel.'; $wb['paid_txt'] = 'Pago'; -$wb['unpaid_txt'] = 'Aberto'; +$wb['unpaid_txt'] = 'A pagar'; $wb['paynow_txt'] = 'pagar agora'; $wb['proforma_txt'] = 'Proforma'; $wb['refunded_txt'] = 'Devolvido'; -$wb['not_refunded_txt'] = 'Sem devolução'; +$wb['not_refunded_txt'] = 'Não reembolsado'; $wb['invoice_type_invoice_txt'] = 'Fatura'; $wb['invoice_type_proforma_txt'] = 'Proforma'; -$wb['invoice_type_refund_txt'] = 'Devolver'; +$wb['invoice_type_refund_txt'] = 'Reembolso'; $wb['invoice_type_reminder_txt'] = 'Lembrar'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng index 04c59b8835..72558f5797 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng @@ -1,34 +1,34 @@ <?php -$wb['limits_txt'] = 'Limites das contas'; +$wb['limits_txt'] = 'Limites de contas'; $wb['of_txt'] = 'de'; -$wb['unlimited_txt'] = 'ilimitado'; -$wb['limit_maildomain_txt'] = 'Limite de domÃnios de e-mail'; -$wb['limit_mailbox_txt'] = 'Limite de contas de e-mail'; -$wb['limit_mailalias_txt'] = 'Limite de apelidos de domÃnio de e-mail'; -$wb['limit_mailaliasdomain_txt'] = 'Limite de subdomÃnios para e-mail'; -$wb['limit_mailforward_txt'] = 'Limite de redirecionamentos de e-mail'; -$wb['limit_mailcatchall_txt'] = 'Limite de contas cata tudo'; -$wb['limit_mailrouting_txt'] = 'Limite de transporte de e-mail'; -$wb['limit_mailfilter_txt'] = 'Limite de filtros de e-mail'; -$wb['limit_fetchmail_txt'] = 'Limite de contas de busca'; -$wb['limit_spamfilter_wblist_txt'] = 'Limite de filtros anti-spam lista branca/negra'; -$wb['limit_spamfilter_user_txt'] = 'Limite de usuários para filtros anti-spam'; -$wb['limit_spamfilter_policy_txt'] = 'Limite de polÃticas anti-spam'; -$wb['limit_cron_txt'] = 'Limite de tarefas no cron'; -$wb['limit_web_domain_txt'] = 'Limite de domÃnios de site'; -$wb['limit_web_aliasdomain_txt'] = 'Limite de apelidos de domÃnios de site'; -$wb['limit_web_subdomain_txt'] = 'Limite de subdomÃnios de site'; -$wb['limit_ftp_user_txt'] = 'Limite de contas ftp'; -$wb['limit_dns_zone_txt'] = 'Limite de zonas dns primárias'; -$wb['limit_dns_slave_zone_txt'] = 'Limite de zonas dns secundárias'; -$wb['limit_dns_record_txt'] = 'Limite de registros dns'; -$wb['limit_shell_user_txt'] = 'Limite de usuários shell'; -$wb['limit_webdav_user_txt'] = 'Limite de usuários webdav'; -$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'; +$wb['unlimited_txt'] = 'Ilimitado'; +$wb['limit_maildomain_txt'] = 'Número de domÃnios de e-mail'; +$wb['limit_mailmailinglist_txt'] = 'Número de listas de e-mail'; +$wb['limit_mailbox_txt'] = 'Número de contas de e-mail'; +$wb['limit_mailalias_txt'] = 'Número de alias de e-mail'; +$wb['limit_mailaliasdomain_txt'] = 'Número de alias de domÃnios de e-mail'; +$wb['limit_mailforward_txt'] = 'Número de encaminhamentos de e-mail'; +$wb['limit_mailcatchall_txt'] = 'Número de contas cata-tudo'; +$wb['limit_mailrouting_txt'] = 'Número de rotas de e-mail'; +$wb['limit_mailfilter_txt'] = 'Número de filtros de e-mail'; +$wb['limit_fetchmail_txt'] = 'Número de contas de busca'; +$wb['limit_spamfilter_wblist_txt'] = 'Número de filtros anti-spam "lista branca/negra"'; +$wb['limit_spamfilter_user_txt'] = 'Número de filtros anti-spam'; +$wb['limit_spamfilter_policy_txt'] = 'Número de polÃticas anti-spam'; +$wb['limit_cron_txt'] = 'Número de tarefas no cron'; +$wb['limit_web_domain_txt'] = 'Número de domÃnios de site'; +$wb['limit_web_aliasdomain_txt'] = 'Número de alias de domÃnios de site'; +$wb['limit_web_subdomain_txt'] = 'Número de subdomÃnios de site'; +$wb['limit_ftp_user_txt'] = 'Número de usuários ftp'; +$wb['limit_dns_zone_txt'] = 'Número de zonas dns'; +$wb['limit_dns_slave_zone_txt'] = 'Número de zonas dns secundárias'; +$wb['limit_dns_record_txt'] = 'Número de registros dns'; +$wb['limit_shell_user_txt'] = 'Número de usuários do shell'; +$wb['limit_webdav_user_txt'] = 'Número de usuários webdav'; +$wb['limit_client_txt'] = 'Número de clientes'; +$wb['limit_database_txt'] = 'Número de banco de dados'; +$wb['limit_domain_txt'] = 'Número de domÃnios'; +$wb['limit_mailquota_txt'] = 'Cotas atribuÃdas para contas de e-mail'; +$wb['limit_web_quota_txt'] = 'Cotas atribuÃdas para sites'; +$wb['limit_database_quota_txt'] = 'Cotas atribuÃdas para banco de dados'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng index 8aa300dffa..d164a35661 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng @@ -1,6 +1,6 @@ <?php -$wb['mailquota_txt'] = 'Cota para contas de e-mail'; -$wb['email_txt'] = 'e-mail'; +$wb['mailquota_txt'] = 'Cota de contas de e-mail'; +$wb['email_txt'] = 'Endereço de e-mail'; $wb['name_txt'] = 'Nome'; $wb['used_txt'] = 'Espaço utilizado'; $wb['quota_txt'] = 'Cota'; diff --git a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng index 80af885820..905d3d6007 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_modules.lng @@ -1,4 +1,4 @@ <?php -$wb['available_modules_txt'] = 'Módulos DisponÃveis'; +$wb['available_modules_txt'] = 'Módulos disponÃveis'; $wb['go_to_txt'] = 'Ir para'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_products.lng b/interface/web/dashboard/lib/lang/br_dashlet_products.lng index 129b144801..c750052ad7 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_products.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_products.lng @@ -1,8 +1,8 @@ <?php -$wb['products_txt'] = 'Meus Produtos'; +$wb['products_txt'] = 'Meus produtos'; $wb['name_txt'] = 'Nome'; $wb['price_txt'] = 'Preço'; -$wb['next_payment_date_txt'] = 'Próxima Fatura'; +$wb['next_payment_date_txt'] = 'Próxima fatura'; $wb['no_products_txt'] = 'Nenhum produto encontrado.'; $wb['edit_txt'] = 'Editar'; $wb['cancellation_date_txt'] = 'Cancelado por'; diff --git a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng index 080e45d4e7..589e3dca3e 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng @@ -1,8 +1,8 @@ <?php -$wb['quota_txt'] = 'Cota para sites'; +$wb['quota_txt'] = 'Cota de site (disco)'; $wb['domain_txt'] = 'DomÃnio/Site'; $wb['used_txt'] = 'Espaço utilizado'; -$wb['hard_txt'] = 'Limite'; +$wb['hard_txt'] = 'Limite para bloqueio'; $wb['soft_txt'] = 'Limite para alerta'; $wb['no_sites_txt'] = 'Nenhum site encontrado.'; ?> diff --git a/interface/web/dashboard/lib/lang/br_dashlet_shop.lng b/interface/web/dashboard/lib/lang/br_dashlet_shop.lng index 48847abff4..9fd37d5250 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_shop.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_shop.lng @@ -1,8 +1,8 @@ <?php -$wb['shop_txt'] = 'Pedido'; +$wb['shop_txt'] = 'Ordem'; $wb['name_txt'] = 'Nome'; $wb['price_txt'] = 'Preço'; -$wb['setup_fee_txt'] = 'Taxa Inicial'; +$wb['setup_fee_txt'] = 'Taxa criada'; $wb['no_products_txt'] = 'Nenhum produto encontrado.'; -$wb['order_txt'] = 'Pedir'; +$wb['order_txt'] = 'Ordem'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng b/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng index 4fe6cb0ef7..4902a83a09 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_customer.lng @@ -1,4 +1,4 @@ <?php -$wb['customerdata_txt'] = 'My Data'; -$wb['edit_txt'] = 'Edit'; +$wb['customerdata_txt'] = 'Bilgilerim'; +$wb['edit_txt'] = 'Düzenle'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng index bd2402dbf6..d8e8dfb89a 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_databasequota.lng @@ -1,7 +1,7 @@ <?php -$wb['databasequota_txt'] = 'Database Quota'; -$wb['database_txt'] = 'Database Name'; -$wb['used_txt'] = 'Used Space'; -$wb['quota_txt'] = 'Quota'; -$wb['no_database_accounts_txt'] = 'No databases found.'; +$wb['databasequota_txt'] = 'Veritabanı Kotası'; +$wb['database_txt'] = 'Veritabanı Adı'; +$wb['used_txt'] = 'Kullanılan Alan'; +$wb['quota_txt'] = 'Kota'; +$wb['no_database_accounts_txt'] = 'Henüz bir veritabanı yok.'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng b/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng index e41c374cde..7324cb840d 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_donate.lng @@ -1,7 +1,7 @@ <?php -$wb['donate_txt'] = 'The ISPConfig Hosting Control Panel is free software. Maybe you are aware, that it takes a lot of time and effort to develop, maintain and support a software project of this complexity. If you want to support the further development of ISPConfig, please consider making a donation. As a bonus you will get a copy of the current ISPConfig Manual.'; -$wb['donate2_txt'] = 'The donation amount can be 5 EUR or more, the amount is chosen during checkout. The payment method is PayPal. You will receive an receipt as PDF from ISPConfig UG.'; -$wb['hide_btn_txt'] = 'Hide'; -$wb['donate_btn_txt'] = 'Support ISPConfig and get the Manual'; -$wb['more_btn_txt'] = 'More'; +$wb['donate_txt'] = 'ISPConfig Hosting Control Panel uygulaması ücretsiz dağıtılmaktadır. Belki bu düzeyde bir yazılımı geliÅŸtirmek, güncellemek ve desteklemek için çok fazla zaman ve emek harcandığının farkındasınızdır. ISPConfig uygulamasının geliÅŸtirmesine destek olmak için bağış yapmak isteyebilirsiniz. Hediye olarak ISPConfig kılavuzunu alacaksınız.'; +$wb['donate2_txt'] = 'Bağış tutarı en az 5 EUR ya da ödeme sırasında seçeceÄŸiniz baÅŸka bir tutar olabilir. Ödemeleri PayPal üzerinden alıyoruz. PDF alındısında ISPConfig UG yazar.'; +$wb['hide_btn_txt'] = 'Gizle'; +$wb['donate_btn_txt'] = 'ISPConfig uygulamasını destekleyerek kılavuzu edinin'; +$wb['more_btn_txt'] = 'Ayrıntılar'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng index 8cae3dfb4f..b6b47cae90 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_invoice_client_settings.lng @@ -1,4 +1,4 @@ <?php -$wb['invoice_client_settings_txt'] = 'Invoice Client Settings'; -$wb['edit_txt'] = 'Edit'; +$wb['invoice_client_settings_txt'] = 'Müşteri Fatura Ayarları'; +$wb['edit_txt'] = 'Düzenle'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng index a680daa8f6..db24326749 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_invoices.lng @@ -1,18 +1,18 @@ <?php -$wb['invoices_txt'] = 'Invoices'; -$wb['invoice_no_txt'] = 'Invoice No.'; -$wb['amount_txt'] = 'Amount'; -$wb['date_txt'] = 'Date'; -$wb['invoice_status_txt'] = 'Status'; -$wb['no_invoices_txt'] = 'No Invoices available.'; -$wb['paid_txt'] = 'Paid'; -$wb['unpaid_txt'] = 'Unpaid'; -$wb['paynow_txt'] = 'pay now'; -$wb['proforma_txt'] = 'Proforma'; -$wb['refunded_txt'] = 'Refunded'; -$wb['not_refunded_txt'] = 'Not refunded'; -$wb['invoice_type_invoice_txt'] = 'Invoice'; -$wb['invoice_type_proforma_txt'] = 'Proforma'; -$wb['invoice_type_refund_txt'] = 'Refund'; -$wb['invoice_type_reminder_txt'] = 'Reminder'; +$wb['invoices_txt'] = 'Faturalar'; +$wb['invoice_no_txt'] = 'Fatura No'; +$wb['amount_txt'] = 'Tutar'; +$wb['date_txt'] = 'Tarih'; +$wb['invoice_status_txt'] = 'Durum'; +$wb['no_invoices_txt'] = 'Henüz bir fatura yok.'; +$wb['paid_txt'] = 'Ödendi'; +$wb['unpaid_txt'] = 'Ödenmedi'; +$wb['paynow_txt'] = 'Åžimdi Öde'; +$wb['proforma_txt'] = 'Teklif'; +$wb['refunded_txt'] = 'Geri Ödendi'; +$wb['not_refunded_txt'] = 'Geri Ödenmedi'; +$wb['invoice_type_invoice_txt'] = 'Fatura'; +$wb['invoice_type_proforma_txt'] = 'Teklif'; +$wb['invoice_type_refund_txt'] = 'Geri Ödeme'; +$wb['invoice_type_reminder_txt'] = 'Anımsatıcı'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng index a8869328f9..9fa1fb5b90 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng @@ -2,33 +2,33 @@ $wb['limits_txt'] = 'Hesap Sınırları'; $wb['of_txt'] = '/'; $wb['unlimited_txt'] = 'Sınırsız'; -$wb['limit_maildomain_txt'] = 'E-posta Alan Adı Sayısı'; -$wb['limit_mailmailinglist_txt'] = 'Posta Listesi Sayısı'; -$wb['limit_mailbox_txt'] = 'Posta Kutusu Sayısı'; +$wb['limit_maildomain_txt'] = 'E-posta Etki Alanı Sayısı'; +$wb['limit_mailmailinglist_txt'] = 'E-posta Listesi Sayısı'; +$wb['limit_mailbox_txt'] = 'E-posta Kutusu Sayısı'; $wb['limit_mailalias_txt'] = 'Takma E-posta Sayısı'; -$wb['limit_mailaliasdomain_txt'] = 'Takma Alan Adı Sayısı'; +$wb['limit_mailaliasdomain_txt'] = 'Takma Etki Alanı Sayısı'; $wb['limit_mailforward_txt'] = 'E-posta Yönlendirici Sayısı'; $wb['limit_mailcatchall_txt'] = 'E-posta Tümünü Al Hesabı Sayısı'; $wb['limit_mailrouting_txt'] = 'E-posta Yöneltici Sayısı'; $wb['limit_mailfilter_txt'] = 'E-posta Süzgeci Sayısı'; -$wb['limit_fetchmail_txt'] = 'Posta Alma Hesabı Sayısı'; -$wb['limit_spamfilter_wblist_txt'] = 'Önemsiz Posta Beyaz/Kara Liste Sayısı'; -$wb['limit_spamfilter_user_txt'] = 'Önemsiz Posta Süzgeci Kullanıcı Sayısı'; -$wb['limit_spamfilter_policy_txt'] = 'Önemsiz Posta Kuralı Sayısı'; +$wb['limit_fetchmail_txt'] = 'E-posta Alma Hesabı Sayısı'; +$wb['limit_spamfilter_wblist_txt'] = 'Önemsiz Ä°leti Beyaz/Kara Liste Sayısı'; +$wb['limit_spamfilter_user_txt'] = 'Önemsiz Ä°leti Süzgeci Kullanıcı Sayısı'; +$wb['limit_spamfilter_policy_txt'] = 'Önemsiz Ä°letia Kuralı Sayısı'; $wb['limit_cron_txt'] = 'Zamanlanmış Görev Sayısı'; -$wb['limit_web_domain_txt'] = 'Web Alan Adı Sayısı'; -$wb['limit_web_aliasdomain_txt'] = 'Web Takma Alan Adı Sayısı'; -$wb['limit_web_subdomain_txt'] = 'Web Alt Alan Adı Sayısı'; +$wb['limit_web_domain_txt'] = 'Web Etki Alanı Sayısı'; +$wb['limit_web_aliasdomain_txt'] = 'Web Takma Etki Alanı Sayısı'; +$wb['limit_web_subdomain_txt'] = 'Web Alt Etki Alanı Sayısı'; $wb['limit_ftp_user_txt'] = 'FTP Kullanıcı Sayısı'; $wb['limit_dns_zone_txt'] = 'DNS Bölgesi Sayısı'; -$wb['limit_dns_slave_zone_txt'] = 'Ä°kinci DNS Bölgesi Sayısı'; +$wb['limit_dns_slave_zone_txt'] = 'Ä°kincil DNS Bölgesi Sayısı'; $wb['limit_dns_record_txt'] = 'DNS Kayıtları Sayısı'; $wb['limit_shell_user_txt'] = 'Kabuk Kullanıcısı Sayısı'; $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'; +$wb['limit_domain_txt'] = 'Etki Alanı Sayısı'; +$wb['limit_mailquota_txt'] = 'E-posta Kutusu Alanı Kotası'; +$wb['limit_web_quota_txt'] = 'Web Sitesi Alanı Kotası'; +$wb['limit_database_quota_txt'] = 'Veritabanı Alanı Kotası'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng index bee7e8677f..67888a818e 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng @@ -1,5 +1,5 @@ <?php -$wb['mailquota_txt'] = 'Posta Kutusu Kotası'; +$wb['mailquota_txt'] = 'E-posta Kutusu Kotası'; $wb['email_txt'] = 'E-posta Adresi'; $wb['name_txt'] = 'Ad'; $wb['used_txt'] = 'Kullanılan Alan'; diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng index c551510a50..ce75e96210 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_modules.lng @@ -1,4 +1,4 @@ <?php $wb['available_modules_txt'] = 'Kullanılabilecek Modüller'; -$wb['go_to_txt'] = 'Go to'; +$wb['go_to_txt'] = ''; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_products.lng b/interface/web/dashboard/lib/lang/tr_dashlet_products.lng index a69b61d2fb..11aa2e519d 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_products.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_products.lng @@ -1,9 +1,9 @@ <?php -$wb['products_txt'] = 'My Products'; -$wb['name_txt'] = 'Name'; -$wb['price_txt'] = 'Price'; -$wb['next_payment_date_txt'] = 'Next Invoice'; -$wb['no_products_txt'] = 'No products found.'; -$wb['edit_txt'] = 'Edit'; -$wb['cancellation_date_txt'] = 'Cancelled by'; +$wb['products_txt'] = 'Ãœrünlerim'; +$wb['name_txt'] = 'Ad'; +$wb['price_txt'] = 'Fiyat'; +$wb['next_payment_date_txt'] = 'Sonraki Fatura'; +$wb['no_products_txt'] = 'Henüz bir ürün yok.'; +$wb['edit_txt'] = 'Düzenle'; +$wb['cancellation_date_txt'] = 'Ä°ptal eden:'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng index 5a757be6f7..c49fcba522 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng @@ -1,8 +1,8 @@ <?php $wb['quota_txt'] = 'Web Sitesi Disk Kotası'; -$wb['domain_txt'] = 'Alan Adı / Web Sitesi'; +$wb['domain_txt'] = 'Etki Alanı / Web Sitesi'; $wb['used_txt'] = 'Kullanılan Alan'; -$wb['hard_txt'] = 'Donanım sınırı'; -$wb['soft_txt'] = 'Yazılım sınırı'; +$wb['hard_txt'] = 'Donanım Sınırı'; +$wb['soft_txt'] = 'Yazılım Sınırı'; $wb['no_sites_txt'] = 'Henüz bir web sitesi yok.'; ?> diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng b/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng index 1e0b5361d7..59e629889f 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_shop.lng @@ -1,8 +1,8 @@ <?php -$wb['shop_txt'] = 'Order'; -$wb['name_txt'] = 'Name'; -$wb['price_txt'] = 'Price'; -$wb['setup_fee_txt'] = 'Setup Fee'; -$wb['no_products_txt'] = 'No products found.'; -$wb['order_txt'] = 'Order'; +$wb['shop_txt'] = 'SipariÅŸ'; +$wb['name_txt'] = 'Ad'; +$wb['price_txt'] = 'Fiyat'; +$wb['setup_fee_txt'] = 'Kurulum Ãœcreti'; +$wb['no_products_txt'] = 'Herhangi bir ürün bulunamadı.'; +$wb['order_txt'] = 'SipariÅŸ'; ?> diff --git a/interface/web/dns/lib/lang/br.lng b/interface/web/dns/lib/lang/br.lng index b45d1575af..9228373fdf 100644 --- a/interface/web/dns/lib/lang/br.lng +++ b/interface/web/dns/lib/lang/br.lng @@ -1,4 +1,5 @@ <?php + $wb['DNS'] = 'DNS'; $wb['Zones'] = 'Zonas'; $wb['DNS A'] = 'A'; @@ -9,14 +10,15 @@ $wb['DNS mx'] = 'MX'; $wb['DNS ns'] = 'NS'; $wb['DNS ptr'] = 'PTR'; $wb['DNS RP'] = 'RP'; -$wb['DNS Zone'] = 'Zona'; +$wb['DNS Zone'] = 'ZONA'; $wb['Records'] = 'Registros'; $wb['DNS SRV'] = 'SRV'; $wb['DNS TXT Record'] = 'Registro TXT'; $wb['DNS TXT'] = 'TXT'; -$wb['DNS Wizard'] = 'Assistente dns'; -$wb['Add DNS Zone'] = 'Adicionar nova zona'; -$wb['Import Zone File'] = 'Importar arquivo de zona'; +$wb['DNS Wizard'] = 'Assistente DNS'; +$wb['Add DNS Zone'] = 'Adicionar zona dns'; $wb['Templates'] = 'Gabaritos'; +$wb['Secondary DNS'] = 'DNS secundário'; $wb['Secondary Zones'] = 'Zonas secundárias'; +$wb['Import Zone File'] = 'Importar arquivo de zona'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_a.lng b/interface/web/dns/lib/lang/br_dns_a.lng index 93704528e2..f96cf551e6 100644 --- a/interface/web/dns/lib/lang/br_dns_a.lng +++ b/interface/web/dns/lib/lang/br_dns_a.lng @@ -1,17 +1,17 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; $wb['data_txt'] = 'Endereço IP'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IP está em branco.'; -$wb['ip_error_wrong'] = 'Endereço IP é inválido.'; -$wb['data_error_duplicate'] = 'Registro A duplicado.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['ip_error_wrong'] = 'Endereço IP inválido.'; +$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_a_list.lng b/interface/web/dns/lib/lang/br_dns_a_list.lng index 0abaf5493d..6387c14cbe 100644 --- a/interface/web/dns/lib/lang/br_dns_a_list.lng +++ b/interface/web/dns/lib/lang/br_dns_a_list.lng @@ -1,14 +1,14 @@ <?php -$wb['list_head_txt'] = 'Registro (A)'; +$wb['list_head_txt'] = 'Registro A'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; $wb['name_txt'] = 'Nome'; -$wb['data_txt'] = 'Data'; +$wb['data_txt'] = 'Dados'; $wb['aux_txt'] = 'Prioridade'; -$wb['type_txt'] = 'Tipo'; $wb['ttl_txt'] = 'TTL'; -$wb['add_new_record_txt'] = 'Adicionar um novo registro (A)'; +$wb['type_txt'] = 'Tipo'; +$wb['add_new_record_txt'] = 'Adicionar novo registro A'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; $wb['delete_confirmation'] = 'Tem certeza que deseja remover este registro?'; diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng index 5f0b463275..1a3cfb2d27 100644 --- a/interface/web/dns/lib/lang/br_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; $wb['data_txt'] = 'Endereço IPv6'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'O nome está em branco.'; -$wb['name_error_regex'] = 'O nome é inválido.'; -$wb['data_error_empty'] = 'Endereço IP está em branco.'; -$wb['ip_error_wrong'] = 'Endereço IP é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Endereço IPv6 está em branco.'; +$wb['ip_error_wrong'] = 'O endereço IPv6 possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_alias.lng b/interface/web/dns/lib/lang/br_dns_alias.lng index b303a662ba..46821ee1ae 100644 --- a/interface/web/dns/lib/lang/br_dns_alias.lng +++ b/interface/web/dns/lib/lang/br_dns_alias.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Servidor de destino'; +$wb['data_txt'] = 'Alvo do host'; $wb['ttl_txt'] = 'TTL'; $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'] = 'O nome está em branco.'; -$wb['name_error_regex'] = 'O nome é inválido.'; -$wb['data_error_empty'] = 'O servidor de destino está em branco.'; -$wb['data_error_regex'] = 'O servidor de destino é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O alvo do host está em branco.'; +$wb['data_error_regex'] = 'O formato do alvo do host é inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_caa.lng b/interface/web/dns/lib/lang/br_dns_caa.lng index 973a97ceb6..16bf267862 100644 --- a/interface/web/dns/lib/lang/br_dns_caa.lng +++ b/interface/web/dns/lib/lang/br_dns_caa.lng @@ -1,19 +1,19 @@ <?php -$wb['ca_list_txt'] = 'Certifiction Authority'; -$wb['ca_domain_txt'] = 'Domain'; -$wb['ca_hostname_txt'] = 'Additional Hostnamen'; -$wb['ca_hostname_note_txt'] = '(Sepearated list with commas - empty for all hostnames)'; -$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'; +$wb['ca_list_txt'] = 'Autoridade Certificadora - CA'; +$wb['ca_domain_txt'] = 'DomÃnio'; +$wb['ca_hostname_txt'] = 'Nome de hosts adicionais'; +$wb['ca_hostname_note_txt'] = '(separado por vÃrgulas - em branco para todos os hosts)'; +$wb['ca_options_txt'] = 'Opções adicionais'; +$wb['ca_options_note_txt'] = 'solicitado pela CA (lista separado por vÃrgulas)'; +$wb['ca_wildcard_txt'] = 'Usar curingas SSL'; +$wb['ca_critical_txt'] = 'Verificação estrita'; $wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['select_txt'] = 'Select Certifiction Authority'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['ca_error_txt'] = 'No Certifiction Authority selected'; -$wb['caa_exists_error'] = 'CAA Record already exists'; -$wb['ca_option_error'] = 'Invalid format for additional options; OPTION=VALUE'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['active_txt'] = 'Ativo'; +$wb['select_txt'] = 'Selecionar autoridade certificadora'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.'; +$wb['ca_error_txt'] = 'Nenhuma autoridade certificadora selecionada.'; +$wb['caa_exists_error'] = 'Registro CAA já existe.'; +$wb['ca_option_error'] = 'Formato inválido para opções adicionais; OPÇÃO=VALOR'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_cname.lng b/interface/web/dns/lib/lang/br_dns_cname.lng index cbba03cdaf..c4fb0df260 100644 --- a/interface/web/dns/lib/lang/br_dns_cname.lng +++ b/interface/web/dns/lib/lang/br_dns_cname.lng @@ -1,17 +1,17 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Nome de destino'; +$wb['data_txt'] = 'Alvo do host'; $wb['ttl_txt'] = 'TTL'; $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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Nome de destino está em branco.'; -$wb['data_error_regex'] = 'Nome de destino é inválido.'; -$wb['data_error_duplicate'] = 'Registros A ou CNAME duplicados.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O alvo do host está em branco.'; +$wb['data_error_regex'] = 'O alvo do host possui formato inválido.'; +$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_dkim.lng b/interface/web/dns/lib/lang/br_dns_dkim.lng index 1ec851a216..a24976194d 100644 --- a/interface/web/dns/lib/lang/br_dns_dkim.lng +++ b/interface/web/dns/lib/lang/br_dns_dkim.lng @@ -1,13 +1,13 @@ <?php -$wb['public_key_txt'] = 'Chave pública'; +$wb['public_key_txt'] = 'Chave Pública'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['record_exists_txt'] = 'Registro dns já existe.'; -$wb['dkim_disabled_txt'] = 'DKIM desabilitado para este domÃnio.'; +$wb['record_exists_txt'] = 'Este registro dns já existe.'; +$wb['dkim_disabled_txt'] = 'Chave DKIM está desabilitada para este domÃnio de e-mail.'; $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['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$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'; +$wb['data_error_empty'] = 'Chave pública ausente.'; +$wb['dkim_selector_empty_txt'] = 'Seletor DKIM está em branco.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_dmarc.lng b/interface/web/dns/lib/lang/br_dns_dmarc.lng index 8bb35318f8..bacd3af25f 100644 --- a/interface/web/dns/lib/lang/br_dns_dmarc.lng +++ b/interface/web/dns/lib/lang/br_dns_dmarc.lng @@ -1,50 +1,50 @@ <?php $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_none_txt'] = 'não fazer nada'; +$wb['dmarc_policy_txt'] = 'PolÃtica para recepção de e-mails'; +$wb['dmarc_policy_note_txt'] = 'Como os ISPs devem manipular as mensagens que falharam para SPF ou DKIM (DMARC).'; +$wb['dmarc_policy_none_txt'] = 'nenhuma'; $wb['dmarc_policy_quarantine_txt'] = 'quarentena'; $wb['dmarc_policy_reject_txt'] = 'rejeitar'; -$wb['dmarc_rua_txt'] = 'Agregrar os dados por endereço'; -$wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios do sistema sobre mensagens com falha e controles DMARC do domÃnio (separados por espaço em branco)'; -$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_rua_txt'] = 'Relatório de dados de endereços sumarizado'; +$wb['dmarc_rua_note_txt'] = 'Endereços de e-mail para receber relatórios dos ISPs sobre mensagens de falhas DMARC para este domÃnio (separado por espaço).'; +$wb['dmarc_ruf_txt'] = 'Endereço para relatório de dados forense'; +$wb['dmarc_ruf_note_txt'] = 'Endereços de e-mail para receber mensagens simples sobre falhas DMARC para este domÃnio (separado por espaço).'; $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_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_fo0_txt'] = 'Gerar relatório se todos os mecanismos de autenticação falharem em produzir um resultado \'pass\' do DMARC.'; +$wb['dmarc_fo1_txt'] = 'Gerar relatório se qualquer mecanismo falhar.'; +$wb['dmarc_fod_txt'] = 'Gerar relatório se a assinatura DKIM falhar na verificação.'; +$wb['dmarc_fos_txt'] = 'Gerar relatório se a consulta SPF falhar.'; +$wb['dmarc_adkim_txt'] = 'Alinhamento do identificador DKIM'; +$wb['dmarc_adkim_note_txt'] = '\'strict\' requer combinação exata entre DKIM do domÃnio e oremetente do e-mail'; $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_txt'] = 'Alinhamento do identificador SPF'; +$wb['dmarc_aspf_note_txt'] = '\'strict\' requer combinação exata o SPF do domÃnio e oremetente do e-mail'; $wb['dmarc_aspf_r_txt'] = 'relaxed'; $wb['dmarc_aspf_s_txt'] = 'strict'; -$wb['dmarc_rf_txt'] = 'Formatação do relatório'; -$wb['dmarc_rf_afrf_txt'] = 'Falha de autenticação para formatação do relatório'; -$wb['dmarc_rf_iodef_txt'] = 'Formato da descrição de troca objeto de incidentes'; -$wb['dmarc_pct_txt'] = 'Aplicar polÃticas para este percentual'; -$wb['dmarc_pct_note_txt'] = '% (100 padrão). Percentual de mensagens do domÃnio que serão verificadas.'; -$wb['dmarc_ri_txt'] = 'Intervalo de relatórios'; -$wb['dmarc_ri_note_txt'] = 'Segundos (padrão=86400). Valor em segundos que os relatórios de agregação serão gerados (86400 representa 1 dia).'; -$wb['dmarc_sp_txt'] = 'PolÃticas de subdomÃnio (padrão é o mesmo do domÃnio).'; +$wb['dmarc_rf_txt'] = 'Formato do Relatório'; +$wb['dmarc_rf_afrf_txt'] = 'Formato do relatório de falhas de autenticação'; +$wb['dmarc_rf_iodef_txt'] = 'Formato da descrição de incidentes de objetos de troca'; +$wb['dmarc_pct_txt'] = 'Aplicar polÃtica para este percentual'; +$wb['dmarc_pct_note_txt'] = '% (100 padrão). Percentual de mensagens para este domÃnio a serem verificadas.'; +$wb['dmarc_ri_txt'] = 'Intervalo de geração do relatório'; +$wb['dmarc_ri_note_txt'] = 'Segundos (padrão=86400). Intervalo, em segundos, para gerar relatórios sumarizados (86400 equivale a 1 dia).'; +$wb['dmarc_sp_txt'] = 'PolÃtica para subdomÃnio (padrão é o mesmo do domÃnio).'; $wb['dmarc_sp_same_txt'] = 'mesmo do domÃnio'; -$wb['dmarc_sp_none_txt'] = 'nenhum'; +$wb['dmarc_sp_none_txt'] = 'nenhuma'; $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'] = 'A polÃtica \'nenhuma\' é permitida apenas 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.'; -$wb['dmarc_invalid_email_txt'] = 'e-mail é inválido.'; -$wb['dmarc_empty_txt'] = 'Registro DMARC em branco - especifique ao menos um'; -$wb['record_exists_txt'] = 'Registro dns já existe.'; -$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta foi alcançado.'; -$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['dmarc_more_spf_txt'] = 'Existe mais de um registro SPF ativo'; +$wb['dmarc_invalid_email_txt'] = 'Endereço de e-mail inválido'; +$wb['dmarc_empty_txt'] = 'Registro DMARC em branco - especifique ao menos uma opção'; +$wb['record_exists_txt'] = 'Registro dns já existe'; +$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 dns nesta zona.'; +$wb['ttl_range_error'] = 'TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_ds.lng b/interface/web/dns/lib/lang/br_dns_ds.lng index 38b2183ead..843338a943 100644 --- a/interface/web/dns/lib/lang/br_dns_ds.lng +++ b/interface/web/dns/lib/lang/br_dns_ds.lng @@ -1,17 +1,18 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; $wb['data_txt'] = 'Dados'; $wb['ttl_txt'] = 'TTL'; $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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Dados está em branco.'; -$wb['data_error_regex'] = 'Dados é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; -$wb['invalid_type_ds'] = 'Registro DS é inválido.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O campo texto (Text) em branco'; +$wb['data_error_regex'] = 'O campo texto (Text) possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +$wb['invalid_type_ds'] = 'O registro DS possui formato inválido.'; + ?> diff --git a/interface/web/dns/lib/lang/br_dns_hinfo.lng b/interface/web/dns/lib/lang/br_dns_hinfo.lng index bf7b7f33d4..e7bdfa2f4c 100644 --- a/interface/web/dns/lib/lang/br_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/br_dns_hinfo.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Servidor'; +$wb['data_txt'] = 'Informação do host'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'O nome está em branco.'; -$wb['name_error_regex'] = 'O nome é inválido.'; -$wb['data_error_empty'] = 'Endereço IP está em branco.'; -$wb['data_error_regex'] = 'Endereço IP é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Informação do host está em branco.'; +$wb['data_error_regex'] = 'Informação do host possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng index e26b20a3f3..ffcef7d743 100644 --- a/interface/web/dns/lib/lang/br_dns_import.lng +++ b/interface/web/dns/lib/lang/br_dns_import.lng @@ -1,16 +1,16 @@ <?php +$wb['zone_file_import_txt'] = 'Importar arquivo de zona'; $wb['server_id_txt'] = 'Servidor'; $wb['client_txt'] = 'Cliente'; -$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_save_txt'] = 'Importar arquivo de zona'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['domain_txt'] = 'DomÃnio'; -$wb['zone_file_successfully_imported_txt'] = 'O arquivo de zona foi importado com sucesso!'; -$wb['error_no_valid_zone_file_txt'] = 'Este arquivo não parece ser um arquivo de zona válido!'; -$wb['zonefile_to_import_txt'] = 'Arquivo de zona'; -$wb['domain_field_desc_txt'] = 'Pode ficar em branco caso o domÃnio é o mesmo nome do arquivo ou faz parte do conteúdo do mesmo.'; -$wb['title'] = 'Importar arquivos de zonas'; -$wb['no_file_uploaded_error'] = 'Nenhum arquivo de zona importado.'; -$wb['zone_file_import_txt'] = 'Importar arquivo de zona'; -$wb['error_no_server_id'] = 'Nenhum servidor informado.'; -$wb['error_not_allowed_server_id'] = 'O servidor selecionado não tem permissão para esta conta.'; +$wb['zone_file_successfully_imported_txt'] = 'O arquivo de zona dns foi importado com sucesso!'; +$wb['error_no_valid_zone_file_txt'] = 'Aparentemente este não é um arquivo de zona dns válido!'; +$wb['zonefile_to_import_txt'] = 'Arquivo de Zona'; +$wb['domain_field_desc_txt'] = 'Pode ficar em branco caso o domÃnio seja o mesmo nome do arquivo ou faz parte do conteúdo do mesmo.'; +$wb['title'] = 'Importar arquivo de zona'; +$wb['no_file_uploaded_error'] = 'Nenhum arquivo de zona dns foi carregado.'; +$wb['error_no_server_id'] = 'Nenhum servidor foi informado.'; +$wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido nesta conta.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_loc.lng b/interface/web/dns/lib/lang/br_dns_loc.lng index 838fdcf12b..f84c2af034 100644 --- a/interface/web/dns/lib/lang/br_dns_loc.lng +++ b/interface/web/dns/lib/lang/br_dns_loc.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Dados'; +$wb['data_txt'] = 'Texto'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.'; -$wb['no_zone_perm'] = 'Upload (pastebin) para MUC'; -$wb['name_error_empty'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Dados está em branco.'; -$wb['data_error_regex'] = 'Dados é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Texto está em branco.'; +$wb['data_error_regex'] = 'Texto possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_mx.lng b/interface/web/dns/lib/lang/br_dns_mx.lng index 30116f16b2..45b721c1a8 100644 --- a/interface/web/dns/lib/lang/br_dns_mx.lng +++ b/interface/web/dns/lib/lang/br_dns_mx.lng @@ -1,18 +1,18 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Nome do servidor de e-mails'; +$wb['data_txt'] = 'Nome do servidor de e-mail'; $wb['aux_txt'] = 'Prioridade'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Nome do servidor de e-mails está em branco.'; -$wb['data_error_regex'] = 'Nome do servidor de e-mails é inválido.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O nome do servidor de e-mails está em branco.'; +$wb['data_error_regex'] = 'O nome do servidor de e-mails possui formato inválido.'; $wb['duplicate_mx_record_txt'] = 'Registro MX duplicado.'; -$wb['ttl_range_error'] = 'O ttl minÃmo são 60 segundos.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_ns.lng b/interface/web/dns/lib/lang/br_dns_ns.lng index 5b3b03a809..d83d0f7b8a 100644 --- a/interface/web/dns/lib/lang/br_dns_ns.lng +++ b/interface/web/dns/lib/lang/br_dns_ns.lng @@ -3,14 +3,14 @@ $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; $wb['name_txt'] = 'Zona'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Servidor de nomes'; +$wb['data_txt'] = 'Nome do servidor'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'Zona está em branco.'; -$wb['name_error_regex'] = 'Zona inválida.'; -$wb['data_error_empty'] = 'Nome está em branco.'; -$wb['data_error_regex'] = 'Nome é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'A zona está em branco.'; +$wb['name_error_regex'] = 'A zona possui formato inválido.'; +$wb['data_error_empty'] = 'Nome do servidor está em branco.'; +$wb['data_error_regex'] = 'Nome do servidor possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_ptr.lng b/interface/web/dns/lib/lang/br_dns_ptr.lng index cfb7eddd7f..b6214a62e8 100644 --- a/interface/web/dns/lib/lang/br_dns_ptr.lng +++ b/interface/web/dns/lib/lang/br_dns_ptr.lng @@ -3,14 +3,14 @@ $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; $wb['name_txt'] = 'Nome'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Nome reverso'; +$wb['data_txt'] = 'Nome canônico para o nome do host'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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['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 dns nesta zona.'; $wb['name_error_empty'] = 'O nome está em branco.'; -$wb['name_error_regex'] = 'O nome é inválido.'; -$wb['data_error_empty'] = 'Endereço IP está em branco.'; -$wb['data_error_regex'] = 'Endereço IP é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['name_error_regex'] = 'O nome possui formato inválido.'; +$wb['data_error_empty'] = 'O nome canônico está em branco.'; +$wb['data_error_regex'] = 'O nome canônico possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_rp.lng b/interface/web/dns/lib/lang/br_dns_rp.lng index d8f1cad2a5..4f782fb4a0 100644 --- a/interface/web/dns/lib/lang/br_dns_rp.lng +++ b/interface/web/dns/lib/lang/br_dns_rp.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; -$wb['data_txt'] = 'Responsável'; +$wb['data_txt'] = 'Responsável técnico'; $wb['ttl_txt'] = 'TTL'; $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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Responsável está em branco.'; -$wb['data_error_regex'] = 'Responsável é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Responsável técnico está em branco.'; +$wb['data_error_regex'] = 'Responsável técnico possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_slave.lng b/interface/web/dns/lib/lang/br_dns_slave.lng index 336164442c..a71e64c4f2 100644 --- a/interface/web/dns/lib/lang/br_dns_slave.lng +++ b/interface/web/dns/lib/lang/br_dns_slave.lng @@ -1,17 +1,17 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['origin_txt'] = 'Zona dns'; -$wb['ns_txt'] = 'NS'; +$wb['origin_txt'] = 'Zona DNS'; +$wb['secondary_zone_txt'] = 'Zona DNS secundária'; +$wb['ns_txt'] = 'NS (Endereço IP)'; $wb['active_txt'] = 'Ativo'; $wb['limit_dns_slave_zone_txt'] = 'O limite de zonas dns secundárias para esta conta foi alcançado.'; $wb['client_txt'] = 'Cliente'; -$wb['xfer_txt'] = 'Permitir transferência da zona para estes IPs (IPs separados por vÃrgulas)'; +$wb['xfer_txt'] = 'Permitir transferência de zonas para <br />Endereço(s) IP(s) (lista de endereços, separados por vÃrgula)'; $wb['server_id_error_empty'] = 'Nenhum servidor selecionado.'; $wb['origin_error_empty'] = 'Zona está em branco.'; -$wb['origin_error_unique'] = 'Já existe um registro igual para esta zona.'; -$wb['origin_error_regex'] = 'Zona inválida.'; -$wb['ns_error_regex'] = 'Registro NS é inválido.'; +$wb['origin_error_unique'] = 'Já existe este registro dns nesta zona.'; +$wb['origin_error_regex'] = 'Zona possui um formato inválido.'; +$wb['ns_error_regex'] = 'O NS possui formato inválido.'; $wb['eg_domain_tld'] = 'ex.: dominio.com.br.'; -$wb['ipv4_form_txt'] = 'Separar múltiplos endereços IP por vÃrgulas'; -$wb['secondary_zone_txt'] = 'Zona dns secundária'; +$wb['ipv4_form_txt'] = 'Separar múltiplos IPs com vÃrgulas.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng index b691471041..9b4c7e07ef 100644 --- a/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng +++ b/interface/web/dns/lib/lang/br_dns_slave_admin_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Zonas dns secundárias'; +$wb['list_head_txt'] = 'Zonas DNS Secundárias'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['origin_txt'] = 'Zona'; $wb['ns_txt'] = 'NS'; -$wb['add_new_record_txt'] = 'Adicionar nova zona'; +$wb['add_new_record_txt'] = 'Adicionar nova zona dns secundária'; $wb['eg_domain_tld'] = 'ex.: dominio.com.br.'; $wb['sys_groupid_txt'] = 'Cliente'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_slave_list.lng b/interface/web/dns/lib/lang/br_dns_slave_list.lng index 5ff54311a8..adf14dfdc7 100644 --- a/interface/web/dns/lib/lang/br_dns_slave_list.lng +++ b/interface/web/dns/lib/lang/br_dns_slave_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Zonas dns secundárias'; +$wb['list_head_txt'] = 'Zonas secundárias'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['origin_txt'] = 'Zona'; $wb['ns_txt'] = 'NS'; -$wb['add_new_record_txt'] = 'Adicionar nova zona'; +$wb['add_new_record_txt'] = 'Adicionar nova zona dns secundária'; $wb['eg_domain_tld'] = 'ex.: dominio.com.br.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_soa.lng b/interface/web/dns/lib/lang/br_dns_soa.lng index fcad62b44d..f5385c4706 100644 --- a/interface/web/dns/lib/lang/br_dns_soa.lng +++ b/interface/web/dns/lib/lang/br_dns_soa.lng @@ -2,43 +2,43 @@ $wb['server_id_txt'] = 'Servidor'; $wb['origin_txt'] = 'Zona (SOA)'; $wb['ns_txt'] = 'NS'; -$wb['mbox_txt'] = 'e-mail'; +$wb['mbox_txt'] = 'e-Mail'; $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Atualizar'; $wb['retry_txt'] = 'Repetir'; $wb['expire_txt'] = 'Expirar'; -$wb['minimum_txt'] = 'MinÃmo'; +$wb['minimum_txt'] = 'MÃnimo'; $wb['ttl_txt'] = 'TTL'; -$wb['xfer_txt'] = 'Permitir transferências de zona para estes IPs (IPs separados por vÃrgula).'; +$wb['xfer_txt'] = 'Permitir transferências de zonas para <br />Endereço(s) IP(s) (lista de endereços, separados por vÃrgula)'; $wb['active_txt'] = 'Ativo'; +$wb['dnssec_info_txt'] = 'O campo DS DNSSEC para o registro'; +$wb['dnssec_wanted_txt'] = 'Zona assinada (DNSSEC)'; +$wb['dnssec_wanted_info'] = 'Ao desativar o DNSSEC as chaves não serão excluÃdas se o DNSSEC tiver sido ativado anteriormente e as chaves já tiverem sido geradas, mas a zona não será mais entregue no formato assinado posteriormente. Se você usa o PowerDNS, as chaves serão excluÃdas!'; $wb['limit_dns_zone_txt'] = 'O limite de zonas dns para esta conta foi alcançado.'; $wb['client_txt'] = 'Cliente'; -$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.'; -$wb['server_id_error_empty'] = 'Servidor não selecionado.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['server_id_error_empty'] = 'Nenhum servidor selecionado'; $wb['origin_error_empty'] = 'Zona está em branco.'; -$wb['origin_error_unique'] = 'Este registro já existe nesta zona.'; -$wb['origin_error_regex'] = 'Zona inválida.'; -$wb['ns_error_regex'] = 'NS é inválido.'; -$wb['mbox_error_empty'] = 'Endereço de e-mail está em branco.'; -$wb['mbox_error_regex'] = 'Endereço de e-mail é inválido.'; +$wb['origin_error_unique'] = 'Já existe este registro dns nesta zona.'; +$wb['origin_error_regex'] = 'A zona dns possui formato inválido.'; +$wb['ns_error_regex'] = 'O registro NS possui formato inválido.'; +$wb['mbox_error_empty'] = 'O e-mail está em branco.'; +$wb['mbox_error_regex'] = 'O e-mail possui formato inválido.'; $wb['also_notify_txt'] = 'Também notificar'; -$wb['also_notify_error_regex'] = 'Por favor, insira um endereço IP.'; +$wb['also_notify_error_regex'] = 'Também notificar: Por favor, use um endereço IP.'; +$wb['xfer_error_regex'] = 'Xfer: Por favor use um ou mais endereço(s) IP, separado por vÃrgula ou use a palavra reservada: any'; $wb['update_acl_txt'] = 'Atualizar ACL'; $wb['seconds_txt'] = 'Segundos'; $wb['eg_domain_tld'] = 'ex.: dominio.com.br'; $wb['eg_ns1_domain_tld'] = 'ex.: ns1.dominio.com.br'; -$wb['eg_webmaster_domain_tld'] = 'ex.: postmaster@dominio.com.br'; -$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'O domÃnio não pode ser modificado. Por favor, entre em contato com o administrador do sistema se você deseja modificar este domÃnio.'; -$wb['refresh_range_error'] = 'Tempo mÃnimo de atualizações (refresh) são 60 segundos.'; -$wb['retry_range_error'] = 'Tempo mÃnimo de repetições (retry) são 60 segundos.'; -$wb['expire_range_error'] = 'Tempo mÃnimo para expirar (expire) são 60 segundos.'; -$wb['minimum_range_error'] = 'Tempo mÃnimo (minimum) são 60 segundos.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; -$wb['xfer_error_regex'] = 'Também notificar: Por favor, insira um endereço IP.'; -$wb['dnssec_info_txt'] = 'Registro para DNSSEC (DS-Data)'; -$wb['dnssec_wanted_txt'] = 'Zona assinada (DNSSEC)'; -$wb['dnssec_wanted_info'] = 'Quando desabilitar o DNSSEC as chaves não são eliminadas mas a zona não será disponibilizada assinada. Se você usar o PowerDNS, as chaves serão excluÃdas!'; -$wb['error_not_allowed_server_id'] = 'O servidor selecionado não tem permissão para esta conta.'; -$wb['soa_cannot_be_changed_txt'] = 'A zona SOA não pode ser modificada. Entre em contato com o administrador para alterar esta zona.'; +$wb['eg_webmaster_domain_tld'] = 'ex.: hostmaster@dominio.com.br'; +$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'O domÃnio não pode ser alterado. Por favor contate o administrador se deseja alterar o domÃnio.'; +$wb['refresh_range_error'] = 'Intervalo mÃnimo entre as atualizações são 60 segundos.'; +$wb['retry_range_error'] = 'Intervalo mÃnimo entre as repetições são 60 segundos.'; +$wb['expire_range_error'] = 'Intervalo mÃnimo para expirar são 60 segundos.'; +$wb['minimum_range_error'] = 'Intervalo mÃnimo são 60 segundos.'; +$wb['ttl_range_error'] = 'Intervalo mÃnimo do TTL são 60 segundos.'; +$wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.'; +$wb['soa_cannot_be_changed_txt'] = 'A zona (SOA) não pode ser alterada. Por favor, contate o administrador se deseja alterar esta zona.'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng index dd3169a830..26e8062d53 100644 --- a/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/br_dns_soa_admin_list.lng @@ -1,11 +1,12 @@ <?php -$wb['list_head_txt'] = 'Zonas dns'; +$wb['list_head_txt'] = 'Zonas DNS'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['origin_txt'] = 'Zona'; $wb['ns_txt'] = 'NS'; -$wb['mbox_txt'] = 'e-mail'; -$wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente'; -$wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente'; +$wb['mbox_txt'] = 'e-Mail'; +$wb['add_new_record_wizard_txt'] = 'Adicionar zona dns através do assistente'; +$wb['add_new_record_txt'] = 'Adicionar zona dns manualmente'; +$wb['zone_file_import_txt'] = 'Importar arquivo de zona'; $wb['sys_groupid_txt'] = 'Cliente'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_soa_list.lng b/interface/web/dns/lib/lang/br_dns_soa_list.lng index ddb24697e3..969df1d2a9 100644 --- a/interface/web/dns/lib/lang/br_dns_soa_list.lng +++ b/interface/web/dns/lib/lang/br_dns_soa_list.lng @@ -1,11 +1,10 @@ <?php -$wb['list_head_txt'] = 'Zonas dns'; +$wb['list_head_txt'] = 'Zonas DNS'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['origin_txt'] = 'Zona'; $wb['ns_txt'] = 'NS'; -$wb['mbox_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar nova zona dns'; +$wb['mbox_txt'] = 'e-Mail'; $wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente'; -$wb['import_zone_file_txt'] = 'Importar arquivo de zona'; +$wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng index 0c56cd32ed..739e59cf41 100644 --- a/interface/web/dns/lib/lang/br_dns_spf.lng +++ b/interface/web/dns/lib/lang/br_dns_spf.lng @@ -1,25 +1,25 @@ <?php $wb['data_txt'] = 'Registro SPF'; $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; -$wb['spf_mechanism_pass_txt'] = 'Pass - permite e-mail de outros remetentes'; -$wb['spf_mechanism_fail_txt'] = 'Fail - rejeita e-mails de outros remetentes'; +$wb['spf_mechanism_pass_txt'] = 'Pass - permitir e-mails de outros remetentes'; +$wb['spf_mechanism_fail_txt'] = 'Fail - rejeitar e-mails de outros remetentes'; $wb['spf_mechanism_softfail_txt'] = 'SoftFail - permite e-mails de outros remetentes mas marca os mesmos'; $wb['spf_mechanism_neutral_txt'] = 'Neutral - não faz nada'; $wb['spf_mx_txt'] = 'Permite servidores listados como MX enviar e-mail deste domÃnio'; $wb['spf_a_txt'] = 'Permite o endereço IP atual do domÃnio enviar e-mails deste domÃnio'; $wb['spf_ip_txt'] = 'Endereço IP adicional no formato CIDR pode entregar ou retransmitir e-mails para este domÃnio'; -$wb['spf_ip_note_txt'] = '(endereços IPs separados por espaços em branco)'; -$wb['spf_invalid_ip_txt'] = 'Endereço IP é inválido.'; +$wb['spf_ip_note_txt'] = '(endereços IPs separados por espaços)'; +$wb['spf_invalid_ip_txt'] = 'Endereço IP inválido.'; $wb['spf_hostname_txt'] = 'Qualquer outro servidor pode entregar ou retransmitir e-mails para este domÃnio'; -$wb['spf_hostname_note_txt'] = '(servidors separados por espaço em branco)'; -$wb['spf_invalid_hostname_txt'] = 'Hospedeiro inválido'; +$wb['spf_hostname_note_txt'] = '(servidores separados por espaço)'; +$wb['spf_invalid_hostname_txt'] = 'O nome do host é inválido.'; $wb['spf_domain_txt'] = 'Qualquer domÃnio pode entregar ou retransmitir e-mails para este domÃnio'; -$wb['spf_domain_note_txt'] = '(domÃnios separados por espaço em branco)'; -$wb['spf_invalid_domain_txt'] = 'DomÃnio é inválido.'; +$wb['spf_domain_note_txt'] = '(domÃnios separados por espaço)'; +$wb['spf_invalid_domain_txt'] = 'O domÃnio é inválido.'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['record_exists_txt'] = 'Registro DS já existe.'; +$wb['record_exists_txt'] = 'Registro dns já existe.'; $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['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_srv.lng b/interface/web/dns/lib/lang/br_dns_srv.lng index fefec736ee..97d2604896 100644 --- a/interface/web/dns/lib/lang/br_dns_srv.lng +++ b/interface/web/dns/lib/lang/br_dns_srv.lng @@ -1,20 +1,20 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; $wb['target_txt'] = 'Alvo'; $wb['weight_txt'] = 'Peso'; $wb['port_txt'] = 'Porta'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Servidor está em branco.'; -$wb['data_error_regex'] = 'Servidor é inválido.'; -$wb['srv_error_regex'] = 'Registro do servidor é inválido. São necessários 3 textos separados por espaços.'; $wb['aux_txt'] = 'Prioridade'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Registro SVR está em branco.'; +$wb['data_error_regex'] = 'Registro SVR possui formato inválido.'; +$wb['srv_error_regex'] = 'O formato do registro SVR é inválido. O registro SVR deve conter 3 cadeias de texto separados por espaços.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_template.lng b/interface/web/dns/lib/lang/br_dns_template.lng index 8b099ceb14..81a8f190ed 100644 --- a/interface/web/dns/lib/lang/br_dns_template.lng +++ b/interface/web/dns/lib/lang/br_dns_template.lng @@ -1,7 +1,7 @@ <?php $wb['name_txt'] = 'Nome'; -$wb['fields_txt'] = 'Campos'; +$wb['fields_txt'] = 'O campos'; $wb['template_txt'] = 'Gabarito'; $wb['visible_txt'] = 'VisÃvel'; -$wb['placeholder_txt'] = 'Placeholder'; +$wb['placeholder_txt'] = 'Ãrea Reservada'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_template_list.lng b/interface/web/dns/lib/lang/br_dns_template_list.lng index f6455314d6..8ec480d727 100644 --- a/interface/web/dns/lib/lang/br_dns_template_list.lng +++ b/interface/web/dns/lib/lang/br_dns_template_list.lng @@ -1,6 +1,6 @@ <?php -$wb['list_head_txt'] = 'Assistente de gabaritos dns'; +$wb['list_head_txt'] = 'Gabarito do Assistente DNS'; $wb['visible_txt'] = 'VisÃvel'; $wb['name_txt'] = 'Nome'; -$wb['add_new_record_txt'] = 'Adicionar novo gabarito'; +$wb['add_new_record_txt'] = 'Adicionar novo registro'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_tlsa.lng b/interface/web/dns/lib/lang/br_dns_tlsa.lng index 5e1bf2256e..4037ebe595 100644 --- a/interface/web/dns/lib/lang/br_dns_tlsa.lng +++ b/interface/web/dns/lib/lang/br_dns_tlsa.lng @@ -1,16 +1,16 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Descritor de serviço'; +$wb['name_txt'] = 'Descritor do serviço'; $wb['type_txt'] = 'Tipo'; $wb['data_txt'] = 'Dados TLSA'; $wb['ttl_txt'] = 'TTL'; $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['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados). 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['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; +$wb['data_error_regex'] = 'Formato dos dados TLSA inválido. 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/br_dns_txt.lng b/interface/web/dns/lib/lang/br_dns_txt.lng index 356bbfa5f2..641cb9f2e1 100644 --- a/interface/web/dns/lib/lang/br_dns_txt.lng +++ b/interface/web/dns/lib/lang/br_dns_txt.lng @@ -1,19 +1,19 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['zone_txt'] = 'Zona'; -$wb['name_txt'] = 'Nome'; +$wb['name_txt'] = 'Nome do host'; $wb['type_txt'] = 'Tipo'; $wb['data_txt'] = 'Texto'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; -$wb['limit_dns_record_txt'] = 'O limite de zonas 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'] = 'Nome está em branco.'; -$wb['name_error_regex'] = 'Nome é inválido.'; -$wb['data_error_empty'] = 'Endereço IP está em branco.'; -$wb['data_error_regex'] = 'Endereço IP é inválido.'; -$wb['ttl_range_error'] = 'O ttl mÃnimo são 60 segundos.'; -$wb['invalid_type_dkim'] = 'DKIM não permitido. Use o botão DKIM.'; -$wb['invalid_type_dmarc'] = 'DMARC não permitido. Use o botão DMARC.'; -$wb['invalid_type_spf'] = 'SPF não permitido. Use o botão SPF.'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O texto está em branco.'; +$wb['data_error_regex'] = 'O texto é inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +$wb['invalid_type_dkim'] = 'Sem permissão para DKIM. Use o botão DKIM.'; +$wb['invalid_type_dmarc'] = 'Sem permissão para DMARC. Use o botão DMARC.'; +$wb['invalid_type_spf'] = 'Sem permissão para SPF. Use o botão SPF.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_wizard.lng b/interface/web/dns/lib/lang/br_dns_wizard.lng index 5e20f05593..d132d4646b 100644 --- a/interface/web/dns/lib/lang/br_dns_wizard.lng +++ b/interface/web/dns/lib/lang/br_dns_wizard.lng @@ -1,45 +1,45 @@ <?php +$wb['list_head_txt'] = 'Assistente de zona dns'; +$wb['list_desc_txt'] = 'Adicionar zona dns através do assistente'; +$wb['dns_zone_txt'] = 'Zona DNS'; $wb['template_id_txt'] = 'Gabarito'; $wb['server_id_txt'] = 'Servidor'; $wb['client_txt'] = 'Cliente'; -$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_save_txt'] = 'Adicionar zona dns'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['domain_txt'] = 'DomÃnio'; -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'e-Mail'; +$wb['dkim_txt'] = 'DKIM'; +$wb['dnssec_txt'] = 'Assinar zona (DNSSEC)'; $wb['ns1_txt'] = 'NS 1'; $wb['ns2_txt'] = 'NS 2'; $wb['ip_txt'] = 'Endereço IP'; $wb['ipv6_txt'] = 'Endereço IPv6'; -$wb['error_origin_empty'] = 'Origem está em branco.'; +$wb['error_origin_empty'] = 'Origin está em branco.'; $wb['error_ns_empty'] = 'NS está em branco.'; -$wb['error_mbox_empty'] = 'Endereço de e-mail está em branco.'; -$wb['error_refresh_empty'] = 'Atualizar está em branco.'; -$wb['error_retry_empty'] = 'Atualizar está em branco.'; -$wb['error_expire_empty'] = 'Expirar está em branco.'; -$wb['error_minimum_empty'] = 'MinÃmo está em branco.'; -$wb['error_ttl_empty'] = 'TTL está em branco.'; +$wb['error_mbox_empty'] = 'conta de e-mail (mbox) está em branco.'; +$wb['error_refresh_empty'] = 'Atualizar (refresh) está em branco.'; +$wb['error_retry_empty'] = 'Repetir (retry) está em branco.'; +$wb['error_expire_empty'] = 'Expirar (expire) está em branco.'; +$wb['error_minimum_empty'] = 'MÃnimo (minimum) está em branco.'; +$wb['error_ttl_empty'] = 'Tempo (TTL) está em branco.'; $wb['error_domain_empty'] = 'DomÃnio está em branco.'; -$wb['error_ip_empty'] = 'IP está em branco.'; -$wb['error_ipv6_empty'] = 'IPv6 está em branco.'; +$wb['error_ip_empty'] = 'Endereço IP está em branco.'; +$wb['error_ipv6_empty'] = 'Endereço IPv6 está em branco.'; $wb['error_ns1_empty'] = 'NS1 está em branco.'; $wb['error_ns2_empty'] = 'NS2 está em branco.'; $wb['error_email_empty'] = 'Endereço de e-mail está em branco.'; -$wb['error_domain_regex'] = 'DomÃnio contém caracteres inválidos.'; -$wb['error_ns1_regex'] = 'NS1 contém caracteres inválidos.'; -$wb['error_ns2_regex'] = 'NS2 contém caracteres inválidos.'; -$wb['error_email_regex'] = 'Endereço de e-mail é inválido.'; -$wb['dns_zone_txt'] = 'Zona dns'; +$wb['error_domain_regex'] = 'O domÃnio possui caracteres inválidos.'; +$wb['error_ns1_regex'] = 'NS1 possui caracteres inválidos.'; +$wb['error_ns2_regex'] = 'NS2 possui caracteres inválidos.'; +$wb['error_email_regex'] = 'O endereço de e-mail não possui um endereço válido.'; $wb['globalsearch_resultslimit_of_txt'] = 'de'; $wb['globalsearch_resultslimit_results_txt'] = 'resultados'; -$wb['globalsearch_noresults_text_txt'] = 'Sem resultados'; -$wb['globalsearch_noresults_limit_txt'] = '0 resultados'; +$wb['globalsearch_noresults_text_txt'] = 'Sem resultados.'; +$wb['globalsearch_noresults_limit_txt'] = '0 resultado(s)'; $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar'; $wb['globalsearch_suggestions_text_txt'] = 'Sugestões'; -$wb['list_head_txt'] = 'Assistente de zona dns'; -$wb['list_desc_txt'] = 'Adicionar zona dns através do assistente'; -$wb['dkim_txt'] = 'DKIM ativo'; $wb['error_no_server_id'] = 'Nenhum servidor selecionado.'; $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.'; -$wb['dnssec_txt'] = 'Zona assinada (DNSSEC)'; $wb['limit_dns_zone_txt'] = 'O limite de zonas dns para esta conta foi alcançado.'; ?> diff --git a/interface/web/dns/lib/lang/tr.lng b/interface/web/dns/lib/lang/tr.lng index a101cf7b2b..a291a5af08 100644 --- a/interface/web/dns/lib/lang/tr.lng +++ b/interface/web/dns/lib/lang/tr.lng @@ -1,4 +1,5 @@ <?php + $wb['DNS'] = 'DNS'; $wb['Zones'] = 'Bölgeler'; $wb['DNS A'] = 'DNS A'; @@ -17,6 +18,6 @@ $wb['DNS TXT'] = 'DNS TXT'; $wb['DNS Wizard'] = 'DNS Yardımcısı'; $wb['Add DNS Zone'] = 'DNS Bölgesi Ekle'; $wb['Templates'] = 'Kalıplar'; -$wb['Secondary Zones'] = 'Ä°kincil Bölgeler'; -$wb['Import Zone File'] = 'Bölge Dosyası Alma'; +$wb['Secondary Zones'] = 'Ä°kincil DNS Bölgeleri'; +$wb['Import Zone File'] = 'Bölge Dosyası İçe Aktarma'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_a.lng b/interface/web/dns/lib/lang/tr_dns_a.lng index 0cf1414fd8..905ff04744 100644 --- a/interface/web/dns/lib/lang/tr_dns_a.lng +++ b/interface/web/dns/lib/lang/tr_dns_a.lng @@ -2,16 +2,16 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'IP Adresi'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; $wb['data_error_duplicate'] = 'Bu A DNS kaydı zaten var'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; -$wb['ip_error_wrong'] = 'IP-Address format invalid'; +$wb['ip_error_wrong'] = 'IP adresi biçimi geçersiz'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_a_list.lng b/interface/web/dns/lib/lang/tr_dns_a_list.lng index 129b32fdb2..61a4e2a7d3 100644 --- a/interface/web/dns/lib/lang/tr_dns_a_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_a_list.lng @@ -7,7 +7,7 @@ $wb['name_txt'] = 'Ad'; $wb['data_txt'] = 'Veri'; $wb['aux_txt'] = 'Öncelik'; $wb['ttl_txt'] = 'TTL Süresi'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['add_new_record_txt'] = 'DNS A Kaydı Ekle'; $wb['page_txt'] = 'Sayfa'; $wb['page_of_txt'] = '/'; diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng index b0c28aed41..1726f80a8f 100644 --- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng @@ -2,15 +2,15 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'IPv6 Adresleri'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; -$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; +$wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; +$wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; -$wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_alias.lng b/interface/web/dns/lib/lang/tr_dns_alias.lng index 9bd6e72ce6..ce78fcf303 100644 --- a/interface/web/dns/lib/lang/tr_dns_alias.lng +++ b/interface/web/dns/lib/lang/tr_dns_alias.lng @@ -2,12 +2,12 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'Hedef Sunucu Adı'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.'; $wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_cname.lng b/interface/web/dns/lib/lang/tr_dns_cname.lng index 00366b9695..fa9a497e12 100644 --- a/interface/web/dns/lib/lang/tr_dns_cname.lng +++ b/interface/web/dns/lib/lang/tr_dns_cname.lng @@ -2,12 +2,12 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'Hedef Sunucu Adı'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölge kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_dkim.lng b/interface/web/dns/lib/lang/tr_dns_dkim.lng index 4d45fb4fe9..b7ffb1930f 100644 --- a/interface/web/dns/lib/lang/tr_dns_dkim.lng +++ b/interface/web/dns/lib/lang/tr_dns_dkim.lng @@ -1,13 +1,13 @@ <?php -$wb['public_key_txt'] = 'Public-Key'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['record_exists_txt'] = 'DNS-Record already exists'; -$wb['dkim_disabled_txt'] = 'DKIM disabled for this mail-domain'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; -$wb['selector_txt'] = 'DKIM-Selector'; -$wb['data_error_empty'] = 'Public-Key missing'; -$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty'; +$wb['public_key_txt'] = 'Herkese Açık Anahtar'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['record_exists_txt'] = 'DNS kaydı zaten var'; +$wb['dkim_disabled_txt'] = 'Bu e-posta etki alanı için DKIM devre dışı bırakılmış.'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +$wb['selector_txt'] = 'DKIM Seçici'; +$wb['data_error_empty'] = 'Herkese açık anahtar eksik'; +$wb['dkim_selector_empty_txt'] = 'DKIM Seçici boÅŸ olamaz'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_dmarc.lng b/interface/web/dns/lib/lang/tr_dns_dmarc.lng index cf78bb8eed..6e98e94663 100644 --- a/interface/web/dns/lib/lang/tr_dns_dmarc.lng +++ b/interface/web/dns/lib/lang/tr_dns_dmarc.lng @@ -1,50 +1,50 @@ <?php -$wb['data_txt'] = 'DMARC Record'; -$wb['domain_txt'] = 'Domain'; -$wb['dmarc_policy_txt'] = 'Mail Receiver Policy'; -$wb['dmarc_policy_note_txt'] = 'How ISPs should handle messages that failed SPF or DKIM (DMARC).'; -$wb['dmarc_policy_none_txt'] = 'none'; -$wb['dmarc_policy_quarantine_txt'] = 'quarantine'; -$wb['dmarc_policy_reject_txt'] = 'reject'; -$wb['dmarc_rua_txt'] = 'Aggregate Data Reporting Address'; -$wb['dmarc_rua_note_txt'] = 'Email to receive reports from ISPs aboute messages which failed DMARC checks for the domain (separated by whitespaces).'; -$wb['dmarc_ruf_txt'] = 'Forensic Data Reporting Address'; -$wb['dmarc_ruf_note_txt'] = 'Email to receive sample messages that are failing DMARC checks for the domain (separated by whitespaces).'; -$wb['dmarc_fo_txt'] = 'Forensic reporting options'; -$wb['dmarc_fo0_txt'] = 'Generate reports if all underlying authentication mechanisms fail to produce a DMARC \'pass\' result.'; -$wb['dmarc_fo1_txt'] = 'Generate reports if any mechanisms fail.'; -$wb['dmarc_fod_txt'] = 'Generate report if DKIM signature failed to verify.'; -$wb['dmarc_fos_txt'] = 'Generate report if SPF failed.'; -$wb['dmarc_adkim_txt'] = 'DKIM identifier alignment'; -$wb['dmarc_adkim_note_txt'] = '\'strict\' requires exact matching between DKIM domain and email\'s from'; -$wb['dmarc_adkim_r_txt'] = 'relaxed'; -$wb['dmarc_adkim_s_txt'] = 'strict'; -$wb['dmarc_aspf_txt'] = 'SPF identifier alignment'; -$wb['dmarc_aspf_note_txt'] = '\'strict\' requires exact matching between SPF domain and email\'s from'; -$wb['dmarc_aspf_r_txt'] = 'relaxed'; -$wb['dmarc_aspf_s_txt'] = 'strict'; -$wb['dmarc_rf_txt'] = 'Report Format'; -$wb['dmarc_rf_afrf_txt'] = 'Authentication Failure Reporting Format'; -$wb['dmarc_rf_iodef_txt'] = 'Incident Object Description Exchange Format'; -$wb['dmarc_pct_txt'] = 'Apply Policy to this Percentage'; -$wb['dmarc_pct_note_txt'] = '% (100 default). Messages in percent from the domain you want ISPs to check.'; -$wb['dmarc_ri_txt'] = 'Reporting Interval'; -$wb['dmarc_ri_note_txt'] = 'Seconds (default=86400). The time in seconds that aggregate reports should be generate (86400 represents 1 day).'; -$wb['dmarc_sp_txt'] = 'Subdomain Policy (Defaults to same as domain).'; -$wb['dmarc_sp_same_txt'] = 'same as domain'; -$wb['dmarc_sp_none_txt'] = 'none'; -$wb['dmarc_sp_quarantine_txt'] = 'quarantine'; -$wb['dmarc_sp_reject_txt'] = 'reject'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['dmarc_policy_error_txt'] = 'Only policy \'none\' is allowed without DKIM-signed emails.'; -$wb['dmarc_no_dkim_txt'] = 'No active DKIM Record.'; -$wb['dmarc_no_spf_txt'] = 'No active SPF Record.'; -$wb['dmarc_more_spf_txt'] = 'More than one active SPF Record'; -$wb['dmarc_invalid_email_txt'] = 'Invalid Email'; -$wb['dmarc_empty_txt'] = 'DMARC Record empty - specify at least one option'; -$wb['record_exists_txt'] = 'DNS-Record already exists'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['data_txt'] = 'DMARC Kaydı'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['dmarc_policy_txt'] = 'E-posta Alma Ä°lkesi'; +$wb['dmarc_policy_note_txt'] = 'SPF ya da DKIM (DMARC) doÄŸrulaması yapılamadığında Ä°nternet Hizmeti SaÄŸlayıcıların iletileri nasıl iÅŸleyeceÄŸi.'; +$wb['dmarc_policy_none_txt'] = 'iÅŸlem yapılmasın'; +$wb['dmarc_policy_quarantine_txt'] = 'karantinaya alınsın'; +$wb['dmarc_policy_reject_txt'] = 'reddedilsin'; +$wb['dmarc_rua_txt'] = 'Verilerin BildirileceÄŸi Adres'; +$wb['dmarc_rua_note_txt'] = 'Etki alanı için DMARC doÄŸrulamasını geçemeyen iletiler hakkında Ä°nternet Hizmeti SaÄŸlayıcılardan gelen bildirimlerin alınacağı e-posta adresleri (boÅŸluk ile ayırarak yazın).'; +$wb['dmarc_ruf_txt'] = 'Adli BiliÅŸim Verilerinin BildirileceÄŸi Adres'; +$wb['dmarc_ruf_note_txt'] = 'Etki alanı için DMARC doÄŸrulamasını geçemeyen örnek iletilerin alınacağı e-posta adresleri (boÅŸluk ile ayırarak yazın).'; +$wb['dmarc_fo_txt'] = 'Adli biliÅŸim bildirim seçenekleri'; +$wb['dmarc_fo0_txt'] = 'Belirtilen hiç bir kimlik doÄŸrulama yöntemi bir DMARC sonucu alamazsa bildirimler üretilsin.'; +$wb['dmarc_fo1_txt'] = 'Yöntemlerden biri doÄŸrulama yapamazsa bildirimler üretilsin.'; +$wb['dmarc_fod_txt'] = 'DKIM imzası doÄŸrulanamazsa bildirim üretilsin.'; +$wb['dmarc_fos_txt'] = 'SPF baÅŸarısız olursa bildirim gönderilsin.'; +$wb['dmarc_adkim_txt'] = 'DKIM belirteci deÄŸerlendirmesi'; +$wb['dmarc_adkim_note_txt'] = ' seçeneÄŸinde DKIM etki alanı ile e-postanın geldiÄŸi etki alanının bire bir eÅŸleÅŸmesi gerekir'; +$wb['dmarc_adkim_r_txt'] = 'gevÅŸek'; +$wb['dmarc_adkim_s_txt'] = 'sıkı'; +$wb['dmarc_aspf_txt'] = 'SPF belirteci deÄŸerlendirmesi'; +$wb['dmarc_aspf_note_txt'] = ' seçeneÄŸinde SPF etki alanı ile e-postanın geldiÄŸi etki alanının bire bir eÅŸleÅŸmesi gerekir'; +$wb['dmarc_aspf_r_txt'] = 'gevÅŸek'; +$wb['dmarc_aspf_s_txt'] = 'sıkı'; +$wb['dmarc_rf_txt'] = 'Bildirim Biçimi'; +$wb['dmarc_rf_afrf_txt'] = 'Kimlik DoÄŸrulama Sorunlarını Bildirme Biçimi'; +$wb['dmarc_rf_iodef_txt'] = 'Olay Nesnesi Açıklama DeÄŸiÅŸimi Biçimi'; +$wb['dmarc_pct_txt'] = 'Ä°lkenin Uygulanacağı Yüzde'; +$wb['dmarc_pct_note_txt'] = 'Ä°nternet Hizmeti saÄŸlayıcı tarafından denetlenmesini istediÄŸiniz iletilerin yüzdesi (varsayılan %100).'; +$wb['dmarc_ri_txt'] = 'Bildirim Sıklığı'; +$wb['dmarc_ri_note_txt'] = 'Saniye cinsinden bildirim raporlarının üretilme sıklığı (varsayılan deÄŸer, bir güne karşılık 86400).'; +$wb['dmarc_sp_txt'] = 'Alt Etki Alanı Ä°lkesi (Varsayılan deÄŸerler etki alanı ile aynıdır).'; +$wb['dmarc_sp_same_txt'] = 'etki alanı ile aynı'; +$wb['dmarc_sp_none_txt'] = 'iÅŸlem yapılmasın'; +$wb['dmarc_sp_quarantine_txt'] = 'karantiya atılsın'; +$wb['dmarc_sp_reject_txt'] = 'reddedilsin'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['dmarc_policy_error_txt'] = 'DKIM ile imzalanmış e-postalar için yalnız ilkesi seçilebilir.'; +$wb['dmarc_no_dkim_txt'] = 'Etkin bir DKIM kaydı yok.'; +$wb['dmarc_no_spf_txt'] = 'Etkin bir SPF kaydı yok.'; +$wb['dmarc_more_spf_txt'] = 'Birden çok etkin SPF kaydı var'; +$wb['dmarc_invalid_email_txt'] = 'E-posta Adresi Geçersiz'; +$wb['dmarc_empty_txt'] = 'DMARC kaydı boÅŸ - en az bir seçenek seçin'; +$wb['record_exists_txt'] = 'DNS kaydı zaten var'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_ds.lng b/interface/web/dns/lib/lang/tr_dns_ds.lng index c3622dc5b5..4ab7447d0a 100644 --- a/interface/web/dns/lib/lang/tr_dns_ds.lng +++ b/interface/web/dns/lib/lang/tr_dns_ds.lng @@ -1,17 +1,18 @@ <?php -$wb['server_id_txt'] = 'Server'; -$wb['zone_txt'] = 'Zone'; -$wb['name_txt'] = 'Hostname'; -$wb['type_txt'] = 'type'; -$wb['data_txt'] = 'Data'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['name_error_empty'] = 'The hostname is empty.'; -$wb['name_error_regex'] = 'The hostname has the wrong format.'; -$wb['data_error_empty'] = 'Text empty'; -$wb['data_error_regex'] = 'Text format invalid'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; -$wb['invalid_type_ds'] = 'DS-Record has a wrong format.'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['zone_txt'] = 'Bölge'; +$wb['name_txt'] = 'Sunucu Adı'; +$wb['type_txt'] = 'tür'; +$wb['data_txt'] = 'Veri'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; +$wb['name_error_regex'] = 'Sunucu adının biçimi hatalı.'; +$wb['data_error_empty'] = 'Metin boÅŸ olamaz'; +$wb['data_error_regex'] = 'Metin biçimi geçersiz'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +$wb['invalid_type_ds'] = 'DS kaydının biçimi hatalı.'; + ?> diff --git a/interface/web/dns/lib/lang/tr_dns_hinfo.lng b/interface/web/dns/lib/lang/tr_dns_hinfo.lng index 9082420e04..c47718c63c 100644 --- a/interface/web/dns/lib/lang/tr_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/tr_dns_hinfo.lng @@ -2,12 +2,12 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'Sunucu Bilgisi'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Sunucu bilgisi boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng index 64073d2b49..0f95a3131f 100644 --- a/interface/web/dns/lib/lang/tr_dns_import.lng +++ b/interface/web/dns/lib/lang/tr_dns_import.lng @@ -1,16 +1,16 @@ <?php -$wb['zone_file_import_txt'] = 'Bölge Dosyası Alma'; +$wb['zone_file_import_txt'] = 'Bölge Dosyası İçe Aktarma'; $wb['server_id_txt'] = 'Sunucu'; $wb['client_txt'] = 'Müşteri'; -$wb['btn_save_txt'] = 'Bölge Dosyasını Al'; +$wb['btn_save_txt'] = 'Bölge Dosyasını İçe Aktar'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['zone_file_successfully_imported_txt'] = 'Bölge dosyası alındı!'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['zone_file_successfully_imported_txt'] = 'Bölge dosyası içe aktarıldı!'; $wb['error_no_valid_zone_file_txt'] = 'Bu bölge dosyası geçersiz görünüyor!'; $wb['zonefile_to_import_txt'] = 'Bölge Dosyası'; -$wb['domain_field_desc_txt'] = 'Alan adı dosya adında ya da bölge dosyasının içeriÄŸinde bulunuyor ise boÅŸ bırakılabilir.'; -$wb['title'] = 'Bölge Dosyalarını Al'; +$wb['domain_field_desc_txt'] = 'Etki alanı dosya adında ya da bölge dosyasının içeriÄŸinde bulunuyor ise boÅŸ bırakılabilir.'; +$wb['title'] = 'Bölge Dosyalarını İçe Aktar'; $wb['no_file_uploaded_error'] = 'Hiçbir bölge dosyası yüklenmedi'; -$wb['error_no_server_id'] = 'No server provided.'; -$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['error_no_server_id'] = 'Sunucu belirtilmemiÅŸ.'; +$wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_loc.lng b/interface/web/dns/lib/lang/tr_dns_loc.lng index dc9ad9a006..25350c9aa8 100644 --- a/interface/web/dns/lib/lang/tr_dns_loc.lng +++ b/interface/web/dns/lib/lang/tr_dns_loc.lng @@ -1,16 +1,16 @@ <?php -$wb['server_id_txt'] = 'Server'; -$wb['zone_txt'] = 'Zone'; -$wb['name_txt'] = 'Hostname'; -$wb['type_txt'] = 'type'; -$wb['data_txt'] = 'Data'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['name_error_empty'] = 'The hostname is empty.'; -$wb['name_error_regex'] = 'The hostname has the wrong format.'; -$wb['data_error_empty'] = 'Text empty'; -$wb['data_error_regex'] = 'Text format invalid'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['zone_txt'] = 'Bölge'; +$wb['name_txt'] = 'Sunucu Adı'; +$wb['type_txt'] = 'Tür'; +$wb['data_txt'] = 'Veri'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; +$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; +$wb['data_error_empty'] = 'Metin boÅŸ'; +$wb['data_error_regex'] = 'Metin biçimi geçersiz'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_mx.lng b/interface/web/dns/lib/lang/tr_dns_mx.lng index b3efeab1bb..6f39e991bc 100644 --- a/interface/web/dns/lib/lang/tr_dns_mx.lng +++ b/interface/web/dns/lib/lang/tr_dns_mx.lng @@ -2,17 +2,17 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; -$wb['data_txt'] = 'Posta sunucusu adı'; +$wb['type_txt'] = 'Tür'; +$wb['data_txt'] = 'E-posta Sunucusu Adı'; $wb['aux_txt'] = 'Öncelik'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; -$wb['data_error_empty'] = 'Posta sunucusu adı boÅŸ olamaz'; -$wb['data_error_regex'] = 'Posta sunucusu adı biçimi geçersiz'; +$wb['data_error_empty'] = 'E-posta sunucusu adı boÅŸ olamaz'; +$wb['data_error_regex'] = 'E-posta sunucusu adı biçimi geçersiz'; $wb['duplicate_mx_record_txt'] = 'Bu MX kaydı zaten var.'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_ns.lng b/interface/web/dns/lib/lang/tr_dns_ns.lng index 03975af5fa..e32b086091 100644 --- a/interface/web/dns/lib/lang/tr_dns_ns.lng +++ b/interface/web/dns/lib/lang/tr_dns_ns.lng @@ -2,12 +2,12 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Bölge'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'tür'; $wb['data_txt'] = 'Ad Sunucusu Adı'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Bölge boÅŸ olamaz.'; $wb['name_error_regex'] = 'Bölge biçimi geçersiz.'; $wb['data_error_empty'] = 'Ad sunucusu boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_rp.lng b/interface/web/dns/lib/lang/tr_dns_rp.lng index 0a01c2dbe8..56c10cb7e4 100644 --- a/interface/web/dns/lib/lang/tr_dns_rp.lng +++ b/interface/web/dns/lib/lang/tr_dns_rp.lng @@ -2,12 +2,12 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'Ä°lgili KiÅŸi'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Ä°lgili kiÅŸi boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_slave.lng b/interface/web/dns/lib/lang/tr_dns_slave.lng index d6c83a92fa..8c83c1591c 100644 --- a/interface/web/dns/lib/lang/tr_dns_slave.lng +++ b/interface/web/dns/lib/lang/tr_dns_slave.lng @@ -13,5 +13,5 @@ $wb['origin_error_unique'] = 'Bu bölge için zaten bir kayıt var.'; $wb['origin_error_regex'] = 'Bölge biçimi geçersiz.'; $wb['ns_error_regex'] = 'NS biçimi geçersiz.'; $wb['eg_domain_tld'] = 'Örnek: domain.tld.'; -$wb['ipv4_form_txt'] = 'Separate multiple IPs with commas'; +$wb['ipv4_form_txt'] = 'Birden çok IP adresini virgül ile ayırarak yazın'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_soa.lng b/interface/web/dns/lib/lang/tr_dns_soa.lng index 02e325e427..fd39de04f5 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa.lng @@ -9,11 +9,14 @@ $wb['retry_txt'] = 'Yinelenme'; $wb['expire_txt'] = 'Sona erme'; $wb['minimum_txt'] = 'En düşük'; $wb['ttl_txt'] = 'TTL Süresi'; -$wb['xfer_txt'] = 'Åžu IP adreslerine (virgülle ayrılmış)<br />bölge aktarımı yapılabilsin'; +$wb['xfer_txt'] = 'Åžu IP adreslerine (virgül ile ayrırak yazın)<br />bölge aktarımı yapılabilsin'; $wb['active_txt'] = 'Etkin'; +$wb['dnssec_info_txt'] = 'Kayıt defteri için DNSSEC DS verisi'; +$wb['dnssec_wanted_txt'] = 'Ä°mza bölgesi (DNSSEC)'; +$wb['dnssec_wanted_info'] = 'Devre dışı bırakıldığında DNSSEC daha önce etkinleÅŸtirilmiÅŸ ve anahtarlar üretilmiÅŸ ise DNSSEC anahtarları silinir. Ancak bölge bundan sonra imzalanmış biçimde aktarılmaz.'; $wb['limit_dns_zone_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS bölgesi sayısına ulaÅŸtınız.'; $wb['client_txt'] = 'Müşteri'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['server_id_error_empty'] = 'Sunucu seçilmemiÅŸ'; $wb['origin_error_empty'] = 'Bölge boÅŸ olamaz.'; $wb['origin_error_unique'] = 'Bu bölge için bir kayıt zaten var.'; @@ -21,24 +24,21 @@ $wb['origin_error_regex'] = 'Bölge biçimi geçersiz.'; $wb['ns_error_regex'] = 'NS geçersiz formatta.'; $wb['mbox_error_empty'] = 'E-posta boÅŸ olamaz.'; $wb['mbox_error_regex'] = 'E-posta biçimi geçersiz.'; -$wb['also_notify_txt'] = 'Ayrıca Bildir'; -$wb['also_notify_error_regex'] = 'Lütfen bir IP adresi kullanın.'; -$wb['xfer_error_regex'] = 'Ayrıca bildir: Lütfen bir IP adresi kullanın.'; +$wb['also_notify_txt'] = 'Ayrıca Bildirilsin'; +$wb['also_notify_error_regex'] = 'Ayrıca Bildirilsin: Lütfen bir IP adresi kullanın.'; +$wb['xfer_error_regex'] = 'Aktarılsın: Bir ya da , ile ayrılmış birkaç IP adresi ya da any sözcüğünü kullanın.'; $wb['update_acl_txt'] = 'EDL Güncelle'; $wb['seconds_txt'] = 'Saniye'; $wb['eg_domain_tld'] = 'Örnek: domain.tld'; $wb['eg_ns1_domain_tld'] = 'Örnek: ns1.domain.tld'; $wb['eg_webmaster_domain_tld'] = 'Örnek: webmaster@domain.tld'; -$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Alan adı deÄŸiÅŸtirilemedi. Lütfen alan adını deÄŸiÅŸtirmek için sistem yöneticisi ile görüşün.'; +$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Etki alanı deÄŸiÅŸtirilemedi. Lütfen etki alanını deÄŸiÅŸtirmek için sistem yöneticisi ile görüşün.'; $wb['refresh_range_error'] = 'En kısa yenilenme süresi 60 saniyedir.'; $wb['retry_range_error'] = 'En kısa yinelenme süresi 60 saniyedir.'; $wb['expire_range_error'] = 'En kısa sona erme süresi 60 saniyedir.'; $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 delivered in signed format afterwards. If you use PowerDNS, keys WILL be deleted!'; -$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'; +$wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; +$wb['soa_cannot_be_changed_txt'] = 'Bölge (SOA) deÄŸiÅŸtirilemez. Lütfen bölgeyi deÄŸiÅŸtirmek için yöneticiniz ile görüşün.'; +$wb['configuration_error_txt'] = 'YAPILANDIRMA SORUNU'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng index d8e56c17ee..490cdc7b4f 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng @@ -5,7 +5,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['origin_txt'] = 'Bölge'; $wb['ns_txt'] = 'Ad Sunucusu'; $wb['mbox_txt'] = 'E-posta'; -$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS bölgesi ekle'; +$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle'; $wb['add_new_record_txt'] = 'El ile DNS Bölgesi Ekle'; $wb['sys_groupid_txt'] = 'Müşteri'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_soa_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_list.lng index 8f7ed985ee..831ff6afd7 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa_list.lng @@ -5,7 +5,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['origin_txt'] = 'Bölge'; $wb['ns_txt'] = 'Ad Sunucusu'; $wb['mbox_txt'] = 'E-posta'; -$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS bölgesi ekle'; +$wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle'; $wb['add_new_record_txt'] = 'DNS Bölgesi (SOA) Ekle'; -$wb['import_zone_file_txt'] = 'Import Zone File'; +$wb['import_zone_file_txt'] = 'Bölge Dosyasını İçe Aktar'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng index df8d1fe145..40cad402a4 100644 --- a/interface/web/dns/lib/lang/tr_dns_spf.lng +++ b/interface/web/dns/lib/lang/tr_dns_spf.lng @@ -1,25 +1,25 @@ <?php -$wb['data_txt'] = 'SPF-Record'; -$wb['spf_mechanism_txt'] = 'SPF Mechanism'; -$wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; -$wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; -$wb['spf_mechanism_softfail_txt'] = 'SoftFail - allow mail from other senders but mark the email'; -$wb['spf_mechanism_neutral_txt'] = 'Neutral - do nothing'; -$wb['spf_mx_txt'] = 'Allow servers listed as MX to send email for this domain'; -$wb['spf_a_txt'] = 'Allow current IP address of the domain to send email for this domain'; -$wb['spf_ip_txt'] = 'Additional IP addresses in CIDR format that deliver or relay mail for this domain'; -$wb['spf_ip_note_txt'] = '(Sepearate IPs with whitespaces)'; -$wb['spf_invalid_ip_txt'] = 'Invalid IP-address'; -$wb['spf_hostname_txt'] = 'Any other server hostname that may deliver or relay mail for this domain'; -$wb['spf_hostname_note_txt'] = '(Sepearate hostnames with whitespaces)'; -$wb['spf_invalid_hostname_txt'] = 'Invalid hostname'; -$wb['spf_domain_txt'] = 'Any domains that may deliver or relay mail for this domain'; -$wb['spf_domain_note_txt'] = '(Sepearate domains with whitespaces)'; -$wb['spf_invalid_domain_txt'] = 'Invalid domainname'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['record_exists_txt'] = 'DNS-Record already exists'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['data_txt'] = 'SPF Kaydı'; +$wb['spf_mechanism_txt'] = 'SPF Yöntemi'; +$wb['spf_mechanism_pass_txt'] = 'Kabul - DiÄŸer göndericilerden gelen e-postalar kabul edilsin'; +$wb['spf_mechanism_fail_txt'] = 'Red - DiÄŸer göndericilerden gelen e-postalar reddedilsin'; +$wb['spf_mechanism_softfail_txt'] = 'Yazılımsal Red - DiÄŸer göndericilerden gelen e-postalar kabul edilsin ancak e-posta iÅŸaretlensin'; +$wb['spf_mechanism_neutral_txt'] = 'Tepkisiz - Hiç bir ÅŸey yapılmasın'; +$wb['spf_mx_txt'] = 'MX olarak listelenen sunucular bu etki alanı adına e-posta gönderebilsin'; +$wb['spf_a_txt'] = 'Etki alanının geçerli IP adresleri bu etki alanı adına e-posta gönderebilsin'; +$wb['spf_ip_txt'] = 'CIDR biçiminde, bu etki alanı için e-posta gönderebilecek ya da aktarabilecek IP adresleri'; +$wb['spf_ip_note_txt'] = '(IP adreslerini boÅŸluk ile ayırarak yazın)'; +$wb['spf_invalid_ip_txt'] = 'IP adresi geçersiz'; +$wb['spf_hostname_txt'] = 'Bu etki alanı için e-posta gönderebilecek ya da aktarabilecek diÄŸer sunucuların adları'; +$wb['spf_hostname_note_txt'] = '(Sunucu adlarını boÅŸluk ile ayırarak yazın)'; +$wb['spf_invalid_hostname_txt'] = 'Sunucu adı geçersiz'; +$wb['spf_domain_txt'] = 'Bu etki alanı için e-posta gönderebilecek ya da aktarabilecek etki alanı adları'; +$wb['spf_domain_note_txt'] = '(Etki alanı adlarını boÅŸluk ile ayırarak yazın)'; +$wb['spf_invalid_domain_txt'] = 'Etki alanı adı geçersiz'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['record_exists_txt'] = 'DNS kaydı zaten var'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_srv.lng b/interface/web/dns/lib/lang/tr_dns_srv.lng index c7ad55a852..8af151db87 100644 --- a/interface/web/dns/lib/lang/tr_dns_srv.lng +++ b/interface/web/dns/lib/lang/tr_dns_srv.lng @@ -2,7 +2,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['target_txt'] = 'Hedef'; $wb['weight_txt'] = 'Ağırlık'; $wb['port_txt'] = 'Kapı'; @@ -10,7 +10,7 @@ $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['aux_txt'] = 'Öncelik'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS Bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Sunucu kaydı boÅŸ olamaz'; diff --git a/interface/web/dns/lib/lang/tr_dns_template.lng b/interface/web/dns/lib/lang/tr_dns_template.lng index 3ca594f62e..37ba3b5883 100644 --- a/interface/web/dns/lib/lang/tr_dns_template.lng +++ b/interface/web/dns/lib/lang/tr_dns_template.lng @@ -3,5 +3,4 @@ $wb['name_txt'] = 'Ad'; $wb['fields_txt'] = 'Alanlar'; $wb['template_txt'] = 'Kalıp'; $wb['visible_txt'] = 'Görünür'; -$wb['placeholder_txt'] = 'Placeholder'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_tlsa.lng b/interface/web/dns/lib/lang/tr_dns_tlsa.lng index 3b87e2ad59..1fe0310d3a 100644 --- a/interface/web/dns/lib/lang/tr_dns_tlsa.lng +++ b/interface/web/dns/lib/lang/tr_dns_tlsa.lng @@ -1,16 +1,16 @@ <?php -$wb['server_id_txt'] = 'Server'; -$wb['zone_txt'] = 'Zone'; -$wb['name_txt'] = 'Service-Descriptor'; -$wb['type_txt'] = 'type'; -$wb['data_txt'] = 'TLSA-Data'; -$wb['ttl_txt'] = 'TTL'; -$wb['active_txt'] = 'Active'; -$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; -$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; -$wb['name_error_empty'] = 'The hostname is empty.'; -$wb['name_error_regex'] = 'The hostname has the wrong format. Correct: _<port>._(tcp|udp).<hostname>'; -$wb['data_error_empty'] = 'TLSA-Data empty'; -$wb['data_error_regex'] = 'TLSA dataformat is wrong. Correct: n n n HASH'; -$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['zone_txt'] = 'Bölge'; +$wb['name_txt'] = 'Hizmet Belirteci'; +$wb['type_txt'] = 'tür'; +$wb['data_txt'] = 'TLSA Verisi'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; +$wb['name_error_regex'] = 'Sunucu adının biçimi hatalı. DoÄŸru biçim: _<kapı>._(tcp|udp).<sunucuadı>'; +$wb['data_error_empty'] = 'TLSA verisi boÅŸ olamaz.'; +$wb['data_error_regex'] = 'TLSA veri biçimi hatalı. DoÄŸru biçim: n n n HASH'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_txt.lng b/interface/web/dns/lib/lang/tr_dns_txt.lng index 7b77bae7f9..632b1e7b69 100644 --- a/interface/web/dns/lib/lang/tr_dns_txt.lng +++ b/interface/web/dns/lib/lang/tr_dns_txt.lng @@ -2,18 +2,18 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['zone_txt'] = 'Bölge'; $wb['name_txt'] = 'Sunucu Adı'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['data_txt'] = 'Metin'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; -$wb['no_zone_perm'] = 'Bu DNS bölgesi kaydını ekleme izniniz yok.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Metin boÅŸ olamaz'; $wb['data_error_regex'] = 'Metin biçimi geçersiz'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; -$wb['invalid_type_dkim'] = 'DKIM is not allowed. Use the DKIM button'; -$wb['invalid_type_dmarc'] = 'DMARC is not allowed. Use the DMARC button'; -$wb['invalid_type_spf'] = 'SPF is not allowed. Use the SPF button.'; +$wb['invalid_type_dkim'] = 'DKIM yazılamaz. DKIM düğmesini kullanın'; +$wb['invalid_type_dmarc'] = 'DMARC yazılamaz. DMARC düğmesini kullanın'; +$wb['invalid_type_spf'] = 'SPF yazılamaz. SPF düğmesini kullanın.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_wizard.lng b/interface/web/dns/lib/lang/tr_dns_wizard.lng index 1a96393914..f0a8b38980 100644 --- a/interface/web/dns/lib/lang/tr_dns_wizard.lng +++ b/interface/web/dns/lib/lang/tr_dns_wizard.lng @@ -7,11 +7,14 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['client_txt'] = 'Müşteri'; $wb['btn_save_txt'] = 'DNS Kaydı Ekle'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['email_txt'] = 'E-posta'; -$wb['ns1_txt'] = 'Ad Sunucusu 1'; -$wb['ns2_txt'] = 'Ad Sunucusu 2'; +$wb['dkim_txt'] = 'DKIM'; +$wb['dnssec_txt'] = 'Ä°mza bölgesi (DNSSEC)'; +$wb['ns1_txt'] = '1. Ad Sunucusu'; +$wb['ns2_txt'] = '2. Ad Sunucusu'; $wb['ip_txt'] = 'IP Adresi'; +$wb['ipv6_txt'] = 'IPv6 Adresi'; $wb['error_origin_empty'] = 'Kaynak boÅŸ olamaz.'; $wb['error_ns_empty'] = 'Ad sunucusu boÅŸ olamaz.'; $wb['error_mbox_empty'] = 'Mbox boÅŸ olamaz.'; @@ -20,14 +23,15 @@ $wb['error_retry_empty'] = 'Yinelenme boÅŸ olamaz.'; $wb['error_expire_empty'] = 'Sona erme boÅŸ olamaz.'; $wb['error_minimum_empty'] = 'En az boÅŸ olamaz.'; $wb['error_ttl_empty'] = 'TTL süresi boÅŸ olamaz.'; -$wb['error_domain_empty'] = 'Alan adı boÅŸ olamaz'; +$wb['error_domain_empty'] = 'Etki alanı boÅŸ olamaz'; $wb['error_ip_empty'] = 'IP boÅŸ olamaz.'; -$wb['error_ns1_empty'] = 'As Sunucusu 1 boÅŸ olamaz.'; -$wb['error_ns2_empty'] = 'Ad Sunucusu 2 boÅŸ olamaz.'; +$wb['error_ipv6_empty'] = 'IPv6 boÅŸ olamaz.'; +$wb['error_ns1_empty'] = '1. Ad Sunucusu boÅŸ olamaz.'; +$wb['error_ns2_empty'] = '2. Ad Sunucusu boÅŸ olamaz.'; $wb['error_email_empty'] = 'E-posta boÅŸ olamaz.'; -$wb['error_domain_regex'] = 'Alan adında geçersiz karakterler var.'; -$wb['error_ns1_regex'] = 'Ad Sunucusu 1 adında geçersiz karakterler var.'; -$wb['error_ns2_regex'] = 'Ad Sunucusu 2 adında geçersiz karakterler var.'; +$wb['error_domain_regex'] = 'Etki alanı adında geçersiz karakterler var.'; +$wb['error_ns1_regex'] = '1. Ad Sunucusu adında geçersiz karakterler var.'; +$wb['error_ns2_regex'] = '2. Ad Sunucusu adında geçersiz karakterler var.'; $wb['error_email_regex'] = 'E-posta adresi geçersiz.'; $wb['globalsearch_resultslimit_of_txt'] = '/'; $wb['globalsearch_resultslimit_results_txt'] = 'sonuç'; @@ -35,11 +39,7 @@ $wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.'; $wb['globalsearch_noresults_limit_txt'] = '0 sonuç'; $wb['globalsearch_searchfield_watermark_txt'] = 'Arama'; $wb['globalsearch_suggestions_text_txt'] = 'Öneriler'; -$wb['dkim_txt'] = 'DKIM'; -$wb['dnssec_txt'] = 'Sign zone (DNSSEC)'; -$wb['ipv6_txt'] = 'IPv6 Address'; -$wb['error_ipv6_empty'] = 'IPv6 empty.'; -$wb['error_no_server_id'] = 'No server provided.'; -$wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; -$wb['limit_dns_zone_txt'] = 'The max. number of DNS zones for your account is reached.'; +$wb['error_no_server_id'] = 'Bir sunucu belirtilmemiÅŸ.'; +$wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; +$wb['limit_dns_zone_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS bölgesi sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/help/lib/lang/br.lng b/interface/web/help/lib/lang/br.lng index a745e60960..217d3afa14 100644 --- a/interface/web/help/lib/lang/br.lng +++ b/interface/web/help/lib/lang/br.lng @@ -1,14 +1,14 @@ <?php -$wb['Support Message'] = 'Mensagem do suporte'; +$wb['Support Message'] = 'Mensagem de suporte'; $wb['Message'] = 'Mensagem'; $wb['Send message'] = 'Enviar mensagem'; -$wb['View messages'] = 'Visualizar mensagem'; +$wb['View messages'] = 'Visualizar mensagens'; $wb['Support'] = 'Suporte'; $wb['About ISPConfig'] = 'Sobre o ISPConfig'; $wb['Version'] = 'Versão'; -$wb['Frequently Asked Questions'] = 'Perguntas frequentes (FAQ)'; -$wb['FAQ Sections'] = 'Sessões FAQ'; -$wb['Manage Sections'] = 'Gerenciar sessões'; -$wb['Add a Question & Answer Pair'] = 'Adicionar par pergunta/resposta'; -$wb['Manage Questions'] = 'Gerenciar perguntas'; +$wb['Frequently Asked Questions'] = 'Questões Frequentes - FAQ'; +$wb['FAQ Sections'] = 'Seções FAQ'; +$wb['Manage Sections'] = 'Gerenciar seções'; +$wb['Add a Question & Answer Pair'] = 'Adicionar novo par questão/resposta'; +$wb['Manage Questions'] = 'Gerenciar questões'; ?> diff --git a/interface/web/help/lib/lang/br_faq_form.lng b/interface/web/help/lib/lang/br_faq_form.lng index 331268a722..b24ec1c58f 100644 --- a/interface/web/help/lib/lang/br_faq_form.lng +++ b/interface/web/help/lib/lang/br_faq_form.lng @@ -1,6 +1,6 @@ <?php -$wb['faq_faq_txt'] = 'Perguntas Mais Frequentes (FAQ)'; -$wb['faq_question_txt'] = 'Pergunta'; +$wb['faq_faq_txt'] = 'Questões Frequentes'; +$wb['faq_question_txt'] = 'Questão'; $wb['faq_answer_txt'] = 'Resposta'; -$wb['faq_section_txt'] = 'Sessão'; +$wb['faq_section_txt'] = 'Seção'; ?> diff --git a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng index 8bda9d7f42..ee9f769d91 100644 --- a/interface/web/help/lib/lang/br_faq_manage_questions_list.lng +++ b/interface/web/help/lib/lang/br_faq_manage_questions_list.lng @@ -1,9 +1,9 @@ <?php -$wb['faq_question_txt'] = 'Pergunta'; -$wb['faq_section_name_txt'] = 'Sessão'; +$wb['faq_question_txt'] = 'Questão'; +$wb['faq_section_name_txt'] = 'Seção'; $wb['faq_delete_txt'] = 'Remover'; $wb['faq_edit_txt'] = 'Editar'; -$wb['faq_sections_txt'] = 'Sessão'; -$wb['faq_faq_questions_txt'] = 'Perguntas frequentes (FAQ)'; -$wb['faq_new_question_txt'] = 'Adicionar par pergunta/resposta'; +$wb['faq_sections_txt'] = 'Seção'; +$wb['faq_faq_questions_txt'] = 'Questões Frequentes'; +$wb['faq_new_question_txt'] = 'Adicionar novo par questão/resposta'; ?> diff --git a/interface/web/help/lib/lang/br_faq_sections_form.lng b/interface/web/help/lib/lang/br_faq_sections_form.lng index f3f9f9f583..2fb709cbd2 100644 --- a/interface/web/help/lib/lang/br_faq_sections_form.lng +++ b/interface/web/help/lib/lang/br_faq_sections_form.lng @@ -1,3 +1,3 @@ <?php -$wb['faq_section_name_txt'] = 'Nome da Sessão'; +$wb['faq_section_name_txt'] = 'Nome da seção'; ?> diff --git a/interface/web/help/lib/lang/br_help_faq_sections_list.lng b/interface/web/help/lib/lang/br_help_faq_sections_list.lng index f1f549e615..aec81d7b59 100644 --- a/interface/web/help/lib/lang/br_help_faq_sections_list.lng +++ b/interface/web/help/lib/lang/br_help_faq_sections_list.lng @@ -1,8 +1,8 @@ <?php -$wb['faq_section_name_txt'] = 'Nome da Sessão'; +$wb['faq_section_name_txt'] = 'Nome da seção'; $wb['faq_delete_txt'] = 'Remover'; $wb['faq_edit_txt'] = 'Editar'; -$wb['faq_sections_txt'] = 'Sessões'; -$wb['faq_faq_sections_txt'] = 'Sessões FAQ'; -$wb['faq_new_section_txt'] = 'Adicionar nova sessão'; +$wb['faq_sections_txt'] = 'Seções'; +$wb['faq_faq_sections_txt'] = 'Seções FAQ'; +$wb['faq_new_section_txt'] = 'Adicionar nova seção'; ?> diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index 19ae309a1f..dad8ce7fd5 100644 --- a/interface/web/help/lib/lang/br_support_message.lng +++ b/interface/web/help/lib/lang/br_support_message.lng @@ -1,16 +1,16 @@ <?php -$wb['recipient_id_txt'] = 'Para'; -$wb['sender_id_txt'] = 'De'; +$wb['recipient_id_txt'] = 'ID do destinatário'; +$wb['sender_id_txt'] = 'ID do remetente'; $wb['subject_txt'] = 'Assunto'; $wb['message_txt'] = 'Mensagem'; -$wb['tstamp_txt'] = 'Dados'; +$wb['tstamp_txt'] = 'Data/Hora'; $wb['reply_txt'] = 'Responder'; $wb['date_txt'] = 'Data'; -$wb['support_request_subject_txt'] = 'Requisição para Suporte'; -$wb['support_request_txt'] = 'Você tem uma nova requisição para suporte. Por favor, não responda esse e-mail, mas processe a requisição de suporte dentro do ISPConfig.'; -$wb['answer_to_support_request_txt'] = 'Você tem uma nova resposta para requisição de suporte. Por favor, não responda esse e-mail, mas processe a requisição de suporte dentro do ISPConfig.'; -$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['support_request_subject_txt'] = 'Requisição de Suporte'; +$wb['support_request_txt'] = 'Você recebeu uma requisição de suporte. Por favor, não responda este e-mail, mas processe a requisição dentro do ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'Você recebeu uma resposta à sua requisição de suporte. Por favor, não responda este e-mail, mas processe a mensagem dentro do ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Sua resposta à requisição de suporte foi enviada. Por favor, não responda este 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 pôde ser enviada porque o remetente e/ou destinatário são e-mails inválidos.'; +$wb['subject_is_empty'] = 'O assunto está em branco.'; ?> diff --git a/interface/web/help/lib/lang/br_support_message_list.lng b/interface/web/help/lib/lang/br_support_message_list.lng index 7d888659d8..e4add42b79 100644 --- a/interface/web/help/lib/lang/br_support_message_list.lng +++ b/interface/web/help/lib/lang/br_support_message_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Mensagens do Suporte'; -$wb['sender_id_txt'] = 'De'; +$wb['list_head_txt'] = 'Mensagens de Suporte'; +$wb['sender_id_txt'] = 'Remetente'; $wb['subject_txt'] = 'Assunto'; -$wb['add_new_record_txt'] = 'Adicionar uma nova mensagem de suporte'; +$wb['add_new_record_txt'] = 'Adicionar nova mensagem de suporte'; $wb['date_txt'] = 'Data'; ?> diff --git a/interface/web/help/lib/lang/tr.lng b/interface/web/help/lib/lang/tr.lng index 4aeaa0ac0f..c6b0877af5 100644 --- a/interface/web/help/lib/lang/tr.lng +++ b/interface/web/help/lib/lang/tr.lng @@ -11,4 +11,5 @@ $wb['FAQ Sections'] = 'SSS Bölümleri'; $wb['Manage Sections'] = 'Bölüm Yönetimi'; $wb['Add a Question & Answer Pair'] = 'Soru-Yanıt Ekle'; $wb['Manage Questions'] = 'Soru Yönetimi'; + ?> diff --git a/interface/web/help/lib/lang/tr_support_message.lng b/interface/web/help/lib/lang/tr_support_message.lng index fcd785e627..ae60d28a19 100644 --- a/interface/web/help/lib/lang/tr_support_message.lng +++ b/interface/web/help/lib/lang/tr_support_message.lng @@ -7,10 +7,10 @@ $wb['tstamp_txt'] = 'Zaman damgası'; $wb['reply_txt'] = 'Yanıt'; $wb['date_txt'] = 'Tarih'; $wb['support_request_subject_txt'] = 'Destek Ä°steÄŸi'; -$wb['support_request_txt'] = 'Bir destek isteÄŸinde bulundunuz. Lütfen bu e-postay yanıtlamayın. Destek isteÄŸinizi ISPConfig üzerinden izleyin.'; +$wb['support_request_txt'] = 'Bir destek isteÄŸinde bulundunuz. Lütfen bu e-postayı yanıtlamayın. Destek isteÄŸinizi ISPConfig üzerinden izleyin.'; $wb['answer_to_support_request_txt'] = 'Destek isteÄŸiniz yanıtlandı. Lütfen bu e-postayı yanıtlamayın. Destek isteÄŸinizi ISPConfig üzerinden izleyin.'; $wb['answer_to_support_request_sent_txt'] = 'Destek isteÄŸinize yazdığınız yanıt gönderildi. Lütfen bu e-potayı yanıtlamayın.'; $wb['support_request_sent_txt'] = 'Destek isteÄŸiniz gönderildi. Lütfen bu e-postayı yanıtlamayın.'; $wb['recipient_or_sender_email_address_not_valid_txt'] = 'Gönderen ya da alıcı adresi geçersiz olduÄŸundan bu ileti gönderilemedi.'; -$wb['subject_is_empty'] = 'The subject can not be empty.'; +$wb['subject_is_empty'] = 'Konu boÅŸ olamaz.'; ?> diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng index 379b719f4d..9baaf55212 100644 --- a/interface/web/login/lib/lang/br.lng +++ b/interface/web/login/lib/lang/br.lng @@ -13,18 +13,18 @@ $wb['user_regex_error'] = 'O nome do usuário contém menos de 1 ou mais de 64 c $wb['pw_error_length'] = 'Tamanho da senha não pode ser maior do que 64 caracteres.'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; -$wb['login_button_txt'] = 'Entrar'; +$wb['login_button_txt'] = 'Acessar'; $wb['pw_lost_txt'] = 'Esqueceu a senha?'; $wb['error_maintenance_mode'] = 'Esta instalação do ISPConfig atualmente está sob manutenção. Nós retornaremos em breve. Obrigado por sua paciência.'; -$wb['login_txt'] = 'Acesso'; +$wb['login_txt'] = 'Acessar'; $wb['pw_reset_txt'] = 'Redefinir senha'; $wb['pw_button_txt'] = 'Reenviar senha'; $wb['email_txt'] = 'E-mail'; -$wb['theme_not_compatible'] = 'O tema escolhido não é compatÃvel com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema compatÃvel com ISPConfig.<br />O tema padrão foi configurado automaticamente.'; +$wb['theme_not_compatible'] = 'O tema escolhido não é compatÃvel com a versão atual do ISPConfig. Por favor, procure por uma nova versão deste tema, compatÃvel com ISPConfig.<br />O tema padrão foi configurado automaticamente.'; $wb['back_txt'] = 'Voltar'; $wb['email_error'] = 'O e-mail contém caracteres não permitidos ou formato é inválido.'; $wb['stay_logged_in_txt'] = 'Manter-me conectado'; -$wb['lost_password_function_disabled_txt'] = 'Função de redefinir senha indisponÃvel para este usuário.'; +$wb['lost_password_function_disabled_txt'] = 'Função "redefinir senha" indisponÃvel para este usuário.'; $wb['pw_reset_act'] = 'Você receberá um link de ativação. Por favor, acesse o link de ativação para confirmar sua nova senha.'; $wb['pw_reset_act_mail_title'] = 'Confirmar nova senha para o painel de controle ISPConfig'; $wb['pw_reset_act_mail_msg'] = 'Por favor, confirme se você deseja reiniciar sua senha do painel de controle ISPConfig, acessando o link de ativação: '; diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 5d9fb269b9..72c2c97e40 100644 --- a/interface/web/login/lib/lang/br_login_as.lng +++ b/interface/web/login/lib/lang/br_login_as.lng @@ -1,12 +1,12 @@ <?php -$wb['login_1_txt'] = 'Você deseja acessar como usuário'; -$wb['login_2_txt'] = 'Para retornar ao administrador, você pode \\"voltar\\" selecionando sair.'; +$wb['login_1_txt'] = 'Gostaria de acessar como cliente?'; +$wb['login_2_txt'] = 'Se confirmar, poderá "voltar" clicando em sair.'; $wb['btn_yes_txt'] = 'Sim, acessar como cliente'; -$wb['btn_back_txt'] = 'Não, voltar a lista'; +$wb['btn_back_txt'] = 'Não, voltar para a lista'; $wb['udp_port_help_txt'] = 'Separado por vÃrgula'; $wb['active_txt'] = 'Ativo'; -$wb['firewall_error_unique'] = 'Já existe um registro de firewall igual para este servidor.'; -$wb['tcp_ports_error_regex'] = 'Caractere não permitido para atribuição numa porta TCP. Caracteres permitidos são: números, \':\' e \',\'.'; -$wb['udp_ports_error_regex'] = 'Caractere não permitido para atribuição numa porta UDP. Caracteres permitidos são: números, \':\' e \',\'.'; -$wb['login_as_or_logout_txt'] = 'Você deseja acessar novamente como {UTYPE} ou sair?'; +$wb['firewall_error_unique'] = 'Já existe uma regra de firewall idêntica para este servidor.'; +$wb['tcp_ports_error_regex'] = 'Caractere não permitido para porta tcp. Caracteres permitidos são números, ":" e ",".'; +$wb['udp_ports_error_regex'] = 'Caractere não permitido para porta udp. Caracteres permitidos são números, ":" e ",".'; +$wb['login_as_or_logout_txt'] = 'Gostaria de realizar acesso novamente como {UTYPE} ou sair?'; ?> diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng index c50ea5c8a2..863a6310d5 100644 --- a/interface/web/login/lib/lang/tr.lng +++ b/interface/web/login/lib/lang/tr.lng @@ -3,12 +3,15 @@ $wb['error_user_password_empty'] = 'Kullanıcı adı ya da parola boÅŸ'; $wb['error_user_password_incorrect'] = 'Kullanıcı adı ya da parola hatalı'; $wb['error_user_blocked'] = 'Kullanıcı engellenmiÅŸ.'; $wb['error_user_too_many_logins'] = 'Fazla sayıda hatalı oturum açmayı denediniz, Lütfen 15 dakika sonra yeniden deneyin.'; -$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola oluÅŸturularak e-posta adresinize gönderilir.'; +$wb['pass_reset_txt'] = 'Yazdığınız e-posta adresi hesabınızdakine uyarsa, yeni bir parola üretilerek e-posta adresinize gönderilir.'; $wb['pw_reset'] = 'Parolanız sıfırlandı ve e-posta adresinize gönderildi.'; +$wb['pw_reset_act'] = 'Size bir etkinleÅŸtirme baÄŸlantısı gönderildi. Parola isteÄŸinizi onaylamak için baÄŸlantıya tıklayın.'; $wb['pw_error'] = 'Kullanıcı adı ya da e-posta adresiniz doÄŸru deÄŸil.'; $wb['pw_error_noinput'] = 'Lütfen e-posta adresinizi ya da kullanıcı adınızı yazın.'; $wb['pw_reset_mail_msg'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı. Yeni parolanız: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı'; +$wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control Panel parola sıfırlama isteÄŸini onaylayın'; +$wb['pw_reset_act_mail_msg'] = 'Lütfen ISPConfig 3 Control Panel hesabınızın parolasını sıfırlamak için ÅŸu baÄŸlantıya tıklayın: '; $wb['user_regex_error'] = 'Kullanıcı adınız izin verilmeyen karakterlerden oluÅŸuyor ya da 64 karakterden uzun.'; $wb['pw_error_length'] = 'Parola 64 karakterden uzun.'; $wb['email_error'] = 'E-posta adresi izin verilmeyen karakterlerden oluÅŸuyor ya da biçimi hatalı.'; @@ -24,11 +27,8 @@ $wb['back_txt'] = 'Geri'; $wb['error_maintenance_mode'] = 'ISPConfig bakımda. Kısa bir süre sonra yeniden çalışıyor olacak, sabrınız için teÅŸekkürler.'; $wb['theme_not_compatible'] = 'SeçilmiÅŸ tema geçerli ISPConfig sürümü ile uyumlu deÄŸil. Lütfen temanın yeni sürümünü araÅŸtırın.<br />Varsayılan tema etkinleÅŸtirildi.'; $wb['stay_logged_in_txt'] = 'Oturumum açık kalsın'; -$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.'; -$wb['pw_reset_act_mail_title'] = 'Confirm ISPConfig 3 Control panel password reset'; -$wb['pw_reset_act_mail_msg'] = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: '; -$wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.'; -$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.'; -$wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.'; -$wb['lost_password_function_denied_txt'] = 'This activation link is not valid.'; +$wb['lost_password_function_disabled_txt'] = 'Bu kullanıcı parolamı unuttum özelliÄŸini kullanamaz.'; +$wb['lost_password_function_wait_txt'] = 'Henüz yeni parola isteÄŸinde bulunamazsınız. Lütfen bir kaç dakika bekleyin.'; +$wb['lost_password_function_expired_txt'] = 'Bu etkinleÅŸtirme baÄŸlantısının süresi geçmiÅŸ. Lütfen yeni bir parola sıfırlama isteÄŸinde bulunun.'; +$wb['lost_password_function_denied_txt'] = 'Bu etkinleÅŸtirme baÄŸlantısı geçersiz.'; ?> diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng index f7f12feeff..8a54a8efd9 100644 --- a/interface/web/login/lib/lang/tr_login_as.lng +++ b/interface/web/login/lib/lang/tr_login_as.lng @@ -1,12 +1,13 @@ <?php $wb['login_1_txt'] = 'Bu kullanıcı olarak oturum açmak ister misiniz'; -$wb['login_2_txt'] = '\\"Geri dönmek\\" için oturumu kapat üzerine tıklayın.'; +$wb['login_2_txt'] = 'Oturumu Kapat üzerine tıklayarak "Geri Dönebilirsiniz".'; $wb['btn_yes_txt'] = 'Evet, Müşteri olarak oturum aç'; $wb['btn_back_txt'] = 'Hayır, listeye geri dön'; $wb['udp_port_help_txt'] = 'Virgül ile ayırarak yazın'; $wb['active_txt'] = 'Etkin'; $wb['firewall_error_unique'] = 'Bu sunucu için bir güvenlik duvarı kaydı zaten var.'; -$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, \\":\\" ve \\",\\" karakterleri kullanılabilir.'; -$wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; +$wb['active_txt'] = 'Etkin'; +$wb['tcp_ports_error_regex'] = 'TCP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +$wb['udp_ports_error_regex'] = 'UDP kapı açıklamasında karakter kullanılamaz. Yalnız rakam, ":" ve "," karakterleri kullanılabilir.'; +$wb['login_as_or_logout_txt'] = '{UTYPE} olarak oturum açmak ya da oturumunuzu kapatmak ister misiniz?'; ?> diff --git a/interface/web/mail/lib/lang/br.lng b/interface/web/mail/lib/lang/br.lng index 972e134bc8..7748342612 100644 --- a/interface/web/mail/lib/lang/br.lng +++ b/interface/web/mail/lib/lang/br.lng @@ -1,50 +1,56 @@ <?php -$wb['Email Alias'] = 'Apelidos de e-mail'; -$wb['Email Blacklist'] = 'Lista negra'; -$wb['Blacklist'] = 'Lista negra'; -$wb['Mail Content Filter'] = 'Filtro de conteúdo'; +$wb['Email Alias'] = 'Alias de e-mail'; +$wb['Email Blacklist'] = 'Lista Negra'; +$wb['Blacklist'] = 'Lista Negra'; +$wb['Mail Content Filter'] = 'Filtro de conteúdo de e-mail'; $wb['Filter'] = 'Filtro'; -$wb['Mail Domain'] = 'DomÃnio'; -$wb['Domain'] = 'DomÃnios'; -$wb['Email Catchall'] = 'Contas cata tudo'; -$wb['Email Forward'] = 'Encaminhamento'; +$wb['Mail Domain'] = 'DomÃnio de e-mail'; +$wb['Domain'] = 'DomÃnio'; +$wb['Email Catchall'] = 'Contas cata-tudo'; +$wb['Email Forward'] = 'Encaminhamento de e-mail'; $wb['Get Email'] = 'Busca de e-mail'; $wb['Spamfilter'] = 'Filtro anti-spam'; -$wb['Email Routing'] = 'Transportes'; +$wb['Email Routing'] = 'Rotas de e-mail'; +$wb['Mailing List'] = 'Listas de e-mail'; $wb['Email transport'] = 'Transportes'; $wb['Mailbox'] = 'Contas de e-mail'; -$wb['Autoresponder'] = 'Resposta automática'; -$wb['Mail Filter'] = 'Filtros'; +$wb['Autoresponder'] = 'Auto-resposta'; +$wb['Mail Filter'] = 'Filtro de e-mail'; $wb['Custom Rules'] = 'Regras personalizadas'; -$wb['Email filter'] = 'Filtro'; -$wb['Email Whitelist'] = 'Lista branca'; -$wb['Whitelist'] = 'Lista branca'; -$wb['Spamfilter blacklist'] = 'Filtro anti-spam (lista negra)'; -$wb['Spamfilter Config'] = 'Configuração do filtro anti-spam'; -$wb['Spamfilter policy'] = 'PolÃticas de filtro anti-spam'; +$wb['Email filter'] = 'Filtro de e-mail'; +$wb['Email Whitelist'] = 'Lista Branca de e-mails'; +$wb['Whitelist'] = 'Lista Branca'; +$wb['Spamfilter blacklist'] = 'Filtros anti-spam - lista negra'; +$wb['Blacklist'] = 'Lista Negra'; +$wb['Spamfilter Config'] = 'Configurações de filtros anti-spam'; +$wb['Servidor'] = 'Servidor'; +$wb['Spamfilter policy'] = 'PolÃticas de filtros anti-spam'; $wb['Policy'] = 'PolÃtica'; $wb['Quarantine'] = 'Quarentena'; $wb['Tag-Level'] = 'NÃvel de marcação'; $wb['Other'] = 'Outros'; -$wb['Spamfilter users'] = 'Usuários de filtro anti-spam'; -$wb['Users'] = 'Usuários'; -$wb['Spamfilter Whitelist'] = 'Filtro anti-spam (lista branca)'; -$wb['Email'] = 'e-mail'; -$wb['Email Mailbox'] = 'Contas de e-mail'; +$wb['Spamfilter users'] = 'Contas de e-mail para filtros anti-spam'; +$wb['Users'] = 'Contas de e-mail'; +$wb['Spamfilter Whitelist'] = 'Filtros anti-spam - lista branca'; +$wb['Whitelist'] = 'Lista Branca'; +$wb['Email'] = 'e-Mail'; +$wb['Email Mailbox'] = 'Conta de e-mail'; $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['Mailbox traffic'] = 'Tráfego'; +$wb['User / Domain'] = 'Usuário/DomÃnio'; +$wb['Server Settings'] = 'Configurações do Servidor'; +$wb['Spamfilter'] = 'Filtros anti-spam'; +$wb['Fetchmail'] = 'Busca de e-mails'; +$wb['XMPP Domain'] = 'DomÃnios xmpp'; +$wb['XMPP Account'] = 'Contas xmpp'; +$wb['Mailbox traffic'] = 'Tráfego de e-mails'; $wb['Statistics'] = 'EstatÃsticas'; -$wb['Postfix Whitelist'] = 'Postfix (lista branca)'; -$wb['Postfix Blacklist'] = 'Postfix (lista negra)'; -$wb['Content Filter'] = 'Filtros de conteúdo'; -$wb['Global Filters'] = 'Filtros globais'; -$wb['Domain Alias'] = 'Apelidos de domÃnio'; +$wb['Backup Stats'] = 'EstatÃsticas de backup'; +$wb['Postfix Whitelist'] = 'Lista Branca do Postfix'; +$wb['Postfix Blacklist'] = 'Lista Negra do Postfix'; +$wb['Content Filter'] = 'Filtro de Conteúdo'; +$wb['Global Filters'] = 'Filtros Globais'; +$wb['Domain Alias'] = 'Alias de domÃnio'; $wb['Relay Recipients'] = 'Destinatários de retransmissão'; -$wb['Mailbox quota'] = 'Cota para contas de e-mails'; -$wb['Server'] = 'Servidor'; -$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; -$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; -?> +$wb['Mailbox quota'] = 'Cota da conta de e-mail'; +$wb['add_header_txt'] = 'Cabeçalho (adicionar "X-Spam: Yes")'; +$wb['rewrite_subject_txt'] = 'Assunto (adicionar "***SPAM***" no inÃcio)'; diff --git a/interface/web/mail/lib/lang/br_backup_stats_list.lng b/interface/web/mail/lib/lang/br_backup_stats_list.lng index 9d07817712..482e913200 100644 --- a/interface/web/mail/lib/lang/br_backup_stats_list.lng +++ b/interface/web/mail/lib/lang/br_backup_stats_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'EstatÃsticas de backup'; +$wb['list_head_txt'] = 'Backup de EstatÃsticas'; $wb['active_txt'] = 'Ativo'; -$wb['domain_txt'] = 'e-mail'; -$wb['backup_count_txt'] = 'Contador de backup'; +$wb['domain_txt'] = 'DomÃnio'; +$wb['backup_count_txt'] = 'Contador de backups'; $wb['backup_server_txt'] = 'Servidor'; -$wb['backup_interval_txt'] = 'Intervalo/contador'; -$wb['backup_size_txt'] = 'Tamanho'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_size_txt'] = 'Tamanho do backup'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_alias.lng b/interface/web/mail/lib/lang/br_mail_alias.lng index 993dd71d2a..6361957180 100644 --- a/interface/web/mail/lib/lang/br_mail_alias.lng +++ b/interface/web/mail/lib/lang/br_mail_alias.lng @@ -1,17 +1,17 @@ <?php -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'Alias de e-mail'; $wb['destination_txt'] = 'Destino'; $wb['active_txt'] = 'Ativo'; $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.'; $wb['email_error_unique'] = 'Endereço de e-mail duplicado.'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; -$wb['destination_error_isemail'] = 'Endereço de destino inválido'; -$wb['limit_mailalias_txt'] = 'O limite de apelidos de domÃnio para esta conta foi alcançado.'; -$wb['duplicate_mailbox_txt'] = 'Já existe uma conta de e-mail com este endereço.'; +$wb['destination_error_isemail'] = 'Endereço de e-mail de destino é inválido.'; +$wb['limit_mailalias_txt'] = 'O limite de alias de e-mail para esta conta foi alcançado.'; +$wb['duplicate_mailbox_txt'] = 'Já existe um endereço de e-mail idêntico.'; $wb['domain_txt'] = 'DomÃnio'; -$wb['duplicate_email_alias_txt'] = 'Este apelido de e-mail já existe.'; -$wb['source_txt'] = 'Apelido'; -$wb['greylisting_txt'] = 'Habilitar greylist'; +$wb['duplicate_email_alias_txt'] = 'Este alias de e-mail já existe.'; +$wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Enviar como'; -$wb['send_as_exp'] = 'Permite o alvo enviar e-mails usando este endereço como origem'; +$wb['send_as_exp'] = 'Permitir o destino enviar e-mails usando este alias como origem'; +$wb['greylisting_txt'] = 'Habilitar greylist'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_alias_list.lng b/interface/web/mail/lib/lang/br_mail_alias_list.lng index 69fb77a779..5e96f0fb30 100644 --- a/interface/web/mail/lib/lang/br_mail_alias_list.lng +++ b/interface/web/mail/lib/lang/br_mail_alias_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Apelidos de e-mail'; +$wb['list_head_txt'] = 'Alias de e-mail'; $wb['active_txt'] = 'Ativo'; -$wb['source_txt'] = 'origem'; +$wb['source_txt'] = 'Origem'; $wb['destination_txt'] = 'Destino'; -$wb['email_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar novo apelido'; +$wb['email_txt'] = 'e-Mail'; +$wb['add_new_record_txt'] = 'Adicionar novo alias de e-mail'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng index 68986f536e..a0f4e5067e 100644 --- a/interface/web/mail/lib/lang/br_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/br_mail_aliasdomain.lng @@ -3,9 +3,9 @@ $wb['source_txt'] = 'Origem'; $wb['destination_txt'] = 'Destino'; $wb['active_txt'] = 'Ativo'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; -$wb['limit_mailaliasdomain_txt'] = 'O limite de apelidos de domÃnios para esta conta foi alcançado.'; +$wb['limit_mailaliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; $wb['source_destination_identical_txt'] = 'Origem e destino são os mesmos.'; -$wb['source_error_empty'] = 'Origem está em branco.'; -$wb['source_error_unique'] = 'Origem duplicada.'; -$wb['source_error_regex'] = 'Origem inválida.'; +$wb['source_error_empty'] = 'O domÃnio de origem está em branco.'; +$wb['source_error_unique'] = 'DomÃnio de origem duplicado.'; +$wb['source_error_regex'] = 'DomÃnio de origem é inválido.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng index 4849c3cb6b..ddf1ea0a96 100644 --- a/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/br_mail_aliasdomain_list.lng @@ -1,7 +1,8 @@ <?php -$wb['list_head_txt'] = 'Apelido de domÃnio'; +$wb['list_head_txt'] = 'Alias de domÃnio'; $wb['active_txt'] = 'Ativo'; $wb['source_txt'] = 'Origem'; $wb['destination_txt'] = 'Destino'; -$wb['add_new_record_txt'] = 'Adicionar novo apelido'; +$wb['source_txt'] = 'Origem'; +$wb['add_new_record_txt'] = 'Adicionar novo alias de domÃnio'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_backup_list.lng b/interface/web/mail/lib/lang/br_mail_backup_list.lng index 8ef31a0769..b8e4f82300 100644 --- a/interface/web/mail/lib/lang/br_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/br_mail_backup_list.lng @@ -3,14 +3,14 @@ $wb['list_head_txt'] = 'Backups existentes'; $wb['date_txt'] = 'Data'; $wb['backup_type_txt'] = 'Tipo'; $wb['filename_txt'] = 'Arquivo de backup'; -$wb['restore_backup_txt'] = 'Restaurar backup'; -$wb['restore_info_txt'] = 'Restauração do backup iniciada. Esta ação poderá levar vários minutos para ser concluÃda. Aguarde.'; -$wb['restore_confirm_txt'] = 'A restauração do backup reescreverá os arquivos existentes das suas caixas postais. Tem certeza que deseja restaurar este backup?'; -$wb['download_pending_txt'] = 'Já existe um download deste backup em execução.'; -$wb['restore_pending_txt'] = 'Já existe uma restauração deste backup em execução.'; -$wb['delete_backup_txt'] = 'Remover backup'; -$wb['delete_info_txt'] = 'Remoção do backup iniciada. Esta ação poderá levar vários minutos para ser concluÃda. Aguarde.'; -$wb['delete_confirm_txt'] = 'Tem certeza que deseja remover este backup?'; -$wb['delete_pending_txt'] = 'Já existe uma remoção deste backup em execução.'; -$wb['filesize_txt'] = 'Tamanho'; +$wb['restore_backup_txt'] = 'Restaurar'; +$wb['restore_info_txt'] = 'A restauração do backup está em andamento. Esta ação demora vários minutos para concluir.'; +$wb['restore_confirm_txt'] = 'A restauração do backup pode sobrescrever arquivos das contas de e-mail. Você tem certeza que deseja restaurar este backup?'; +$wb['download_pending_txt'] = 'Já existe um download de backup em andamento.'; +$wb['restore_pending_txt'] = 'Já existe uma restauração de backup em andamento.'; +$wb['delete_backup_txt'] = 'Remover Backup'; +$wb['delete_info_txt'] = 'A remoção do backup está em andamento. Esta ação demora vários minutos para concluir.'; +$wb['delete_confirm_txt'] = 'Deseja remover este backup?'; +$wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.'; +$wb['filesize_txt'] = 'Tamanho do arquivo'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_blacklist.lng b/interface/web/mail/lib/lang/br_mail_blacklist.lng index 4c52e77d23..14c323c342 100644 --- a/interface/web/mail/lib/lang/br_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/br_mail_blacklist.lng @@ -1,9 +1,9 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'Lista negra'; +$wb['source_txt'] = 'Lista Negra'; $wb['recipient_txt'] = 'Destinatário'; $wb['active_txt'] = 'Ativo'; -$wb['source_error_notempty'] = 'Endereço está em branco.'; +$wb['source_error_notempty'] = 'Destinatário está em branco.'; $wb['type_txt'] = 'Tipo'; $wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng index d561cea6b6..319a354016 100644 --- a/interface/web/mail/lib/lang/br_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_blacklist_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Lista Negra'; +$wb['list_head_txt'] = 'Lista negra'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'e-mail'; +$wb['source_txt'] = 'Endereço de e-mail'; $wb['type_txt'] = 'Tipo'; $wb['recipient_txt'] = 'Destinatário'; -$wb['add_new_record_txt'] = 'Adicionar novo e-mail à lista'; +$wb['add_new_record_txt'] = 'Adicionar novo registro'; $wb['access_txt'] = 'acesso'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_content_filter.lng b/interface/web/mail/lib/lang/br_mail_content_filter.lng index dc85d4e78e..b0a7c15b12 100644 --- a/interface/web/mail/lib/lang/br_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/br_mail_content_filter.lng @@ -1,9 +1,9 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['type_txt'] = 'Filtro'; -$wb['pattern_txt'] = 'Padrão de expressão regular.'; -$wb['data_txt'] = 'Data'; +$wb['pattern_txt'] = 'Padrão da expressão regular'; +$wb['data_txt'] = 'Dados'; $wb['action_txt'] = 'Ação'; $wb['active_txt'] = 'Ativo'; -$wb['pattern_error_empty'] = 'Padrão da expressão regular está em branco'; +$wb['pattern_error_empty'] = 'Padrão da expressão regular está em branco.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng index 4d35bd6352..65674a903d 100644 --- a/interface/web/mail/lib/lang/br_mail_content_filter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_content_filter_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Cabeçalhos postfix e body checks'; +$wb['list_head_txt'] = 'Verificações de cabeçalho e corpo de e-mail - Postfix'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['pattern_txt'] = 'Padrão'; diff --git a/interface/web/mail/lib/lang/br_mail_domain.lng b/interface/web/mail/lib/lang/br_mail_domain.lng index 87cdd1287c..0bdb473095 100644 --- a/interface/web/mail/lib/lang/br_mail_domain.lng +++ b/interface/web/mail/lib/lang/br_mail_domain.lng @@ -3,21 +3,21 @@ $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['type_txt'] = 'Tipo'; $wb['active_txt'] = 'Ativo'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'DomÃnio duplicado'; -$wb['domain_error_regex'] = 'Nome de domÃnio inválido'; -$wb['client_txt'] = 'Cliente'; -$wb['limit_maildomain_txt'] = 'O limite de contas de e-mail para este domÃnio foi alcançado.'; -$wb['policy_txt'] = 'Filtro anti-spam'; -$wb['no_policy'] = '- desabilitado -'; -$wb['dkim_txt'] = 'habilitar DKIM'; +$wb['dkim_txt'] = 'Habilitar DKIM'; $wb['dkim_private_txt'] = 'Chave privada DKIM'; -$wb['dkim_public_txt'] = 'Somente chave pública/nfor DKIM'; +$wb['dkim_public_txt'] = 'Chave pública DKIMapenas para informação'; $wb['dkim_generate_txt'] = 'Gerar chave privada DKIM'; $wb['dkim_dns_txt'] = 'Registro dns'; -$wb['dkim_private_key_error'] = 'Chave privada DKIM inválida'; -$wb['dkim_selector_txt'] = 'Seletor DKIM'; -$wb['dkim_selector_error'] = 'Seletor DKIM é inválido. Use apenas caracteres minúsculos e alfanuméricos (\'az\' ou \'0-9\') até o máximo de 63 caracteres'; -$wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; +$wb['dkim_private_key_error'] = 'A chave privada DKIM é inválida.'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['domain_error_unique'] = 'O domÃnio está duplicado.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; +$wb['dkim_settings_txt'] = 'DomÃnio de e-mail identificado por chaves de domÃnio (DKIM)'; +$wb['client_txt'] = 'Cliente'; +$wb['limit_maildomain_txt'] = 'O limite de domÃnios de e-mail para esta conta foi alcançado.'; +$wb['policy_txt'] = 'Filtro anti-spam'; +$wb['no_policy'] = '-desabilitado-'; $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido para esta conta.'; +$wb['dkim_selector_txt'] = 'Seletor DKIM'; +$wb['dkim_selector_error'] = 'Seletor DKIM é inválido. Utilize apenas caracteres alfanuméricos em minúsculas (a-z ou 0-9) e no máximo 63 caracteres.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng index 3c4c6a2628..3d4f85af8d 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall.lng @@ -1,12 +1,13 @@ <?php $wb['domain_txt'] = 'DomÃnio'; -$wb['destination_txt'] = 'Destino'; +$wb['destination_txt'] = 'Endereço de e-mail de destino'; $wb['active_txt'] = 'Ativo'; -$wb['domain_error_unique'] = 'Já existe uma conta cata tudo para este domÃnio.'; +$wb['domain_error_unique'] = 'Já existe uma conta cata-tudo para este domÃnio.'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; -$wb['domain_error_regex'] = 'O domÃnio contém caracteres inválidos'; -$wb['limit_mailcatchall_txt'] = 'O limite de contas cata tudo para este domÃnio foi alcançado.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido ou contêm caracteres inválidos.'; +$wb['limit_mailcatchall_txt'] = 'O limite de contas cata-tudo para esta conta foi alcançado.'; +$wb['domain_txt'] = 'DomÃnio'; $wb['source_txt'] = 'Origem'; -$wb['destination_error_isemail'] = 'Destino não é um e-mail válido.'; -$wb['greylisting_txt'] = 'Enable greylisting'; +$wb['destination_error_isemail'] = 'Endereço de e-mail de destino é inválido.'; +$wb['greylisting_txt'] = 'Habilitar greylist'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng index 57c1f3a11a..2d5747826c 100644 --- a/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/br_mail_domain_catchall_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Contas cata tudo'; +$wb['list_head_txt'] = 'Conta cata-tudo'; $wb['active_txt'] = 'Ativo'; -$wb['source_txt'] = 'Origem'; -$wb['destination_txt'] = 'Endereço de destino'; +$wb['source_txt'] = 'origem'; +$wb['destination_txt'] = 'Endereço de e-mail de destino'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['add_new_record_txt'] = 'Adicionar nova conta'; diff --git a/interface/web/mail/lib/lang/br_mail_forward.lng b/interface/web/mail/lib/lang/br_mail_forward.lng index 8f9864638d..5a2400e49b 100644 --- a/interface/web/mail/lib/lang/br_mail_forward.lng +++ b/interface/web/mail/lib/lang/br_mail_forward.lng @@ -1,13 +1,13 @@ <?php -$wb['email_txt'] = 'e-mail'; -$wb['destination_txt'] = 'e-mail de destino'; +$wb['email_txt'] = 'e-Mail'; +$wb['destination_txt'] = 'Endereço e-mail de destino'; $wb['active_txt'] = 'Ativo'; -$wb['limit_mailforward_txt'] = 'O limite de encaminhamentos para esta conta foi alcançado.'; -$wb['duplicate_mailbox_txt'] = 'Já existe um e-mail com este endereço.'; +$wb['limit_mailforward_txt'] = 'O limite de encaminhamentos de e-mail para esta conta foi alcançado.'; +$wb['duplicate_mailbox_txt'] = 'Já existe um conta de e-mail idêntica.'; $wb['domain_txt'] = 'DomÃnio'; -$wb['source_txt'] = 'Origem'; -$wb['greylisting_txt'] = 'Habilitar greylist'; -$wb['email_error_isemail'] = 'Por favor, insira um e-mail válido.'; +$wb['source_txt'] = 'Endereço de e-mail de origem'; +$wb['email_error_isemail'] = 'Por favor informe um endereço de e-mail válido.'; $wb['send_as_txt'] = 'Enviar como'; -$wb['send_as_exp'] = 'Permite o alvo enviar e-mails usando este endereço como origem (se o alvo for interno)'; +$wb['send_as_exp'] = 'Permitir o destino enviar e-mails usando este endereço como origem (se o destino for interno)'; +$wb['greylisting_txt'] = 'Habilitar greylist'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_forward_list.lng b/interface/web/mail/lib/lang/br_mail_forward_list.lng index 025ecc00b6..166839e2c9 100644 --- a/interface/web/mail/lib/lang/br_mail_forward_list.lng +++ b/interface/web/mail/lib/lang/br_mail_forward_list.lng @@ -2,7 +2,7 @@ $wb['list_head_txt'] = 'Encaminhamento de e-mail'; $wb['active_txt'] = 'Ativo'; $wb['source_txt'] = 'Origem'; -$wb['destination_txt'] = 'Destino'; -$wb['email_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento'; +$wb['destination_txt'] = 'Destinatário'; +$wb['email_txt'] = 'e-Mail'; +$wb['add_new_record_txt'] = 'Adicionar novo encaminhamento de e-mail'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_get.lng b/interface/web/mail/lib/lang/br_mail_get.lng index dc9d2fce87..f3d055f6d8 100644 --- a/interface/web/mail/lib/lang/br_mail_get.lng +++ b/interface/web/mail/lib/lang/br_mail_get.lng @@ -1,19 +1,19 @@ <?php $wb['server_id_txt'] = 'Servidor'; $wb['type_txt'] = 'Tipo'; -$wb['source_server_txt'] = 'Servidor pop3/imap'; +$wb['source_server_txt'] = 'Servidor POP3/IMAP'; $wb['source_username_txt'] = 'Usuário'; $wb['source_password_txt'] = 'Senha'; -$wb['source_delete_txt'] = 'Remover mensagens da origem após o recebimento'; +$wb['source_delete_txt'] = 'Remover e-mails após recuperação'; +$wb['source_delete_note_txt'] = 'Verifique primeiro se a recuperação de e-mails funciona antes de ativar esta opção.'; +$wb['source_read_all_txt'] = 'Recuperar todos e-mails (inclusive e-mails lidos)'; $wb['destination_txt'] = 'Destino'; $wb['active_txt'] = 'Ativo'; -$wb['limit_fetchmail_txt'] = 'O limite de contas de buscas para esta conta foi alcançado.'; -$wb['source_server_error_isempty'] = 'Servidor está em branco.'; -$wb['source_username_error_isempty'] = 'Usuário está em branco.'; -$wb['source_password_error_isempty'] = 'Senha está em branco.'; -$wb['destination_error_isemail'] = 'Destino não selecionado.'; -$wb['source_server_error_regex'] = 'Servidor pop3/imap não é um domÃnio válido.'; -$wb['source_read_all_txt'] = 'Receber todos os e-mails (inclusive e-mails lidos)'; -$wb['error_delete_read_all_combination'] = 'Combinação ilegal de opções. Você não pode usar \'Apagar e-mails após recebimento\' = não junto com \'Receber todos os e-mail\' = sim.'; -$wb['source_delete_note_txt'] = 'Por favor, verifique se o e-mail do para recepção está operacional, antes de ativar esta configuração.'; +$wb['limit_fetchmail_txt'] = 'O limite de registros de busca de e-mails para esta conta foi alcançado.'; +$wb['source_server_error_isempty'] = 'O servidor está em branco.'; +$wb['source_username_error_isempty'] = 'O usuário está em branco.'; +$wb['source_password_error_isempty'] = 'A senha está em branco.'; +$wb['destination_error_isemail'] = 'Nenhum destino selecionado.'; +$wb['source_server_error_regex'] = 'O servidor POP3/IMAP é inválido.'; +$wb['error_delete_read_all_combination'] = 'Combinação ilegal nas opções. Não pode ser utilizado "Remover e-mails após recuperação" = "não" e "Recuperar todos e-mail" = "sim".'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_get_list.lng b/interface/web/mail/lib/lang/br_mail_get_list.lng index 07d28d0bd8..84b8bbd33e 100644 --- a/interface/web/mail/lib/lang/br_mail_get_list.lng +++ b/interface/web/mail/lib/lang/br_mail_get_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Busca de mensagens de um servidor POP3/IMAP'; +$wb['list_head_txt'] = 'Busca de e-mails de servidores externos - POP3/IMAP'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['source_server_txt'] = 'Servidor externo'; diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist.lng b/interface/web/mail/lib/lang/br_mail_mailinglist.lng index a34dca7f35..87f5bcbb64 100644 --- a/interface/web/mail/lib/lang/br_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/br_mail_mailinglist.lng @@ -1,22 +1,22 @@ <?php -$wb['limit_mailmailinglist_txt'] = 'Limite alcançado'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['listname_error_empty'] = 'Nome da lista está em branco.'; -$wb['domain_error_regex'] = 'DomÃnio é inválido.'; -$wb['email_in_use_txt'] = 'e-mail está em uso'; +$wb['mailinglist_txt'] = 'Lista de e-mail'; +$wb['limit_mailmailinglist_txt'] = 'O limite foi alcançado.'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['listname_error_empty'] = 'O nome da lista está em branco.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; +$wb['email_in_use_txt'] = 'O e-mail já está em uso.'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; -$wb['listname_txt'] = 'Nome da lista'; +$wb['listname_txt'] = 'Lista'; $wb['client_txt'] = 'Cliente'; -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['password_txt'] = 'Senha'; -$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['listname_error_unique'] = 'Já existe uma lista com o mesmo nome neste servidor. Por favor, insira outro nome.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['listname_error_unique'] = 'Já existe uma lista de e-mails idêntica para este servidor. Por favor escolha um nome diferente.'; $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.'; -$wb['mailinglist_txt'] = 'Lista de e-mails'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng index 08fd204fbb..d7dcf02c01 100644 --- a/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_mailinglist_list.lng @@ -1,5 +1,5 @@ <?php $wb['list_head_txt'] = 'Lista de e-mails'; $wb['domain_txt'] = 'DomÃnio'; -$wb['listname_txt'] = 'Nome'; +$wb['listname_txt'] = 'Nome da lista'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng index 0ce921b1a1..637788ce48 100644 --- a/interface/web/mail/lib/lang/br_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/br_mail_relay_recipient.lng @@ -3,7 +3,7 @@ $wb['server_id_txt'] = 'Servidor'; $wb['source_txt'] = 'Destinatário de retransmissão'; $wb['recipient_txt'] = 'Destinatário'; $wb['active_txt'] = 'Ativo'; -$wb['source_error_notempty'] = 'Endereço está em branco.'; +$wb['source_error_notempty'] = 'Destinatário de retransmissão está em branco.'; $wb['type_txt'] = 'Tipo'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros para esta conta foi alcançado.'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng index b6ca775e5e..d96bab59eb 100644 --- a/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng +++ b/interface/web/mail/lib/lang/br_mail_relay_recipient_list.lng @@ -2,8 +2,8 @@ $wb['list_head_txt'] = 'Destinatários de retransmissão'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'Remetente'; +$wb['source_txt'] = 'Endereço do destinatário'; $wb['recipient_txt'] = 'Destinatário'; -$wb['add_new_record_txt'] = 'Adicionar novo destinatário'; +$wb['add_new_record_txt'] = 'Adicionar novo destinatário de retransmissão'; $wb['access_txt'] = 'acesso'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter.lng b/interface/web/mail/lib/lang/br_mail_spamfilter.lng index 3e7201b95d..e38894fde3 100644 --- a/interface/web/mail/lib/lang/br_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/br_mail_spamfilter.lng @@ -1,17 +1,17 @@ <?php -$wb['email_txt'] = 'E-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['spam_rewrite_score_int_txt'] = 'Pontuação de reescrita'; -$wb['spam_redirect_score_int_txt'] = 'Pontuação de redirecionamento'; +$wb['spam_redirect_score_int_txt'] = 'Redirecionar pontuação'; $wb['spam_delete_score_int_txt'] = 'Remover pontuação'; $wb['spam_rewrite_subject_txt'] = 'Reescrever assunto'; $wb['spam_redirect_maildir_txt'] = 'Redirecionar conta de e-mail'; $wb['active_txt'] = 'Ativo'; -$wb['spam_rewrite_txt'] = 'Reescrever assunto da mensagem depois desta pontuação.'; -$wb['spam_redirect_txt'] = 'Redirecione esta mensagem depois desta pontuação para esta conta de e-mail'; -$wb['spam_delete_txt'] = 'Remover esta mensagem depois desta pontuação.'; -$wb['disable_txt'] = 'Dica: Para desabilitar uma opção de filtro, configure a pontuação como 0.00.'; +$wb['spam_rewrite_txt'] = 'Reescrever assunto do e-mail acima desta pontuação.'; +$wb['spam_redirect_txt'] = 'Redirecionar e-mail acima desta pontuação para a conta de e-mail selecionada.'; +$wb['spam_delete_txt'] = 'Remover e-mail acima desta pontuação.'; +$wb['disable_txt'] = 'Dica: Para desabilitar uma opção de filtragem, configure a pontuação para 0.00'; $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.'; -$wb['email_error_unique'] = 'Já existem registros iguais de filtros anti-spam para este e-mail.'; -$wb['spam_redirect_maildir_purge_txt'] = 'Remover Maildir depois'; -$wb['days_txt'] = 'Dias'; +$wb['email_error_unique'] = 'Já existe um filtro anti-spam igual para este endereço de e-mail.'; +$wb['spam_redirect_maildir_purge_txt'] = 'Remover diretório de e-mail após'; +$wb['days_txt'] = 'dias.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng index 40c680da72..51044a3bec 100644 --- a/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_spamfilter_list.lng @@ -1,8 +1,8 @@ <?php $wb['list_head_txt'] = 'Filtro anti-spam'; $wb['active_txt'] = 'Ativo'; -$wb['server_id_txt'] = 'Servidor'; -$wb['server_name_txt'] = 'Nome'; -$wb['email_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar novo filtro anti-spam'; +$wb['server_id_txt'] = 'ID do servidor'; +$wb['server_name_txt'] = 'Nome do servidor'; +$wb['email_txt'] = 'e-Mail'; +$wb['add_new_record_txt'] = 'Adicionar filtro anti-spam'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_transport.lng b/interface/web/mail/lib/lang/br_mail_transport.lng index 7b080493c2..cf59e244bb 100644 --- a/interface/web/mail/lib/lang/br_mail_transport.lng +++ b/interface/web/mail/lib/lang/br_mail_transport.lng @@ -3,9 +3,9 @@ $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['destination_txt'] = 'Destino'; $wb['type_txt'] = 'Tipo'; -$wb['mx_txt'] = 'Sem MX lookup'; +$wb['mx_txt'] = 'Sem pesquisa MX'; $wb['sort_order_txt'] = 'Ordenar por'; $wb['active_txt'] = 'Ativo'; -$wb['limit_mailrouting_txt'] = 'O limite de transportes para esta conta foi alcançado.'; +$wb['limit_mailrouting_txt'] = 'O limite de rotas de e-mail para esta conta foi alcançado.'; $wb['transport_txt'] = 'Transporte'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_transport_list.lng b/interface/web/mail/lib/lang/br_mail_transport_list.lng index 1e824b345a..4597742bef 100644 --- a/interface/web/mail/lib/lang/br_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/br_mail_transport_list.lng @@ -1,6 +1,6 @@ <?php -$wb['list_head_txt'] = 'Transporte de e-mails'; -$wb['active_txt'] = 'Ativa'; +$wb['list_head_txt'] = 'Roteamento avançado de e-mail'; +$wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['transport_txt'] = 'Transporte'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index f91d40f625..ed6e35ef61 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -1,65 +1,65 @@ <?php -$wb['custom_mailfilter_txt'] = 'Fórmula de filtro de e-mail'; -$wb['email_txt'] = 'e-mail'; +$wb['custom_mailfilter_txt'] = 'Modelo de filtro de e-mail personalizado'; +$wb['email_txt'] = 'e-Mail'; $wb['cryptpwd_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['active_txt'] = 'Ativo'; $wb['email_error_isemail'] = 'Endereço de e-mail é inválido.'; $wb['email_error_unique'] = 'Endereço de e-mail duplicado.'; +$wb['autoresponder_subject_txt'] = 'Assunto do e-mail'; +$wb['autoresponder_subject'] = 'Resposta Automática'; $wb['autoresponder_text_txt'] = 'Texto'; -$wb['autoresponder_txt'] = 'Autoresposta'; -$wb['no_domain_perm'] = 'Sem permissão para este domÃnio.'; -$wb['error_no_pwd'] = 'Senha está em branco.'; -$wb['quota_error_isint'] = 'O tamanho do e-mail deve ser um número.'; -$wb['quota_txt'] = 'Cota'; +$wb['autoresponder_txt'] = 'Ativo'; +$wb['autoresponder_start_date_txt'] = 'Iniciar em'; +$wb['autoresponder_start_date_ispast'] = 'O campo "Iniciar em" não pode ser menor que a data atual.'; +$wb['autoresponder_end_date_txt'] = 'Terminar em'; +$wb['autoresponder_end_date_isgreater'] = 'O campo "Terminar em" deve ser configurado e não pode ser menor ou igual a data atual.'; +$wb['autoresponder_start_date_is_required'] = 'Data iniciar deve ser configurado quando a opção de auto-resposta estiver habilitada.'; +$wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; +$wb['error_no_pwd'] = 'A senha está em branco.'; +$wb['quota_error_isint'] = 'O tamanho da conta de e-mail deve ser um número.'; +$wb['quota_txt'] = 'Cota (0 para ilimitado)'; $wb['server_id_txt'] = 'ID do servidor'; $wb['password_txt'] = 'Senha'; -$wb['maildir_txt'] = 'Caixa Postal'; +$wb['password_click_to_set_txt'] = 'Clique para configurar'; +$wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Habilitar recebimento'; $wb['greylisting_txt'] = 'Habilitar greylist'; $wb['access_txt'] = 'Habilitar acesso'; -$wb['policy_txt'] = 'Filtro anti-spam'; -$wb['no_policy'] = '- desabilitado -'; +$wb['policy_txt'] = 'Filtros anti-spam'; +$wb['no_policy'] = '-desabilitado-'; $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.'; -$wb['limit_mailquota_txt'] = 'O espaço em disco disponÃvel para criação de contas de e-mail foi alcançado.'; -$wb['disableimap_txt'] = 'Desabilitar imap'; -$wb['disablepop3_txt'] = 'Desabilitar pop3'; -$wb['duplicate_alias_or_forward_txt'] = 'Já existe um apelido ou encaminhamento com este endereço de e-mail.'; -$wb['quota_error_value'] = 'Valor da cota é inválido. Valores válidos são: 0 para ilimitado ou número > 1'; -$wb['autoresponder_start_date_txt'] = 'InÃcio:'; -$wb['autoresponder_start_date_ispast'] = 'A data de inÃcio não pode ser menor que a data atual.'; -$wb['autoresponder_end_date_txt'] = 'Término:'; -$wb['autoresponder_end_date_isgreater'] = 'A data de término não pode ser menor que a data de inÃcio.'; -$wb['move_junk_txt'] = 'Mover spam para o diretório junk'; -$wb['name_txt'] = 'Nome real'; +$wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponÃvel em MB é'; +$wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; +$wb['disableimap_txt'] = 'Desabilitar IMAP'; +$wb['disablepop3_txt'] = 'Desabilitar POP3'; +$wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.'; +$wb['quota_error_value'] = 'Valor da cota é inválido. Valores permitidos são: 0 para ilimitado ou números > 1.'; +$wb['move_junk_txt'] = 'Mover e-mails marcados como spam para o diretório junk.'; +$wb['name_txt'] = 'Nome'; $wb['name_optional_txt'] = '(Opcional)'; -$wb['autoresponder_active'] = 'Ativar autoresposta'; +$wb['autoresponder_active'] = 'Habilitar auto-resposta'; $wb['cc_txt'] = 'Enviar cópia para'; -$wb['cc_error_isemail'] = 'O campo \\"Enviar cópia para\\" deve conter um endereço de e-mail válido'; +$wb['sender_cc_txt'] = 'Enviar cópia oculta (BCC) para'; +$wb['cc_error_isemail'] = 'O campo "Enviar cópia para" contém um endereço de e-mail inválido.'; +$wb['sender_cc_error_isemail'] = 'O campo "Enviar cópia oculta para" contém um endereço de e-mail inválido.'; $wb['domain_txt'] = 'DomÃnio'; $wb['now_txt'] = 'Agora'; -$wb['login_error_unique'] = 'O acesso já está em uso.'; -$wb['login_error_regex'] = 'Caracteres válidos são: \'A-Z\', \'a-z\', \'0-9\', \'.\', \'_\' e \'-\'.'; -$wb['login_txt'] = 'Acesso (opcional)'; -$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, insira um usuário diferente ou use o endereço de e-mail.'; -$wb['autoresponder_subject_txt'] = 'Assunto do e-mail'; -$wb['autoresponder_subject'] = 'Resposta de ausência temporária'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['email_error_isascii'] = 'Por favor não use caracteres \\"unicode\\" para a senha. Esta ação poderá causar problemas com seu cliente de e-mail (mua).'; -$wb['cc_note_txt'] = '(Múltiplos e-mails separados por vÃrgulas)'; -$wb['disablesmtp_txt'] = 'Desabilitar smtp (envio)'; -$wb['autoresponder_start_date_is_required'] = 'Data de inÃcio deve ser configurada quando \'autoresposta\' é habilitada.'; -$wb['sender_cc_txt'] = 'Enviar cópia para'; -$wb['sender_cc_error_isemail'] = 'O campo \'Enviar cópia para\' não contém um endereço de e-mail válido'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['login_error_unique'] = 'O acesso já foi realizado.'; +$wb['login_error_regex'] = 'Caracteres válidos são "A-Z", "a-z", "0-9", ".", "_" e "-".'; +$wb['login_txt'] = 'Acesso'; +$wb['error_login_email_txt'] = 'Este acesso não é permitido. Por favor, forneça um nome de usuário ou endereço de e-mail diferente para acessar.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; -$wb['sender_cc_note_txt'] = '(Múltiplos e-mails separados por vÃrgulas)'; -$wb['password_click_to_set_txt'] = 'Configurar'; +$wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.'; +$wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; +$wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user_filter.lng b/interface/web/mail/lib/lang/br_mail_user_filter.lng index 7dca140cee..54ae96d692 100644 --- a/interface/web/mail/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/br_mail_user_filter.lng @@ -4,23 +4,23 @@ $wb['action_txt'] = 'Ação'; $wb['target_txt'] = 'Pasta'; $wb['active_txt'] = 'Ativo'; $wb['rulename_error_empty'] = 'Nome está em branco.'; -$wb['searchterm_is_empty'] = 'Termo de busca está em branco.'; +$wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.'; $wb['source_txt'] = 'Origem'; -$wb['target_error_regex'] = 'O alvo não pode conter os caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; +$wb['target_error_regex'] = 'O alvo pode conter apenas os caracteres: "a-z", "0-9", "-", ".", "_", e {espaço}'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail foi alcançado.'; $wb['subject_txt'] = 'Assunto'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Para'; -$wb['contains_txt'] = 'Contém'; +$wb['contains_txt'] = 'Contêm'; $wb['is_txt'] = 'é'; -$wb['begins_with_txt'] = 'Começa com'; -$wb['ends_with_txt'] = 'Termina com'; -$wb['delete_txt'] = 'Remover'; +$wb['begins_with_txt'] = 'Iniciando com'; +$wb['ends_with_txt'] = 'Terminando com'; $wb['move_stop_txt'] = 'Mover para'; +$wb['delete_txt'] = 'Remover'; $wb['header_txt'] = 'Cabeçalho'; -$wb['size_over_txt'] = 'Tamanho máximo do e-mail (KB)'; -$wb['size_under_txt'] = 'Tamanho mÃnimo do e-mail (KB)'; -$wb['localpart_txt'] = 'Local'; +$wb['size_over_txt'] = 'Tamanho do e-mail acima de (KB)'; +$wb['size_under_txt'] = 'Tamanho do e-mail abaixo de (KB)'; +$wb['localpart_txt'] = 'Parte local'; $wb['domain_txt'] = 'DomÃnio'; $wb['keep_txt'] = 'Manter'; $wb['reject_txt'] = 'Rejeitar'; diff --git a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng index feae1f4bb7..516478f9f6 100644 --- a/interface/web/mail/lib/lang/br_mail_user_filter_list.lng +++ b/interface/web/mail/lib/lang/br_mail_user_filter_list.lng @@ -3,5 +3,5 @@ $wb['rulename_txt'] = 'Nome'; $wb['add_new_record_txt'] = 'Adicionar novo filtro'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; -$wb['delete_confirmation'] = 'Tem certeza que gostaria de remover este filtro?'; +$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro?'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng index 370ce3520f..f0305edac3 100644 --- a/interface/web/mail/lib/lang/br_mail_user_stats_list.lng +++ b/interface/web/mail/lib/lang/br_mail_user_stats_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Tráfego de e-mail'; -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['this_month_txt'] = 'Este mês'; $wb['last_month_txt'] = 'Último mês'; $wb['this_year_txt'] = 'Este ano'; diff --git a/interface/web/mail/lib/lang/br_mail_whitelist.lng b/interface/web/mail/lib/lang/br_mail_whitelist.lng index 3443387003..4d3eb1e219 100644 --- a/interface/web/mail/lib/lang/br_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/br_mail_whitelist.lng @@ -1,9 +1,9 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'Lista Branca'; +$wb['source_txt'] = 'Endereço - lista branca'; $wb['recipient_txt'] = 'Destinatário'; $wb['active_txt'] = 'Ativo'; -$wb['source_error_notempty'] = 'Endereço em Branco.'; +$wb['source_error_notempty'] = 'Endereço de e-mail está em branco.'; $wb['type_txt'] = 'Tipo'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros para esta conta foi alcançado.'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng index 40eced2d2c..0c7d3c717d 100644 --- a/interface/web/mail/lib/lang/br_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/br_mail_whitelist_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Lista branca'; +$wb['list_head_txt'] = 'Filtros de e-mail - lista branca'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; -$wb['source_txt'] = 'e-mails na lista branca'; +$wb['source_txt'] = 'Endereços de e-mail - lista branca'; $wb['type_txt'] = 'Tipo'; $wb['recipient_txt'] = 'Destinatário'; -$wb['add_new_record_txt'] = 'Adicionar novo registro à lista'; +$wb['add_new_record_txt'] = 'Adicionar novo registro'; $wb['access_txt'] = 'acesso'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng index df01dd30ba..ec3dc5f66e 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_blacklist.lng @@ -1,11 +1,11 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['wb_txt'] = 'wb'; +$wb['wb_txt'] = 'Lista branca/negra'; $wb['rid_txt'] = 'Usuário'; -$wb['email_txt'] = 'Endereço de e-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['priority_txt'] = 'Prioridade'; $wb['active_txt'] = 'Ativo'; -$wb['limit_spamfilter_wblist_txt'] = 'O limite de registros na lista branca/negra para esta conta foi alcançado.'; +$wb['limit_spamfilter_wblist_txt'] = 'O limite de filtros anti-spam "lista branca ou negra" para esta conta foi alcançado.'; $wb['10 - highest'] = '10 - alta'; $wb['5 - medium'] = '5 - média'; $wb['1 - lowest'] = '1 - baixa'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng index 527a1b43d9..624cebfc51 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_blacklist_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Filtro anti-spam (lista negra) '; +$wb['list_head_txt'] = 'Filtro anti-spam - lista negra'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['priority_txt'] = 'Prioridade'; $wb['rid_txt'] = 'Usuário'; -$wb['email_txt'] = 'Endereço de e-mail na lista negra'; -$wb['add_new_record_txt'] = 'Adicionar novo registro à lista'; +$wb['email_txt'] = 'Endereço de e-mail - lista negra'; +$wb['add_new_record_txt'] = 'Adicionar novo registro'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_config.lng b/interface/web/mail/lib/lang/br_spamfilter_config.lng index 9a12279a4a..6182e8b788 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_config.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_config.lng @@ -1,20 +1,20 @@ <?php -$wb['getmail_config_dir_txt'] = 'Caminho de configuração getmail '; +$wb['getmail_config_dir_txt'] = 'Caminho das configurações do getmail'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['netmask_txt'] = 'Máscara de rede'; +$wb['netmask_txt'] = 'Máscara'; $wb['gateway_txt'] = 'Gateway'; -$wb['hostname_txt'] = 'Nome do servidor'; -$wb['nameservers_txt'] = 'Servidor de nomes'; +$wb['hostname_txt'] = 'Nome do host'; +$wb['nameservers_txt'] = 'Servidor(es) dns'; $wb['module_txt'] = 'Módulo do servidor'; -$wb['maildir_path_txt'] = 'Caminho do Maildir'; -$wb['homedir_path_txt'] = 'Caminho do Homedir'; -$wb['mailuser_uid_txt'] = 'Usuário de e-mail (UID)'; -$wb['mailuser_gid_txt'] = 'Grupo de e-mail (GID)'; -$wb['mailuser_name_txt'] = 'Nome do usuário de e-mail'; -$wb['mailuser_group_txt'] = 'Grupo do usuário de e-mail'; -$wb['relayhost_txt'] = 'Host Relay'; -$wb['relayhost_user_txt'] = 'Usuário host relay'; -$wb['relayhost_password_txt'] = 'Senha host relay'; -$wb['mailbox_size_limit_txt'] = 'Tamanho da conta de e-mail'; -$wb['message_size_limit_txt'] = 'Tamanho da mensagem'; +$wb['maildir_path_txt'] = 'Caminho do maildir'; +$wb['homedir_path_txt'] = 'Caminho do homedir'; +$wb['mailuser_uid_txt'] = 'UID do mailuser'; +$wb['mailuser_gid_txt'] = 'GID do mailuser'; +$wb['mailuser_name_txt'] = 'Nome do mailuser'; +$wb['mailuser_group_txt'] = 'Grupo do mailuser'; +$wb['relayhost_txt'] = 'Host de retransmissão'; +$wb['relayhost_user_txt'] = 'Usuário de retransmissão'; +$wb['relayhost_password_txt'] = 'Senha do host de retransmissão'; +$wb['mailbox_size_limit_txt'] = 'Limite da conta de e-mail'; +$wb['message_size_limit_txt'] = 'Limite do tamanho da mensagem'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng index 300e210b15..6d4c1cf0e1 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_config_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Configurações do servidor'; +$wb['list_head_txt'] = 'Configuração do Servidor'; $wb['server_name_txt'] = 'Servidor'; -$wb['server_id_txt'] = 'ID do servidor'; +$wb['server_id_txt'] = 'ID do Servidor'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy.lng b/interface/web/mail/lib/lang/br_spamfilter_policy.lng index b5bb69db43..476b27e565 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_policy.lng @@ -1,51 +1,51 @@ <?php -$wb['policy_name_txt'] = 'Nome da regra'; -$wb['virus_lover_txt'] = 'Permitir vÃrus'; -$wb['spam_lover_txt'] = 'Permitir spam'; -$wb['banned_files_lover_txt'] = 'Permitir arquivos banidos'; -$wb['bad_header_lover_txt'] = 'Permitir cabeçalho inválido'; -$wb['bypass_virus_checks_txt'] = 'Ignorar verificação de vÃrus'; -$wb['bypass_banned_checks_txt'] = 'Ignorar verificação de arquivos banidos'; -$wb['bypass_header_checks_txt'] = 'Ignorar verificação de cabeçalho inválido'; -$wb['virus_quarantine_to_txt'] = 'Encaminhar o vÃrus para o e-mail'; -$wb['spam_quarantine_to_txt'] = 'Encaminhar o spam para o e-mail'; +$wb['policy_name_txt'] = 'Nome da polÃtica'; +$wb['virus_lover_txt'] = 'Receber vÃrus'; +$wb['spam_lover_txt'] = 'Receber spam'; +$wb['banned_files_lover_txt'] = 'Receber arquivos banidos'; +$wb['bad_header_lover_txt'] = 'Receber cabeçalho inválido'; +$wb['bypass_virus_checks_txt'] = 'Ignorar verificações de vÃrus'; +$wb['bypass_banned_checks_txt'] = 'Ignorar verificações de arquivos banidos'; +$wb['bypass_header_checks_txt'] = 'Ignorar verificações de cabeçalho inválido'; +$wb['virus_quarantine_to_txt'] = 'Encaminhar vÃrus para o e-mail'; +$wb['spam_quarantine_to_txt'] = 'Encaminhar spam para o e-mail'; $wb['banned_quarantine_to_txt'] = 'Encaminhar arquivos banidos para o e-mail'; $wb['bad_header_quarantine_to_txt'] = 'Encaminhar cabeçalho inválido para o e-mail'; $wb['clean_quarantine_to_txt'] = 'Encaminhar mensagens/arquivos em quarentena para o e-mail'; -$wb['other_quarantine_to_txt'] = 'Encaminhar para outro e-mail'; +$wb['other_quarantine_to_txt'] = 'Encaminhar mensagens/arquivos em quarentena para outro e-mail'; $wb['spam_tag_level_txt'] = 'NÃvel 1 de marcação anti-spam'; $wb['spam_tag2_level_txt'] = 'NÃvel 2 de marcação anti-spam'; $wb['spam_kill_level_txt'] = 'NÃvel máximo de marcação anti-spam'; -$wb['spam_dsn_cutoff_level_txt'] = 'NÃvel de corte de dns anti-spam'; -$wb['spam_quarantine_cutoff_level_txt'] = 'NÃvel de corte de quarentena anti-spam'; -$wb['spam_modifies_subj_txt'] = 'Modificar assunto de mensagem com spam'; -$wb['spam_subject_tag_txt'] = 'Marcação de assunto spam 1'; -$wb['spam_subject_tag2_txt'] = 'Marcação de assunto spam 2'; -$wb['addr_extension_virus_txt'] = 'Adicionar extensão de vÃrus'; -$wb['addr_extension_spam_txt'] = 'Adicionar extensão de spam'; -$wb['addr_extension_banned_txt'] = 'Adicionar extensão de arquivos banidos'; -$wb['addr_extension_bad_header_txt'] = 'Adicionar extensão de cabeçalho inválido'; -$wb['warnvirusrecip_txt'] = 'Aviso de destinatário de vÃrus.'; -$wb['warnbannedrecip_txt'] = 'Aviso de destinatário de arquivos banidos.'; -$wb['warnbadhrecip_txt'] = 'Aviso de destinatário de cabeçalho é inválido.'; +$wb['spam_dsn_cutoff_level_txt'] = 'NÃvel de corte dsn anti-spam'; +$wb['spam_quarantine_cutoff_level_txt'] = 'NÃvel de corte para quarentena anti-spam'; +$wb['spam_modifies_subj_txt'] = 'Modificar assunto de mensagens marcadas como spam'; +$wb['spam_subject_tag_txt'] = 'Marcar assunto - SPAM 1'; +$wb['spam_subject_tag2_txt'] = 'Marcar assunto - SPAM 2'; +$wb['addr_extension_virus_txt'] = 'Adicionar extensão caso detecte vÃrus'; +$wb['addr_extension_spam_txt'] = 'Adicionar extensão caso detecte SPAM'; +$wb['addr_extension_banned_txt'] = 'Adicionar extensão caso detecte arquivo banido'; +$wb['addr_extension_bad_header_txt'] = 'Adicionar extensão caso detecte cabeçalho inválido'; +$wb['warnvirusrecip_txt'] = 'Aviso de vÃrus para o destinatário'; +$wb['warnbannedrecip_txt'] = 'Aviso de arquivo banido para destinatário'; +$wb['warnbadhrecip_txt'] = 'Aviso cabeçalho inválido para destinatário'; $wb['newvirus_admin_txt'] = 'Administrador para novo vÃrus'; $wb['virus_admin_txt'] = 'Administrador para vÃrus'; -$wb['banned_admin_txt'] = 'Administrador para arquivos banidos'; -$wb['bad_header_admin_txt'] = 'Administrador para cabeçalhos inválidos'; +$wb['banned_admin_txt'] = 'Administrador para arquivo banido'; +$wb['bad_header_admin_txt'] = 'Administrador para cabeçalho inválido'; $wb['spam_admin_txt'] = 'Administrador para spam'; -$wb['message_size_limit_txt'] = 'Tamanho máximo da mensagem'; -$wb['banned_rulenames_txt'] = 'Regras de banimento'; -$wb['rspamd_greylisting_txt'] = 'Use greylisting'; -$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; -$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; -$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; -$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['amavis_settings_txt'] = 'Settings'; -$wb['amavis_taglevel_txt'] = 'Tag-Level'; -$wb['amavis_quarantine_txt'] = 'Quarantine'; -$wb['amavis_other_txt'] = 'Other'; -$wb['add_header_txt'] = 'Add header'; -$wb['rewrite_subject_txt'] = 'Rewrite subject'; -?> +$wb['message_size_limit_txt'] = 'Limite de tamanho da mensagem'; +$wb['banned_rulenames_txt'] = 'Nome da regra para arquivo banido'; +$wb['rspamd_greylisting_txt'] = 'Habilitar greylist'; +$wb['rspamd_spam_greylisting_level_txt'] = 'NÃvel da greylist'; +$wb['rspamd_spam_tag_level_txt'] = 'NÃvel da marcação anti-spam'; +$wb['rspamd_spam_tag_method_txt'] = 'Método da marcação anti-spam'; +$wb['rspamd_spam_kill_level_txt'] = 'NÃvel para rejeição de spam'; +$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_cancel_txt'] = 'Cancelar'; + +$wb['amavis_settings_txt'] = 'Configurações'; +$wb['amavis_taglevel_txt'] = 'NÃvel de marcação'; +$wb['amavis_quarantine_txt'] = 'Quarentena'; +$wb['amavis_other_txt'] = 'Outro'; +$wb['add_header_txt'] = 'Adicionar cabeçalho'; +$wb['rewrite_subject_txt'] = 'Reescrever assunto'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng index 38d91f16d8..269862fe99 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_policy_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'PolÃticas anti-spam'; +$wb['list_head_txt'] = 'PolÃtica anti-spam'; $wb['policy_name_txt'] = 'Nome'; -$wb['virus_lover_txt'] = 'Permitir vÃrus'; -$wb['spam_lover_txt'] = 'Permitir spam'; -$wb['banned_files_lover_txt'] = 'Permitir arquivos banidos'; -$wb['bad_header_lover_txt'] = 'Permitir cabeçalho inválido'; +$wb['virus_lover_txt'] = 'Receber vÃrus'; +$wb['spam_lover_txt'] = 'Receber spam'; +$wb['banned_files_lover_txt'] = 'Receber arquivos banidos'; +$wb['bad_header_lover_txt'] = 'Receber cabeçalho inválido'; $wb['add_new_record_txt'] = 'Adicionar registro'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_users.lng b/interface/web/mail/lib/lang/br_spamfilter_users.lng index 2c33cd3552..3b34351adb 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users.lng @@ -2,7 +2,7 @@ $wb['server_id_txt'] = 'Servidor'; $wb['priority_txt'] = 'Prioridade'; $wb['policy_id_txt'] = 'PolÃtica'; -$wb['email_txt'] = 'e-mail (padrão)'; +$wb['email_txt'] = 'e-Mail (padrão)'; $wb['fullname_txt'] = 'Nome'; $wb['local_txt'] = 'Local'; $wb['email_error_notempty'] = 'Endereço de e-mail está em branco.'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng index cf1f4900f9..fe3feb25cd 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Usuários de filtro anti-spam'; +$wb['list_head_txt'] = 'Filtros anti-spam para contas de e-mail'; $wb['local_txt'] = 'Local'; $wb['server_id_txt'] = 'Servidor'; $wb['priority_txt'] = 'Prioridade'; -$wb['policy_id_txt'] = 'PolÃticas'; +$wb['policy_id_txt'] = 'PolÃtica'; $wb['fullname_txt'] = 'Nome'; -$wb['email_txt'] = 'e-mail'; -$wb['add_new_record_txt'] = 'Adicionar novo usuário'; +$wb['email_txt'] = 'e-Mail'; +$wb['add_new_record_txt'] = 'Adicionar novo filtro'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng index 0161d716ae..bcb9491cf0 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_whitelist.lng @@ -1,8 +1,8 @@ <?php $wb['server_id_txt'] = 'Servidor'; -$wb['wb_txt'] = 'wb'; -$wb['rid_txt'] = 'Usuário'; -$wb['email_txt'] = 'e-mail'; +$wb['wb_txt'] = 'Lista branca/negra'; +$wb['rid_txt'] = 'Usário'; +$wb['email_txt'] = 'e-Mail'; $wb['priority_txt'] = 'Prioridade'; $wb['active_txt'] = 'Ativo'; $wb['limit_spamfilter_wblist_txt'] = 'O limite de registros na lista branca/negra para esta conta foi alcançado.'; diff --git a/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng index 8ef65dbfa2..e6d48491ee 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_whitelist_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Lista branca (anti-spam)'; +$wb['list_head_txt'] = 'Filtros anti-spam - Lista Branca'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['priority_txt'] = 'Prioridade'; $wb['rid_txt'] = 'Usuário'; -$wb['email_txt'] = 'e-mail na lista branca'; -$wb['add_new_record_txt'] = 'Adicionar novo e-mail'; +$wb['email_txt'] = 'Lista Branca de e-mails'; +$wb['add_new_record_txt'] = 'Adicionar registro'; ?> diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng index a756443205..ee156b23a7 100755 --- a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Cota para contas de e-mail'; +$wb['list_head_txt'] = 'Cota da conta de e-mail'; $wb['quota_txt'] = 'Cota'; $wb['name_txt'] = 'Nome'; $wb['email_txt'] = 'Endereço de e-mail'; $wb['used_txt'] = 'Espaço utilizado'; -$wb['percentage_txt'] = 'Percentual utilizado %'; +$wb['percentage_txt'] = 'Utilizado %'; ?> diff --git a/interface/web/mail/lib/lang/br_xmpp_domain.lng b/interface/web/mail/lib/lang/br_xmpp_domain.lng index 1a9a42f0c1..1fd96ba132 100644 --- a/interface/web/mail/lib/lang/br_xmpp_domain.lng +++ b/interface/web/mail/lib/lang/br_xmpp_domain.lng @@ -5,31 +5,31 @@ $wb['domain_txt'] = 'DomÃnio'; $wb['type_txt'] = 'Tipo'; $wb['active_txt'] = 'Ativo'; $wb['client_txt'] = 'Cliente'; -$wb['management_method_txt'] = 'Gerenciamento de contas de usuários'; +$wb['management_method_txt'] = 'Gerenciar contas de usuário'; $wb['public_registration_txt'] = 'Habilitar registro público'; $wb['registration_url_txt'] = 'URL de registro'; $wb['registration_message_txt'] = 'Mensagem de registro'; -$wb['domain_admins_txt'] = 'Administradores de domÃnio (JIDs)'; -$wb['use_pubsub_txt'] = 'Habilitar Pubsub'; -$wb['use_proxy_txt'] = 'Habilitar proxy Bytestream'; +$wb['domain_admins_txt'] = 'Administradores de domÃnios (JIDs)'; +$wb['use_pubsub_txt'] = 'Habilitar pubsub'; +$wb['use_proxy_txt'] = 'Habilitar proxy bytestream'; $wb['use_anon_host_txt'] = 'Habilitar host anônimo'; -$wb['use_vjud_txt'] = 'Habilitar diretório de usuário VJUD'; -$wb['vjud_opt_mode_txt'] = 'Modo de operação VJUD'; -$wb['use_muc_host_txt'] = 'Habilitar chats multiusuários'; -$wb['muc_name_txt'] = 'Nome na descoberta do MUC'; -$wb['muc_restrict_room_creation_txt'] = 'Permissão para criar salas de chat'; -$wb['muc_admins_txt'] = 'Administradores de MUC (JIDs)'; -$wb['use_pastebin_txt'] = 'Habilitar Pastebin'; -$wb['pastebin_expire_after_txt'] = 'Colagens expiram após (horas)'; -$wb['pastebin_trigger_txt'] = 'Gatilho Pastebin'; -$wb['use_http_archive_txt'] = 'Habilitar arquivo HTTP em salas de chat'; -$wb['http_archive_show_join_txt'] = 'Exibir mensagens de participação em arquivos'; -$wb['http_archive_show_status_txt'] = 'Exibir estado de mudança em arquivos'; -$wb['use_status_host_txt'] = 'Habilitar estado XML do host'; -$wb['cant_change_domainname_txt'] = 'O nome domÃnio XMPP existente não pode ser modificado.'; -$wb['about_registration_url_txt'] = 'Link para o página de registro.'; -$wb['about_registration_message_txt'] = 'Descrição sobre seu processo de registro de conta.'; -$wb['no_corresponding_maildomain_txt'] = 'O domÃnio de e-mail correspondente para gerenciamento de usuário não foi encontrado. Por favor crie o domÃnio de e-mail primeiro.'; +$wb['use_vjud_txt'] = 'Habilitar diretório de usuário (VJUD)'; +$wb['vjud_opt_mode_txt'] = 'Modo opcional do VJUD'; +$wb['use_muc_host_txt'] = 'Habilitar chat multiusuário (MUC)'; +$wb['muc_name_txt'] = 'Nome no serviço de descoberta do MUC'; +$wb['muc_restrict_room_creation_txt'] = 'Permissão para adicionar salas de chat'; +$wb['muc_admins_txt'] = 'Administradores MUC (JIDs)'; +$wb['use_pastebin_txt'] = 'Habilitar pastebin'; +$wb['pastebin_expire_after_txt'] = 'Patas expira após (horas)'; +$wb['pastebin_trigger_txt'] = 'Desencadear pastebin'; +$wb['use_http_archive_txt'] = 'Habilitar arquivos HTTP em salas de chat'; +$wb['http_archive_show_join_txt'] = 'Exibir mensagens de ingresso no arquivo'; +$wb['http_archive_show_status_txt'] = 'Exibir estado da mudanças no arquivo'; +$wb['use_status_host_txt'] = 'Habilitar estado do XML do host'; +$wb['cant_change_domainname_txt'] = 'O nome existente do domÃnio xmpp não pode ser alterado.'; +$wb['about_registration_url_txt'] = 'Ligar ao seu formulário de registro.'; +$wb['about_registration_message_txt'] = 'Descrição sobre o processo de registro da sua conta.'; +$wb['no_corresponding_maildomain_txt'] = 'O domÃnio de e-mail correspondente para gerenciamento de usuários não foi encontrado. Por favor, crie um domÃnio de e-mail primeiro.'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; @@ -38,25 +38,25 @@ $wb['ssl_country_txt'] = 'PaÃs'; $wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['ssl_email_txt'] = 'Endereço de e-mail'; $wb['ssl_txt'] = 'SSL'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'PaÃs\' é inválido. São caracteres válidos: \'A-Z\'.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; +$wb['ssl_state_error_regex'] = 'Campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_locality_error_regex'] = 'Campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_organisation_error_regex'] = 'Campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'Campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9" e ".,-_".'; +$wb['ssl_country_error_regex'] = 'Campo "PaÃs" é inválido. São caracteres válidos: "A-Z".'; $wb['none_txt'] = 'Nenhum'; -$wb['save_certificate_txt'] = 'Salvar certificado'; -$wb['create_certificate_txt'] = 'Adicionar certificado'; -$wb['delete_certificate_txt'] = 'Remover certificado'; -$wb['ssl_error_isemail'] = 'Por favor, insira um e-mail válido para gerar o certificado SSL.'; +$wb['save_certificate_txt'] = 'Salvar Certificado'; +$wb['create_certificate_txt'] = 'Adicionar Certificado'; +$wb['delete_certificate_txt'] = 'Remover Certificado'; +$wb['ssl_error_isemail'] = 'Por favor, insira um endereço de e-mail válido para geração do certificado SSL.'; $wb['limit_xmppdomain_txt'] = 'O limite de domÃnios xmpp para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng index ab8f3a9087..e0ff3a6fc6 100644 --- a/interface/web/mail/lib/lang/br_xmpp_domain_list.lng +++ b/interface/web/mail/lib/lang/br_xmpp_domain_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'DomÃnio XMPP'; +$wb['list_head_txt'] = 'DomÃnios xmpp'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['add_new_record_txt'] = 'Adicionar novo domÃnio'; diff --git a/interface/web/mail/lib/lang/br_xmpp_user.lng b/interface/web/mail/lib/lang/br_xmpp_user.lng index 8f2306814f..5e7628dab2 100644 --- a/interface/web/mail/lib/lang/br_xmpp_user.lng +++ b/interface/web/mail/lib/lang/br_xmpp_user.lng @@ -1,15 +1,15 @@ <?php -$wb['list_head_txt'] = 'Usuários XMPP'; +$wb['list_head_txt'] = 'Contas de usuários xmpp'; $wb['jid_txt'] = 'ID do Jabber'; $wb['active_txt'] = 'Ativo'; $wb['cryptpwd_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['error_no_pwd'] = 'Senha está em branco.'; $wb['password_txt'] = 'Senha'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; -$wb['limit_xmpp_user_txt'] = 'O limite de usuários xmpp para esta conta foi alcançando.'; +$wb['limit_xmpp_user_txt'] = 'O limite de usuários xmpp para esta conta foi alcançado.'; ?> diff --git a/interface/web/mail/lib/lang/br_xmpp_user_list.lng b/interface/web/mail/lib/lang/br_xmpp_user_list.lng index 13d71a05a8..0aefe11709 100644 --- a/interface/web/mail/lib/lang/br_xmpp_user_list.lng +++ b/interface/web/mail/lib/lang/br_xmpp_user_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Contas de usuário XMPP'; +$wb['list_head_txt'] = 'Contas de usuários xmpp'; $wb['jid_txt'] = 'ID do Jabber'; $wb['is_domain_admin_txt'] = 'Administrador do domÃnio'; $wb['is_muc_admin_txt'] = 'Administrador MUC'; diff --git a/interface/web/mail/lib/lang/tr.lng b/interface/web/mail/lib/lang/tr.lng index 4f6f77a38a..52d1868b3e 100644 --- a/interface/web/mail/lib/lang/tr.lng +++ b/interface/web/mail/lib/lang/tr.lng @@ -4,47 +4,48 @@ $wb['Email Blacklist'] = 'E-posta Kara Listesi'; $wb['Blacklist'] = 'Kara Liste'; $wb['Mail Content Filter'] = 'E-posta İçerik Süzgeci'; $wb['Filter'] = 'Süzgeç'; -$wb['Mail Domain'] = 'E-posta Alan Adı'; -$wb['Domain'] = 'Alan Adı'; +$wb['Mail Domain'] = 'E-posta Etki Alanı'; +$wb['Domain'] = 'Etki Alanı'; $wb['Email Catchall'] = 'E-posta Tümünü Alma'; $wb['Email Forward'] = 'E-posta Yönlendirme'; $wb['Get Email'] = 'E-posta Al'; -$wb['Spamfilter'] = 'Önemsiz Posta Süzgeci'; +$wb['Spamfilter'] = 'Önemsiz Ä°leti Süzgeci'; $wb['Email Routing'] = 'E-posta Yöneltme'; $wb['Email transport'] = 'E-posta Aktarma'; -$wb['Mailbox'] = 'Posta Kutusu'; +$wb['Mailbox'] = 'E-posta Kutusu'; $wb['Autoresponder'] = 'Otomatik Yanıtlayıcı'; -$wb['Mail Filter'] = 'Posta Süzgeci'; +$wb['Mail Filter'] = 'E-posta Süzgeci'; $wb['Custom Rules'] = 'Özel Kurallar'; $wb['Email filter'] = 'E-posta Süzgeci'; $wb['Email Whitelist'] = 'E-posta Beyaz Listesi'; $wb['Whitelist'] = 'Beyaz Liste'; -$wb['Spamfilter blacklist'] = 'Önemsiz Posta Süzgeci Kara Listesi'; -$wb['Spamfilter Config'] = 'Önemsiz Posta Süzgeci Ayarları'; +$wb['Spamfilter blacklist'] = 'Önemsiz Ä°leti Süzgeci Kara Listesi'; +$wb['Blacklist'] = 'Kara Liste'; +$wb['Spamfilter Config'] = 'Önemsiz Ä°leti Süzgeci Ayarları'; $wb['Server'] = 'Sunucu'; -$wb['Spamfilter policy'] = 'Önemsiz Posta Süzgeci Kuralları'; +$wb['Spamfilter policy'] = 'Önemsiz Ä°leti Süzgeci Kuralları'; $wb['Policy'] = 'Kural'; $wb['Quarantine'] = 'Karantina'; $wb['Tag-Level'] = 'Etiket Düzeyi'; $wb['Other'] = 'DiÄŸer'; -$wb['Spamfilter users'] = 'Önemsiz Posta Süzgeci Kullanıcıları'; +$wb['Spamfilter users'] = 'Önemsiz Ä°leti Süzgeci Kullanıcıları'; $wb['Users'] = 'Kullanıcılar'; -$wb['Spamfilter Whitelist'] = 'Önemsiz Posta Beyaz Listesi'; +$wb['Spamfilter Whitelist'] = 'Önemsiz Ä°leti Beyaz Listesi'; +$wb['Whitelist'] = 'Beyaz Liste'; $wb['Email'] = 'E-posta'; $wb['Email Mailbox'] = 'E-posta Kutusu'; $wb['Email Accounts'] = 'E-posta Hesapları'; -$wb['User / Domain'] = 'Kullanıcı / Alan Adı'; +$wb['User / Domain'] = 'Kullanıcı / Etki Alanı'; $wb['Server Settings'] = 'Sunucu Ayarları'; -$wb['Fetchmail'] = 'Posta Alma'; -$wb['Mailbox traffic'] = 'Posta Kutusu TrafiÄŸi'; +$wb['Spamfilter'] = 'Önemsiz Ä°leti Süzgeci'; +$wb['Fetchmail'] = 'E-posta Alma'; +$wb['Mailbox traffic'] = 'E-posta Kutusu TrafiÄŸi'; $wb['Statistics'] = 'Ä°statistikler'; $wb['Postfix Whitelist'] = 'Postfix Beyaz Liste'; $wb['Postfix Blacklist'] = 'Postfix Kara Liste'; $wb['Content Filter'] = 'İçerik Süzgeci'; $wb['Global Filters'] = 'Genel Süzgeçler'; -$wb['Domain Alias'] = 'Takma Alan Adı'; +$wb['Domain Alias'] = 'Takma Etki Alanı'; $wb['Relay Recipients'] = 'Aktarılan Alıcılar'; -$wb['Mailbox quota'] = 'Posta Kutusu Kotası'; -$wb['add_header_txt'] = 'Header (adds \"X-Spam: Yes\")'; -$wb['rewrite_subject_txt'] = 'Subject (adds \"***SPAM***\" at the beginning)'; +$wb['Mailbox quota'] = 'E-posta Kutusu Kotası'; ?> diff --git a/interface/web/mail/lib/lang/tr_backup_stats_list.lng b/interface/web/mail/lib/lang/tr_backup_stats_list.lng index 79cd6c9a63..125bfc8284 100644 --- a/interface/web/mail/lib/lang/tr_backup_stats_list.lng +++ b/interface/web/mail/lib/lang/tr_backup_stats_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Backup Stats'; -$wb['active_txt'] = 'Active'; -$wb['domain_txt'] = 'Email'; -$wb['backup_count_txt'] = 'Backup count'; -$wb['backup_server_txt'] = 'Server'; -$wb['backup_interval_txt'] = 'Interval / cnt.'; -$wb['backup_size_txt'] = 'Backupsize'; +$wb['list_head_txt'] = 'Yedekleme Ä°statistikleri'; +$wb['active_txt'] = 'Etkin'; +$wb['domain_txt'] = 'E-posta'; +$wb['backup_count_txt'] = 'Yedek Sayısı'; +$wb['backup_server_txt'] = 'Sunucu'; +$wb['backup_interval_txt'] = 'Sıklık / Sayı'; +$wb['backup_size_txt'] = 'Yedek Boyutu'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_alias.lng b/interface/web/mail/lib/lang/tr_mail_alias.lng index d3fd3f1271..ea440b2e63 100644 --- a/interface/web/mail/lib/lang/tr_mail_alias.lng +++ b/interface/web/mail/lib/lang/tr_mail_alias.lng @@ -4,14 +4,14 @@ $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; $wb['email_error_isemail'] = 'E-posta adresi geçersiz.'; $wb['email_error_unique'] = 'Bu e-posta adresi zaten var'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.'; $wb['limit_mailalias_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma e-posta adresi sayısına ulaÅŸtınız.'; -$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['duplicate_mailbox_txt'] = 'Bu adresi kullanan bir e-posta kutusu zaten var'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['duplicate_email_alias_txt'] = 'Bu takma e-posta adresi zaten var.'; $wb['source_txt'] = 'Takma Ad'; -$wb['send_as_txt'] = 'Send as'; -$wb['send_as_exp'] = 'Allow target to send mail using this alias as origin'; -$wb['greylisting_txt'] = 'Enable greylisting'; +$wb['send_as_txt'] = 'Gönderen'; +$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin'; +$wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng index d39c6f46a3..f6cd98261b 100644 --- a/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng +++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain.lng @@ -2,10 +2,10 @@ $wb['source_txt'] = 'Kaynak'; $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; -$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma alan adı sayısına ulaÅŸtınız.'; -$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef alan adları aynı.'; -$wb['source_error_empty'] = 'Kaynak alan adı boÅŸ olamaz.'; -$wb['source_error_unique'] = 'Bu kaynak alan adı zaten var.'; -$wb['source_error_regex'] = 'Kaynak alan adı geçersiz.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; +$wb['limit_mailaliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['source_destination_identical_txt'] = 'Kaynak ve Hedef etki alanları aynı.'; +$wb['source_error_empty'] = 'Kaynak etki alanı boÅŸ olamaz.'; +$wb['source_error_unique'] = 'Bu kaynak etki alanı zaten var.'; +$wb['source_error_regex'] = 'Kaynak etki alanı geçersiz.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng index a6d3dfc3b9..7cbc3aef9e 100644 --- a/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_aliasdomain_list.lng @@ -1,7 +1,8 @@ <?php -$wb['list_head_txt'] = 'Takma Alan Adı'; +$wb['list_head_txt'] = 'Takma Etki Alanı'; $wb['active_txt'] = 'Etkin'; $wb['source_txt'] = 'Kaynak'; $wb['destination_txt'] = 'Hedef'; -$wb['add_new_record_txt'] = 'Takma Alan Adı Ekle'; +$wb['source_txt'] = 'Kaynak'; +$wb['add_new_record_txt'] = 'Takma Etki Alanı Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_backup_list.lng b/interface/web/mail/lib/lang/tr_mail_backup_list.lng index 73286a0737..1a5ae7227b 100644 --- a/interface/web/mail/lib/lang/tr_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_backup_list.lng @@ -1,16 +1,16 @@ <?php -$wb['list_head_txt'] = 'Existing backups'; -$wb['date_txt'] = 'Date'; -$wb['backup_type_txt'] = 'Type'; -$wb['filename_txt'] = 'Backup file'; -$wb['restore_backup_txt'] = 'Restore'; -$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.'; -$wb['restore_confirm_txt'] = 'Restoring may overwrite existing files in your mailbox. Do you really want to restore this backup?'; -$wb['download_pending_txt'] = 'There is already a pending backup download job.'; -$wb['restore_pending_txt'] = 'There is already a pending backup restore job.'; -$wb['delete_backup_txt'] = 'Delete Backup'; -$wb['delete_info_txt'] = 'Delete of the backup has been started. This action takes several minutes to be completed.'; -$wb['delete_confirm_txt'] = 'Really delete this backup?'; -$wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; -$wb['filesize_txt'] = 'Filesize'; +$wb['list_head_txt'] = 'Var Olan Yedekler'; +$wb['date_txt'] = 'Tarih'; +$wb['backup_type_txt'] = 'Tür'; +$wb['filename_txt'] = 'Yedek Dosyası'; +$wb['restore_backup_txt'] = 'Geri Yükle'; +$wb['restore_info_txt'] = 'Yedekten geri yükleme iÅŸlemi baÅŸlatıldı. Bu iÅŸlemin tamamlanması bir kaç dakika sürebilir.'; +$wb['restore_confirm_txt'] = 'Geri yükleme iÅŸlemi sırasında e-posta kutunuzda var olan iletilerin üzerine yazılabilir. Bu yedeÄŸi geri yüklemek istediÄŸinize emin misiniz?'; +$wb['download_pending_txt'] = 'Zaten bekleyen bir yedekleme indirme iÅŸlemi var.'; +$wb['restore_pending_txt'] = 'Zaten bekleyen bir yedek geri yükleme iÅŸlemi var.'; +$wb['delete_backup_txt'] = 'YedeÄŸi Sil'; +$wb['delete_info_txt'] = 'YedeÄŸi silme iÅŸlemi baÅŸlatıldı. Bu iÅŸlemin tamamlanması bir kaç dakika sürebilir.'; +$wb['delete_confirm_txt'] = 'Bu yedeÄŸi silmek istediÄŸinize emin misiniz?'; +$wb['delete_pending_txt'] = 'Zaten bekleyen bir yedek silme iÅŸlemi var.'; +$wb['filesize_txt'] = 'Dosya Boyutu'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist.lng b/interface/web/mail/lib/lang/tr_mail_blacklist.lng index ecdca0b1a5..381a11fa98 100644 --- a/interface/web/mail/lib/lang/tr_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/tr_mail_blacklist.lng @@ -4,6 +4,6 @@ $wb['source_txt'] = 'Kara Listedeki Adres'; $wb['recipient_txt'] = 'Alıcı'; $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng index b9bf6ff92c..9446569f4f 100644 --- a/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_blacklist_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Kara Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['source_txt'] = 'Kara Listedeki Adres'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['recipient_txt'] = 'Alıcı'; $wb['add_new_record_txt'] = 'Kara Liste Kaydı Ekle'; $wb['access_txt'] = 'EriÅŸim'; diff --git a/interface/web/mail/lib/lang/tr_mail_content_filter.lng b/interface/web/mail/lib/lang/tr_mail_content_filter.lng index f13b01a680..df2d4d5c43 100644 --- a/interface/web/mail/lib/lang/tr_mail_content_filter.lng +++ b/interface/web/mail/lib/lang/tr_mail_content_filter.lng @@ -1,9 +1,9 @@ <?php $wb['server_id_txt'] = 'Sunucu'; $wb['type_txt'] = 'Süzgeç'; -$wb['pattern_txt'] = 'Kurallı Ä°fade Deseni'; +$wb['pattern_txt'] = 'Kurallı Ä°fade Örüntüsü'; $wb['data_txt'] = 'Veri'; $wb['action_txt'] = 'Ä°ÅŸlem'; $wb['active_txt'] = 'Etkin'; -$wb['pattern_error_empty'] = 'Desen boÅŸ olamaz.'; +$wb['pattern_error_empty'] = 'Örüntü boÅŸ olamaz.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain.lng b/interface/web/mail/lib/lang/tr_mail_domain.lng index 4ee4aa50fa..3e7d9cc412 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain.lng @@ -1,23 +1,23 @@ <?php $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['type_txt'] = 'Tip'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['type_txt'] = 'Tür'; $wb['active_txt'] = 'Etkin'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Bu alan adı zaten var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Bu etki alanı zaten var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_maildomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['policy_txt'] = 'Önemsiz Posta Süzgeci'; +$wb['limit_maildomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; $wb['no_policy'] = '- devre dışı -'; -$wb['dkim_txt'] = 'enable DKIM'; -$wb['dkim_private_txt'] = 'DKIM Private-key'; -$wb['dkim_public_txt'] = 'DKIM Public-key\nfor information only'; -$wb['dkim_generate_txt'] = 'Generate DKIM Private-key'; -$wb['dkim_dns_txt'] = 'DNS-Record'; -$wb['dkim_private_key_error'] = 'Invalid DKIM-Private key'; -$wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)'; -$wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.'; -$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['dkim_txt'] = 'DKIM Kullanılsın'; +$wb['dkim_private_txt'] = 'Özel DKIM Anahtarı'; +$wb['dkim_public_txt'] = 'Herkese açık DKIM anahtarı' . "\n" . 'yalnız bilgilendirme için'; +$wb['dkim_generate_txt'] = 'Özel DKIM Anahtarı Ãœret'; +$wb['dkim_dns_txt'] = 'DNS Kaydı'; +$wb['dkim_private_key_error'] = 'Özel DKIM Anahtarı Geçersiz'; +$wb['dkim_settings_txt'] = 'DomainKeys Tanımlı E-posta (DKIM)'; +$wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; +$wb['dkim_selector_txt'] = 'DKIM Seçici'; +$wb['dkim_selector_error'] = 'DKIM seçici geçersiz. En fazla 63 karakter uzunluÄŸunda, yalnız küçük Ä°ngilizce harf ve rakamları kullanın (a-z ya da 0-9)'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng index 7d56618eef..f6937ab382 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_admin_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'E-posta Alan Adı'; +$wb['list_head_txt'] = 'E-posta Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['add_new_record_txt'] = 'Alan Adı Ekle'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['add_new_record_txt'] = 'Etki Alanı Ekle'; $wb['active_txt'] = 'Etkin'; $wb['sys_groupid_txt'] = 'Müşteri'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng index c5f8725a72..bcdf629846 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall.lng @@ -1,12 +1,12 @@ <?php -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; -$wb['domain_error_unique'] = 'Bu alan adı için zaten bir tümünü al kayıdı var.'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz ya da geçersiz karakterler içeriyor.'; +$wb['domain_error_unique'] = 'Bu etki alanı için zaten bir tümünü al kayıdı var.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz ya da geçersiz karakterler içeriyor.'; $wb['limit_mailcatchall_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla tümünü al hesabı sayısına ulaÅŸtınız.'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['source_txt'] = 'Kaynak'; $wb['destination_error_isemail'] = 'Hedef e-posta adresi geçersiz.'; -$wb['greylisting_txt'] = 'Enable greylisting'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng index 596e2dbdae..45a59fe831 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_catchall_list.lng @@ -2,8 +2,8 @@ $wb['list_head_txt'] = 'E-posta Tümünü Al Hesabı'; $wb['active_txt'] = 'Etkin'; $wb['source_txt'] = 'Kaynak'; -$wb['destination_txt'] = 'Hedef e-posta adresi'; +$wb['destination_txt'] = 'Hedef E-posta Adresi'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Tümünü Al Hesabı Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_domain_list.lng b/interface/web/mail/lib/lang/tr_mail_domain_list.lng index 7a4a1f2b64..06a44455eb 100644 --- a/interface/web/mail/lib/lang/tr_mail_domain_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_domain_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'E-posta Alan Adı'; +$wb['list_head_txt'] = 'E-posta Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['add_new_record_txt'] = 'Alan Adı Ekle'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['add_new_record_txt'] = 'Etki Alanı Ekle'; $wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_forward.lng b/interface/web/mail/lib/lang/tr_mail_forward.lng index f96a0e4c07..2352cd945f 100644 --- a/interface/web/mail/lib/lang/tr_mail_forward.lng +++ b/interface/web/mail/lib/lang/tr_mail_forward.lng @@ -3,11 +3,11 @@ $wb['email_txt'] = 'E-posta'; $wb['destination_txt'] = 'Hedef E-posta'; $wb['active_txt'] = 'Etkin'; $wb['limit_mailforward_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta yönlendirme sayısına ulaÅŸtınız.'; -$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir posta kutusu zaten var'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['duplicate_mailbox_txt'] = 'Bu e-posta adresini kullanan bir e-posta kutusu zaten var'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['source_txt'] = 'Kaynak E-posta'; -$wb['email_error_isemail'] = 'Please enter a valid email address.'; -$wb['send_as_txt'] = 'Send as'; -$wb['send_as_exp'] = 'Allow target to send mail using this address as origin (if target is internal)'; -$wb['greylisting_txt'] = 'Enable greylisting'; +$wb['email_error_isemail'] = 'Lütfen geçerli bir e-posta adresi yazın.'; +$wb['send_as_txt'] = 'Gönderen'; +$wb['send_as_exp'] = 'Hedef bu adresi kaynak olarak göstererek e-posta gönderebilsin (hedef iç kullanıcı ise)'; +$wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_get.lng b/interface/web/mail/lib/lang/tr_mail_get.lng index b82b6c8c9a..2ad3434265 100644 --- a/interface/web/mail/lib/lang/tr_mail_get.lng +++ b/interface/web/mail/lib/lang/tr_mail_get.lng @@ -1,6 +1,6 @@ <?php $wb['server_id_txt'] = 'Sunucu'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['source_server_txt'] = 'POP3/IMAP Sunucusu'; $wb['source_username_txt'] = 'Kullanıcı Adı'; $wb['source_password_txt'] = 'Parola'; @@ -9,11 +9,11 @@ $wb['source_delete_note_txt'] = 'Lütfen bu seçeneÄŸi etkinleÅŸtirmeden önce, $wb['source_read_all_txt'] = 'Tüm e-postalar alınsın (okunmuÅŸlar dahil)'; $wb['destination_txt'] = 'Hedef'; $wb['active_txt'] = 'Etkin'; -$wb['limit_fetchmail_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla posta alma kaydı sayısına ulaÅŸtınız.'; +$wb['limit_fetchmail_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta alma kaydı sayısına ulaÅŸtınız.'; $wb['source_server_error_isempty'] = 'Sunucu boÅŸ olamaz.'; $wb['source_username_error_isempty'] = 'Kullanıcı adı boÅŸ olamaz.'; $wb['source_password_error_isempty'] = 'Parola boÅŸ olamaz.'; $wb['destination_error_isemail'] = 'Hedef seçilmemiÅŸ.'; -$wb['source_server_error_regex'] = 'POP3/IMAP Sunucu alan adı geçersiz.'; -$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. You can not use \\"E-postalar alındıktan sonra silinsin\\" = Hayır iken \\"Tüm e-postalar alınsın\\" = Evet olamaz'; +$wb['source_server_error_regex'] = 'POP3/IMAP Sunucu etki alanı geçersiz.'; +$wb['error_delete_read_all_combination'] = 'Seçenek kombinasyonu geçersiz. "E-postalar Alındıktan Sonra Silinsin" seçeneÄŸi devre dışı iken "Tüm E-postalar Alınsın" seçeneÄŸi etkin olamaz'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng index 17bfab31dc..4bd52db75e 100644 --- a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng +++ b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng @@ -1,19 +1,19 @@ <?php -$wb['mailinglist_txt'] = 'Posta Listesi'; +$wb['mailinglist_txt'] = 'E-posta Listesi'; $wb['limit_mailmailinglist_txt'] = 'Sınıra ulaşıldı'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; $wb['listname_error_empty'] = 'Liste adı boÅŸ olamaz.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; $wb['email_in_use_txt'] = 'E-posta kullanımda'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['listname_txt'] = 'Liste Adı'; $wb['client_txt'] = 'Müşteri'; $wb['email_txt'] = 'E-posta'; $wb['password_txt'] = 'Parola'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng index c605dd2442..8070d1983d 100644 --- a/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_mailinglist_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Posta Listesi'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['list_head_txt'] = 'E-posta Listesi'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['listname_txt'] = 'Liste Adı'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng index 90153f8c4d..a7d83620cb 100644 --- a/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng +++ b/interface/web/mail/lib/lang/tr_mail_relay_recipient.lng @@ -4,6 +4,6 @@ $wb['source_txt'] = 'Aktarılan Alıcı'; $wb['recipient_txt'] = 'Alıcı'; $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng index be63f71200..6a708982f1 100644 --- a/interface/web/mail/lib/lang/tr_mail_spamfilter.lng +++ b/interface/web/mail/lib/lang/tr_mail_spamfilter.lng @@ -7,11 +7,11 @@ $wb['spam_rewrite_subject_txt'] = 'Konuyu yeniden yaz'; $wb['spam_redirect_maildir_txt'] = 'Mail kutusuna yönlendir'; $wb['active_txt'] = 'Etkin'; $wb['spam_rewrite_txt'] = 'Bu puanın üzerindeki e-posta konusunu yeniden yaz.'; -$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiÅŸ posta kutusuna yönlendir.'; +$wb['spam_redirect_txt'] = 'Bu puanın üzerindeki e-postayı seçilmiÅŸ e-posta kutusuna yönlendir.'; $wb['spam_delete_txt'] = 'Bu puanın üzerindeki e-postayı sil.'; $wb['disable_txt'] = 'Ä°pucu: Bir süzgeç seçeneÄŸini devre dışı bırakmak için, puanı 0.00 olarak yazın.'; $wb['email_error_isemail'] = 'E-posta adresi geçersiz.'; -$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz posta süzgeci kaydı zaten var.'; -$wb['spam_redirect_maildir_purge_txt'] = 'Posta klasörü'; +$wb['email_error_unique'] = 'Bu e-posta adresi için önemiz e-posta süzgeci kaydı zaten var.'; +$wb['spam_redirect_maildir_purge_txt'] = 'E-posta Klasörü'; $wb['days_txt'] = ' gün aralıklarla temizlensin.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng index 90981ad8fe..6901f541bd 100644 --- a/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_spamfilter_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci'; +$wb['list_head_txt'] = 'Önemsiz Ä°leti Süzgeci'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['server_name_txt'] = 'server_name'; $wb['email_txt'] = 'E-posta'; -$wb['add_new_record_txt'] = 'Önemsiz Posta Süzgeci Ekle'; +$wb['add_new_record_txt'] = 'Önemsiz Ä°leti Süzgeci Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_transport.lng b/interface/web/mail/lib/lang/tr_mail_transport.lng index f268fd5475..0b41770392 100644 --- a/interface/web/mail/lib/lang/tr_mail_transport.lng +++ b/interface/web/mail/lib/lang/tr_mail_transport.lng @@ -1,8 +1,8 @@ <?php $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['destination_txt'] = 'Hedef'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['mx_txt'] = 'MX taraması yok'; $wb['sort_order_txt'] = 'Sıralama'; $wb['active_txt'] = 'Etkin'; diff --git a/interface/web/mail/lib/lang/tr_mail_transport_list.lng b/interface/web/mail/lib/lang/tr_mail_transport_list.lng index f9608f64dc..75c5962ece 100644 --- a/interface/web/mail/lib/lang/tr_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_transport_list.lng @@ -2,7 +2,7 @@ $wb['list_head_txt'] = 'GeliÅŸmiÅŸ E-posta Yöneltme'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['transport_txt'] = 'Aktarım'; $wb['sort_order_txt'] = 'Sıralama'; $wb['add_new_record_txt'] = 'Yöneltme Ekle'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 6853b9619d..99e9860396 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -1,65 +1,65 @@ <?php -$wb['custom_mailfilter_txt'] = 'Özel posta süzgeci'; +$wb['custom_mailfilter_txt'] = 'Özel E-posta Süzgeci'; $wb['email_txt'] = 'E-posta'; $wb['cryptpwd_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['active_txt'] = 'Etkin'; $wb['email_error_isemail'] = 'E-posta adresi geçersiz.'; $wb['email_error_unique'] = 'Bu e-posta adresi zaten var.'; $wb['autoresponder_subject_txt'] = 'E-posta Konusu'; -$wb['autoresponder_subject'] = 'Ofis dışında yanıtı'; +$wb['autoresponder_subject'] = 'Ofis Dışında Yanıtı'; $wb['autoresponder_text_txt'] = 'Metin'; $wb['autoresponder_txt'] = 'Etkin'; $wb['autoresponder_start_date_txt'] = 'BaÅŸlangıç'; $wb['autoresponder_start_date_ispast'] = 'BaÅŸlangıç zamanı geçmiÅŸte olamaz.'; $wb['autoresponder_end_date_txt'] = 'BitiÅŸ'; $wb['autoresponder_end_date_isgreater'] = 'BitiÅŸ zamanı baÅŸlangıç zamanından sonra olmalıdır.'; -$wb['no_domain_perm'] = 'Bu alan adı için izniniz yok.'; +$wb['autoresponder_start_date_is_required'] = 'Otoyanıtlayıcı kullanıldığında baÅŸlangıç tarihi belirtilmelidir.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['error_no_pwd'] = 'Parola boÅŸ olamaz.'; -$wb['quota_error_isint'] = 'Posta kutusunun boyutu bir sayı olmalıdır.'; +$wb['quota_error_isint'] = 'E-posta kutusunun boyutu bir sayı olmalıdır.'; $wb['quota_txt'] = 'Kota (sınırsız için 0 yazın)'; -$wb['server_id_txt'] = 'Sunucu kodu'; +$wb['server_id_txt'] = 'Sunucu Kodu'; $wb['password_txt'] = 'Parola'; -$wb['maildir_txt'] = 'Posta Klasörü'; +$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın'; +$wb['maildir_txt'] = 'E-posta Klasörü'; $wb['postfix_txt'] = 'Alım Etkin'; +$wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; $wb['access_txt'] = 'EriÅŸim Etkin'; -$wb['policy_txt'] = 'Önemsiz Posta Süzgeci'; +$wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; $wb['no_policy'] = '- devre dışı -'; -$wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla posta kutusu sayısına ulaÅŸtınız.'; -$wb['limit_mailquota_txt'] = 'Posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; +$wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta kutusu sayısına ulaÅŸtınız.'; +$wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)'; $wb['disableimap_txt'] = 'IMAP Kullanılmasın'; $wb['disablepop3_txt'] = 'POP3 Kullanılmasın'; $wb['duplicate_alias_or_forward_txt'] = 'Bu e-posta adresi zaten takma ya da yönlendirilmiÅŸ.'; $wb['quota_error_value'] = 'Kota deÄŸeri geçersiz. DeÄŸer sınırsız için 0 ya da 1 deÄŸerinden büyük olmalı'; -$wb['move_junk_txt'] = 'Önemsiz Epostalar Junk Klasörüne Taşınsın'; +$wb['move_junk_txt'] = 'Önemsiz Ä°letiler Junk Klasörüne Taşınsın'; $wb['name_txt'] = 'Ad'; $wb['name_optional_txt'] = '(Ä°steÄŸe baÄŸlı)'; $wb['autoresponder_active'] = 'Otoyanıtlayıcı kullanılsın'; $wb['cc_txt'] = 'Kopyası ÅŸuraya gönderilsin'; +$wb['sender_cc_txt'] = 'Gidenin Gizli Kopyası Åžuraya Gönderilsin'; $wb['cc_error_isemail'] = 'Kopyası ÅŸuraya gönderilsin alanına geçerli bir e-posta adresi yazılmalı'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['sender_cc_error_isemail'] = 'Gidenin gizli kopyası ÅŸuraya gönderilsin alanındaki e-posta adresi geçersiz'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['now_txt'] = 'Åžimdi'; $wb['login_error_unique'] = 'Kullanıcı adı zaten var.'; $wb['login_error_regex'] = 'Kullanılabilecek karakterler: A-Z, a-z, 0-9, ., _ ve -.'; -$wb['login_txt'] = 'Kullanıcı adı (isteÄŸe baÄŸlı)'; +$wb['login_txt'] = 'Kullanıcı Adı (Ä°steÄŸe BaÄŸlı)'; $wb['error_login_email_txt'] = 'Bu kullanıcı adı kullanılamaz. Lütfen farklı bir kullanıcı adı yazın ya da e-posta adresini kullanın.'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; +$wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; +$wb['backup_copies_txt'] = 'Yedek kopyalarının sayısı'; +$wb['no_backup_txt'] = 'Yedek yok'; +$wb['daily_backup_txt'] = 'Günlük'; +$wb['weekly_backup_txt'] = 'Haftalık'; +$wb['monthly_backup_txt'] = 'Aylık'; $wb['email_error_isascii'] = 'E-posta istemcinizde sorun yaÅŸamamak için lütfen parolanızda dile özel unikod karakterler kullanmayın.'; $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; -$wb['password_click_to_set_txt'] = 'Click to set'; -$wb['greylisting_txt'] = 'Enable greylisting'; -$wb['sender_cc_txt'] = 'Send outgoing BCC to'; -$wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['backup_interval_txt'] = 'Backup interval'; -$wb['backup_copies_txt'] = 'Number of backup copies'; -$wb['no_backup_txt'] = 'No backup'; -$wb['daily_backup_txt'] = 'Daily'; -$wb['weekly_backup_txt'] = 'Weekly'; -$wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user_filter.lng b/interface/web/mail/lib/lang/tr_mail_user_filter.lng index 8897a9d18b..ba55be63dc 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_filter.lng @@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Ad boÅŸ olamaz.'; $wb['searchterm_is_empty'] = 'Aranacak ifade boÅŸ olamaz.'; $wb['source_txt'] = 'Kaynak'; $wb['target_error_regex'] = 'Hedef için yalnız ÅŸu karakterler kullanılabilir: a-z, 0-9, -, ., _, ve {boÅŸluk}'; -$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla posta süzgeci sayısına ulaÅŸtınız.'; +$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; $wb['subject_txt'] = 'Konu'; $wb['from_txt'] = 'Kimden'; $wb['to_txt'] = 'Kime'; @@ -25,5 +25,5 @@ $wb['domain_txt'] = 'Etki alanı'; $wb['keep_txt'] = 'Tut'; $wb['reject_txt'] = 'Reddet'; $wb['stop_txt'] = 'Durdur'; -$wb['move_to_txt'] = 'Move to'; +$wb['move_to_txt'] = 'Åžuraya Taşı'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user_list.lng b/interface/web/mail/lib/lang/tr_mail_user_list.lng index 6310ce4038..66d33becae 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_list.lng @@ -1,11 +1,11 @@ <?php -$wb['list_head_txt'] = 'Posta Kutusu'; +$wb['list_head_txt'] = 'E-posta Kutusu'; $wb['email_txt'] = 'E-posta'; $wb['autoresponder_txt'] = 'Otomatik Yanıtlayıcı'; -$wb['add_new_record_txt'] = 'Posta Kutusu Ekle'; +$wb['add_new_record_txt'] = 'E-posta Kutusu Ekle'; $wb['name_txt'] = 'Gerçek Ad'; $wb['login_txt'] = 'Oturum Aç'; -$wb['postfix_txt'] = 'Receiving'; +$wb['postfix_txt'] = 'Alınıyor'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; diff --git a/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng b/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng index 326f69f698..b28a9f09b9 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_stats_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Posta TrafiÄŸi'; +$wb['list_head_txt'] = 'E-posta TrafiÄŸi'; $wb['email_txt'] = 'E-posta'; $wb['this_month_txt'] = 'Bu ay'; $wb['last_month_txt'] = 'Geçen ay'; diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist.lng b/interface/web/mail/lib/lang/tr_mail_whitelist.lng index 84df2143c0..c6272a9ede 100644 --- a/interface/web/mail/lib/lang/tr_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/tr_mail_whitelist.lng @@ -4,6 +4,6 @@ $wb['source_txt'] = 'Beyaz Listedeki Adres'; $wb['recipient_txt'] = 'Alıcı'; $wb['active_txt'] = 'Etkin'; $wb['source_error_notempty'] = 'Adres boÅŸ olamaz.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta süzgeci sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng index 7809a24fe8..736b395ca0 100644 --- a/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_whitelist_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'E-posta Beyaz Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['source_txt'] = 'Beyaz Listedeki Adres'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['recipient_txt'] = 'Alıcı'; $wb['add_new_record_txt'] = 'Beyaz Liste Kaydı Ekle'; $wb['access_txt'] = 'EriÅŸim'; diff --git a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng index 1e0f673474..40e3c5fb14 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_blacklist_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Önemsiz Posta Kara Listesi'; +$wb['list_head_txt'] = 'Önemsiz Ä°leti Kara Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['priority_txt'] = 'Öncelik'; diff --git a/interface/web/mail/lib/lang/tr_spamfilter_config.lng b/interface/web/mail/lib/lang/tr_spamfilter_config.lng index 7ccd927773..93f1417483 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_config.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_config.lng @@ -6,15 +6,15 @@ $wb['gateway_txt'] = 'AÄŸ Geçidi'; $wb['hostname_txt'] = 'Sunucu Adı'; $wb['nameservers_txt'] = 'Ad Sunucuları'; $wb['module_txt'] = 'Sunucu Modülü'; -$wb['maildir_path_txt'] = 'Posta Klasörü Yolu'; +$wb['maildir_path_txt'] = 'E-posta Klasörü Yolu'; $wb['homedir_path_txt'] = 'Kullanıcı Klasörü Yolu'; -$wb['mailuser_uid_txt'] = 'Posta Kullanıcısı UID'; -$wb['mailuser_gid_txt'] = 'Posta Kullanıcısı GID'; -$wb['mailuser_name_txt'] = 'Posta Kullanıcısı Adı'; -$wb['mailuser_group_txt'] = 'Posta Kullanıcısı Grubu'; +$wb['mailuser_uid_txt'] = 'E-posta Kullanıcısı UID'; +$wb['mailuser_gid_txt'] = 'E-posta Kullanıcısı GID'; +$wb['mailuser_name_txt'] = 'E-posta Kullanıcısı Adı'; +$wb['mailuser_group_txt'] = 'E-posta Kullanıcısı Grubu'; $wb['relayhost_txt'] = 'Aktarım Sunucusu'; $wb['relayhost_user_txt'] = 'Aktarım Sunucu Kullanıcı Adı'; $wb['relayhost_password_txt'] = 'Aktarım Sunucu Parolası'; -$wb['mailbox_size_limit_txt'] = 'Posta Kutusu Boyutu'; +$wb['mailbox_size_limit_txt'] = 'E-posta Kutusu Boyutu'; $wb['message_size_limit_txt'] = 'Ä°leti Boyutu Sınırı'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng index 2b6e0b3c18..dc30cf868a 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_config_list.lng @@ -1,5 +1,5 @@ <?php $wb['list_head_txt'] = 'Sunucu Ayarları'; $wb['server_name_txt'] = 'Sunucu'; -$wb['server_id_txt'] = 'sunucu_kodu'; +$wb['server_id_txt'] = 'server_id'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng index d7b76496a1..45a52ffc92 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_policy.lng @@ -1,51 +1,38 @@ <?php $wb['policy_name_txt'] = 'Kural Adı'; $wb['virus_lover_txt'] = 'Virüs Koruması'; -$wb['spam_lover_txt'] = 'Önemsiz Posta Koruması'; -$wb['banned_files_lover_txt'] = 'Yasak Dosya Koruması'; -$wb['bad_header_lover_txt'] = 'Kötü Ãœstbilgi Koruması'; -$wb['bypass_virus_checks_txt'] = 'Virüs korumasını atla'; -$wb['bypass_banned_checks_txt'] = 'Yasak dosya korumasını atla'; -$wb['bypass_header_checks_txt'] = 'Ãœstbilgi korumasını atla'; -$wb['virus_quarantine_to_txt'] = 'Virüsü e-postaya ilet'; -$wb['spam_quarantine_to_txt'] = 'Önemsiz postayı e-postaya ilet'; -$wb['banned_quarantine_to_txt'] = 'Yasak dosyaları e-postaya ilet'; -$wb['bad_header_quarantine_to_txt'] = 'Kötü üstbilgiyi e-postaya ilet'; -$wb['clean_quarantine_to_txt'] = 'Temiz postaların iletileceÄŸi e-posta'; -$wb['other_quarantine_to_txt'] = 'DiÄŸer postaların iletileceÄŸi e-posta'; -$wb['spam_tag_level_txt'] = 'Önemsiz posta etiket düzeyi'; -$wb['spam_tag2_level_txt'] = 'Önemsiz posta etiket2 düzeyi'; -$wb['spam_kill_level_txt'] = 'Önemsiz posta yok etme düzeyi'; -$wb['spam_dsn_cutoff_level_txt'] = 'Önemsiz posta DNS durdurma limiti'; -$wb['spam_quarantine_cutoff_level_txt'] = 'Önemsiz posta karantina durdurma düzeyi'; -$wb['spam_modifies_subj_txt'] = 'Önemsiz posta konu deÄŸiÅŸikliÄŸi'; -$wb['spam_subject_tag_txt'] = 'Önemsiz posta konu etiketi'; -$wb['spam_subject_tag2_txt'] = 'Önemsiz posta konu etiketi2'; -$wb['addr_extension_virus_txt'] = 'Adres Virus eki'; -$wb['addr_extension_spam_txt'] = 'Adres SPAM eki'; -$wb['addr_extension_banned_txt'] = 'Adres Yasak eki'; -$wb['addr_extension_bad_header_txt'] = 'Adres Kötü üstbilfi eki'; -$wb['warnvirusrecip_txt'] = 'Virus alıcısını uyar'; -$wb['warnbannedrecip_txt'] = 'Yasak dosya alıcısını uyar'; -$wb['warnbadhrecip_txt'] = 'Kötü üstbilgi alıcısını uyar'; +$wb['spam_lover_txt'] = 'Önemsiz Ä°leti Koruması'; +$wb['banned_files_lover_txt'] = 'Yasaklanmış Dosya Koruması'; +$wb['bad_header_lover_txt'] = 'Kötü Ãœst Bilgi Koruması'; +$wb['bypass_virus_checks_txt'] = 'Virüs koruması atlansın'; +$wb['bypass_banned_checks_txt'] = 'Yasaklanmış dosya koruması atlansın'; +$wb['bypass_header_checks_txt'] = 'Ãœst bilgi koruması atlansın'; +$wb['virus_quarantine_to_txt'] = 'Virüs e-postaya iletilsin'; +$wb['spam_quarantine_to_txt'] = 'Önemsiz ileti e-postaya iletilsin'; +$wb['banned_quarantine_to_txt'] = 'Yasak dosya e-postaya iletilsin'; +$wb['bad_header_quarantine_to_txt'] = 'Kötü üst bilgi e-postaya iletilsin'; +$wb['clean_quarantine_to_txt'] = 'Temiz e-postaların iletileceÄŸi e-posta'; +$wb['other_quarantine_to_txt'] = 'DiÄŸer e-postaların iletileceÄŸi e-posta'; +$wb['spam_tag_level_txt'] = 'Önemsiz ileti etiket düzeyi'; +$wb['spam_tag2_level_txt'] = 'Önemsiz ileti etiket2 düzeyi'; +$wb['spam_kill_level_txt'] = 'Önemsiz ileti yok etme düzeyi'; +$wb['spam_dsn_cutoff_level_txt'] = 'Önemsiz ileti DNS durdurma limiti'; +$wb['spam_quarantine_cutoff_level_txt'] = 'Önemsiz ileti karantina durdurma düzeyi'; +$wb['spam_modifies_subj_txt'] = 'Önemsiz ileti konu deÄŸiÅŸikliÄŸi'; +$wb['spam_subject_tag_txt'] = 'Önemsiz ileti konu etiketi'; +$wb['spam_subject_tag2_txt'] = 'Önemsiz ileti konu etiketi2'; +$wb['addr_extension_virus_txt'] = 'Adres virus uzantısı'; +$wb['addr_extension_spam_txt'] = 'Adres önemsiz ileti uzantısı'; +$wb['addr_extension_banned_txt'] = 'Adres yasaklanmış uzantısı'; +$wb['addr_extension_bad_header_txt'] = 'Adres kötü üst bilgi uzantısı'; +$wb['warnvirusrecip_txt'] = 'Virus alıcısı uyarılsın'; +$wb['warnbannedrecip_txt'] = 'Yasak dosya alıcısı uyarılsın'; +$wb['warnbadhrecip_txt'] = 'Kötü üst bilgi alıcısı uyarılsın'; $wb['newvirus_admin_txt'] = 'Yeni virus yönetici'; $wb['virus_admin_txt'] = 'Virus yönetici'; $wb['banned_admin_txt'] = 'Yasak dosya yönetici'; -$wb['bad_header_admin_txt'] = 'Kötü üstbilgi yönetici'; -$wb['spam_admin_txt'] = 'Önemsiz posta yönetici'; +$wb['bad_header_admin_txt'] = 'Kötü üst bilgi yönetici'; +$wb['spam_admin_txt'] = 'Önemsiz ileti yönetici'; $wb['message_size_limit_txt'] = 'Ä°leti boyutu sınırı'; $wb['banned_rulenames_txt'] = 'Yasak kural adları'; -$wb['rspamd_greylisting_txt'] = 'Use greylisting'; -$wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting level'; -$wb['rspamd_spam_tag_level_txt'] = 'SPAM tag level'; -$wb['rspamd_spam_tag_method_txt'] = 'SPAM tag method'; -$wb['rspamd_spam_kill_level_txt'] = 'SPAM reject level'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['amavis_settings_txt'] = 'Settings'; -$wb['amavis_taglevel_txt'] = 'Tag-Level'; -$wb['amavis_quarantine_txt'] = 'Quarantine'; -$wb['amavis_other_txt'] = 'Other'; -$wb['add_header_txt'] = 'Add header'; -$wb['rewrite_subject_txt'] = 'Rewrite subject'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng index 78459c3f23..cb5b9b83af 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_policy_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci Kuralları'; +$wb['list_head_txt'] = 'Önemsiz Ä°leti Süzgeci Kuralları'; $wb['policy_name_txt'] = 'Ad'; $wb['virus_lover_txt'] = 'Virüs Koruması'; -$wb['spam_lover_txt'] = 'Önemsiz Posta Koruması'; +$wb['spam_lover_txt'] = 'Önemsiz Ä°leti Koruması'; $wb['banned_files_lover_txt'] = 'Yasaklı Dosya Koruması'; -$wb['bad_header_lover_txt'] = 'Kötü Ãœstbilgi Koruması'; +$wb['bad_header_lover_txt'] = 'Kötü Ãœst Bilgi Koruması'; $wb['add_new_record_txt'] = 'Kural Kaydı Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng index 847c5bdf4f..bee9372cbf 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_users_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Önemsiz Posta Süzgeci Kullanıcıları'; +$wb['list_head_txt'] = 'Önemsiz Ä°leti Süzgeci Kullanıcıları'; $wb['local_txt'] = 'Yerel'; $wb['server_id_txt'] = 'Sunucu'; $wb['priority_txt'] = 'Öncelik'; $wb['policy_id_txt'] = 'Kural'; $wb['fullname_txt'] = 'Ad'; $wb['email_txt'] = 'E-posta'; -$wb['add_new_record_txt'] = 'Önemsiz Posta Süzgeci Kullanıcısı Ekle'; +$wb['add_new_record_txt'] = 'Önemsiz Ä°leti Süzgeci Kullanıcısı Ekle'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng index c29bf003c5..5e1f95da1c 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_whitelist_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Önemsiz Posta Beyaz Listesi'; +$wb['list_head_txt'] = 'Önemsiz Ä°leti Beyaz Listesi'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['priority_txt'] = 'Öncelik'; diff --git a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng index d97ab317f6..ecab0f7735 100755 --- a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Posta Kutusu Kotası'; +$wb['list_head_txt'] = 'E-posta Kutusu Kotası'; $wb['quota_txt'] = 'Kota'; $wb['name_txt'] = 'Ad'; $wb['email_txt'] = 'E-posta Adresi'; diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain.lng b/interface/web/mail/lib/lang/tr_xmpp_domain.lng index 0541203b2e..5c0c1acd05 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_domain.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_domain.lng @@ -1,62 +1,62 @@ <?php -$wb['server_id_txt'] = 'Server'; -$wb['client_group_id_txt'] = 'Client'; -$wb['domain_txt'] = 'Domain'; -$wb['type_txt'] = 'Type'; -$wb['active_txt'] = 'Active'; -$wb['client_txt'] = 'Client'; -$wb['management_method_txt'] = 'Management of user accounts'; -$wb['public_registration_txt'] = 'Enable public registration'; -$wb['registration_url_txt'] = 'Registration URL'; -$wb['registration_message_txt'] = 'Registration Message'; -$wb['domain_admins_txt'] = 'Domain Admins (JIDs)'; -$wb['use_pubsub_txt'] = 'Enable Pubsub'; -$wb['use_proxy_txt'] = 'Enable Bytestream Proxy'; -$wb['use_anon_host_txt'] = 'Enable Anonymous Host'; -$wb['use_vjud_txt'] = 'Enable VJUD User Directory'; -$wb['vjud_opt_mode_txt'] = 'VJUD Opt Mode'; -$wb['use_muc_host_txt'] = 'Enable Multi User Chatrooms'; -$wb['muc_name_txt'] = 'Name in MUC Service Discovery'; -$wb['muc_restrict_room_creation_txt'] = 'Permission to create chatrooms'; -$wb['muc_admins_txt'] = 'MUC Admins (JIDs)'; -$wb['use_pastebin_txt'] = 'Enable Pastebin'; -$wb['pastebin_expire_after_txt'] = 'Pastes expire after (hours)'; -$wb['pastebin_trigger_txt'] = 'Pastebin trigger'; -$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['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.'; -$wb['no_corresponding_maildomain_txt'] = 'Corresponding mail domain for user management not found. Please create the mail domain first.'; -$wb['ssl_state_txt'] = 'State'; -$wb['ssl_locality_txt'] = 'Locality'; -$wb['ssl_organisation_txt'] = 'Organisation'; -$wb['ssl_organisation_unit_txt'] = 'Organisation Unit'; -$wb['ssl_country_txt'] = 'Country'; -$wb['ssl_key_txt'] = 'SSL Key'; -$wb['ssl_request_txt'] = 'SSL Request'; -$wb['ssl_cert_txt'] = 'SSL Certificate'; -$wb['ssl_bundle_txt'] = 'SSL Bundle'; -$wb['ssl_action_txt'] = 'SSL Action'; -$wb['ssl_email_txt'] = 'Email Address'; -$wb['ssl_txt'] = 'SSL'; -$wb['error_ssl_state_empty'] = 'SSL State is empty.'; -$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.'; -$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.'; -$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.'; -$wb['error_ssl_country_empty'] = 'SSL Country is empty.'; -$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty'; -$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ'; -$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ'; -$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ'; -$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ'; -$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z'; -$wb['none_txt'] = 'None'; -$wb['save_certificate_txt'] = 'Save certificate'; -$wb['create_certificate_txt'] = 'Create certificate'; -$wb['delete_certificate_txt'] = 'Delete certificate'; -$wb['ssl_error_isemail'] = 'Please enter a valid email adress for generation of the SSL certificate'; -$wb['limit_xmppdomain_txt'] = 'The max. number of XMPP domains for your account is reached.'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['client_group_id_txt'] = 'Müşteri'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['type_txt'] = 'Tür'; +$wb['active_txt'] = 'Etkin'; +$wb['client_txt'] = 'Müşteri'; +$wb['management_method_txt'] = 'Kullanıcı Hesabı Yönetimi'; +$wb['public_registration_txt'] = 'Herkes Kayıt Olabilsin'; +$wb['registration_url_txt'] = 'Kayıt Adresi'; +$wb['registration_message_txt'] = 'Kayıt Ä°letisi'; +$wb['domain_admins_txt'] = 'Etki Alanı Yöneticileri (JID)'; +$wb['use_pubsub_txt'] = 'Pubsub Kullanılsın'; +$wb['use_proxy_txt'] = 'Bytestream Vekil Sunucusu Kullanılsın'; +$wb['use_anon_host_txt'] = 'Anonim Sunucu Kullanılsın'; +$wb['use_vjud_txt'] = 'VJUD Kullanıcı Klasörü Kullanılsın'; +$wb['vjud_opt_mode_txt'] = 'VJUD Opt Kipi'; +$wb['use_muc_host_txt'] = 'Çok Kullanıcılı Sohbet Kullanılsın'; +$wb['muc_name_txt'] = 'MUC Hizmet KeÅŸfindeki Ad'; +$wb['muc_restrict_room_creation_txt'] = 'Sohbet Odaları OluÅŸturma Ä°zni'; +$wb['muc_admins_txt'] = 'MUC Yöneticileri (JID)'; +$wb['use_pastebin_txt'] = 'Pastebin Kullanılsın'; +$wb['pastebin_expire_after_txt'] = 'Yapıştırmaların geçersizlik süresi (saat)'; +$wb['pastebin_trigger_txt'] = 'Pastebin Tetikleyici'; +$wb['use_http_archive_txt'] = 'HTTP Sohbet Odası ArÅŸivi Kullanılsın'; +$wb['http_archive_show_join_txt'] = 'Katılma iletileri arÅŸivde görüntülensin'; +$wb['http_archive_show_status_txt'] = 'Durum deÄŸiÅŸiklikleri arÅŸivde görüntülensin'; +$wb['use_status_host_txt'] = 'XML Durum Sunucusu Kullanılsın'; +$wb['cant_change_domainname_txt'] = 'Var olan XMPP etki alanının adı deÄŸiÅŸtirilemez.'; +$wb['about_registration_url_txt'] = 'Kayıt formunuzun baÄŸlantısı.'; +$wb['about_registration_message_txt'] = 'Hesap kaydı iÅŸlemi ile ilgili açıklama.'; +$wb['no_corresponding_maildomain_txt'] = 'Kullanıcı yönetimi için uygun e-posta etki alanı bulunamadı. Lütfen önce bir e-posta etki alanı ekleyin.'; +$wb['ssl_state_txt'] = 'Ä°l'; +$wb['ssl_locality_txt'] = 'Konum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; +$wb['ssl_organisation_unit_txt'] = 'KuruluÅŸ Birimi'; +$wb['ssl_country_txt'] = 'Ãœlke'; +$wb['ssl_key_txt'] = 'SSL Anahtarı'; +$wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; +$wb['ssl_cert_txt'] = 'SSL Sertifikası'; +$wb['ssl_bundle_txt'] = 'SSL BaÄŸlantısı'; +$wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; +$wb['ssl_email_txt'] = 'E-posta Adresi'; +$wb['ssl_txt'] = 'SSL Süresi'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; +$wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; +$wb['error_ssl_organisation_unit_empty'] = 'SSL kuruluÅŸ birimi boÅŸ olamaz.'; +$wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; +$wb['error_ssl_cert_empty'] = 'SSL sertifika alanı boÅŸ olamaz.'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; +$wb['none_txt'] = 'Yok'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; +$wb['ssl_error_isemail'] = 'Lütfen SSL sertifikasının oluÅŸturulması için geçerli bir e-posta adresi yazın'; +$wb['limit_xmppdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla XMPP etki alanı sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng index af643eab5a..0a0c7abe60 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_domain_admin_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'XMPP Domain'; -$wb['server_id_txt'] = 'Server'; -$wb['domain_txt'] = 'Domain'; -$wb['add_new_record_txt'] = 'Add new Domain'; -$wb['active_txt'] = 'Active'; -$wb['sys_groupid_txt'] = 'Client'; +$wb['list_head_txt'] = 'XMPP Etki Alanı'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['add_new_record_txt'] = 'Etki Alanı Ekle'; +$wb['active_txt'] = 'Etkin'; +$wb['sys_groupid_txt'] = 'Müşteri'; ?> diff --git a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng index ebfebab7d5..50a7d55cd2 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_domain_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'XMPP Domain'; -$wb['server_id_txt'] = 'Server'; -$wb['domain_txt'] = 'Domain'; -$wb['add_new_record_txt'] = 'Add new Domain'; -$wb['active_txt'] = 'Active'; +$wb['list_head_txt'] = 'XMPP Etki Alanı'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['add_new_record_txt'] = 'Etki Alanı Ekle'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/mail/lib/lang/tr_xmpp_user.lng b/interface/web/mail/lib/lang/tr_xmpp_user.lng index 6ab739d98b..c83f1ecef0 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_user.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_user.lng @@ -1,15 +1,15 @@ <?php -$wb['list_head_txt'] = 'XMPP User Accounts'; -$wb['jid_txt'] = 'Jabber ID'; -$wb['active_txt'] = 'Active'; -$wb['cryptpwd_txt'] = 'Password'; -$wb['password_strength_txt'] = 'Password strength'; -$wb['error_no_pwd'] = 'Password is empty.'; -$wb['password_txt'] = 'Password'; -$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['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['limit_xmpp_user_txt'] = 'The max. number of xmpp accounts for your account is reached.'; +$wb['list_head_txt'] = 'XMPP Kullanıcı Adı'; +$wb['jid_txt'] = 'Jabber Kodu'; +$wb['active_txt'] = 'Etkin'; +$wb['cryptpwd_txt'] = 'Parola'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; +$wb['error_no_pwd'] = 'Paroal boÅŸ olamaz.'; +$wb['password_txt'] = 'Paroal'; +$wb['generate_password_txt'] = 'Parola Ãœret'; +$wb['repeat_password_txt'] = 'Parola Onayı'; +$wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; +$wb['password_match_txt'] = 'Parolalar aynı.'; +$wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; +$wb['limit_xmpp_user_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla XMPP hesabı sayısına ulaÅŸtınız.'; ?> diff --git a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng index f2651cb62b..a6af23d15b 100644 --- a/interface/web/mail/lib/lang/tr_xmpp_user_list.lng +++ b/interface/web/mail/lib/lang/tr_xmpp_user_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'XMPP User Accounts'; -$wb['jid_txt'] = 'Jabber ID'; -$wb['is_domain_admin_txt'] = 'Domain admin'; -$wb['is_muc_admin_txt'] = 'MUC admin'; -$wb['add_new_record_txt'] = 'Add new user'; -$wb['active_txt'] = 'Active'; +$wb['list_head_txt'] = 'XMPP Kullanıcı Hesapları'; +$wb['jid_txt'] = 'Jabber Kodu'; +$wb['is_domain_admin_txt'] = 'Etki Alanı Yöneticisi'; +$wb['is_muc_admin_txt'] = 'MUC Yöneticisi'; +$wb['add_new_record_txt'] = 'Kullanıcı Ekle'; +$wb['active_txt'] = 'Etkin'; ?> diff --git a/interface/web/mailuser/lib/lang/br.lng b/interface/web/mailuser/lib/lang/br.lng index 55eca578a4..64f9346808 100644 --- a/interface/web/mailuser/lib/lang/br.lng +++ b/interface/web/mailuser/lib/lang/br.lng @@ -1,9 +1,9 @@ <?php -$wb['Email Account'] = 'Contas de e-mail'; -$wb['Overview'] = 'Visão geral'; -$wb['Autoresponder'] = 'Resposta automática'; -$wb['Send copy'] = 'Enviar cópia para'; +$wb['Email Account'] = 'Conta de e-mail'; +$wb['Overview'] = 'Visão Geral'; +$wb['Password'] = 'Senha'; +$wb['Autoresponder'] = 'Auto-resposta'; +$wb['Send copy'] = 'Enviar cópia'; $wb['Spamfilter'] = 'Filtro anti-spam'; $wb['Email Filters'] = 'Filtros de e-mail'; -$wb['Password'] = 'Senha'; ?> diff --git a/interface/web/mailuser/lib/lang/br_index.lng b/interface/web/mailuser/lib/lang/br_index.lng index eb7d7e1e7e..9be2fbdb2a 100644 --- a/interface/web/mailuser/lib/lang/br_index.lng +++ b/interface/web/mailuser/lib/lang/br_index.lng @@ -1,12 +1,12 @@ <?php -$wb['page_head_txt'] = 'Configurações de contas de e-mail'; -$wb['page_desc_txt'] = 'Aqui você edita as configurações para as contas de e-mail.'; +$wb['page_head_txt'] = 'Configurações de conta de e-mail'; +$wb['page_desc_txt'] = 'Aqui você pode editar as configurações da conta de e-mail.'; $wb['email_txt'] = 'Endereço de e-mail'; $wb['login_txt'] = 'Acesso'; $wb['server_address_txt'] = 'Endereço do servidor de e-mails'; -$wb['cc_txt'] = 'Enviar cópia para (CC)'; -$wb['quota_txt'] = 'Tamanho da caixa postal'; -$wb['unlimited_txt'] = 'ilimitada'; +$wb['cc_txt'] = 'Enviar cópia oculta (BCC) para'; +$wb['quota_txt'] = 'Cota da conta de e-mail'; +$wb['unlimited_txt'] = 'Ilimitado'; $wb['mb_txt'] = 'MB'; $wb['none_txt'] = 'Nenhum'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng index 6e00682a44..9de387d798 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng @@ -1,13 +1,13 @@ <?php -$wb['mailbox_autoresponder_txt'] = 'Autoresposta'; -$wb['autoresponder_subject'] = 'Resposta de ausência temporária'; +$wb['mailbox_autoresponder_txt'] = 'Auto-resposta'; +$wb['autoresponder_subject'] = 'Resposta automática'; $wb['autoresponder_text_txt'] = 'Texto'; $wb['autoresponder_txt'] = 'Ativo'; -$wb['autoresponder_start_date_txt'] = 'InÃcio'; -$wb['autoresponder_start_date_isfuture'] = 'A data de inÃcio não pode ser menor que a data atual.'; -$wb['autoresponder_end_date_txt'] = 'Término'; -$wb['autoresponder_end_date_isgreater'] = 'A data de término não pode ser menor que a data de inÃcio.'; -$wb['autoresponder_active'] = 'Habilitar autoresposta'; +$wb['autoresponder_start_date_txt'] = 'Iniciar em'; +$wb['autoresponder_start_date_isfuture'] = 'O campo "Iniciar em" não pode ser menor que data atual.'; +$wb['autoresponder_end_date_txt'] = 'Terminar em'; +$wb['autoresponder_end_date_isgreater'] = 'O campo "Terminar em" não pode ser menor que "Iniciar em".'; +$wb['autoresponder_active'] = 'Habilitar auto-resposta'; $wb['now_txt'] = 'Agora'; $wb['autoresponder_subject_txt'] = 'Assunto'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng index f6d96f02a3..7a1e9a3d95 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng @@ -1,9 +1,9 @@ <?php -$wb['mailbox_cc_txt'] = 'Enviar cópia para o e-mail'; +$wb['mailbox_cc_txt'] = 'Enviar cópia para endereço de e-mail'; $wb['cc_txt'] = 'Enviar cópia para'; -$wb['email_txt'] = 'e-mail'; -$wb['cc_error_isemail'] = 'Endereço de e-mail inválido em \'enviar cópia para\'.'; -$wb['email_is_cc_error'] = 'Endereço de e-mail e -enviar cópia para- não podem ser iguais.'; +$wb['email_txt'] = 'e-Mail'; +$wb['cc_error_isemail'] = 'Endereço de e-mail inválido no campo "Enviar cópia para".'; +$wb['email_is_cc_error'] = 'Endereço de e-mail e "Enviar cópia para" não podem ser os mesmos.'; $wb['name_optional_txt'] = '(Opcional)'; -$wb['cc_note_txt'] = '(Separar múltiplos e-mails por vÃrgulas)'; +$wb['cc_note_txt'] = '(separar múltiplos endereços de e-mail com vÃrgulas)'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng index 37196f5d6c..acefe8be6e 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng @@ -5,17 +5,17 @@ $wb['target_txt'] = 'Pasta'; $wb['active_txt'] = 'Ativo'; $wb['rulename_error_empty'] = 'Nome está em branco.'; $wb['searchterm_is_empty'] = 'Termo de pesquisa está em branco.'; -$wb['source_txt'] = 'Fonte'; -$wb['target_error_regex'] = 'O alvo pode conter os seguintes caracteres: \'a-z\', \'0-9\', \'-\', \'.\', \'_\', e \'{espaço}\'.'; -$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mails para esta conta foi alcançado.'; +$wb['source_txt'] = 'Origem'; +$wb['target_error_regex'] = 'O alvo pode conter apenas estes caracteres: "a-z", "0-9", "-", ".", "_", e "{espaço}".'; +$wb['limit_mailfilter_txt'] = 'O limite de filtros de e-mail para esta conta foi alcançado.'; +$wb['mailbox_filter_txt'] = 'Filtro de conta de e-mail'; $wb['subject_txt'] = 'Assunto'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Para'; -$wb['contains_txt'] = 'Contém'; -$wb['is_txt'] = 'É'; +$wb['contains_txt'] = 'Contêm'; +$wb['is_txt'] = 'é'; $wb['begins_with_txt'] = 'Iniciando com'; -$wb['ends_with_txt'] = 'Terminando com'; +$wb['ends_with_txt'] = 'Finalizando com'; $wb['move_to_txt'] = 'Mover para'; $wb['delete_txt'] = 'Remover'; -$wb['mailbox_filter_txt'] = 'Filtro de e-mail'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng index 5d0f241974..5e13e8c303 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_filter_list.lng @@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Nome'; $wb['add_new_record_txt'] = 'Adicionar novo filtro'; $wb['page_txt'] = 'Página'; $wb['page_of_txt'] = 'de'; -$wb['delete_confirmation'] = 'Você tem certeza que gostaria de remover este filtro de e-mail?'; +$wb['delete_confirmation'] = 'Você tem certeza que deseja remover este filtro de e-mail?'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_password.lng b/interface/web/mailuser/lib/lang/br_mail_user_password.lng index 154a44cd7b..7a64df748a 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_password.lng @@ -1,11 +1,11 @@ <?php -$wb['mailbox_password_txt'] = 'Senha da Caixa Postal'; +$wb['mailbox_password_txt'] = 'Senha da conta de e-mail'; $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['email_txt'] = 'e-mail'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; +$wb['email_txt'] = 'e-Mail'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; $wb['password_mismatch_txt'] = 'As senhas não coincidem.'; $wb['password_match_txt'] = 'As senhas coincidem.'; -$wb['password_click_to_set_txt'] = 'Confirmar'; +$wb['password_click_to_set_txt'] = 'Clique para configurar'; ?> diff --git a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng index a4973817a2..eb36922041 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng @@ -1,7 +1,7 @@ <?php $wb['mailbox_spamfilter_txt'] = 'Filtros anti-spam'; $wb['spamfilter_txt'] = 'Filtro anti-spam'; -$wb['email_txt'] = 'e-mail'; +$wb['email_txt'] = 'e-Mail'; $wb['no_policy'] = '-desabilitado-'; $wb['policy_txt'] = 'PolÃtica'; ?> diff --git a/interface/web/mailuser/lib/lang/tr.lng b/interface/web/mailuser/lib/lang/tr.lng index fa5a7e12ab..c9d03bfff6 100644 --- a/interface/web/mailuser/lib/lang/tr.lng +++ b/interface/web/mailuser/lib/lang/tr.lng @@ -4,6 +4,6 @@ $wb['Overview'] = 'Özet'; $wb['Password'] = 'Parola'; $wb['Autoresponder'] = 'Otomatik yanıtlayıcı'; $wb['Send copy'] = 'Kopya gönder'; -$wb['Spamfilter'] = 'Önemsiz posta süzgeci'; +$wb['Spamfilter'] = 'Önemsiz ileti süzgeci'; $wb['Email Filters'] = 'E-posta Süzgeçleri'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_index.lng b/interface/web/mailuser/lib/lang/tr_index.lng index 4c0c553b79..47e12d6982 100644 --- a/interface/web/mailuser/lib/lang/tr_index.lng +++ b/interface/web/mailuser/lib/lang/tr_index.lng @@ -1,11 +1,11 @@ <?php -$wb['page_head_txt'] = 'Posta Kutusu Ayarları'; +$wb['page_head_txt'] = 'E-posta Kutusu Ayarları'; $wb['page_desc_txt'] = 'E-posta hesabı ayarları buradan yapılabilir.'; $wb['email_txt'] = 'E-posta adresi'; $wb['login_txt'] = 'Kullanıcı Adı'; -$wb['server_address_txt'] = 'Posta sunucusu adresi'; -$wb['cc_txt'] = 'Kopya adresi (CC)'; -$wb['quota_txt'] = 'Posta kutusu boyutu'; +$wb['server_address_txt'] = 'E-posta Sunucusu Adresi'; +$wb['cc_txt'] = 'Kopya Adresi (CC)'; +$wb['quota_txt'] = 'E-posta Kutusu Boyutu'; $wb['unlimited_txt'] = 'Sınırsız'; $wb['mb_txt'] = 'MB'; $wb['none_txt'] = 'Yok'; diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng b/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng index ac4938d768..57db197901 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng @@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Ad boÅŸ olamaz.'; $wb['searchterm_is_empty'] = 'Arama ifadesi boÅŸ olamaz.'; $wb['source_txt'] = 'Kaynak'; $wb['target_error_regex'] = 'Hedef için yalnız ÅŸu karakterler kullanılabilir: a-z, 0-9, -, ., _, ve {boÅŸluk}'; -$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla önemsiz posta süzgeci sayısı sınırına ulaÅŸtınız.'; +$wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla önemsiz ileti süzgeci sayısı sınırına ulaÅŸtınız.'; $wb['subject_txt'] = 'Konu'; $wb['from_txt'] = 'Kimden'; $wb['to_txt'] = 'Kime'; @@ -17,5 +17,5 @@ $wb['begins_with_txt'] = 'Åžununla baÅŸlayan'; $wb['ends_with_txt'] = 'Åžununla biten'; $wb['move_to_txt'] = 'Åžuraya taşı'; $wb['delete_txt'] = 'Sil'; -$wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['mailbox_filter_txt'] = 'E-posta kutusu süzgeci'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng index 36bfe6a25c..3a14043e92 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter_list.lng @@ -4,5 +4,5 @@ $wb['rulename_txt'] = 'Ad'; $wb['add_new_record_txt'] = 'Süzgeç Ekle'; $wb['page_txt'] = 'Sayfa'; $wb['page_of_txt'] = '/'; -$wb['delete_confirmation'] = 'Posta süzgecini silmek istediÄŸinize emin misiniz?'; +$wb['delete_confirmation'] = 'E-posta süzgecini silmek istediÄŸinize emin misiniz?'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng index d06ad94bb0..c35319ced1 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_password.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_password.lng @@ -1,11 +1,11 @@ <?php -$wb['mailbox_password_txt'] = 'Posta kutusu parolası'; +$wb['mailbox_password_txt'] = 'E-posta kutusu parolası'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['email_txt'] = 'E-posta'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['password_click_to_set_txt'] = 'Click to set'; +$wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng index d63f274e49..3426385a2e 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng @@ -1,6 +1,6 @@ <?php -$wb['mailbox_spamfilter_txt'] = 'Önemsiz Posta Süzgeci'; -$wb['spamfilter_txt'] = 'Önemsiz posta süzgeci'; +$wb['mailbox_spamfilter_txt'] = 'Önemsiz Ä°leti Süzgeci'; +$wb['spamfilter_txt'] = 'Önemsiz ileti süzgeci'; $wb['email_txt'] = 'E-posta'; $wb['no_policy'] = '- devre dışı -'; $wb['policy_txt'] = 'Kural'; diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index 72325cc5b3..172891cfd9 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -1,37 +1,39 @@ <?php -$wb['Server online since'] = 'Servidor online desde'; +$wb['Server online since'] = 'Servidor on-line desde'; $wb['Users online'] = 'Usuários on-line'; $wb['System load 1 minute'] = 'Carga do sistema - 1 min'; $wb['System load 5 minutes'] = 'Carga do sistema - 5 min'; $wb['System load 15 minutes'] = 'Carga do sistema - 15 min'; -$wb['Server Load'] = 'Carga do servidor'; -$wb['Disk usage'] = 'Uso do disco'; -$wb['Memory usage'] = 'Uso da memória'; -$wb['no_data_serverload_txt'] = 'Sem registros da carga do servidor disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_memusage_txt'] = 'Sem registro uso de memória disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_diskusage_txt'] = 'Sem registros sobre o uso dos discos disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_cpuinfo_txt'] = 'Sem registros sobre CPU disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_services_txt'] = 'Sem registro sobre os serviços disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_updates_txt'] = 'Sem atualização de dados disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_raid_txt'] = 'Sem registros sobre RAID disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_rkhunter_txt'] = 'Sem registros sobre o RKHUNTER disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_data_mailq_txt'] = 'Sem registro sobre a fila de e-mails disponÃveis no momento. Tente novamente mais tarde.'; -$wb['no_logdata_txt'] = 'Sem registros de log disponÃveis no momento. Tente novamente mais tarde.'; -$wb['Monitoring'] = 'Monitoramento'; +$wb['Server Load'] = 'Carga do Sistema'; +$wb['Disk usage'] = 'Uso do Disco'; +$wb['Memory usage'] = 'Uso da Memória'; +$wb['no_data_serverload_txt'] = 'Nenhum dado sobre o servidor disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_memusage_txt'] = 'Nenhum dado sobre uso da memória disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_diskusage_txt'] = 'Nenhum dado sobre o uso do disco disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_database_size_txt'] = 'Nenhum dado sobre o uso do banco de dados disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_cpuinfo_txt'] = 'Nenhum dado sobre a CPU disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_services_txt'] = 'Nenhum dado sobre os serviços disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_updates_txt'] = 'Nenhum dado sobre atualizações disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_raid_txt'] = 'Nenhum dados sobre o RAID disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_rkhunter_txt'] = 'Nenhum dado sobre o RKHunter disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_data_mailq_txt'] = 'Nenhum dados sobre as filas de e-mail disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['no_logdata_txt'] = 'Nenhum dado de log disponÃvel no momento. Por favor, verifique mais tarde.'; +$wb['Monitoring'] = 'Monitorando'; $wb['Server to Monitor'] = 'Servidor a monitorar'; -$wb['Logfiles'] = 'Arquivos de log'; -$wb['Status of services'] = 'Estado dos serviços'; -$wb['No Refresh'] = 'Não atualize'; +$wb['Logfiles'] = 'Log'; +$wb['Status of services'] = 'Estado dos Serviços'; +$wb['No Refresh'] = 'Não atualizar'; $wb['minutes'] = 'minutos'; -$wb['Show Overview'] = 'Visão geral'; -$wb['System State (All Servers)'] = 'Estado do Sistema (todos os servidores)'; -$wb['Hardware-Information'] = 'Informação de hardware'; +$wb['Show Overview'] = 'Exibir visão geral'; +$wb['System State (All Servers)'] = 'Estado do Sistema (Todos os servidores)'; +$wb['Hardware-Information'] = 'Informações do Hardware'; $wb['Show CPU info'] = 'Exibir informações da CPU'; $wb['Server State'] = 'Estado do Servidor'; $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'; @@ -42,124 +44,123 @@ $wb['Show System-Log'] = 'Exibir log do sistema'; $wb['Show ISPC Cron-Log'] = 'Exibir log do cron'; $wb['Show Freshclam-Log'] = 'Exibir log do freshclam'; $wb['Show Clamav-Log'] = 'Exibir log do clamav'; -$wb['Show ISPConfig-Log'] = 'Exibir log do ispconfig'; +$wb['Show ISPConfig-Log'] = 'Exibir log do ISPConfig'; $wb['Show RKHunter-Log'] = 'Exibir log do rkhunter'; -$wb['Show Jobqueue'] = 'Exibir fila de trabalho'; +$wb['Show Jobqueue'] = 'Exibir fila de tarefas'; +$wb['Show Data Log History'] = 'Exibir histórico do log'; +$wb['Show fail2ban-Log'] = 'Exibir log do fail2ban'; +$wb['Show MongoDB-Log'] = 'Exibir log do mongodb'; +$wb['Show IPTables'] = 'Exibir regras de firewall'; +$wb['Show OpenVz VE BeanCounter'] = 'Exibir beancounter do openvz'; $wb['monitor_general_serverstate_txt'] = 'Estado do servidor'; $wb['monitor_general_systemstate_txt'] = 'Estado do sistema'; -$wb['monitor_diskusage_filesystem_txt'] = 'Sistema de arquivos'; +$wb['monitor_diskusage_filesystem_txt'] = 'Arquivos do sistema'; $wb['monitor_diskusage_type_txt'] = 'Tipo'; $wb['monitor_diskusage_size_txt'] = 'Tamanho'; -$wb['monitor_diskusage_used_txt'] = 'Utilizado'; +$wb['monitor_diskusage_used_txt'] = 'Uso'; $wb['monitor_diskusage_available_txt'] = 'DisponÃvel'; -$wb['monitor_diskusage_usage_txt'] = 'Uso %'; +$wb['monitor_diskusage_usage_txt'] = 'Percentual Utilizado'; $wb['monitor_diskusage_mounted_txt'] = 'Montado em'; -$wb['monitor_logs_mail_txt'] = 'Log de e-mail'; -$wb['monitor_logs_mailwarn_txt'] = 'Alertas de e-mails'; -$wb['monitor_logs_mailerr_txt'] = 'Erros de e-mails'; -$wb['monitor_logs_messages_txt'] = 'Log do sistema'; -$wb['monitor_logs_ispccron_txt'] = 'Log do cron'; -$wb['monitor_logs_freshclam_txt'] = 'Logo do freshclam'; -$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_database_name_txt'] = 'Banco de dados'; +$wb['monitor_database_size_txt'] = 'Tamanho'; +$wb['monitor_database_client_txt'] = 'Cliente'; +$wb['monitor_database_domain_txt'] = 'DomÃnio'; +$wb['monitor_logs_mail_txt'] = 'Log - e-Mails'; +$wb['monitor_logs_mailwarn_txt'] = 'Log - Alertas de e-mail'; +$wb['monitor_logs_mailerr_txt'] = 'Log - Erros de e-mail'; +$wb['monitor_logs_messages_txt'] = 'Log - Mensagens do sistema'; +$wb['monitor_logs_ispccron_txt'] = 'Log - Tarefas no cron'; +$wb['monitor_logs_freshclam_txt'] = 'Log - freshclam'; +$wb['monitor_logs_clamav_txt'] = 'Log - clamav'; +$wb['monitor_logs_ispc_txt'] = 'Log - ISPConfig'; +$wb['monitor_nosupportedraid1_txt'] = 'No momento possuÃmos suporte para \'mdadm\'ou \'mpt-status\' para monitoramento do RAID.<br> Não encontramos nenhum dos dois neste servidor.<br><br> Isto significa que não podemos oferecer suporte ao seu RAID ainda.'; +$wb['monitor_norkhunter_txt'] = 'O RKHunter não está instalado, desta forma, não existe log'; $wb['monitor_serverstate_server_txt'] = 'Servidor'; $wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Estado'; -$wb['monitor_serverstate_unknown_txt'] = 'desconhecido(s)'; -$wb['monitor_serverstate_info_txt'] = 'informação(es)'; -$wb['monitor_serverstate_warning_txt'] = 'aviso(s)'; -$wb['monitor_serverstate_critical_txt'] = 'crÃtico(s)'; -$wb['monitor_serverstate_error_txt'] = 'erro(s)'; +$wb['monitor_serverstate_unknown_txt'] = 'desconhecido'; +$wb['monitor_serverstate_info_txt'] = 'info'; +$wb['monitor_serverstate_warning_txt'] = 'alerta'; +$wb['monitor_serverstate_critical_txt'] = 'crÃtico'; +$wb['monitor_serverstate_error_txt'] = 'erro'; $wb['monitor_serverstate_moreinfo_txt'] = 'Mais informações...'; $wb['monitor_serverstate_more_txt'] = 'Mais...'; -$wb['monitor_serverstate_fclamok_txt'] = 'Definições de anti-vÃrus OK'; -$wb['monitor_serverstate_fclamoutdated_txt'] = 'Definições de anti-vÃrus DESATUALIZADAS!'; +$wb['monitor_serverstate_fclamok_txt'] = 'A proteção anti-vÃrus está ok'; +$wb['monitor_serverstate_fclamoutdated_txt'] = 'A proteção anti-vÃrus está desatualizada!'; $wb['monitor_serverstate_fclamunknown_txt'] = 'Freshclam: ???!'; -$wb['monitor_serverstate_hdok_txt'] = 'Disco OK'; -$wb['monitor_serverstate_hdgoingfull_txt'] = 'Disco cheio'; -$wb['monitor_serverstate_hdnearlyfull_txt'] = 'Disco com pouco espaço'; -$wb['monitor_serverstate_hdveryfull_txt'] = 'Disco com espaço insuficiente'; -$wb['monitor_serverstate_hdfull_txt'] = 'Disco sem espaço'; -$wb['monitor_serverstate_hdunknown_txt'] = 'Disco rÃgido: ???'; +$wb['monitor_serverstate_hdok_txt'] = 'O uso do disco está ok'; +$wb['monitor_serverstate_hdgoingfull_txt'] = 'O uso do disco está moderado'; +$wb['monitor_serverstate_hdnearlyfull_txt'] = 'O uso do disco está próximo do limite'; +$wb['monitor_serverstate_hdveryfull_txt'] = 'O uso do disco está crÃtico'; +$wb['monitor_serverstate_hdfull_txt'] = 'Não existe mais espaço no disco para uso'; +$wb['monitor_serverstate_hdunknown_txt'] = 'Disco(HDD): ???'; $wb['monitor_serverstate_listok_txt'] = 'ok'; -$wb['monitor_serverstate_listinfo_txt'] = 'informação'; -$wb['monitor_serverstate_listwarning_txt'] = 'aviso'; +$wb['monitor_serverstate_listinfo_txt'] = 'info'; +$wb['monitor_serverstate_listwarning_txt'] = 'alerta'; $wb['monitor_serverstate_listcritical_txt'] = 'crÃtico'; $wb['monitor_serverstate_listerror_txt'] = 'erro'; $wb['monitor_serverstate_listunknown_txt'] = 'desconhecido'; -$wb['monitor_serverstate_loadok_txt'] = 'Carga do servidor OK'; -$wb['monitor_serverstate_loadheavy_txt'] = 'Carga do servidor: alta'; -$wb['monitor_serverstate_loadhigh_txt'] = 'Carga do servidor: média'; -$wb['monitor_serverstate_loaghigher_txt'] = 'Carga do servidor: excessiva'; -$wb['monitor_serverstate_loadhighest_txt'] = 'Carga do servidor: extrema'; -$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do servidor: ???'; -$wb['monitor_serverstate_mailqok_txt'] = 'Fila de e-mails OK'; -$wb['monitor_serverstate_mailqheavy_txt'] = 'Fila de e-mails: alta'; -$wb['monitor_serverstate_mailqhigh_txt'] = 'Fila de e-mails: média'; -$wb['monitor_serverstate_mailqhigher_txt'] = 'Fila de e-mails: excessiva'; -$wb['monitor_serverstate_mailqhighest_txt'] = 'Fila de e-mails: extrema'; +$wb['monitor_serverstate_loadok_txt'] = 'A carga do servidor está ok'; +$wb['monitor_serverstate_loadheavy_txt'] = 'O servidor está sob carga média'; +$wb['monitor_serverstate_loadhigh_txt'] = 'O servidor está sob carga alta'; +$wb['monitor_serverstate_loaghigher_txt'] = 'O servidor está sob carga muito alta'; +$wb['monitor_serverstate_loadhighest_txt'] = 'O servidor está sob carga crÃtica'; +$wb['monitor_serverstate_loadunknown_txt'] = 'Carga do Servidor: ???'; +$wb['monitor_serverstate_mailqok_txt'] = 'A fila de e-mails está ok'; +$wb['monitor_serverstate_mailqheavy_txt'] = 'A fila de e-mails está moderada'; +$wb['monitor_serverstate_mailqhigh_txt'] = 'A fila de e-mails está grande'; +$wb['monitor_serverstate_mailqhigher_txt'] = 'A fila de está muito grande'; +$wb['monitor_serverstate_mailqhighest_txt'] = 'A fila de e-mails está crÃtica'; $wb['monitor_serverstate_mailqunknown_txt'] = 'Fila de e-mails: ???'; -$wb['monitor_serverstate_raidok_txt'] = 'RAID OK'; -$wb['monitor_serverstate_raidresync_txt'] = 'RAID em modo RESYNC'; -$wb['monitor_serverstate_raidfault_txt'] = 'RAID possui um disco com falhas. Troque-o o mais rápido possÃvel!'; -$wb['monitor_serverstate_raiderror_txt'] = 'RAID parado.'; -$wb['monitor_serverstate_raidunknown_txt'] = 'RAID: ???'; -$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços necessários estão on-line'; -$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços necessários estão off-line'; +$wb['monitor_serverstate_raidok_txt'] = 'O RAID está ok'; +$wb['monitor_serverstate_raidresync_txt'] = 'O RAID está em modo RESYNC'; +$wb['monitor_serverstate_raidfault_txt'] = 'O RAID possui uma disco com falha. Substitua o mais rápido possÃvel!'; +$wb['monitor_serverstate_raiderror_txt'] = 'O RAID não está funcionando'; +$wb['monitor_serverstate_raidunknown_txt'] = 'Estado do RAID: ???'; +$wb['monitor_serverstate_servicesonline_txt'] = 'Todos os serviços estão on-line'; +$wb['monitor_serverstate_servicesoffline_txt'] = 'Um ou mais serviços estão off-line'; $wb['monitor_serverstate_servicesunknown_txt'] = 'Serviços: ???'; -$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está OK'; -$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem alguns alertas no log do sistema'; -$wb['monitor_serverstate_syslogerror_txt'] = 'Existem erros no log do sistema'; -$wb['monitor_serverstate_syslogunknown_txt'] = 'syslog:???'; -$wb['monitor_serverstate_updatesok_txt'] = 'Sistema atualizado.'; -$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes necessitam de atualização'; -$wb['monitor_serverstate_updatesunknown_txt'] = 'Estado do sistema:???'; +$wb['monitor_serverstate_syslogok_txt'] = 'O log do sistema está ok.'; +$wb['monitor_serverstate_syslogwarning_txt'] = 'Existem algumas mensagens de alerta no log do sistema'; +$wb['monitor_serverstate_syslogerror_txt'] = 'Existem algumas mensagens de erros no log do sistema'; +$wb['monitor_serverstate_syslogunknown_txt'] = 'Log do sistema: ???'; +$wb['monitor_serverstate_updatesok_txt'] = 'O sistema está atualizado.'; +$wb['monitor_serverstate_updatesneeded_txt'] = 'Um ou mais componentes do sistema necessitam atualização'; +$wb['monitor_serverstate_updatesunknown_txt'] = 'Atualizar Sistema: ???'; +$wb['monitor_serverstate_beancounterok_txt'] = 'O beancounter está ok'; +$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existe uma falha de visualização no beancounter'; +$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existe alguma falha no beancounter'; +$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem várias falhas no beancounter'; +$wb['monitor_serverstate_beancountererror_txt'] = 'Existem muitas falhas no beancounter'; $wb['monitor_services_online_txt'] = 'On-line'; $wb['monitor_services_offline_txt'] = 'Off-line'; -$wb['monitor_services_web_txt'] = 'Servidor de páginas:'; -$wb['monitor_services_ftp_txt'] = 'Servidor ftp:'; -$wb['monitor_services_smtp_txt'] = 'Servidor smtp:'; -$wb['monitor_services_pop_txt'] = 'Servidor pop:'; -$wb['monitor_services_imap_txt'] = 'Servidor imap:'; -$wb['monitor_services_mydns_txt'] = 'Servidor dns:'; -$wb['monitor_services_mysql_txt'] = 'Servidor mysql:'; -$wb['monitor_settings_datafromdate_txt'] = 'Data de: '; -$wb['monitor_settings_datetimeformat_txt'] = 'd/m/Y H:i'; -$wb['monitor_settings_refreshsq_txt'] = 'Atualizar sequência:'; +$wb['monitor_services_web_txt'] = 'Servidor WEB:'; +$wb['monitor_services_ftp_txt'] = 'Servidor FTP:'; +$wb['monitor_services_smtp_txt'] = 'Servidor SMTP:'; +$wb['monitor_services_pop_txt'] = 'Servidor POP3:'; +$wb['monitor_services_imap_txt'] = 'Servidor IMAP:'; +$wb['monitor_services_mydns_txt'] = 'Servidor DNS:'; +$wb['monitor_services_mongodb_txt'] = 'Servidor MONGODB:'; +$wb['monitor_services_mysql_txt'] = 'Servidor MYSQL:'; +$wb['monitor_settings_datafromdate_txt'] = 'Dados de: '; +$wb['monitor_settings_datetimeformat_txt'] = 'd-m-Y H:i'; +$wb['monitor_settings_refreshsq_txt'] = 'Sequência de atualização:'; $wb['monitor_settings_server_txt'] = 'Servidor'; -$wb['monitor_title_cpuinfo_txt'] = 'Informação da cpu'; -$wb['monitor_title_updatestate_txt'] = 'Atualizar estado'; +$wb['monitor_title_cpuinfo_txt'] = 'Informações de CPU'; +$wb['monitor_title_updatestate_txt'] = 'Atualizar Estado'; $wb['monitor_title_mailq_txt'] = 'Fila de e-mails'; $wb['monitor_title_raidstate_txt'] = 'Estado do RAID'; -$wb['monitor_title_rkhunterlog_txt'] = 'Log do RKHunter'; -$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não suporta este tipo de monitoramento'; +$wb['monitor_title_rkhunterlog_txt'] = 'Log do rkhunter'; $wb['monitor_title_fail2ban_txt'] = 'Log do fail2ban'; -$wb['monitor_nosupportedraid1_txt'] = 'Até o presente momento, o suporte a mdadm ou mpt-status para monitoramento do RAID não foi encontrado.<br><br>Provavelmente seu servidor não possui recursos de RAID a serem monitorados.'; -$wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter OK'; -$wb['monitor_serverstate_beancounterinfo_txt'] = 'Existem poucas falhas no beancounter'; -$wb['monitor_serverstate_beancounterwarning_txt'] = 'Existem algumas falhas no beancounter'; -$wb['monitor_serverstate_beancountercritical_txt'] = 'Existem falhas crÃticas no beancounter'; -$wb['monitor_serverstate_beancountererror_txt'] = 'Existem diversas falhas no beancounter'; -$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz ve'; -$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um um contêiner openvz e não contém informações de beancounter.'; -$wb['monitor_title_iptables_txt'] = 'Regras do firewall'; -$wb['Show fail2ban-Log'] = 'Exibir log do fail2ban'; -$wb['Show IPTables'] = 'Exibir regras do firewall'; -$wb['Show OpenVz VE BeanCounter'] = 'Exibir beancounter do openvz'; +$wb['monitor_title_mongodb_txt'] = 'Log do mongodb'; +$wb['monitor_title_iptables_txt'] = 'Regras de Firewall'; +$wb['monitor_title_beancounter_txt'] = 'Beancounter openvz'; +$wb['monitor_updates_nosupport_txt'] = 'Sua distribuição não é suportada por este monitoramento'; +$wb['monitor_beancounter_nosupport_txt'] = 'Este servidor não é um openvz e não possui nenhuma informação do beancounter'; $wb['Show Monit'] = 'Exibir Monit'; -$wb['no_monit_url_defined_txt'] = 'Nenhuma url do Monit configurada.'; +$wb['no_monit_url_defined_txt'] = 'Nenhuma URL do Monit definida.'; $wb['no_permissions_to_view_monit_txt'] = 'Você não tem permissão para acessar o Monit.'; $wb['Show Munin'] = 'Exibir Munin'; -$wb['no_munin_url_defined_txt'] = 'Nenhuma url do Muni configurada.'; +$wb['no_munin_url_defined_txt'] = 'Nenhuma URL do Munin definida.'; $wb['no_permissions_to_view_munin_txt'] = 'Você não tem permissão para acessar o Munin.'; -$wb['no_data_database_size_txt'] = 'Nenhuma informação de uso do banco de dados disponÃvel no momento. Por favor verifique novamente mais tarde.'; -$wb['monitor_database_name_txt'] = 'Banco de dados'; -$wb['monitor_database_size_txt'] = 'Tamanho'; -$wb['monitor_database_client_txt'] = 'Cliente'; -$wb['monitor_database_domain_txt'] = 'DomÃnio'; -$wb['Show MongoDB-Log'] = 'Exibir logs do MongoDB'; -$wb['monitor_services_mongodb_txt'] = 'Servidor MongoDB:'; -$wb['monitor_title_mongodb_txt'] = 'Logs do MongoDB'; -$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/monitor/lib/lang/br_datalog_list.lng b/interface/web/monitor/lib/lang/br_datalog_list.lng index e6b2f554c3..8e044daeb7 100644 --- a/interface/web/monitor/lib/lang/br_datalog_list.lng +++ b/interface/web/monitor/lib/lang/br_datalog_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Fila de trabalho'; +$wb['list_head_txt'] = 'Fila de tarefas'; $wb['tstamp_txt'] = 'Data'; $wb['server_id_txt'] = 'Servidor'; $wb['dbtable_txt'] = 'Tabela do BD'; $wb['action_txt'] = 'Ação'; -$wb['status_txt'] = 'Situação'; +$wb['status_txt'] = 'Estado'; ?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng index f1ba8c67b8..0a02fda077 100644 --- a/interface/web/monitor/lib/lang/br_dataloghistory_list.lng +++ b/interface/web/monitor/lib/lang/br_dataloghistory_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Datalog History'; -$wb['tstamp_txt'] = 'Date'; -$wb['server_id_txt'] = 'Server'; -$wb['dbtable_txt'] = 'DB Table'; -$wb['action_txt'] = 'Action'; -$wb['status_txt'] = 'Status'; +$wb['list_head_txt'] = 'Histórico do log'; +$wb['tstamp_txt'] = 'Data'; +$wb['server_id_txt'] = 'Servidor'; +$wb['dbtable_txt'] = 'Tabela do BD'; +$wb['action_txt'] = 'Ação'; +$wb['status_txt'] = 'Estado'; ?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng index 0e040a3e77..be544e6119 100644 --- a/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng +++ b/interface/web/monitor/lib/lang/br_dataloghistory_undo.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Data Log History Entry'; -$wb['success_txt'] = 'Undo successful'; -$wb['error_txt'] = 'Error during undo: Record does not exist anymore'; -$wb['error_undelete_txt'] = 'Error during undelete: Record with primary id already existing.'; -$wb['btn_cancel_txt'] = 'Back'; +$wb['list_head_txt'] = 'Histórico do log'; +$wb['success_txt'] = 'O comando "Desfazer ação" foi realizado com sucesso'; +$wb['error_txt'] = 'Erro durante desfazer ação: O registro não existe mais'; +$wb['error_undelete_txt'] = 'Erro durante a remoção: Registro com ID primário ainda existe.'; +$wb['btn_cancel_txt'] = 'Voltar'; ?> diff --git a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng index df9ddd286f..8354693280 100644 --- a/interface/web/monitor/lib/lang/br_dataloghistory_view.lng +++ b/interface/web/monitor/lib/lang/br_dataloghistory_view.lng @@ -1,26 +1,26 @@ <?php -$wb['i'] = 'Insert'; -$wb['u'] = 'Update'; -$wb['d'] = 'Delete'; -$wb['list_head_txt'] = 'Data Log History Entry'; +$wb['i'] = 'Inserir'; +$wb['u'] = 'Atualizar'; +$wb['d'] = 'Remover'; +$wb['list_head_txt'] = 'Histórico do log'; $wb['id_txt'] = 'ID'; -$wb['timestamp_txt'] = 'Timestamp'; -$wb['table_txt'] = 'Table'; -$wb['action_txt'] = 'Action'; -$wb['session_id_txt'] = 'Session ID'; -$wb['fields_txt'] = 'Fields'; -$wb['fields_inserted_txt'] = 'Inserted Fields'; -$wb['fields_updated_txt'] = 'Updated Fields'; -$wb['fields_deleted_txt'] = 'Deleted Fields'; -$wb['no_changes_txt'] = 'No changes (re-sync)'; -$wb['is_diff_txt'] = 'The differences are highlighted'; -$wb['is_diff_inserts_txt'] = 'Insertions'; -$wb['is_diff_deletes_txt'] = 'Deletions'; -$wb['field_txt'] = 'Field'; -$wb['value_txt'] = 'Value'; -$wb['old_txt'] = 'Old'; -$wb['new_txt'] = 'New'; -$wb['btn_cancel_txt'] = 'Back'; -$wb['undo_txt'] = 'Undo action'; -$wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +$wb['timestamp_txt'] = 'Data/Hora'; +$wb['table_txt'] = 'Tabela'; +$wb['action_txt'] = 'Ação'; +$wb['session_id_txt'] = 'ID da sessão'; +$wb['fields_txt'] = 'Campos'; +$wb['fields_inserted_txt'] = 'Campos cadastrados'; +$wb['fields_updated_txt'] = 'Atualizar campos'; +$wb['fields_deleted_txt'] = 'Remover campos'; +$wb['no_changes_txt'] = 'Nenhuma alteração (sincronizar)'; +$wb['is_diff_txt'] = 'As diferenças são destacadas'; +$wb['is_diff_inserts_txt'] = 'Inserções'; +$wb['is_diff_deletes_txt'] = 'Remoções'; +$wb['field_txt'] = 'Campo'; +$wb['value_txt'] = 'Valor'; +$wb['old_txt'] = 'Antigo'; +$wb['new_txt'] = 'Novo'; +$wb['btn_cancel_txt'] = 'Voltar'; +$wb['undo_txt'] = 'Desfazer ação'; +$wb['undo_confirmation_txt'] = 'Você realmente deseja desfazer esta ação?'; ?> diff --git a/interface/web/monitor/lib/lang/br_syslog_list.lng b/interface/web/monitor/lib/lang/br_syslog_list.lng index 23f3c6d5da..ca5a373564 100644 --- a/interface/web/monitor/lib/lang/br_syslog_list.lng +++ b/interface/web/monitor/lib/lang/br_syslog_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Log do Painel'; -$wb['tstamp_txt'] = 'Data'; +$wb['list_head_txt'] = 'Log do ISPConfig'; +$wb['tstamp_txt'] = 'Data/hora'; $wb['server_id_txt'] = 'Servidor'; -$wb['loglevel_txt'] = 'NÃvel do Log'; +$wb['loglevel_txt'] = 'NÃvel'; $wb['message_txt'] = 'Mensagem'; ?> diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index 005b4d97e2..20a9e8e140 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -1,21 +1,22 @@ <?php $wb['Server online since'] = 'Sunucu ÅŸu zamandan beri çevrimiçi'; $wb['Users online'] = 'Çevrimiçi Kullanıcılar'; -$wb['System load 1 minute'] = '1 dakikalık sistem yükü'; -$wb['System load 5 minutes'] = '5 dakikalık sistem yükü'; -$wb['System load 15 minutes'] = '15 dakikalık sistem yükü'; +$wb['System load 1 minute'] = 'Son 1 dakika sistem yükü'; +$wb['System load 5 minutes'] = 'Son 5 dakika sistem yükü'; +$wb['System load 15 minutes'] = 'Son 15 dakika sistem yükü'; $wb['Server Load'] = 'Sunucu Yükü'; $wb['Disk usage'] = 'Disk Kullanımı'; $wb['Memory usage'] = 'Bellek Kullanımı'; $wb['no_data_serverload_txt'] = 'Henüz sunucu yükü hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_memusage_txt'] = 'Henüz bellek kullanımı hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_diskusage_txt'] = 'Henüz disk kullanımı hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; +$wb['no_data_database_size_txt'] = 'Henüz veritabanı kullanımı ile ilgili bir veri yok. Lütfen daha sonra yeniden deneyin.'; $wb['no_data_cpuinfo_txt'] = 'Henüz iÅŸlemci hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_services_txt'] = 'Henüz hizmetler hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_updates_txt'] = 'Henüz güncellemeler hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_raid_txt'] = 'Henüz RAID hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_data_rkhunter_txt'] = 'Henüz RKHunter hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; -$wb['no_data_mailq_txt'] = 'Henüz posta kuyruÄŸu hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; +$wb['no_data_mailq_txt'] = 'Henüz e-posta kuyruÄŸu hakkında bir veri yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['no_logdata_txt'] = 'Henüz bir günlük verisi yok. Lütfen bir süre sonra yeniden deneyin.'; $wb['Monitoring'] = 'Ä°zleme'; $wb['Server to Monitor'] = 'Ä°zlenecek Sunucu'; @@ -34,10 +35,10 @@ $wb['Show Server load'] = 'Sistem Yükü'; $wb['Show Disk usage'] = 'Disk Kullanımı'; $wb['Show Memory usage'] = 'Bellek Kullanımı'; $wb['Show Services'] = 'Hizmetler'; -$wb['Show Mail-Queue'] = 'Posta KuyruÄŸu'; -$wb['Show Mail-Log'] = 'Posta Günlüğü'; -$wb['Show Mail warn-Log'] = 'Posta Uyarı Günlüğü'; -$wb['Show Mail err-Log'] = 'Posta Hata Günlüğü'; +$wb['Show Mail-Queue'] = 'E-posta KuyruÄŸu'; +$wb['Show Mail-Log'] = 'E-posta Günlüğü'; +$wb['Show Mail warn-Log'] = 'E-posta Uyarı Günlüğü'; +$wb['Show Mail err-Log'] = 'E-posta Hata Günlüğü'; $wb['Show System-Log'] = 'Sistem Günlüğü'; $wb['Show ISPC Cron-Log'] = 'Zamanlı Görev Günlüğü'; $wb['Show Freshclam-Log'] = 'Freshclam Günlüğü'; @@ -46,27 +47,32 @@ $wb['Show ISPConfig-Log'] = 'ISPConfig Günlüğü'; $wb['Show RKHunter-Log'] = 'RKHunter Günlüğü'; $wb['Show Jobqueue'] = 'Ä°ÅŸ KuyruÄŸu'; $wb['Show fail2ban-Log'] = 'Fail2ban Günlüğü'; -$wb['Show IPTables'] = 'IPTabloları'; +$wb['Show MongoDB-Log'] = 'MongoDB Günlüğünü Görüntüle'; +$wb['Show IPTables'] = 'IPTables Günlüğü'; $wb['Show OpenVz VE BeanCounter'] = 'OpenVz VE BeanCounter'; $wb['monitor_general_serverstate_txt'] = 'Sunucu Durumu'; $wb['monitor_general_systemstate_txt'] = 'Sistem Durumu'; $wb['monitor_diskusage_filesystem_txt'] = 'Dosya Sistemi'; -$wb['monitor_diskusage_type_txt'] = 'Tip'; +$wb['monitor_diskusage_type_txt'] = 'Tür'; $wb['monitor_diskusage_size_txt'] = 'Boyut'; $wb['monitor_diskusage_used_txt'] = 'Kullanılan'; $wb['monitor_diskusage_available_txt'] = 'Kullanılabilir'; $wb['monitor_diskusage_usage_txt'] = 'Kullanım%'; $wb['monitor_diskusage_mounted_txt'] = 'BaÄŸlantı'; -$wb['monitor_logs_mail_txt'] = 'Posta Günlüğü'; -$wb['monitor_logs_mailwarn_txt'] = 'Posta Uyarı Günlüğü'; -$wb['monitor_logs_mailerr_txt'] = 'Posta Hata Günlüğü'; +$wb['monitor_database_name_txt'] = 'Veritabanı'; +$wb['monitor_database_size_txt'] = 'Boyut'; +$wb['monitor_database_client_txt'] = 'Ä°stemci'; +$wb['monitor_database_domain_txt'] = 'Etki Alanı'; +$wb['monitor_logs_mail_txt'] = 'E-posta Günlüğü'; +$wb['monitor_logs_mailwarn_txt'] = 'E-posta Uyarı Günlüğü'; +$wb['monitor_logs_mailerr_txt'] = 'E-posta Hata Günlüğü'; $wb['monitor_logs_messages_txt'] = 'Sistem Ä°letileri Günlüğü'; $wb['monitor_logs_ispccron_txt'] = 'ISPConfig Zamanlı Görev Günlüğü'; $wb['monitor_logs_freshclam_txt'] = 'Freshclam GÃœnlüğü'; $wb['monitor_logs_clamav_txt'] = 'Clamav Günlüğü'; $wb['monitor_logs_ispc_txt'] = 'ISPConfig Günlüğü'; -$wb['monitor_nosupportedraid1_txt'] = 'Åžimdilik RAID durumunu izlemek için mdadm ya da mpt-status destekleniyor.<br>Bunlardan biri sunucunuzda bulunamadı.<br><br>Bu nedenle RAID sürücünüz henüz desteklenemiyor.'; -$wb['monitor_norkhunter_txt'] = 'RKHunter yüklü olmadığından herhangi bir günlük verisi yok'; +$wb['monitor_nosupportedraid1_txt'] = 'Åžimdilik RAID durumunu izlemek için ya da destekleniyor.<br>Bunlardan biri sunucunuzda bulunamadı.<br><br>Bu nedenle RAID sürücünüz henüz desteklenemiyor.'; +$wb['monitor_norkhunter_txt'] = 'RKHunter kurulu olmadığından herhangi bir günlük verisi yok'; $wb['monitor_serverstate_server_txt'] = 'Sunucu'; $wb['monitor_serverstate_kernel_txt'] = 'Kernel'; $wb['monitor_serverstate_state_txt'] = 'Durum'; @@ -75,7 +81,7 @@ $wb['monitor_serverstate_info_txt'] = 'bilgi'; $wb['monitor_serverstate_warning_txt'] = 'uyarı'; $wb['monitor_serverstate_critical_txt'] = 'kritik'; $wb['monitor_serverstate_error_txt'] = 'hata'; -$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgi...'; +$wb['monitor_serverstate_moreinfo_txt'] = 'Ayrıntılı bilgiler...'; $wb['monitor_serverstate_more_txt'] = 'Ayrıntılar...'; $wb['monitor_serverstate_fclamok_txt'] = 'Virüs koruması sorunsuz'; $wb['monitor_serverstate_fclamoutdated_txt'] = 'Virüs koruması GÃœNCEL DEĞİL!'; @@ -93,17 +99,17 @@ $wb['monitor_serverstate_listcritical_txt'] = 'kritik'; $wb['monitor_serverstate_listerror_txt'] = 'hata'; $wb['monitor_serverstate_listunknown_txt'] = 'bilinmiyor'; $wb['monitor_serverstate_loadok_txt'] = 'Sunucu yükü: Sorunsuz'; -$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Ağır'; +$wb['monitor_serverstate_loadheavy_txt'] = 'Sunucu yükü: Fazla'; $wb['monitor_serverstate_loadhigh_txt'] = 'Sunucu yükü: Yüksek'; $wb['monitor_serverstate_loaghigher_txt'] = 'Sunucu yükü: Çok yüksek'; $wb['monitor_serverstate_loadhighest_txt'] = 'Sunucu yükü: En yüksek'; $wb['monitor_serverstate_loadunknown_txt'] = 'Sunucu yükü: ???'; -$wb['monitor_serverstate_mailqok_txt'] = 'Posta kuyruÄŸu yükü: Sorunsuz'; -$wb['monitor_serverstate_mailqheavy_txt'] = 'Posta kuyruÄŸu yükü: Ağır'; -$wb['monitor_serverstate_mailqhigh_txt'] = 'Posta kuyruÄŸu yükü: Yüksek'; -$wb['monitor_serverstate_mailqhigher_txt'] = 'Posta kuyruÄŸu yükü: Çok yüksek'; -$wb['monitor_serverstate_mailqhighest_txt'] = 'Posta kuyruÄŸu yükü: En yüksek'; -$wb['monitor_serverstate_mailqunknown_txt'] = 'Posta kuyruÄŸu yükü: ???'; +$wb['monitor_serverstate_mailqok_txt'] = 'E-posta kuyruÄŸu yükü: Sorunsuz'; +$wb['monitor_serverstate_mailqheavy_txt'] = 'E-posta kuyruÄŸu yükü: Fazla'; +$wb['monitor_serverstate_mailqhigh_txt'] = 'E-posta kuyruÄŸu yükü: Yüksek'; +$wb['monitor_serverstate_mailqhigher_txt'] = 'E-posta kuyruÄŸu yükü: Çok yüksek'; +$wb['monitor_serverstate_mailqhighest_txt'] = 'E-posta kuyruÄŸu yükü: En yüksek'; +$wb['monitor_serverstate_mailqunknown_txt'] = 'E-posta kuyruÄŸu yükü: ???'; $wb['monitor_serverstate_raidok_txt'] = 'RAID sorunsuz'; $wb['monitor_serverstate_raidresync_txt'] = 'RAID, RESYNC kipinde'; $wb['monitor_serverstate_raidfault_txt'] = 'RAID dizisinde hatalı bir disk var. Bu diski en kısa sürede deÄŸiÅŸtirmelisiniz!'; @@ -118,6 +124,7 @@ $wb['monitor_serverstate_syslogerror_txt'] = 'Sistem günlüğünde hatalar var' $wb['monitor_serverstate_syslogunknown_txt'] = 'Sistem Günlüğü: ???'; $wb['monitor_serverstate_updatesok_txt'] = 'Sistem güncel'; $wb['monitor_serverstate_updatesneeded_txt'] = 'Bir ya da daha fazla bileÅŸenin güncellenmesi gerekiyor'; +$wb['monitor_serverstate_updatesunknown_txt'] = 'Sistem Güncelleme: ???'; $wb['monitor_serverstate_beancounterok_txt'] = 'Beancounter sorunsuz'; $wb['monitor_serverstate_beancounterinfo_txt'] = 'Beancounter kayıtlarında az sayıda hata var'; $wb['monitor_serverstate_beancounterwarning_txt'] = 'Beancounter kayıtlarında ortalama sayıda hata var'; @@ -130,7 +137,8 @@ $wb['monitor_services_ftp_txt'] = 'FTP Sunucu:'; $wb['monitor_services_smtp_txt'] = 'SMTP Sunucu:'; $wb['monitor_services_pop_txt'] = 'POP3 Sunucu:'; $wb['monitor_services_imap_txt'] = 'IMAP Sunucu:'; -$wb['monitor_services_mydns_txt'] = 'myDNS Sunucu:'; +$wb['monitor_services_mydns_txt'] = 'DNS Sunucu:'; +$wb['monitor_services_mongodb_txt'] = 'MongoDB Sunucusu:'; $wb['monitor_services_mysql_txt'] = 'mySQL Sunucu:'; $wb['monitor_settings_datafromdate_txt'] = 'Veri tarihi: '; $wb['monitor_settings_datetimeformat_txt'] = 'Y-m-d H:i'; @@ -138,10 +146,11 @@ $wb['monitor_settings_refreshsq_txt'] = 'Yenileme Sıklığı:'; $wb['monitor_settings_server_txt'] = 'Sunucu'; $wb['monitor_title_cpuinfo_txt'] = 'Ä°ÅŸlemci Bilgileri'; $wb['monitor_title_updatestate_txt'] = 'Güncellik Durumu'; -$wb['monitor_title_mailq_txt'] = 'Posta KuyruÄŸu'; +$wb['monitor_title_mailq_txt'] = 'E-posta KuyruÄŸu'; $wb['monitor_title_raidstate_txt'] = 'RAID Durumu'; $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Günlüğü'; $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Günlüğü'; +$wb['monitor_title_mongodb_txt'] = 'MongoDB Günlüğü'; $wb['monitor_title_iptables_txt'] = 'IPTables Kuralları'; $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter'; $wb['monitor_updates_nosupport_txt'] = 'Dağıtımınız, bu izlemeyi desteklemiyor'; @@ -152,14 +161,4 @@ $wb['no_permissions_to_view_monit_txt'] = 'Monit eriÅŸimi izniniz yok.'; $wb['Show Munin'] = 'Munin Durumu'; $wb['no_munin_url_defined_txt'] = 'Munin adresi belirtilmemiÅŸ.'; $wb['no_permissions_to_view_munin_txt'] = 'Munin eriÅŸimi izniniz yok.'; -$wb['no_data_database_size_txt'] = 'No data about the database usage available at the moment. Please check again later.'; -$wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; -$wb['monitor_database_name_txt'] = 'Database'; -$wb['monitor_database_size_txt'] = 'Size'; -$wb['monitor_database_client_txt'] = 'Client'; -$wb['monitor_database_domain_txt'] = 'Domain'; -$wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???'; -$wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; -$wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; -$wb['Show Data Log History'] = 'Show Data Log History'; ?> diff --git a/interface/web/sites/lib/lang/br.lng b/interface/web/sites/lib/lang/br.lng index 685ce6ed28..8710dc1140 100644 --- a/interface/web/sites/lib/lang/br.lng +++ b/interface/web/sites/lib/lang/br.lng @@ -2,34 +2,37 @@ $wb['Websites'] = 'Sites'; $wb['Website'] = 'Site'; $wb['Subdomain'] = 'SubdomÃnio'; -$wb['Aliasdomain'] = 'Apelido de domÃnio'; -$wb['Database'] = 'Bancos de dados'; +$wb['Aliasdomain'] = 'Alias de domÃnio'; +$wb['Database'] = 'Banco de dados'; +$wb['Database User'] = 'Usuários do banco de dados'; $wb['Web Access'] = 'Acesso web'; $wb['FTP-User'] = 'Usuários ftp'; $wb['Webdav-User'] = 'Usuários webdav'; $wb['Folder'] = 'Pastas protegidas'; -$wb['Folder users'] = 'Usuários de pastas'; +$wb['Folder users'] = 'Usuários de pastas protegidas'; $wb['Command Line'] = 'Linha de comando'; -$wb['Shell-User'] = 'Usuários shell'; +$wb['Shell-User'] = 'Usuários do shell'; $wb['Cron Jobs'] = 'Tarefas no cron'; $wb['Statistics'] = 'EstatÃsticas'; $wb['Web traffic'] = 'Tráfego web'; -$wb['Website quota (Harddisk)'] = 'Cota para sites (disco)'; +$wb['FTP traffic'] = 'Tráfego ftp'; +$wb['Website quota (Harddisk)'] = 'Cota de site (disco)'; +$wb['Database quota'] = 'Cota do banco de dados'; +$wb['Backup Stats'] = 'EstatÃsticas de backups'; $wb['Cron'] = 'Cron'; $wb['Stats'] = 'EstatÃsticas'; $wb['Shell'] = 'Shell'; $wb['Webdav'] = 'Webdav'; $wb['FTP'] = 'FTP'; $wb['Options'] = 'Opções'; +$wb['Domain'] = 'DomÃnio'; $wb['Redirect'] = 'Redirecionamento'; $wb['SSL'] = 'SSL'; $wb['Sites'] = 'Sites'; -$wb['Database User'] = 'Usuários'; -$wb['APS Installer'] = 'Instalação de apps'; +$wb['APS Installer'] = 'Instalador de APPs'; $wb['Available packages'] = 'Pacotes disponÃveis'; $wb['Installed packages'] = 'Pacotes instalados'; $wb['Update Packagelist'] = 'Atualizar lista de pacotes'; $wb['Subdomain (Vhost)'] = 'SubdomÃnio (vhost)'; -$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \\"proxy\\" exige uma url como caminho do redirecionamento.'; -$wb['Domain'] = 'DomÃnio'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; ?> diff --git a/interface/web/sites/lib/lang/br_aps.lng b/interface/web/sites/lib/lang/br_aps.lng index 27e7434359..744c215192 100644 --- a/interface/web/sites/lib/lang/br_aps.lng +++ b/interface/web/sites/lib/lang/br_aps.lng @@ -5,59 +5,59 @@ $wb['available_packages_txt'] = 'Pacotes disponÃveis'; $wb['installed_packages_txt'] = 'Pacotes instalados'; $wb['yes_txt'] = 'Sim'; $wb['no_txt'] = 'Não'; -$wb['invalid_id_txt'] = 'Nenhuma ID válida inserida.'; +$wb['invalid_id_txt'] = 'Nenhuma ID válida informada.'; $wb['details_txt'] = 'Detalhes'; $wb['version_txt'] = 'Versão'; $wb['category_txt'] = 'Categoria'; -$wb['homepage_txt'] = 'Página'; +$wb['homepage_txt'] = 'Página Inicial'; $wb['supported_languages_txt'] = 'Idiomas suportados'; $wb['description_txt'] = 'Descrição'; $wb['config_script_txt'] = 'Script de configuração'; -$wb['installed_size_txt'] = 'Tamanho após instalação'; +$wb['installed_size_txt'] = 'Tamanho após a instalação'; $wb['license_txt'] = 'Licença'; -$wb['screenshots_txt'] = 'Telas'; -$wb['changelog_txt'] = 'Log de mudanças'; -$wb['server_requirements_txt'] = 'Requisitos do servidor'; -$wb['php_extensions_txt'] = 'Extensões PHP'; -$wb['php_settings_txt'] = 'Configurações do PHP'; -$wb['supported_php_versions_txt'] = 'Versões do PHP suportadas'; +$wb['screenshots_txt'] = 'Captura de telas'; +$wb['changelog_txt'] = 'Mudanças Recentes'; +$wb['server_requirements_txt'] = 'Requisitos do Servidor'; +$wb['php_extensions_txt'] = 'Extensões php'; +$wb['php_settings_txt'] = 'Configurações php'; +$wb['supported_php_versions_txt'] = 'Versões do php suportadas'; $wb['database_txt'] = 'Banco de Dados'; $wb['settings_txt'] = 'Configurações'; -$wb['install_package_txt'] = 'Instalar esse pacote'; +$wb['install_package_txt'] = 'Instalar este pacote'; $wb['installation_txt'] = 'Instalação'; $wb['install_location_txt'] = 'Local da instalação'; -$wb['acceptance_txt'] = 'Aceitação'; -$wb['acceptance_text_txt'] = 'Sim, eu li a licença e aceito os termos.'; +$wb['btn_install_txt'] = 'Instalar'; +$wb['btn_cancel_txt'] = 'Cancelar'; +$wb['acceptance_txt'] = 'Aceitar a licença'; +$wb['acceptance_text_txt'] = 'Sim, li e aceito os termos da licença.'; $wb['install_language_txt'] = 'Idioma da interface'; $wb['new_database_password_txt'] = 'Nova senha do banco de dados'; $wb['basic_settings_txt'] = 'Configurações básicas'; -$wb['package_settings_txt'] = 'Configurações do pacote'; -$wb['error_main_domain'] = 'O domÃnio no caminho da instalação é é inválido.'; -$wb['error_no_main_location'] = 'Você inseriu um caminho inválido para a instalação.'; -$wb['error_inv_main_location'] = 'A pasta informada para a instalação é inválida.'; -$wb['error_license_agreement'] = 'Para continuar é preciso aceitar os termos da licenciamento.'; -$wb['error_no_database_pw'] = 'Você informou uma senha inválida para o banco de dados.'; -$wb['error_short_database_pw'] = 'Por favor, escolha uma senha com maior complexidade para o banco de dados.'; -$wb['error_no_value_for'] = 'O campo \'%s\' não pode ficar está em branco.'; -$wb['error_short_value_for'] = 'O campo \'%s\' exige um valor maior.'; -$wb['error_long_value_for'] = 'O campo \'%s\' exige um valor mais curto.'; -$wb['error_inv_value_for'] = 'Você inseriu um valor inválido para o campo \'%s\'.'; -$wb['error_inv_email_for'] = 'Você inseriu um e-mail inválido para o campo \'%s\'.'; -$wb['error_inv_domain_for'] = 'Você inseriu um domÃnio inválido para o campo \'%s\'.'; -$wb['error_inv_integer_for'] = 'Você inseriu um número inválido para o campo \'%s\'.'; -$wb['error_inv_float_for'] = 'Você inseriu um número de ponto flutuante inválido para o campo \'%s\'.'; -$wb['error_used_location'] = 'O caminho da instalação contém um pacote de instalação.'; -$wb['installation_task_txt'] = 'Agendamento de instalação'; +$wb['package_settings_txt'] = 'Configurações de pacotes'; +$wb['error_main_domain'] = 'O domÃnio para a instalação é inválido.'; +$wb['error_no_main_location'] = 'Não foi informado um caminho válido para a instalação.'; +$wb['error_inv_main_location'] = 'Local da pasta de instalação informado é inválido.'; +$wb['error_license_agreement'] = 'Para continuar é necessário aceitar os termos da licença.'; +$wb['error_no_database_pw'] = 'Não foi informado uma senha válida para o banco de dados.'; +$wb['error_short_database_pw'] = 'Por favor informe uma senha do banco de dados com maior complexidade.'; +$wb['error_no_value_for'] = 'O campo "%s" não pode estar está em branco.'; +$wb['error_short_value_for'] = 'O campo "%s" requer um valor de entrada maior.'; +$wb['error_long_value_for'] = 'O campo "%s" requer um valor de entrada menor.'; +$wb['error_inv_value_for'] = 'O valor informado no campo "%s" é inválido.'; +$wb['error_inv_email_for'] = 'O e-mail informado no campo "%s" é inválido.'; +$wb['error_inv_domain_for'] = 'O domÃnio informado no campo "%s" é inválido.'; +$wb['error_inv_integer_for'] = 'O número informado no campo "%s" é inválido.'; +$wb['error_inv_float_for'] = 'O número de ponto flutuante informado no campo "%s" é inválido.'; +$wb['error_used_location'] = 'O caminho da instalação selecionado já possui uma instalação de pacote.'; +$wb['installation_task_txt'] = 'Instalação agendada'; $wb['installation_error_txt'] = 'Erro de instalação'; $wb['installation_success_txt'] = 'Instalado'; -$wb['installation_remove_txt'] = 'Remove agendamento'; -$wb['packagelist_update_finished_txt'] = 'Atualização da lista de pacotes finalizada.'; -$wb['btn_install_txt'] = 'Instalar'; -$wb['btn_cancel_txt'] = 'Cancelar'; -$wb['limit_aps_txt'] = 'O limite de instâncias de apps para esta conta foi alcançado.'; -$wb['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['installation_remove_txt'] = 'Remover instalação agendada'; +$wb['packagelist_update_finished_txt'] = 'Lista de APPs atualizada.'; +$wb['limit_aps_txt'] = 'O limite de instâncias de APPs para esta conta foi alcançado.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['password_strength_txt'] = 'Dificuldade da senha'; ?> diff --git a/interface/web/sites/lib/lang/br_aps_instances_list.lng b/interface/web/sites/lib/lang/br_aps_instances_list.lng index fb6a2addd8..da5b80d68e 100644 --- a/interface/web/sites/lib/lang/br_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/br_aps_instances_list.lng @@ -5,7 +5,7 @@ $wb['version_txt'] = 'Versão'; $wb['customer_txt'] = 'Cliente'; $wb['status_txt'] = 'Estado'; $wb['install_location_txt'] = 'Local da instalação'; -$wb['pkg_delete_confirmation'] = 'Você realmente deseja remover esta instalação?'; +$wb['pkg_delete_confirmation'] = 'Deseja realmente remover esta instalação?'; $wb['filter_txt'] = 'Pesquisar'; $wb['delete_txt'] = 'Remover'; ?> diff --git a/interface/web/sites/lib/lang/br_aps_packages_list.lng b/interface/web/sites/lib/lang/br_aps_packages_list.lng index 641d807f52..bbd0e1ad3d 100644 --- a/interface/web/sites/lib/lang/br_aps_packages_list.lng +++ b/interface/web/sites/lib/lang/br_aps_packages_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Pacotes DisponÃveis'; +$wb['list_head_txt'] = 'Pacotes disponÃveis'; $wb['name_txt'] = 'Nome'; $wb['version_txt'] = 'Versão'; $wb['category_txt'] = 'Categoria'; diff --git a/interface/web/sites/lib/lang/br_aps_update_packagelist.lng b/interface/web/sites/lib/lang/br_aps_update_packagelist.lng index 8e53fbb6b1..b81640384c 100644 --- a/interface/web/sites/lib/lang/br_aps_update_packagelist.lng +++ b/interface/web/sites/lib/lang/br_aps_update_packagelist.lng @@ -1,7 +1,7 @@ <?php $wb['head_txt'] = 'Atualizar lista de pacotes'; -$wb['list_desc_txt'] = 'Lista de pacotes'; +$wb['list_desc_txt'] = ''; $wb['btn_start_txt'] = 'Atualizar lista de pacotes'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['legend_txt'] = 'Aqui você pode atualizar a lista de pacotes disponÃveis. Por favor, observe que este processo poderá levar alguns minutos. Você pode fechar esta página, o processo continuará em segundo plano.'; +$wb['legend_txt'] = 'Aqui é possÃvel atualizar a lista de pacotes disponÃveis. Por favor, observe que esta operação pode demorar vários minutos. Você poderá sair dessa página se quiser; o processo continuará a execução em segundo plano.'; ?> diff --git a/interface/web/sites/lib/lang/br_backup_stats_list.lng b/interface/web/sites/lib/lang/br_backup_stats_list.lng index 5f7f2d9ec7..932ad5dba7 100644 --- a/interface/web/sites/lib/lang/br_backup_stats_list.lng +++ b/interface/web/sites/lib/lang/br_backup_stats_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'EstatÃsticas do banco de Dados'; -$wb['database_name_txt'] = 'Nome do banco de dados'; +$wb['list_head_txt'] = 'EstatÃsticas de backup'; +$wb['database_name_txt'] = 'Banco de Dados'; $wb['active_txt'] = 'Ativo'; $wb['domain_txt'] = 'DomÃnio'; -$wb['backup_count_txt'] = 'Contador de backup'; +$wb['backup_count_txt'] = 'Contador de backups'; $wb['backup_server_txt'] = 'Servidor'; -$wb['backup_interval_txt'] = 'Intervalo/contador'; -$wb['backup_size_txt'] = 'Tamanho'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_size_txt'] = 'Tamanho do backup'; ?> diff --git a/interface/web/sites/lib/lang/br_cron.lng b/interface/web/sites/lib/lang/br_cron.lng index 2bbadf6d1b..98d98efa25 100644 --- a/interface/web/sites/lib/lang/br_cron.lng +++ b/interface/web/sites/lib/lang/br_cron.lng @@ -8,19 +8,19 @@ $wb['run_hour_txt'] = 'Horas'; $wb['run_mday_txt'] = 'Dias do mês'; $wb['run_month_txt'] = 'Meses'; $wb['run_wday_txt'] = 'Dias da semana'; -$wb['command_txt'] = 'Comando a executar (os comandos serão executados via sh ou urls via wget)'; +$wb['command_txt'] = 'Comando a executar (comandos são executados através do sh, urls através do wget)'; $wb['limit_cron_txt'] = 'O limite de tarefas no cron foi alcançado.'; -$wb['limit_cron_frequency_txt'] = 'A frequência das tarefas no cron ultrapassou o limite permitido.'; -$wb['run_min_error_format'] = 'Formato dos minutos é inválido.'; -$wb['run_hour_error_format'] = 'Formato das horas é inválido.'; -$wb['run_mday_error_format'] = 'Formato dos dias do mês é inválido.'; -$wb['run_month_error_format'] = 'Formato dos meses é inválido.'; -$wb['run_wday_error_format'] = 'Formato dos dias da semana é inválido.'; -$wb['command_error_format'] = 'Formato de comando é inválido. Somente endereços url http/https são permitidos.'; -$wb['unknown_fieldtype_error'] = 'Um tipo desconhecido de campo foi usado.'; -$wb['server_id_error_empty'] = 'O ID do servidor está em branco.'; -$wb['limit_cron_url_txt'] = 'Somente url do cron. Por favor, insira uma url iniciando com \\"http://\\" e um comando do cron.'; -$wb['command_error_empty'] = 'Comando está em branco.'; -$wb['command_hint_txt'] = 'Você poderá usar, por exemplo: \\"/var/www/clients/clientX/webY/meu_script.sh\\" ou \\"http://www.dominio.com.br/path/script.php\\" e também a palavra reservada \\"[web_root]\\" substituÃdo por \\"/var/www/clients/clientX/webY/web\\".'; -$wb['log_output_txt'] = 'SaÃda do Log'; +$wb['limit_cron_frequency_txt'] = 'O limite de execuções das tarefas no cron foi alcançado.'; +$wb['run_min_error_format'] = 'Formato inválido para minutos.'; +$wb['run_hour_error_format'] = 'Formato inválido para horas.'; +$wb['run_mday_error_format'] = 'Formato inválido para dias do mês.'; +$wb['run_month_error_format'] = 'Formato inválido para meses.'; +$wb['run_wday_error_format'] = 'Formato inválido para dias da semana.'; +$wb['command_error_format'] = 'Comando possui formato inválido. Por favor, observe que em alguns casos somente chamadas http/https são permitidas.'; +$wb['unknown_fieldtype_error'] = 'Um tipo de campo desconhecido foi utilizado.'; +$wb['server_id_error_empty'] = 'O servidor está em branco.'; +$wb['command_hint_txt'] = 'ex.: /var/www/clients/clientX/webY/myscript.sh ou http://www.dominio.com.br/caminho/script.php, você pode utilizar a área reservada [web_root] para substituir /var/www/clients/clientX/webY/web.'; +$wb['log_output_txt'] = 'Gravar saÃda do log'; +$wb['limit_cron_url_txt'] = 'Somente URL no cron. Por favor insira uma URL iniciando com http:// como um comando no cron.'; +$wb['command_error_empty'] = 'Comando a executar está em branco.'; ?> diff --git a/interface/web/sites/lib/lang/br_cron_list.lng b/interface/web/sites/lib/lang/br_cron_list.lng index 89fe7932f6..31017512d3 100644 --- a/interface/web/sites/lib/lang/br_cron_list.lng +++ b/interface/web/sites/lib/lang/br_cron_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Tarefas no Cron'; -$wb['active_txt'] = 'Ativas'; +$wb['list_head_txt'] = 'Tarefas no cron'; +$wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; -$wb['run_min_txt'] = 'Minutos'; -$wb['run_hour_txt'] = 'Horas'; -$wb['run_mday_txt'] = 'Dias do mês'; +$wb['run_min_txt'] = 'Minuto'; +$wb['run_hour_txt'] = 'Hora'; +$wb['run_mday_txt'] = 'Dia do mês'; $wb['run_month_txt'] = 'Mês'; $wb['run_wday_txt'] = 'Dia da semana'; $wb['command_txt'] = 'Comando'; diff --git a/interface/web/sites/lib/lang/br_database.lng b/interface/web/sites/lib/lang/br_database.lng index ac916feef1..3690ee9cf8 100644 --- a/interface/web/sites/lib/lang/br_database.lng +++ b/interface/web/sites/lib/lang/br_database.lng @@ -3,47 +3,47 @@ $wb['server_id_txt'] = 'Servidor'; $wb['type_txt'] = 'Tipo'; $wb['database_name_txt'] = 'Nome do banco de dados'; $wb['database_user_txt'] = 'Usuário do banco de dados'; +$wb['database_ro_user_txt'] = 'Usuário somente leitura'; +$wb['optional_txt'] = 'opcional'; $wb['database_password_txt'] = 'Senha do banco de dados'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['database_charset_txt'] = 'Charset do banco de dados'; +$wb['select_dbuser_txt'] = 'Selecionar usuário'; +$wb['no_dbuser_txt'] = 'Nenhum'; $wb['remote_access_txt'] = 'Acesso Remoto'; +$wb['remote_ips_txt'] = 'Endereços IP para acesso remoto (separado por vÃrgula ou deixe em branco para <i>qualquer um</i>)'; +$wb['database_remote_error_ips'] = 'Ao menos um endereço IP informado é inválido.'; $wb['client_txt'] = 'Cliente'; $wb['active_txt'] = 'Ativo'; +$wb['database_client_differs_txt'] = 'O cliente do site pai e o banco de dados não coincidem.'; $wb['database_name_error_empty'] = 'Nome do banco de dados está em branco.'; -$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.'; -$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. Só é permitido para o nome do banco os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.'; -$wb['database_user_error_empty'] = 'Nome do usuário do banco de dados está em branco.'; -$wb['database_user_error_unique'] = 'Já existe um usuário do banco de dados com este nome no servidor. O nome escolhido deve ser exclusivo.'; -$wb['database_user_error_regex'] = 'Nome do usuário do banco de dados é inválido. Só é permitido para nome do usuário banco de dados os caracteres: \'a-z\', \'A-Z\', \'0-9\' e o \'underscrore\'. Tamanho: 2 - 64 caracteres.'; -$wb['limit_database_txt'] = 'O limite de bancos de dados permitido para esta conta foi alcançado.'; -$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser modificado.'; -$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser modificado.'; -$wb['remote_ips_txt'] = 'Endereços IP Remotos (separados por vÃrgula. Em branco para <i>quaisquer IPs</i>)'; -$wb['database_remote_error_ips'] = 'Pelo menos um dos endereços IP informados não é válido.'; -$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - é muito longo. 64 caracteres, incluindo o prefixo, é o limite permitido.'; -$wb['database_user_error_len'] = 'Nome do usuário do banco de dados \'{user}\' é muito longo. 16 caracteres, incluindo o prefixo, é o limite permitido.'; +$wb['database_name_error_unique'] = 'Já existe um banco de dados com este nome no servidor. Para ter um nome exclusivo, por exemplo, insira o domÃnio como prefixo do nome.'; +$wb['database_name_error_regex'] = 'Nome do banco de dados é inválido. O nome do banco de dados pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento 2 - 64 caracteres.'; +$wb['database_user_error_empty'] = 'Usuário do banco de dados está em branco.'; +$wb['database_user_error_unique'] = 'Já existe um usuário de banco de dados com esse nome. Para ter um nome exclusivo, por exemplo, insira o domÃnio como prefixo do nome.'; +$wb['database_user_error_regex'] = 'Usuário do banco de dados é inválido. O nome do usuário pode conter os seguintes caracteres: a-z, A-Z, 0-9 e underscore. Comprimento: 2 a 16 caracteres.'; +$wb['limit_database_txt'] = 'O limite de banco de dados foi alcançado para esta conta.'; +$wb['database_name_change_txt'] = 'O nome do banco de dados não pode ser alterado.'; +$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário para este banco de dados.'; +$wb['database_charset_change_txt'] = 'O charset do banco de dados não pode ser alterado.'; +$wb['database_name_error_len'] = 'Nome do banco de dados - {db} - muito longo. O comprimento do nome do banco de dados, incluindo o prefixo, são 64 caracteres.'; +$wb['database_user_error_len'] = 'Nome do usuário do banco de dados - {user} - muito longo. O comprimento do nome do usuário, incluindo o prefixo, são 16 caracteres.'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['database_site_error_empty'] = 'Selecione o \\"site\\" ao qual o banco de dados pertence.'; -$wb['select_site_txt'] = '- Selecionar site -'; +$wb['database_site_error_empty'] = 'Selecione o site ao qual o banco de dados pertence.'; +$wb['select_site_txt'] = '-Selecionar Site-'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['globalsearch_resultslimit_of_txt'] = 'de'; $wb['globalsearch_resultslimit_results_txt'] = 'resultados'; $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.'; $wb['globalsearch_noresults_limit_txt'] = '0 resultados'; $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar'; $wb['globalsearch_suggestions_text_txt'] = 'Sugestões'; -$wb['database_ro_user_txt'] = 'Usuário do banco de dados somente leitura'; -$wb['optional_txt'] = 'opcional'; -$wb['select_dbuser_txt'] = 'Selecionar o usuário do banco de dados'; -$wb['no_dbuser_txt'] = 'Nenhum'; -$wb['database_client_differs_txt'] = 'O cliente do site e banco de dados não coincidem.'; -$wb['database_user_missing_txt'] = 'Por favor, selecione um usuário do banco de dados para este banco de dados.'; -$wb['limit_database_quota_txt'] = 'Cota para banco de dados'; -$wb['limit_database_quota_error_notint'] = 'O valor da cota para banco de dados deve ser um número positivo.'; -$wb['limit_database_quota_free_txt'] = 'Cota para banco de dados'; +$wb['limit_database_quota_txt'] = 'Cota do banco de dados'; +$wb['limit_database_quota_error_notint'] = 'O limite da cota do banco de dados deve ser um número.'; +$wb['limit_database_quota_free_txt'] = 'Limite da cota do banco de dados disponÃvel'; ?> diff --git a/interface/web/sites/lib/lang/br_database_admin_list.lng b/interface/web/sites/lib/lang/br_database_admin_list.lng index 4f8f6ba611..eef9b6e3fa 100644 --- a/interface/web/sites/lib/lang/br_database_admin_list.lng +++ b/interface/web/sites/lib/lang/br_database_admin_list.lng @@ -1,12 +1,12 @@ <?php -$wb['list_head_txt'] = 'Banco de dados'; +$wb['list_head_txt'] = 'Banco de Dados'; $wb['active_txt'] = 'Ativo'; -$wb['remote_access_txt'] = 'Acesso remoto'; +$wb['remote_access_txt'] = 'Acesso Remoto'; +$wb['type_txt'] = 'Tipo'; $wb['server_id_txt'] = 'Servidor'; $wb['database_user_txt'] = 'Usuário do banco de dados'; $wb['database_name_txt'] = 'Nome do banco de dados'; $wb['add_new_record_txt'] = 'Adicionar novo banco de dados'; $wb['sys_groupid_txt'] = 'Cliente'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['type_txt'] = 'Tipo'; ?> diff --git a/interface/web/sites/lib/lang/br_database_list.lng b/interface/web/sites/lib/lang/br_database_list.lng index afb5d36a0d..b3d438e04b 100644 --- a/interface/web/sites/lib/lang/br_database_list.lng +++ b/interface/web/sites/lib/lang/br_database_list.lng @@ -1,11 +1,11 @@ <?php -$wb['list_head_txt'] = 'Bancos de Dados'; +$wb['list_head_txt'] = 'Banco de Dados'; $wb['active_txt'] = 'Ativo'; $wb['remote_access_txt'] = 'Acesso Remoto'; +$wb['type_txt'] = 'Tipo'; $wb['server_id_txt'] = 'Servidor'; $wb['database_user_txt'] = 'Usuário do banco de dados'; $wb['database_name_txt'] = 'Nome do banco de dados'; -$wb['add_new_record_txt'] = 'Adicionar um novo banco de dados'; +$wb['add_new_record_txt'] = 'Adicionar novo registro'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['type_txt'] = 'Tipo'; ?> diff --git a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng index 90202f115f..41fd305a3a 100644 --- a/interface/web/sites/lib/lang/br_database_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/br_database_quota_stats_list.lng @@ -1,9 +1,9 @@ <?php -$wb['database_txt'] = 'Banco de dados'; +$wb['database_txt'] = 'Banco de Dados'; $wb['server_name_txt'] = 'Servidor'; $wb['client_txt'] = 'Cliente'; -$wb['used_txt'] = 'Espaço utilizado'; +$wb['used_txt'] = 'Espaço Utilizado'; $wb['quota_txt'] = 'Cota'; -$wb['percentage_txt'] = 'Espaço utilizado em %'; -$wb['list_head_txt'] = 'Cota para banco de dados'; +$wb['percentage_txt'] = 'Espaço Utilizado em %'; +$wb['list_head_txt'] = 'Cota do banco de dados'; ?> diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng index 59b9fce627..193dbc7406 100644 --- a/interface/web/sites/lib/lang/br_database_user.lng +++ b/interface/web/sites/lib/lang/br_database_user.lng @@ -1,25 +1,25 @@ <?php -$wb['database_user_txt'] = 'Usuário'; +$wb['database_user_txt'] = 'Usuário do banco de Dados'; $wb['database_password_txt'] = 'Senha do banco de dados'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $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_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['database_user_error_unique'] = 'Já existe este usuário no servidor. Para ter um nome exclusivo insira um prefixo como o domÃnio antes do nome.'; +$wb['database_user_error_regex'] = 'Nome do usuário de banco de dados inválido. O nome do usuário deve conter apenas os caracteres: a-z, A-Z, 0-9 e underscore. Comprimento: 2 - 64 caracteres.'; +$wb['database_user_error_len'] = 'Nome do usuário de banco de dados - {user} - muito longo. Comprimento permitido, incluindo o prefixo, não pode ultrapassr 16 caracteres.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['globalsearch_resultslimit_of_txt'] = 'de'; $wb['globalsearch_resultslimit_results_txt'] = 'resultados'; $wb['globalsearch_noresults_text_txt'] = 'Sem resultados.'; -$wb['globalsearch_noresults_limit_txt'] = '0 resultados'; +$wb['globalsearch_noresults_limit_txt'] = '0 resultado(s)'; $wb['globalsearch_searchfield_watermark_txt'] = 'Pesquisar'; $wb['globalsearch_suggestions_text_txt'] = 'Sugestões'; -$wb['limit_database_user_txt'] = 'O limite de usuários do banco de dados foi alcançado.'; +$wb['limit_database_user_txt'] = 'O limite de usuários do banco de dados para esta conta foi alcançado.'; $wb['database_password_error_empty'] = 'Senha do banco de dados está em branco.'; ?> diff --git a/interface/web/sites/lib/lang/br_database_user_admin_list.lng b/interface/web/sites/lib/lang/br_database_user_admin_list.lng index 1d610bd1b0..bb21e97b1c 100644 --- a/interface/web/sites/lib/lang/br_database_user_admin_list.lng +++ b/interface/web/sites/lib/lang/br_database_user_admin_list.lng @@ -1,6 +1,6 @@ <?php -$wb['list_head_txt'] = 'Usuários'; -$wb['database_user_txt'] = 'Usuário'; +$wb['list_head_txt'] = 'Usuário do banco de dados'; +$wb['database_user_txt'] = 'Nome do usuário'; $wb['add_new_record_txt'] = 'Adicionar novo usuário'; $wb['sys_groupid_txt'] = 'Cliente'; ?> diff --git a/interface/web/sites/lib/lang/br_database_user_list.lng b/interface/web/sites/lib/lang/br_database_user_list.lng index 855265e958..d2e4332fc7 100644 --- a/interface/web/sites/lib/lang/br_database_user_list.lng +++ b/interface/web/sites/lib/lang/br_database_user_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Usuários'; -$wb['database_user_txt'] = 'Usuário'; +$wb['list_head_txt'] = 'Usuário do banco de dados'; +$wb['database_user_txt'] = 'Usuário do banco de dados'; $wb['add_new_record_txt'] = 'Adicionar novo usuário'; ?> diff --git a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng index 93a02f6c25..e4fabd5959 100644 --- a/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/br_ftp_sites_stats_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Tráfego ftp'; +$wb['list_head_txt'] = 'Tráfego FTP'; $wb['domain_txt'] = 'DomÃnio'; $wb['this_month_txt'] = 'Este mês'; $wb['last_month_txt'] = 'Último mês'; $wb['this_year_txt'] = 'Este ano'; $wb['last_year_txt'] = 'Último ano'; $wb['sum_txt'] = 'Soma (Download + Upload)'; -$wb['in_out_txt'] = 'DL/UL'; +$wb['in_out_txt'] = 'DOWN/UP'; ?> diff --git a/interface/web/sites/lib/lang/br_ftp_user.lng b/interface/web/sites/lib/lang/br_ftp_user.lng index 3df741ed9e..370fe0f366 100644 --- a/interface/web/sites/lib/lang/br_ftp_user.lng +++ b/interface/web/sites/lib/lang/br_ftp_user.lng @@ -1,35 +1,36 @@ <?php -$wb['uid_txt'] = 'UID'; -$wb['gid_txt'] = 'GID'; +$wb['uid_txt'] = 'ID do usuário (UID)'; +$wb['gid_txt'] = 'ID do grupo (GID)'; $wb['dir_txt'] = 'Diretório'; $wb['quota_files_txt'] = 'Cota de arquivos'; $wb['quota_files_unity_txt'] = 'Arquivos'; -$wb['ul_ratio_txt'] = 'Taxa para upload'; -$wb['dl_ratio_txt'] = 'Taxa para download'; -$wb['ul_bandwidth_txt'] = 'Banda para upload'; -$wb['dl_bandwidth_txt'] = 'Banda para download'; +$wb['ul_ratio_txt'] = 'Taxa de upload'; +$wb['dl_ratio_txt'] = 'Taxa de download'; +$wb['ul_bandwidth_txt'] = 'Banda de upload'; +$wb['dl_bandwidth_txt'] = 'Banda de download'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['quota_size_txt'] = 'Cota de disco'; +$wb['quota_size_txt'] = 'Cota do Disco'; $wb['active_txt'] = 'Ativo'; -$wb['limit_ftp_user_txt'] = 'o limite de usuários ftp para esta conta foi alcançado.'; -$wb['username_error_empty'] = 'Nome do usuário está em branco.'; +$wb['limit_ftp_user_txt'] = 'O limite de usuários ftp para esta conta foi alcançado.'; +$wb['username_error_empty'] = 'Usuário está em branco.'; $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; -$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.'; +$wb['username_error_regex'] = 'O nome do usuário possui caracteres não permitidos.'; $wb['quota_size_error_empty'] = 'Cota está em branco.'; +$wb['uid_error_empty'] = 'UID está em branco.'; $wb['uid_error_empty'] = 'GID está em branco.'; $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['directory_error_notinweb'] = 'Diretório não está dentro do diretório web.'; $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['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['expires_txt'] = 'Expira em'; +$wb['quota_size_error_regex'] = 'Cota: insira -1 para ilimitado ou um número > 0.'; +$wb['dir_dot_error'] = 'Não é permitido ".." no caminho.'; +$wb['dir_slashdot_error'] = 'Não é permitido "./" no caminho.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['expires_txt'] = 'Expirar em'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index 3cbc911ab3..8cd0520554 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -1,36 +1,36 @@ <?php +$wb['puser_txt'] = 'Usuário web'; +$wb['pgroup_txt'] = 'Grupo web'; $wb['shell_txt'] = 'Shell'; -$wb['dir_txt'] = 'Diretório'; +$wb['dir_txt'] = 'Diretório Base'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['username_txt'] = 'Nome do usuário'; +$wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['chroot_txt'] = 'Shell enjaulado (chroot)'; +$wb['chroot_txt'] = 'Chroot Shell'; $wb['quota_size_txt'] = 'Cota'; $wb['active_txt'] = 'Ativo'; -$wb['username_error_empty'] = 'Nome de usuário está em branco.'; -$wb['username_error_unique'] = 'O nome de usuário deve ser exclusivo.'; -$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.'; +$wb['username_error_empty'] = 'Nome do usuário está em branco.'; +$wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; +$wb['username_error_regex'] = 'O nome do usuário possui caracteres não permitidos.'; $wb['quota_size_error_empty'] = 'Cota está em branco.'; $wb['uid_error_empty'] = 'GID está em branco.'; -$wb['directory_error_empty'] = 'Diretório está em branco.'; -$wb['limit_shell_user_txt'] = 'O limite de usuários shell para esta conta foi alcançado.'; +$wb['directory_error_empty'] = 'O diretório está em branco.'; +$wb['limit_shell_user_txt'] = 'O limite de usuários foi alcançado.'; $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['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['username_must_not_exceed_32_chars_txt'] = 'O nome do usuário não pode ultrapassar 32 caracteres.'; -$wb['username_not_allowed_txt'] = 'O nome do usuário nao é permitido.'; -$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido'; -$wb['directory_error_regex'] = 'Diretório inválido'; -$wb['shell_error_regex'] = 'Shell inválido'; -$wb['invalid_username_txt'] = 'Usuário inválido'; -$wb['directory_error_notinweb'] = 'O diretório deve estar dentro do diretório web principal.'; +$wb['dir_dot_error'] = 'Não é permitido \'..\' no caminho.'; +$wb['dir_slashdot_error'] = 'Não é permitido \'./\' no caminho.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'O nome do usuário não pode exceder 32 caracteres.'; +$wb['username_not_allowed_txt'] = 'O nome do usuário não é permitido.'; +$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido.'; +$wb['directory_error_regex'] = 'Diretório inválido.'; +$wb['shell_error_regex'] = 'Shell inválido.'; +$wb['invalid_username_txt'] = 'Usuário inválido.'; +$wb['directory_error_notinweb'] = 'O diretório deve estar dentro do diretório web.'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user_list.lng b/interface/web/sites/lib/lang/br_shell_user_list.lng index 587c988ccd..21bb3d4dfd 100644 --- a/interface/web/sites/lib/lang/br_shell_user_list.lng +++ b/interface/web/sites/lib/lang/br_shell_user_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Usuário shell'; +$wb['list_head_txt'] = 'Usuário do Shell'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; diff --git a/interface/web/sites/lib/lang/br_user_quota_stats_list.lng b/interface/web/sites/lib/lang/br_user_quota_stats_list.lng index fe41b018dc..d979210483 100644 --- a/interface/web/sites/lib/lang/br_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/br_user_quota_stats_list.lng @@ -1,9 +1,9 @@ <?php -$wb['list_head_txt'] = 'Cota do Disco'; -$wb['domain_txt'] = 'DomÃnio'; +$wb['list_head_txt'] = 'Cota do disco para site'; +$wb['domain_txt'] = 'DomÃnio/Site'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['used_txt'] = 'Espaço utilizado'; -$wb['hard_txt'] = 'Limite'; +$wb['hard_txt'] = 'Limite para bloqueio'; $wb['soft_txt'] = 'Limite para alerta'; $wb['files_txt'] = 'Arquivos simples'; ?> diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng index 4acadb2c54..d6142fd374 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng @@ -1,7 +1,7 @@ <?php -$wb['domain_txt'] = 'Apelido de domÃnio'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['domain_txt'] = 'Alias de domÃnio'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; @@ -10,64 +10,64 @@ $wb['ssl_country_txt'] = 'PaÃs'; $wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['ssl_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 web é inválida. Por favor não utilize o caractere barra(/).'; $wb['type_txt'] = 'Tipo'; -$wb['parent_domain_id_txt'] = 'Site pai'; +$wb['parent_domain_id_txt'] = 'Site Pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho do redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; -$wb['document_root_txt'] = 'Pasta personalizada documentroot'; +$wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IPv4'; -$wb['ipv6_address_txt'] = 'Endreço IPv6'; -$wb['vhost_type_txt'] = 'Tipo VHost'; -$wb['hd_quota_txt'] = 'Cota de Disco'; +$wb['ipv6_address_txt'] = 'Endereço IPv6'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; $wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; -$wb['errordocs_txt'] = 'Pasta personalizada errordocuments'; +$wb['errordocs_txt'] = 'Proprietário do Error-Documents'; $wb['subdomain_txt'] = 'SubdomÃnio automático'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio para esta conta foi alcançado.'; -$wb['limit_web_subdomain_txt'] = 'Limite subdomÃnios de site para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; +$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'O domÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou apelido de domÃnio com este nome.'; -$wb['domain_error_regex'] = 'DomÃnio inválido!'; +$wb['domain_error_empty'] = 'O campo "DomÃnio" está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O campo "DomÃnio" é inválido.'; $wb['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; -$wb['hd_quota_error_empty'] = 'Cota de disco é 0 ou está em branco.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; $wb['stats_password_txt'] = 'Configurar senha para estatÃsticas web'; -$wb['allow_override_txt'] = 'Diretiva apache AllowOverride'; -$wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponÃvel'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'PaÃs\' é inválido. São caracteres válidos: \'A-Z\'.'; -$wb['limit_traffic_quota_free_txt'] = 'Cota 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['php_open_basedir_txt'] = 'Diretório open_basedir do PHP'; -$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; +$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; +$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponÃvel'; +$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "PaÃs" é inválido. São caracteres válidos: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponÃvel'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. São redirecionamentos válidos, por exemplo, /teste/ ou http://www.dominio.com.br/teste/'; +$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; $wb['stats_user_txt'] = 'Usuário de estatÃsticas web'; -$wb['stats_type_txt'] = 'Programa de estatÃsticas web'; +$wb['stats_type_txt'] = 'Sistema de estatÃsticas web'; $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; $wb['none_txt'] = 'Nenhum'; $wb['disabled_txt'] = 'Desabilitado'; @@ -77,39 +77,39 @@ $wb['save_certificate_txt'] = 'Salvar certificado'; $wb['create_certificate_txt'] = 'Adicionar certificado'; $wb['delete_certificate_txt'] = 'Remover certificado'; $wb['nginx_directives_txt'] = 'Diretivas do nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretivas Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretivas www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM'; -$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; -$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children'; -$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers'; -$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers'; -$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers'; -$wb['error_php_fpm_pm_settings_txt'] = 'Os valores permitidos para configurações do PHP-FPM pm são: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.'; -$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; -$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.'; -$wb['hd_quota_error_regex'] = 'Valor inválido para cota de disco.'; -$wb['traffic_quota_error_regex'] = 'Valor inválido para cota de tráfego.'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponÃveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponÃveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponÃveis:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponÃveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponÃveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponÃveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; -$wb['Domain'] = 'Apelido de domÃnio'; +$wb['Domain'] = 'Alias de DomÃnio'; ?> diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng index 153aa33400..770ec725e4 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain_list.lng @@ -1,13 +1,13 @@ <?php -$wb['list_head_txt'] = 'Apelidos de domÃnios'; +$wb['list_head_txt'] = 'Alias de DomÃnio'; $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; -$wb['domain_txt'] = 'Apelido de domÃnio'; -$wb['add_new_record_txt'] = 'Adicionar novo apelido'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; +$wb['domain_txt'] = 'Alias de DomÃnio'; +$wb['add_new_record_txt'] = 'Adicionar novo alias de domÃnio'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; $wb['domain_error_unique'] = 'O domÃnio deve ser exclusivo.'; -$wb['domain_error_regex'] = 'DomÃnio inválido!'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; $wb['none_txt'] = 'Nenhum'; diff --git a/interface/web/sites/lib/lang/br_web_backup_list.lng b/interface/web/sites/lib/lang/br_web_backup_list.lng index 137f8bc7e0..82883c1f29 100644 --- a/interface/web/sites/lib/lang/br_web_backup_list.lng +++ b/interface/web/sites/lib/lang/br_web_backup_list.lng @@ -3,19 +3,20 @@ $wb['list_head_txt'] = 'Backups existentes'; $wb['date_txt'] = 'Data'; $wb['backup_type_txt'] = 'Tipo'; $wb['filename_txt'] = 'Arquivo de backup'; -$wb['restore_backup_txt'] = 'Restaurar backup'; -$wb['download_backup_txt'] = 'Baixar backup'; -$wb['download_info_txt'] = 'O arquivo de backup estará disponÃvel para download na pasta de backup do site em alguns minutos.'; -$wb['restore_info_txt'] = 'Restauração do backup iniciada. Esta ação poderá levar vários minutos para ser concluÃda. Aguarde.'; -$wb['restore_confirm_txt'] = 'A restauração do backup reescreverá os arquivos existes do seu site. Tem certeza que deseja restaurar este backup?'; -$wb['download_pending_txt'] = 'Já existe um download deste backup em execução.'; -$wb['restore_pending_txt'] = 'Já existe uma restauração deste backup em execução.'; -$wb['delete_backup_txt'] = 'Remover backup'; -$wb['delete_info_txt'] = 'Remoção do backup iniciada. Esta ação poderá levar vários minutos para ser concluÃda. Aguarde.'; +$wb['filesize_txt'] = 'Tamanho do arquivo'; +$wb['restore_backup_txt'] = 'Restaurar'; +$wb['download_backup_txt'] = 'Download'; +$wb['download_info_txt'] = 'O arquivo de backup estará disponÃvel para download na pasta de backup dentro de alguns minutos.'; +$wb['restore_info_txt'] = 'Restauração do backup foi iniciada. Esta ação demora vários minutos para concluir.'; +$wb['restore_confirm_txt'] = 'Restaurar arquivo de backup reescreve os arquivos existentes do site. Tem certeza que deseja restaurar este backup?'; +$wb['download_pending_txt'] = 'Já existe um download de backup em andamento.'; +$wb['restore_pending_txt'] = 'Já existe uma restauração de backup em andamento.'; +$wb['delete_backup_txt'] = 'Remover Backup'; +$wb['delete_info_txt'] = 'Remoção de backup foi iniciada. Esta ação demora vários minutos para concluir.'; $wb['delete_confirm_txt'] = 'Tem certeza que deseja remover este backup?'; -$wb['delete_pending_txt'] = 'Já existe uma remoção deste backup em execução.'; -$wb['backup_type_mysql'] = 'Banco de dados MySQL'; +$wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.'; +$wb['backup_type_mongodb'] = 'MongoDB'; +$wb['backup_type_mysql'] = 'MySQL'; $wb['backup_type_web'] = 'Arquivos do site'; -$wb['filesize_txt'] = 'Tamanho'; -$wb['backup_type_mongodb'] = 'Banco de dados MongoDB'; + ?> diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng index ecff0c2ae8..fbbb40635e 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -4,117 +4,117 @@ $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'PaÃs'; -$wb['ssl_request_txt'] = 'Requisição SSL'; -$wb['ssl_cert_txt'] = 'Certificado SSL'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_request_txt'] = 'Requisição'; +$wb['ssl_cert_txt'] = 'Certificado'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['type_txt'] = 'Tipo'; -$wb['parent_domain_id_txt'] = 'Site pai'; +$wb['parent_domain_id_txt'] = 'Site Pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho para redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo de vhost'; -$wb['hd_quota_txt'] = 'Cota de disco'; -$wb['traffic_quota_txt'] = 'Cota de tráfego'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; +$wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; -$wb['limit_web_domain_txt'] = 'o limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio de site para esta conta foi alcançado.'; +$wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; $wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe apelido de domÃnio ou subdomÃnio com este nome.'; -$wb['domain_error_regex'] = 'Nome de domÃnio é inválido.'; -$wb['host_txt'] = 'Nome do servidor'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; +$wb['domain_error_acme_invalid'] = 'DomÃnio genérico inválido não permitido.'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios.'; +$wb['host_txt'] = 'Host'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['domain_error_wildcard'] = 'Curingas para subdomÃnios não são permitidos.'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; -$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento \\"proxy\\" exige uma url no caminho de redirecionamento.'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_key_txt'] = 'Chave'; -$wb['ssl_domain_txt'] = 'DomÃnio do SSL'; -$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não use uma barra - \\"/\\".'; +$wb['ssl_domain_txt'] = 'DomÃnio'; +$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).'; $wb['ipv6_address_txt'] = 'Endereço IPv6'; -$wb['errordocs_txt'] = 'Pasta personalizada Error-Documents'; +$wb['errordocs_txt'] = 'Proprietário do Error-Documents'; $wb['subdomain_txt'] = 'SubdomÃnio automático'; $wb['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; -$wb['hd_quota_error_empty'] = 'Cota de disco é 0 ou está em branco.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Organização\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' em branco'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; $wb['stats_password_txt'] = 'Configurar senha para estatÃsticas web'; -$wb['allow_override_txt'] = 'Diretiva apache AllowOverride'; -$wb['limit_web_quota_free_txt'] = 'Cota de disco'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'PaÃs\' é inválido. São caracteres válidos: \'A-Z\'.'; -$wb['limit_traffic_quota_free_txt'] = 'Cota de tráfego'; +$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; +$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponÃvel'; +$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. Caracteres válidos são: "a-z", "0-9",".", "-", e "_".'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "PaÃs" é inválido. Caracteres válidos são: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponÃvel'; $wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; -$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego alcançada'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Usuário para estatÃsticas web'; -$wb['stats_type_txt'] = 'Programa para estatÃsticas web'; +$wb['stats_user_txt'] = 'Usuário de estatÃsticas web'; +$wb['stats_type_txt'] = 'Sistema de estatÃsticas web'; $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; $wb['none_txt'] = 'Nenhum'; -$wb['disabled_txt'] = 'Inativo'; +$wb['disabled_txt'] = 'Desabilitado'; $wb['save_certificate_txt'] = 'Salvar certificado'; $wb['create_certificate_txt'] = 'Adicionar certificado'; $wb['delete_certificate_txt'] = 'Remover certificado'; $wb['nginx_directives_txt'] = 'Diretivas do nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretivas Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretivas www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para PHP-FPM'; -$wb['error_no_sni_txt'] = 'SNI para SSL não está ativo neste servidor. Você só pode ativar um certificado SSL para cada endereço IP.'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; -$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children'; -$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers'; -$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers'; -$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers'; -$wb['error_php_fpm_pm_settings_txt'] = 'Valores para as configurações do PHP-FPM pm devem obedecer as seguintes condições: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.'; -$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; -$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.'; -$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.'; -$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponÃveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponÃveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponÃveis:'; -$wb['Domain'] = 'Apelido de domÃnio'; -$wb['ssl_letsencrypt_exclude_txt'] = 'Não adicionar certificado Let\'s Encrypt'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponÃveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponÃveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponÃveis:'; +$wb['Domain'] = 'Alias de domÃnio'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Sem certificado Let \'s Encrypt'; ?> diff --git a/interface/web/sites/lib/lang/br_web_childdomain_list.lng b/interface/web/sites/lib/lang/br_web_childdomain_list.lng index 20b559b128..583ae2d360 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain_list.lng @@ -4,15 +4,15 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['parent_domain_id_txt'] = 'Site'; $wb['domain_txt'] = 'SubdomÃnio'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'O nome do domÃnio deve ser exclusivo.'; -$wb['domain_error_regex'] = 'Nome do domÃnio é inválido.'; +$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomÃnio'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domÃnio'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['domain_error_unique'] = 'O domÃnio deve ser exclusivo.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; +$wb['domain_error_acme_invalid'] = 'DomÃnio genérico inválido não permitido.'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; $wb['none_txt'] = 'Nenhum'; -$wb['add_new_subdomain_txt'] = 'Adicionar novo subdomÃnio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domÃnios'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domÃnios'; $wb['subdomain_list_head_txt'] = 'SubdomÃnios'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 662fdb407c..1a2a2b301b 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -1,116 +1,115 @@ <?php +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'PaÃs'; +$wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; +$wb['ssl_domain_txt'] = 'DomÃnio'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; +$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).'; $wb['type_txt'] = 'Tipo'; -$wb['parent_domain_id_txt'] = 'Site pai'; +$wb['parent_domain_id_txt'] = 'Site Pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho do redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; -$wb['document_root_txt'] = 'Diretório Documentroot'; +$wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; -$wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo de VHost'; -$wb['hd_quota_txt'] = 'Cota de disco'; -$wb['traffic_quota_txt'] = 'Cota de tráfego'; +$wb['ip_address_txt'] = 'Endereço IPv4'; +$wb['ipv6_address_txt'] = 'Endereço IPv6'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; +$wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; -$wb['errordocs_txt'] = 'Páginas de erro personalizadas (error-documents)'; +$wb['errordocs_txt'] = 'Proprietário do Error-Documents'; $wb['subdomain_txt'] = 'SubdomÃnio automático'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio domÃnio para esta conta foi alcançado.'; -$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; +$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe site, apelido ou subdomÃnio com este nome'; -$wb['domain_error_regex'] = 'Nome de domÃnio é inválido.'; -$wb['hd_quota_error_empty'] = 'Cota de disco está em branco.'; +$wb['domain_error_empty'] = 'O campo "DomÃnio" está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O campo "DomÃnio" é inválido.'; +$wb['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'o Campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; -$wb['stats_password_txt'] = 'Senha do diretório de estatÃsticas'; -$wb['ssl_domain_txt'] = 'DomÃnio'; -$wb['allow_override_txt'] = 'Permitir Sobrescrever'; -$wb['limit_web_quota_free_txt'] = 'Cota máxima de disco disponÃvel'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \\"a-z\\", \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'PaÃs\' é inválido. São caracteres válidos: \'A-Z\'.'; -$wb['limit_traffic_quota_free_txt'] = 'Cota 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['stats_password_txt'] = 'Configurar senha para estatÃsticas web'; +$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; +$wb['limit_web_quota_free_txt'] = 'Limite da cota do disco disponÃvel'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "PaÃs" é inválido. São caracteres válidos: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponÃvel'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['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'; -$wb['backup_copies_txt'] = 'Limite de cópias'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Usuário para estatÃsticas web'; -$wb['stats_type_txt'] = 'Tipo de estatÃsticas web'; -$wb['custom_php_ini_txt'] = 'php.ini personalizado'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' vazio'; -$wb['none_txt'] = 'Nenhuma'; +$wb['stats_user_txt'] = 'Usuário de estatÃsticas web'; +$wb['stats_type_txt'] = 'Sistema de estatÃsticas web'; +$wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; +$wb['none_txt'] = 'Nenhum'; $wb['disabled_txt'] = 'Desabilitado'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['save_certificate_txt'] = 'Salvar certificado'; -$wb['create_certificate_txt'] = 'Adicionar certificado'; -$wb['delete_certificate_txt'] = 'Remover certificado'; -$wb['ipv6_address_txt'] = 'Endereço IPv6'; -$wb['nginx_directives_txt'] = 'Diretivas nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretiva Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretiva www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para PHP-FPM'; -$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.'; +$wb['save_certificate_txt'] = 'Salvar Certificado'; +$wb['create_certificate_txt'] = 'Adicionar Certificado'; +$wb['delete_certificate_txt'] = 'Remover Certificado'; +$wb['nginx_directives_txt'] = 'Diretivas do nginx'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; -$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children'; -$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers'; -$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers'; -$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers'; -$wb['error_php_fpm_pm_settings_txt'] = 'Valores para as configurações do PHP-FPM pm devem obedecer as seguintes condições: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um inteiro positvo.'; -$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['ssl_key_txt'] = 'Chave'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['web_folder_error_regex'] = 'Pasta informada é inválida! Por favor não insira barra \\"/\\".'; -$wb['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponÃveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponÃveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponÃveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; -$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy:'; +$wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; $wb['no_server_error'] = 'Nenhum servidor selecionado.'; $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; @@ -118,20 +117,20 @@ $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; $wb['rewrite_rules_txt'] = 'Reescrever Regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; $wb['variables_txt'] = 'Variáveis'; -$wb['added_by_txt'] = 'Cadastrado por'; +$wb['added_by_txt'] = 'Cadastrador por'; $wb['added_date_txt'] = 'Data do cadastro'; -$wb['backup_excludes_txt'] = 'Diretórios excluÃdos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgula. Exemplo: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos contém caracteres inválidos!'; +$wb['backup_excludes_txt'] = 'Diretórios ExcluÃdos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracteres inválidos.'; $wb['invalid_custom_php_ini_settings_txt'] = 'Configurações do php.ini inválidas'; -$wb['invalid_system_user_or_group_txt'] = 'Configurações inválidas para usuário ou grupo do sistema'; -$wb['apache_directive_blocked_error'] = 'Diretiva do apache bloqueada por configurações de segurança:'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; -$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:'; +$wb['invalid_system_user_or_group_txt'] = 'Usuário ou grupo inválido.'; +$wb['apache_directive_blocked_error'] = 'Diretivas do apache bloqueadas pelas configurações de segurança:'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; +$wb['nginx_directive_blocked_error'] = 'Diretivas do nginx bloqueadas pelas configurações de segurança:'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder.lng b/interface/web/sites/lib/lang/br_web_folder.lng index 34a3f65b0c..193cb4636f 100644 --- a/interface/web/sites/lib/lang/br_web_folder.lng +++ b/interface/web/sites/lib/lang/br_web_folder.lng @@ -4,5 +4,5 @@ $wb['parent_domain_id_txt'] = 'Site'; $wb['path_txt'] = 'Caminho'; $wb['active_txt'] = 'Ativo'; $wb['path_error_regex'] = 'Caminho da pasta é inválido.'; -$wb['error_folder_already_protected_txt'] = 'Já existe um registro para esta pasta.'; +$wb['error_folder_already_protected_txt'] = 'Já existe esta pasta.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_user.lng b/interface/web/sites/lib/lang/br_web_folder_user.lng index dd63d02eec..5dc0354fec 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user.lng @@ -1,14 +1,14 @@ <?php -$wb['web_folder_id_txt'] = 'Pastas protegidas'; +$wb['web_folder_id_txt'] = 'Pasta'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['active_txt'] = 'Ativo'; $wb['folder_error_empty'] = 'Nenhuma pasta selecionada.'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; $wb['no_folder_perm'] = 'Você não tem permissão para esta pasta.'; $wb['error_user_exists_already_txt'] = 'Já existe um registro igual para este usuário.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_user_list.lng b/interface/web/sites/lib/lang/br_web_folder_user_list.lng index e108c219b9..8ad8c48257 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user_list.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user_list.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Usuários de pastas'; +$wb['list_head_txt'] = 'Usuário de Pasta'; $wb['active_txt'] = 'Ativo'; -$wb['web_folder_id_txt'] = 'ID da pasta'; +$wb['web_folder_id_txt'] = 'Pasta'; $wb['username_txt'] = 'Usuário'; $wb['add_new_record_txt'] = 'Adicionar novo usuário'; ?> diff --git a/interface/web/sites/lib/lang/br_web_subdomain.lng b/interface/web/sites/lib/lang/br_web_subdomain.lng index 0ccc574805..53cb94ab54 100644 --- a/interface/web/sites/lib/lang/br_web_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_subdomain.lng @@ -6,21 +6,21 @@ $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'PaÃs'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['type_txt'] = 'Tipo'; $wb['parent_domain_id_txt'] = 'Site Pai'; -$wb['redirect_type_txt'] = 'Tipo do Redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho do Redirecionamento'; +$wb['redirect_type_txt'] = 'Tipo de redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo VHost'; -$wb['hd_quota_txt'] = 'Cota de Disco'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; $wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; @@ -29,22 +29,22 @@ $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio para esta conta foi alcançado.'; -$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; +$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe apelido de domÃnio ou subdomÃnio com este nome.'; -$wb['domain_error_regex'] = 'Nome do domÃnio é inválido.'; +$wb['domain_error_empty'] = 'O domÃnio está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O domÃnio é inválido.'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios.'; $wb['host_txt'] = 'Host'; -$wb['redirect_error_regex'] = 'Caminho de redirecionamento é inválido. Exemplo de caminho válido: \\"/teste/\\" ou \\"http://www.dominio.com.br/teste/\\".'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['domain_error_wildcard'] = 'Curingas de subdomÃnios não são permitidos.'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; -$wb['error_proxy_requires_url'] = 'Tipo de redirecionamento \'proxy\' exige uma URL como caminho de redirecionamento.'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['error_proxy_requires_url'] = 'O tipo de redirecionamento "proxy" exige uma URL como caminho de redirecionamento.'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index 4c72b1fd88..01a7414a98 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -1,116 +1,116 @@ <?php +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; $wb['ssl_organisation_unit_txt'] = 'Departamento'; $wb['ssl_country_txt'] = 'PaÃs'; +$wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; +$wb['ssl_domain_txt'] = 'DomÃnio'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; +$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).'; $wb['type_txt'] = 'Tipo'; -$wb['parent_domain_id_txt'] = 'Site Parente'; -$wb['redirect_type_txt'] = 'Tipo Redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho do redirecionamento'; +$wb['parent_domain_id_txt'] = 'Site Pai'; +$wb['redirect_type_txt'] = 'Tipo de redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; -$wb['document_root_txt'] = 'Pasta personalizada documentroot'; +$wb['document_root_txt'] = 'Document-root'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; -$wb['ip_address_txt'] = 'Endereço IP'; -$wb['vhost_type_txt'] = 'Tipo VHost'; -$wb['hd_quota_txt'] = 'Cota de Disco'; +$wb['ip_address_txt'] = 'Endereço IPv4'; +$wb['ipv6_address_txt'] = 'Endereço IPv6'; +$wb['vhost_type_txt'] = 'Tipo do VHost'; +$wb['hd_quota_txt'] = 'Cota do Disco'; $wb['traffic_quota_txt'] = 'Cota de Tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; -$wb['errordocs_txt'] = 'Pasta personalizada errordocuments'; +$wb['errordocs_txt'] = 'Proprietário do Error-Documents'; $wb['subdomain_txt'] = 'SubdomÃnio automático'; $wb['ssl_txt'] = 'SSL'; -$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio de site para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; $wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe site, apelido de domÃnio ou subdomÃnio com este nome'; -$wb['domain_error_regex'] = 'Nome do domÃnio é inválido.'; -$wb['hd_quota_error_empty'] = 'Cota de disco está em branco.'; +$wb['domain_error_empty'] = 'O campo "DomÃnio" está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O campo "DomÃnio" é inválido.'; +$wb['domain_error_acme_invalid'] = 'DomÃnio genérico inválido não permitido.'; +$wb['domain_error_autosub'] = 'Já existe um subdomÃnio com estas configurações.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; $wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; -$wb['stats_password_txt'] = 'Senha do diretório de estatÃsticas'; -$wb['ssl_domain_txt'] = 'DomÃnio SSL'; -$wb['allow_override_txt'] = 'Permitir sobrescrever'; -$wb['limit_web_quota_free_txt'] = 'Cota de disco máxima'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_locality_error_regex'] = 'Campo \'Cidade\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organisation_error_regex'] = 'Campo \'Empresa\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_organistaion_unit_error_regex'] = 'Campo \'Departamento\' é inválido. São caracteres válidos: \'a-z\', \'0-9\' e \'.,-_\'.'; -$wb['ssl_country_error_regex'] = 'Campo \'PaÃs\' é inválido. São caracteres válidos: \'A-Z\'.'; -$wb['limit_traffic_quota_free_txt'] = '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['stats_password_txt'] = 'Configurar senha para estatÃsticas web'; +$wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; +$wb['limit_web_quota_free_txt'] = 'Limite da cota de disco disponÃvel'; +$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. São caracteres válidos: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "PaÃs" é inválido. São caracteres válidos: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponÃvel'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; $wb['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'; -$wb['backup_copies_txt'] = 'Limite de cópias'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; $wb['stats_user_txt'] = 'Usuário de estatÃsticas web'; -$wb['stats_type_txt'] = 'Tipo de estatÃstica web'; -$wb['custom_php_ini_txt'] = 'php.ini personalizado'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' em branco'; -$wb['none_txt'] = 'Nenhuma'; +$wb['stats_type_txt'] = 'Sistema de estatÃsticas web'; +$wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; +$wb['none_txt'] = 'Nenhum'; $wb['disabled_txt'] = 'Desabilitado'; $wb['no_redirect_txt'] = 'Sem redirecionamento'; $wb['no_flag_txt'] = 'Sem marcas'; -$wb['save_certificate_txt'] = 'Salvar certificado'; -$wb['create_certificate_txt'] = 'Adicionar certificado'; -$wb['delete_certificate_txt'] = 'Remover certificado'; -$wb['ipv6_address_txt'] = 'Endereço IPv6'; +$wb['save_certificate_txt'] = 'Salvar Certificado'; +$wb['create_certificate_txt'] = 'Adicionar Certificado'; +$wb['delete_certificate_txt'] = 'Remover Certificado'; $wb['nginx_directives_txt'] = 'Diretivas do nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretivas Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretivas www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM'; -$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; -$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['php_fpm_chroot_txt'] = 'Chroot php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; -$wb['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 permitidos para configurações do PHP-FPM pm devem obedecer os critérios: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.'; -$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; -$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.'; -$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.'; -$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.'; -$wb['ssl_key_txt'] = 'Chave'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['web_folder_error_regex'] = 'Pasta inválida informada. Por favor não insira barra - \\"\\".'; -$wb['domain_error_autosub'] = 'Já existe um subdomÃnio com essas configurações.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponÃveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponÃveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponÃveis:'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponÃveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponÃveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponÃveis:'; $wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; $wb['no_server_error'] = 'Nenhum servidor selecionado.'; @@ -118,39 +118,44 @@ $wb['no_backup_txt'] = 'Sem backup'; $wb['daily_backup_txt'] = 'Diário'; $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; -$wb['rewrite_rules_txt'] = 'Regras de reescrita'; +$wb['rewrite_rules_txt'] = 'Reescrever Regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; $wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; -$wb['web_folder_txt'] = 'Pasta web'; -$wb['web_folder_invalid_txt'] = 'A pasta web informada é inválida, por favor escolha um nome diferente.'; -$wb['web_folder_unique_txt'] = 'A pasta web informada já existe, por favor escolha um nome diferente.'; -$wb['host_txt'] = 'Nome do servidor'; -$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios.'; +$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.'; $wb['variables_txt'] = 'Variáveis'; $wb['added_by_txt'] = 'Cadastrado por'; $wb['added_date_txt'] = 'Data do cadastro'; -$wb['backup_excludes_txt'] = 'Diretórios excluÃdos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: web/cache/*,web/backup)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos contém caracteres inválidos.'; -$wb['server_chosen_not_ok'] = 'O servidor selecionado não é permitido para esta conta.'; -$wb['subdomain_error_empty'] = 'O campo subdomÃnio está em branco ou contém caracteres inválidos.'; +$wb['backup_excludes_txt'] = 'Diretórios ExcluÃdos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracteres inválidos.'; +$wb['web_folder_txt'] = 'Pasta web'; +$wb['web_folder_invalid_txt'] = 'A pasta web é inválida, por favor selecione outra.'; +$wb['web_folder_unique_txt'] = 'A pasta web é já está em uso, por favor selecione outra.'; +$wb['host_txt'] = 'Nome do host'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios.'; +$wb['variables_txt'] = 'Variáveis'; +$wb['backup_excludes_txt'] = 'Diretórios ExcluÃdos'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracteres inválidos.'; +$wb['subdomain_error_empty'] = 'O subdomÃnio está em branco ou possui caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; -$wb['load_client_data_txt'] = 'Carregas detalhes do cliente'; +$wb['load_client_data_txt'] = 'Carregar detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; +$wb['document_root_txt'] = 'Document Root'; +$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL'; $wb['rewrite_to_https_txt'] = 'Reescrever HTTP para HTTPS'; $wb['password_strength_txt'] = 'Dificuldade da senha'; -$wb['directive_snippets_id_txt'] = 'Configurações do servidor de páginas'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['directive_snippets_id_txt'] = 'Configurações do servidor web'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed'; -$wb['log_retention_txt'] = 'Tempo de armazenamenro dos arquivos de log'; -$wb['log_retention_error_regex'] = 'Tempo de armazenamento, em dias (valores permitidos: min. 0 - max. 9999)'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; -$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos'; +$wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mÃnimo 0, máximo 9999)'; +$wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng index 6b1385926d..3c0c7fd01e 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain_admin_list.lng @@ -7,8 +7,8 @@ $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['add_new_record_txt'] = 'Adicionar novo site'; $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomÃnio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido de domÃnio'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domÃnio'; $wb['domain_list_head_txt'] = 'Sites'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domÃnios (vhost)'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domÃnio (vhost)'; $wb['subdomain_list_head_txt'] = 'SubdomÃnios (vhost)'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng index e8fb6bfb09..8170afc2d3 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain_list.lng @@ -5,10 +5,10 @@ $wb['active_txt'] = 'Ativo'; $wb['server_id_txt'] = 'Servidor'; $wb['domain_txt'] = 'DomÃnio'; $wb['add_new_record_txt'] = 'Adicionar novo site'; -$wb['parent_domain_id_txt'] = 'Site'; $wb['add_new_subdomain_txt'] = 'Adicionar novo subdomÃnio'; -$wb['add_new_aliasdomain_txt'] = 'Adicionar novo apelido'; +$wb['add_new_aliasdomain_txt'] = 'Adicionar novo alias de domÃnio'; +$wb['parent_domain_id_txt'] = 'Site'; $wb['domain_list_head_txt'] = 'Sites'; -$wb['aliasdomain_list_head_txt'] = 'Apelidos de domÃnios (vhost)'; +$wb['aliasdomain_list_head_txt'] = 'Alias de domÃnio (vhost)'; $wb['subdomain_list_head_txt'] = 'SubdomÃnios (vhost)'; ?> diff --git a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng index fa6ddad484..390b7402e7 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng @@ -1,10 +1,10 @@ <?php $wb['parent_domain_id_txt'] = 'Site Pai'; $wb['web_folder_txt'] = 'Pasta web'; -$wb['web_folder_invalid_txt'] = 'A pasta web informada é inválida, por favor insira um nome diferente.'; -$wb['web_folder_unique_txt'] = 'A pasta web informada já existe, por favor insira um nome diferente.'; -$wb['backup_interval_txt'] = 'Intervalo de backup'; -$wb['backup_copies_txt'] = 'Limite de cópias do backup'; +$wb['web_folder_invalid_txt'] = 'A pasta é escolhida é inválida, por favor escolha outra.'; +$wb['web_folder_unique_txt'] = 'A pasta web escolhida está em uso, por favor escolha outra.'; +$wb['backup_interval_txt'] = 'Intervalo entre backups'; +$wb['backup_copies_txt'] = 'Número de cópias do backup'; $wb['ssl_state_txt'] = 'Estado'; $wb['ssl_locality_txt'] = 'Cidade'; $wb['ssl_organisation_txt'] = 'Empresa'; @@ -13,65 +13,66 @@ $wb['ssl_country_txt'] = 'PaÃs'; $wb['ssl_key_txt'] = 'Chave'; $wb['ssl_request_txt'] = 'Requisição'; $wb['ssl_cert_txt'] = 'Certificado'; -$wb['ssl_bundle_txt'] = 'Pacote'; +$wb['ssl_bundle_txt'] = 'Agrupar'; $wb['ssl_action_txt'] = 'Ação'; $wb['ssl_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['host_txt'] = 'Nome do host'; +$wb['web_folder_error_regex'] = 'Pasta web é inválida. Por favor não utilize o caractere barra(/).'; $wb['type_txt'] = 'Tipo'; +$wb['parent_domain_id_txt'] = 'Site Pai'; $wb['redirect_type_txt'] = 'Tipo de redirecionamento'; -$wb['redirect_path_txt'] = 'Caminho para redirecionamento'; +$wb['redirect_path_txt'] = 'Caminho para o redirecionamento'; $wb['active_txt'] = 'Ativo'; $wb['document_root_txt'] = 'Documentroot'; $wb['system_user_txt'] = 'Usuário Linux'; $wb['system_group_txt'] = 'Grupo Linux'; $wb['ip_address_txt'] = 'Endereço IPv4'; $wb['ipv6_address_txt'] = 'Endereço IPv6'; -$wb['vhost_type_txt'] = 'Tipo vhost'; -$wb['hd_quota_txt'] = 'Cota de Disco'; -$wb['traffic_quota_txt'] = 'Cota de Tráfego'; +$wb['vhost_type_txt'] = 'Tipo do vHost'; +$wb['hd_quota_txt'] = 'Cota de disco'; +$wb['traffic_quota_txt'] = 'Cota de tráfego'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; -$wb['errordocs_txt'] = 'Páginas de erro personalizadas (error-documents)'; +$wb['errordocs_txt'] = 'Proprietário do error-documents'; $wb['subdomain_txt'] = 'SubdomÃnio automático'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Cliente'; $wb['limit_web_domain_txt'] = 'O limite de domÃnios de site para esta conta foi alcançado.'; -$wb['limit_web_aliasdomain_txt'] = 'O limite de apelidos de domÃnio para esta conta foi alcançado.'; -$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios site para esta conta foi alcançado.'; +$wb['limit_web_aliasdomain_txt'] = 'O limite de alias de domÃnios para esta conta foi alcançado.'; +$wb['limit_web_subdomain_txt'] = 'O limite de subdomÃnios de site para esta conta foi alcançado.'; $wb['apache_directives_txt'] = 'Diretivas do apache'; -$wb['domain_error_empty'] = 'DomÃnio está em branco.'; -$wb['domain_error_unique'] = 'Já existe um site, apelido de domÃnio ou subdomÃnio para este domÃnio.'; -$wb['domain_error_regex'] = 'Nome do domÃnio é inválido.'; -$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios'; -$wb['hd_quota_error_empty'] = 'Valor da cota de disco é 0 ou está em branco.'; -$wb['traffic_quota_error_empty'] = 'Valor da cota de tráfego está em branco.'; -$wb['error_ssl_state_empty'] = 'Campo \'Estado\' está em branco.'; -$wb['error_ssl_locality_empty'] = 'Campo \'Cidade\' está em branco.'; -$wb['error_ssl_organisation_empty'] = 'Campo \'Empresa\' está em branco.'; -$wb['error_ssl_organisation_unit_empty'] = 'Campo \'Departamento\' está em branco.'; -$wb['error_ssl_country_empty'] = 'Campo \'PaÃs\' está em branco.'; -$wb['error_ssl_cert_empty'] = 'Campo \'Certificado\' está em branco.'; +$wb['domain_error_empty'] = 'O campo "DomÃnio" está em branco.'; +$wb['domain_error_unique'] = 'Já existe um site, subdomÃnio ou alias de domÃnio com este nome.'; +$wb['domain_error_regex'] = 'O campo "DomÃnio" é inválido.'; +$wb['domain_error_wildcard'] = 'Curingas não são permitidos para subdomÃnios.'; +$wb['hd_quota_error_empty'] = 'Cota do disco é 0 ou está em branco.'; +$wb['traffic_quota_error_empty'] = 'Cota de tráfego está em branco.'; +$wb['error_ssl_state_empty'] = 'O campo "Estado" está em branco.'; +$wb['error_ssl_locality_empty'] = 'O campo "Cidade" está em branco.'; +$wb['error_ssl_organisation_empty'] = 'O campo "Empresa" está em branco.'; +$wb['error_ssl_organisation_unit_empty'] = 'O campo "Departamento" está em branco.'; +$wb['error_ssl_country_empty'] = 'O campo "PaÃs" está em branco.'; +$wb['error_ssl_cert_empty'] = 'O campo "Certificado" está em branco.'; $wb['client_group_id_txt'] = 'Cliente'; -$wb['stats_password_txt'] = 'Senha para estatÃsticas web'; +$wb['stats_password_txt'] = 'Configurar senha para estatÃsticas web'; $wb['allow_override_txt'] = 'Diretiva Apache AllowOverride'; -$wb['limit_web_quota_free_txt'] = 'Cota de disco'; -$wb['ssl_state_error_regex'] = 'Campo \'Estado\' é inválido. 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['php_open_basedir_txt'] = 'Diretório open_basedir do PHP'; -$wb['traffic_quota_exceeded_txt'] = 'Cota de tráfego excedida'; +$wb['limit_web_quota_free_txt'] = 'Limite disponÃvel da cota de disco'; +$wb['ssl_state_error_regex'] = 'O campo "Estado" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_locality_error_regex'] = 'O campo "Cidade" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organisation_error_regex'] = 'O campo "Empresa" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_organistaion_unit_error_regex'] = 'O campo "Departamento" é inválido. Caracteres válidos são: "a-z", "0-9", ".", "-", e "_".'; +$wb['ssl_country_error_regex'] = 'O campo "PaÃs" é inválido. Caracteres válidos são: "A-Z".'; +$wb['limit_traffic_quota_free_txt'] = 'Limite da cota de tráfego disponÃvel'; +$wb['redirect_error_regex'] = 'Caminho de redirecionamento inválido. Redirecionamentos válidos são, por ex.: /teste/ ou http://www.dominio.com.br/teste/'; +$wb['php_open_basedir_txt'] = 'Diretório open_basedir do php'; +$wb['traffic_quota_exceeded_txt'] = 'O limite da cota de tráfego foi alcançado.'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Usuário para estatÃsticas web'; -$wb['stats_type_txt'] = 'Programa para estatÃsticas web'; +$wb['stats_user_txt'] = 'Usuário de estatÃsticas web'; +$wb['stats_type_txt'] = 'Sistema de estatÃsticas web'; $wb['custom_php_ini_txt'] = 'Configurações personalizadas do php.ini'; $wb['none_txt'] = 'Nenhum'; $wb['disabled_txt'] = 'Desabilitado'; @@ -81,51 +82,51 @@ $wb['save_certificate_txt'] = 'Salvar certificado'; $wb['create_certificate_txt'] = 'Adicionar certificado'; $wb['delete_certificate_txt'] = 'Remover certificado'; $wb['nginx_directives_txt'] = 'Diretivas do nginx'; -$wb['seo_redirect_txt'] = 'Redirecionamento SEO'; -$wb['non_www_to_www_txt'] = 'Diretivas Non-www -> www'; -$wb['www_to_non_www_txt'] = 'Diretivas www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Usar soquete para o PHP-FPM'; -$wb['error_no_sni_txt'] = 'O SNI para SSL não está ativo neste servidor. Você só pode habilitar um certificado para cada endereço IP.'; +$wb['seo_redirect_txt'] = 'Diretivas SEO'; +$wb['non_www_to_www_txt'] = 'non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Usar socket para php-fpm'; +$wb['error_no_sni_txt'] = 'SNI para SSL não está habilitado neste servidor. Somente poderá ser habilitado um certificado para cada endereço IP.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; -$wb['pm_max_children_txt'] = 'Diretiva PHP-FPM pm.max_children'; -$wb['pm_start_servers_txt'] = 'Diretiva PHP-FPM pm.start_servers'; -$wb['pm_min_spare_servers_txt'] = 'Diretiva PHP-FPM pm.min_spare_servers'; -$wb['pm_max_spare_servers_txt'] = 'Diretiva PHP-FPM pm.max_spare_servers'; -$wb['error_php_fpm_pm_settings_txt'] = 'Valores permitidos para configurações do PHP-FPM pm devem obedecer os critérios: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; -$wb['pm_max_children_error_regex'] = 'O valor do PHP-FPM pm.max_children deve ser um número positivo.'; -$wb['pm_start_servers_error_regex'] = 'O valor do PHP-FPM pm.start_servers deve ser um número positivo.'; -$wb['pm_min_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.min_spare_servers deve ser um número positivo.'; -$wb['pm_max_spare_servers_error_regex'] = 'O valor do PHP-FPM pm.max_spare_servers deve ser um número positivo.'; -$wb['hd_quota_error_regex'] = 'Valor da cota de disco é inválido.'; -$wb['traffic_quota_error_regex'] = 'Valor da cota de tráfego é inválido.'; -$wb['fastcgi_php_version_txt'] = 'Versão do PHP'; -$wb['pm_txt'] = 'Gerenciador de Processos do PHP-FPM'; -$wb['pm_process_idle_timeout_txt'] = 'Diretiva PHP-FPM pm.process_idle_timeout'; -$wb['pm_max_requests_txt'] = 'Diretiva PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'O valor do PHP-FPM pm.process_idle_timeout deve ser um número positivo.'; -$wb['pm_max_requests_error_regex'] = 'O valor do PHP-FPM pm.max_requests deve ser um inteiro >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que você deve ter uma versão do PHP >= 5.3.9 para usar o gerenciador de processos sob demanda. Se você selecionar processos sob demanda usando uma versão antiga do PHP, o PHP não iniciará novamente!'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; -$wb['available_php_directive_snippets_txt'] = 'Diretivas de trechos de código do php disponÃveis:'; -$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trechos de código do apache disponÃveis:'; -$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trechos de código do nginx disponÃveis:'; -$wb['proxy_directives_txt'] = 'Diretivas do Proxy'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Valores das configurações do php-fpm podem ser: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children deve ter um valor inteiro positivo.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deve ter um valor inteiro positivo.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter um valor inteiro positivo.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; +$wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; +$wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; +$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; +$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; +$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deve ter um valor inteiro positivo.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deve ter um valor >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Por favor, observe que é necessário uma versão do php >= 5.3.9 para utilizar o gerenciador de processos por demanda. Se for selecionado por demanda com uma versão inferior do php, o mesmo não iniciará mais!'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['available_php_directive_snippets_txt'] = 'Diretivas de trecho de código do php disponÃveis:'; +$wb['available_apache_directive_snippets_txt'] = 'Diretivas de trecho de código do apache disponÃveis:'; +$wb['available_nginx_directive_snippets_txt'] = 'Diretivas de trecho de código do nginx disponÃveis:'; +$wb['proxy_directives_txt'] = 'Diretivas do proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Diretivas de trechos de código do proxy disponÃveis:'; -$wb['rewrite_rules_txt'] = 'Regras de Reescrita'; +$wb['rewrite_rules_txt'] = 'Reescrever regras'; $wb['invalid_rewrite_rules_txt'] = 'Regras de reescrita inválidas'; -$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas Permitidas:'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Diretivas permitidas:'; $wb['configuration_error_txt'] = 'ERRO DE CONFIGURAÇÃO'; $wb['variables_txt'] = 'Variáveis'; $wb['backup_excludes_txt'] = 'Diretórios ExcluÃdos'; -$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: \\"web/cache/*,web/backup\\".)'; -$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos contém caracteres inválidos.'; -$wb['subdomain_error_empty'] = 'O campo \\"SubdomÃnio\\" está em branco ou contém caracteres inválidos.'; -$wb['http_port_txt'] = 'Porta HTTP'; -$wb['https_port_txt'] = 'Porta HTTPS'; -$wb['http_port_error_regex'] = 'Porta HTTP inválida.'; -$wb['https_port_error_regex'] = 'Porta HTTPS inválida.'; +$wb['backup_excludes_note_txt'] = '(Separar múltiplos diretórios por vÃrgulas. Exemplo: web/cache/*, web/backup)'; +$wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracteres inválidos.'; +$wb['subdomain_error_empty'] = 'O subdomÃnio está em branco ou possui caracteres inválidos.'; +$wb['http_port_txt'] = 'Porta http'; +$wb['https_port_txt'] = 'Porta https'; +$wb['http_port_error_regex'] = 'Porta http inválida.'; +$wb['https_port_error_regex'] = 'Porta https inválida.'; ?> diff --git a/interface/web/sites/lib/lang/br_webdav_user.lng b/interface/web/sites/lib/lang/br_webdav_user.lng index 4347f8ae36..485e3a7747 100644 --- a/interface/web/sites/lib/lang/br_webdav_user.lng +++ b/interface/web/sites/lib/lang/br_webdav_user.lng @@ -7,15 +7,15 @@ $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['active_txt'] = 'Ativo'; $wb['limit_webdav_user_txt'] = 'O limite de usuários webdav para esta conta foi alcançado.'; -$wb['username_error_empty'] = 'Usuário está em branco.'; +$wb['username_error_empty'] = 'O nome do usuário está em branco.'; $wb['username_error_unique'] = 'O nome do usuário deve ser exclusivo.'; -$wb['username_error_regex'] = 'O nome do usuário contém caracteres não permitidos.'; -$wb['directory_error_empty'] = 'Diretório está em branco.'; +$wb['username_error_regex'] = 'O nome de usuário possui caracteres não permitidos.'; +$wb['directory_error_empty'] = 'O diretório está em branco.'; $wb['parent_domain_id_error_empty'] = 'Nenhum site selecionado.'; -$wb['dir_dot_error'] = 'Não é permitido \\"..\\" no caminho.'; -$wb['dir_slashdot_error'] = 'Não é permitido \\"./\\" no caminho.'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['dir_dot_error'] = 'Não é permitido \'..\' no caminho.'; +$wb['dir_slashdot_error'] = 'Não é permitido \'./\' no caminho.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; ?> diff --git a/interface/web/sites/lib/lang/tr.lng b/interface/web/sites/lib/lang/tr.lng index d0570f6c12..b5e7f42e2e 100644 --- a/interface/web/sites/lib/lang/tr.lng +++ b/interface/web/sites/lib/lang/tr.lng @@ -1,8 +1,8 @@ <?php -$wb['Websites'] = 'Web Sitesi'; +$wb['Websites'] = 'Web Siteleri'; $wb['Website'] = 'Web Sitesi'; -$wb['Subdomain'] = 'Alt Alan Adı'; -$wb['Aliasdomain'] = 'BaÅŸka Alan Adı'; +$wb['Subdomain'] = 'Alt Etki Alanı'; +$wb['Aliasdomain'] = 'Takma Etki Alanı'; $wb['Database'] = 'Veritabanı'; $wb['Database User'] = 'Veritabanı Kullanıcıları'; $wb['Web Access'] = 'Web EriÅŸimi'; @@ -22,7 +22,7 @@ $wb['Shell'] = 'Kabuk'; $wb['Webdav'] = 'WebDAV'; $wb['FTP'] = 'FTP'; $wb['Options'] = 'Ayarlar'; -$wb['Domain'] = 'Alan Adı'; +$wb['Domain'] = 'Etki Alanı'; $wb['Redirect'] = 'Yönlendirme'; $wb['SSL'] = 'SSL'; $wb['Sites'] = 'Siteler'; @@ -30,6 +30,6 @@ $wb['APS Installer'] = 'APS Yükleyici'; $wb['Available packages'] = 'Kullanılabilecek Paketler'; $wb['Installed packages'] = 'Yüklü Paketler'; $wb['Update Packagelist'] = 'Güncelleme Paketi Listesi'; -$wb['Subdomain (Vhost)'] = 'Alt alan adı (SSunucu)'; -$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['Subdomain (Vhost)'] = 'Alt Etki Alanı (Sanal Sunucu)'; +$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; ?> diff --git a/interface/web/sites/lib/lang/tr_aps.lng b/interface/web/sites/lib/lang/tr_aps.lng index 1c6ccd49a6..c876629a74 100644 --- a/interface/web/sites/lib/lang/tr_aps.lng +++ b/interface/web/sites/lib/lang/tr_aps.lng @@ -34,20 +34,20 @@ $wb['install_language_txt'] = 'Arayüz dili'; $wb['new_database_password_txt'] = 'Yeni veritabanı parolası'; $wb['basic_settings_txt'] = 'Temel ayarlar'; $wb['package_settings_txt'] = 'Paket ayarları'; -$wb['error_main_domain'] = 'Yükleme yolundaki alan adı geçersiz.'; +$wb['error_main_domain'] = 'Yükleme yolundaki etki alanı geçersiz.'; $wb['error_no_main_location'] = 'Yazdığınız yükleme yolu geçersiz.'; $wb['error_inv_main_location'] = 'Yazdığınız yükleme konumunu klasörü geçersiz.'; $wb['error_license_agreement'] = 'Devam etmek için lisans anlaÅŸmasını onaylamalısınız.'; $wb['error_no_database_pw'] = 'Yazdığınız veritabanı parolası geçersiz.'; $wb['error_short_database_pw'] = 'Lütfen daha uzun bir veritabanı parolası yazın.'; -$wb['error_no_value_for'] = '\\"%s\\" alanı boÅŸ olamaz.'; -$wb['error_short_value_for'] = '\\"%s\\" alanına daha uzun bir deÄŸer yazılmalıdır.'; -$wb['error_long_value_for'] = '\\"%s\\" alanına daha kısa bir deÄŸer yazılmalıdır.'; -$wb['error_inv_value_for'] = '\\"%s\\" alanına yazılan deÄŸer geçersiz.'; -$wb['error_inv_email_for'] = '\\"%s\\" alanına yazılan e-posta adresi geçersiz.'; -$wb['error_inv_domain_for'] = '\\"%s\\" alanına yazılan alan adı geçersiz.'; -$wb['error_inv_integer_for'] = '\\"%s\\" alanına yazılan sayı geçersiz.'; -$wb['error_inv_float_for'] = '\\"%s\\" alanına yazılan küsuratlı sayı geçersiz.'; +$wb['error_no_value_for'] = '"%s" alanı boÅŸ olamaz.'; +$wb['error_short_value_for'] = '"%s" alanına daha uzun bir deÄŸer yazılmalıdır.'; +$wb['error_long_value_for'] = '"%s" alanına daha kısa bir deÄŸer yazılmalıdır.'; +$wb['error_inv_value_for'] = '"%s" alanına yazılan deÄŸer geçersiz.'; +$wb['error_inv_email_for'] = '"%s" alanına yazılan e-posta adresi geçersiz.'; +$wb['error_inv_domain_for'] = '"%s" alanına yazılan etki alanı geçersiz.'; +$wb['error_inv_integer_for'] = '"%s" alanına yazılan sayı geçersiz.'; +$wb['error_inv_float_for'] = '"%s" alanına yazılan küsuratlı sayı geçersiz.'; $wb['error_used_location'] = 'Yükleme yoluna daha önce yüklenmiÅŸ bir paket var.'; $wb['installation_task_txt'] = 'Yükleme planlandı'; $wb['installation_error_txt'] = 'Yükleme hatası'; @@ -55,9 +55,4 @@ $wb['installation_success_txt'] = 'Yüklendi'; $wb['installation_remove_txt'] = 'Kaldırma planlandı'; $wb['packagelist_update_finished_txt'] = 'APS paket listesi güncellendi.'; $wb['limit_aps_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla APS kopyası sayısına ulaÅŸtınız.'; -$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['password_strength_txt'] = 'Parola Güçlüğü'; ?> diff --git a/interface/web/sites/lib/lang/tr_aps_instances_list.lng b/interface/web/sites/lib/lang/tr_aps_instances_list.lng index e8b3532ff4..292c627f85 100644 --- a/interface/web/sites/lib/lang/tr_aps_instances_list.lng +++ b/interface/web/sites/lib/lang/tr_aps_instances_list.lng @@ -4,8 +4,8 @@ $wb['name_txt'] = 'Ad'; $wb['version_txt'] = 'Sürüm'; $wb['customer_txt'] = 'Müşteri'; $wb['status_txt'] = 'Durum'; -$wb['install_location_txt'] = 'Yükleme Konumu'; -$wb['pkg_delete_confirmation'] = 'Bu yüklemeyi silmek istediÄŸinize emin misiniz?'; +$wb['install_location_txt'] = 'Kurulum Konumu'; +$wb['pkg_delete_confirmation'] = 'Bu kurulumu silmek istediÄŸinize emin misiniz?'; $wb['filter_txt'] = 'Arama'; $wb['delete_txt'] = 'Sil'; ?> diff --git a/interface/web/sites/lib/lang/tr_backup_stats_list.lng b/interface/web/sites/lib/lang/tr_backup_stats_list.lng index 65792aa591..f59fcae70a 100644 --- a/interface/web/sites/lib/lang/tr_backup_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_backup_stats_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Backup Stats'; +$wb['list_head_txt'] = 'Yedekleme Durumu'; $wb['database_name_txt'] = ''; -$wb['active_txt'] = 'Active'; -$wb['domain_txt'] = 'Domain'; -$wb['backup_count_txt'] = 'Backup count'; -$wb['backup_server_txt'] = 'Server'; -$wb['backup_interval_txt'] = 'Interval / cnt.'; -$wb['backup_size_txt'] = 'Backupsize'; +$wb['active_txt'] = 'Etkin'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['backup_count_txt'] = 'Yedek sayısı'; +$wb['backup_server_txt'] = 'Sunucu'; +$wb['backup_interval_txt'] = 'Sıklık / Sayı'; +$wb['backup_size_txt'] = 'Yedek Boyutu'; ?> diff --git a/interface/web/sites/lib/lang/tr_cron.lng b/interface/web/sites/lib/lang/tr_cron.lng index f645d76325..d00e6868c7 100644 --- a/interface/web/sites/lib/lang/tr_cron.lng +++ b/interface/web/sites/lib/lang/tr_cron.lng @@ -17,10 +17,10 @@ $wb['run_mday_error_format'] = 'Ayın günü biçimi geçersiz.'; $wb['run_month_error_format'] = 'Ay biçimi geçersiz.'; $wb['run_wday_error_format'] = 'Haftanın günü biçimi geçersiz.'; $wb['command_error_format'] = 'Komut biçimi geçersiz. Ä°nternet adreslerinde yalnız http/https kullanılabilir.'; -$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan tipi kullanılmış.'; +$wb['unknown_fieldtype_error'] = 'Bilinmeyen bir alan türü kullanılmış.'; $wb['server_id_error_empty'] = 'Sunucu kodu boÅŸ olamaz.'; +$wb['command_hint_txt'] = 'Örnek: /var/www/clients/musteriX/webY/betigim.sh ya da http://www.etkialanim.com/yol/betik.php, /var/www/clients/musteriX/webY/web yerine [web_root] kodunu kullanabilirsiniz.'; +$wb['log_output_txt'] = 'Günlük çıktısı'; $wb['limit_cron_url_txt'] = 'Yalnız Ä°nternet adresli zamanlanmış görev kullanılabilir. Lütfen zamanlanmış görev komutu olarak http:// ile baÅŸlayan bir Ä°nternet adresi yazın.'; $wb['command_error_empty'] = 'Komut boÅŸ olamaz.'; -$wb['command_hint_txt'] = 'e.g. /var/www/clients/clientX/webY/myscript.sh or http://www.mydomain.com/path/script.php, you can use [web_root] placeholder that is replaced by /var/www/clients/clientX/webY/web.'; -$wb['log_output_txt'] = 'Log output'; ?> diff --git a/interface/web/sites/lib/lang/tr_database.lng b/interface/web/sites/lib/lang/tr_database.lng index d5d8c7d856..f443bbb620 100644 --- a/interface/web/sites/lib/lang/tr_database.lng +++ b/interface/web/sites/lib/lang/tr_database.lng @@ -1,13 +1,13 @@ <?php $wb['server_id_txt'] = 'Sunucu'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['database_name_txt'] = 'Veritabanı Adı'; $wb['database_user_txt'] = 'Veritabanı Kullanıcısı'; $wb['database_ro_user_txt'] = 'Salt okunur veritabanı kullanıcısı'; $wb['optional_txt'] = 'isteÄŸe baÄŸlı'; $wb['database_password_txt'] = 'Veritabanı Parolası'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; -$wb['database_charset_txt'] = 'Veritabanı Karakter Seti'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; +$wb['database_charset_txt'] = 'Veritabanı Karakter Kümesi'; $wb['select_dbuser_txt'] = 'Veritabanı kullanıcısını seçin'; $wb['no_dbuser_txt'] = 'Yok'; $wb['remote_access_txt'] = 'Uzaktan EriÅŸim'; @@ -16,34 +16,34 @@ $wb['database_remote_error_ips'] = 'Yazılan IP adreslerinden en az biri hatalı $wb['client_txt'] = 'Müşteri'; $wb['active_txt'] = 'Etkin'; $wb['database_client_differs_txt'] = 'Web sitesi ve veritabanının ait olduÄŸu müşteriler farklı.'; -$wb['database_name_error_empty'] = 'Veritabanı adı boÅŸ.'; -$wb['database_name_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı var. Benzersiz bir ad vermek için, veritabanı adının başına alan adınız gibi bir ek ekleyebilirsiniz.'; +$wb['database_name_error_empty'] = 'Veritabanı adı boÅŸ olamaz.'; +$wb['database_name_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı var. Benzersiz bir ad vermek için, veritabanı adının başına etki alanı adınızı ekleyebilirsiniz.'; $wb['database_name_error_regex'] = 'Veritabanı adı geçersiz. Veritabanı adı 2-64 uzunluÄŸunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluÅŸmalıdır.'; -$wb['database_user_error_empty'] = 'Veritabanı kullanıcısı boÅŸ olamaz.'; -$wb['database_user_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı kullanıcısı zaten var. Benzersiz bir ad vermek için, örneÄŸin veritabanı kullanıcısı adının başına alan adınızı ekleyebilirsiniz.'; +$wb['database_user_error_empty'] = 'Veritabanı kullanıcı adı boÅŸ olamaz.'; +$wb['database_user_error_unique'] = 'Sunucu üzerinde aynı adlı bir veritabanı kullanıcısı zaten var. Benzersiz bir ad vermek için, örneÄŸin veritabanı kullanıcısı adının başına etki alanı adınızı ekleyebilirsiniz.'; $wb['database_user_error_regex'] = 'Veritabanı kullanıcı adı geçersiz. Veritabanı kullanıcı adı 2-64 uzunluÄŸunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluÅŸmalıdır.'; -$wb['limit_database_txt'] = 'EkleyebileceÄŸiniz en fazla veritabanı sayısına ulaÅŸtınız.'; +$wb['limit_database_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla veritabanı sayısına ulaÅŸtınız.'; $wb['database_name_change_txt'] = 'Veritabanı adı deÄŸiÅŸtirilemedi'; $wb['database_user_missing_txt'] = 'Lütfen bu veritabanı için bir veritabanı kullanıcısı seçin.'; -$wb['database_charset_change_txt'] = 'Veritabanı karakter seti deÄŸiÅŸtirilemedi'; +$wb['database_charset_change_txt'] = 'Veritabanı karakter kümesi deÄŸiÅŸtirilemedi'; $wb['database_name_error_len'] = 'Veritabanı adı - {db} - çok uzun. Veritabanı adı ön ek dahil en fazla 64 karakter olabilir.'; $wb['database_user_error_len'] = 'Veritabanı kullanıcı adı - {user} - çok uzun. Veritabanı kullanıcı adı ön ek dahil en fazla 16 karakter olabilir.'; -$wb['parent_domain_id_txt'] = 'Site'; +$wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['database_site_error_empty'] = 'Veritabanının ait olduÄŸu siteyi seçin.'; $wb['select_site_txt'] = '- Siteyi Seçin -'; $wb['btn_save_txt'] = 'Kaydet'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; $wb['globalsearch_resultslimit_of_txt'] = '/'; $wb['globalsearch_resultslimit_results_txt'] = 'sonuç'; -$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok'; +$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.'; $wb['globalsearch_noresults_limit_txt'] = '0 sonuç'; $wb['globalsearch_searchfield_watermark_txt'] = 'Arama'; $wb['globalsearch_suggestions_text_txt'] = 'Öneriler'; -$wb['limit_database_quota_txt'] = 'Database quota'; -$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; -$wb['limit_database_quota_free_txt'] = 'Max. available DB quota '; +$wb['limit_database_quota_txt'] = 'Veritabanı Kotası'; +$wb['limit_database_quota_error_notint'] = 'Veritabanı kotası bir sayı olmalıdır'; +$wb['limit_database_quota_free_txt'] = 'Kullanılabilecek en fazla veritabanı kotası'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_admin_list.lng b/interface/web/sites/lib/lang/tr_database_admin_list.lng index fc92e1957e..e13404415c 100644 --- a/interface/web/sites/lib/lang/tr_database_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_database_admin_list.lng @@ -2,11 +2,11 @@ $wb['list_head_txt'] = 'Veritabanı'; $wb['active_txt'] = 'Etkin'; $wb['remote_access_txt'] = 'Uzaktan EriÅŸim'; +$wb['type_txt'] = 'Tür'; $wb['server_id_txt'] = 'Sunucu'; -$wb['database_user_txt'] = 'Veritabanı kullanıcısı'; -$wb['database_name_txt'] = 'Veritabanı adı'; -$wb['add_new_record_txt'] = 'Veritabanı ekle'; +$wb['database_user_txt'] = 'Veritabanı Kullanıcı Adı'; +$wb['database_name_txt'] = 'Veritabanı Adı'; +$wb['add_new_record_txt'] = 'Veritabanı Ekle'; $wb['sys_groupid_txt'] = 'Müşteri'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['type_txt'] = 'Type'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_list.lng b/interface/web/sites/lib/lang/tr_database_list.lng index 43ea5f9b6f..591a72af11 100644 --- a/interface/web/sites/lib/lang/tr_database_list.lng +++ b/interface/web/sites/lib/lang/tr_database_list.lng @@ -2,10 +2,10 @@ $wb['list_head_txt'] = 'Veritabanı'; $wb['active_txt'] = 'Etkin'; $wb['remote_access_txt'] = 'Uzaktan EriÅŸim'; +$wb['type_txt'] = 'Tür'; $wb['server_id_txt'] = 'Sunucu'; $wb['database_user_txt'] = 'Veritabanı Kullanıcısı'; $wb['database_name_txt'] = 'Veritabanı Adı'; $wb['add_new_record_txt'] = 'Veritabanı Ekle'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['type_txt'] = 'Type'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng index 50f2dcc496..a65174977b 100644 --- a/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_database_quota_stats_list.lng @@ -1,9 +1,9 @@ <?php -$wb['database_txt'] = 'Database'; -$wb['server_name_txt'] = 'Server'; -$wb['client_txt'] = 'Client'; -$wb['used_txt'] = 'Used space'; -$wb['quota_txt'] = 'Quota'; -$wb['percentage_txt'] = 'Used in %'; -$wb['list_head_txt'] = 'Database Quota'; +$wb['database_txt'] = 'Veritabanı'; +$wb['server_name_txt'] = 'Sunucu'; +$wb['client_txt'] = 'Müşteri'; +$wb['used_txt'] = 'Kullanılan'; +$wb['quota_txt'] = 'Kota'; +$wb['percentage_txt'] = 'Kullanım Yüzdesi'; +$wb['list_head_txt'] = 'Veritabanı Kotası'; ?> diff --git a/interface/web/sites/lib/lang/tr_database_user.lng b/interface/web/sites/lib/lang/tr_database_user.lng index 785c4ecce4..3f6ba89f49 100644 --- a/interface/web/sites/lib/lang/tr_database_user.lng +++ b/interface/web/sites/lib/lang/tr_database_user.lng @@ -1,25 +1,25 @@ <?php $wb['database_user_txt'] = 'Veritabanı Kullanıcısı'; $wb['database_password_txt'] = 'Veritabanı Parolası'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['client_txt'] = 'Müşteri'; $wb['active_txt'] = 'Etkin'; $wb['database_user_error_empty'] = 'Veritabanı kullanıcısı boÅŸ olamaz.'; -$wb['database_user_error_unique'] = 'Sunucuda aynı adlı bir veritabanı kullanıcısı var. Benzersiz bir ad vermek için, kullanıcı adının başına alan adınız gibi bir ek ekleyebilirsiniz.'; +$wb['database_user_error_unique'] = 'Sunucuda aynı adlı bir veritabanı kullanıcısı var. Benzersiz bir ad vermek için, kullanıcı adının başına etki alanınızı ekleyebilirsiniz.'; $wb['database_user_error_regex'] = 'Veritabanı kullanıcı adı geçersiz. Veritabanı kullanıcı adı 2-64 uzunluÄŸunda olmalı ve yalnız a-z, A-Z, 0-9 ve alt çizgi(_) karakterlerinden oluÅŸmalıdır.'; $wb['database_user_error_len'] = 'Veritabanı kullanıcı adı - {user} - çok uzun. Ön ek dahil en uzun veritabanı kullanıcı adı 16 karakter olmalıdır.'; $wb['btn_save_txt'] = 'Kaydet'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; $wb['globalsearch_resultslimit_of_txt'] = '/'; $wb['globalsearch_resultslimit_results_txt'] = 'sonuç'; -$wb['globalsearch_noresults_text_txt'] = 'Sonuç yok.'; +$wb['globalsearch_noresults_text_txt'] = 'Uygun bir sonuç bulunamadı.'; $wb['globalsearch_noresults_limit_txt'] = '0 sonuç'; $wb['globalsearch_searchfield_watermark_txt'] = 'Arama'; $wb['globalsearch_suggestions_text_txt'] = 'Öneriler'; -$wb['limit_database_user_txt'] = 'The max. number of database users is reached.'; -$wb['database_password_error_empty'] = 'Database password is empty.'; +$wb['limit_database_user_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla veritabanı kullanıcısı sayısına ulaÅŸtınız.'; +$wb['database_password_error_empty'] = 'Veritabanı parolası boÅŸ.'; ?> diff --git a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng index e44025a715..6d2da369d2 100644 --- a/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_ftp_sites_stats_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'FTP traffic'; -$wb['domain_txt'] = 'Domain'; -$wb['this_month_txt'] = 'This month'; -$wb['last_month_txt'] = 'Last month'; -$wb['this_year_txt'] = 'This year'; -$wb['last_year_txt'] = 'Last year'; -$wb['sum_txt'] = 'Sum (Download + Upload)'; -$wb['in_out_txt'] = 'DL/UL'; +$wb['list_head_txt'] = 'FTP TrafiÄŸi'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['this_month_txt'] = 'Bu ay'; +$wb['last_month_txt'] = 'Geçen ay'; +$wb['this_year_txt'] = 'Bu yıl'; +$wb['last_year_txt'] = 'Geçen yıl'; +$wb['sum_txt'] = 'Toplam (Ä°ndirme + Yükleme)'; +$wb['in_out_txt'] = 'Ä°nd/Yük'; ?> diff --git a/interface/web/sites/lib/lang/tr_ftp_user.lng b/interface/web/sites/lib/lang/tr_ftp_user.lng index 665d2ec477..155573595e 100644 --- a/interface/web/sites/lib/lang/tr_ftp_user.lng +++ b/interface/web/sites/lib/lang/tr_ftp_user.lng @@ -12,7 +12,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['quota_size_txt'] = 'Disk Kotası'; $wb['active_txt'] = 'Etkin'; $wb['limit_ftp_user_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla FTP kullanıcısı sayısına ulaÅŸtınız.'; @@ -21,15 +21,16 @@ $wb['username_error_unique'] = 'Bu kullanıcı adı zaten var.'; $wb['username_error_regex'] = 'Kullanıcı adında izin verilmeyen karakterler var.'; $wb['quota_size_error_empty'] = 'Kota boÅŸ olamaz.'; $wb['uid_error_empty'] = 'UID boÅŸ olamaz.'; +$wb['gid_error_empty'] = 'GID boÅŸ olamaz.'; $wb['directory_error_empty'] = 'Klasör boÅŸ olamaz.'; $wb['directory_error_notinweb'] = 'Klasör web kök klasörünün altında bulunmalıdır.'; $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['quota_size_error_regex'] = 'Kota: Sınırsız olması için -1 sınırlamak için sıfırdan büyük bir rakam yazın'; $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['expires_txt'] = 'Expire at'; +$wb['expires_txt'] = 'Sona Erme Zamanı'; ?> diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng index 5610d59939..e2aa844843 100644 --- a/interface/web/sites/lib/lang/tr_shell_user.lng +++ b/interface/web/sites/lib/lang/tr_shell_user.lng @@ -7,7 +7,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['chroot_txt'] = 'Chroot KabuÄŸu'; $wb['quota_size_txt'] = 'Kota'; $wb['active_txt'] = 'Etkin'; @@ -22,7 +22,7 @@ $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['ssh_rsa_txt'] = 'SSH-RSA Genel Anahtarı (anahtar ile oturum açmak için)'; $wb['dir_dot_error'] = 'Yol içinde .. . kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/sites/lib/lang/tr_shell_user_list.lng b/interface/web/sites/lib/lang/tr_shell_user_list.lng index b88c7fa748..5c375a232a 100644 --- a/interface/web/sites/lib/lang/tr_shell_user_list.lng +++ b/interface/web/sites/lib/lang/tr_shell_user_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Shell Kullanıcısı'; +$wb['list_head_txt'] = 'Kabuk Kullanıcısı'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['parent_domain_id_txt'] = 'Site'; +$wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; -$wb['add_new_record_txt'] = 'Shell Kullanıcısı Ekle'; +$wb['add_new_record_txt'] = 'Kabuk Kullanıcısı Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng index 82103410fe..be7712fd46 100644 --- a/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_user_quota_stats_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Web Sitesi Disk Kotası'; -$wb['domain_txt'] = 'Alan Adı / Web Sitesi'; +$wb['domain_txt'] = 'Etki Alanı / Web Sitesi'; $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['used_txt'] = 'Kullanılan Alan'; $wb['hard_txt'] = 'Donanım Sınırı'; diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng index 7e4c0b7c51..d7ded7849a 100644 --- a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng @@ -1,10 +1,10 @@ <?php -$wb['domain_txt'] = 'Takma Alan Adı'; +$wb['domain_txt'] = 'Takma Etki Alanı'; $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'Ä°l'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -12,12 +12,12 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; $wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. / karakterini yazmayın.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -25,30 +25,30 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla baÅŸka alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt alan adı sayısına ulaÅŸtınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/baÅŸka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boÅŸ olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boÅŸ olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boÅŸ olamaz'; @@ -56,31 +56,31 @@ $wb['client_group_id_txt'] = 'Müşteri'; $wb['stats_password_txt'] = 'Web Ä°statistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek En Fazla Disk Kotası'; -$wb['ssl_state_error_regex'] = 'SSL ÅŸehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web Ä°statistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web Ä°statistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleÅŸtirilmemiÅŸ. Bir IP adresi için yalnız bir SSL sertifikası etkinleÅŸtirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -102,14 +102,14 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deÄŸeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'Ä°steÄŸe baÄŸlı iÅŸlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliÄŸini seçerseniz, PHP baÅŸlatılamaz!'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; -$wb['Domain'] = 'BaÅŸka alan adı'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; +$wb['Domain'] = 'Takma Etki Alanı'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng index b7acfd099a..e4dcaacbe7 100644 --- a/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_aliasdomain_list.lng @@ -1,14 +1,14 @@ <?php -$wb['list_head_txt'] = 'Takma Alan Adı'; +$wb['list_head_txt'] = 'Takma Etki Alanı Adı'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['domain_txt'] = 'Takma Alan Adı'; -$wb['add_new_record_txt'] = 'Takma Alan Adı Ekle'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı alan adı zaten var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; +$wb['parent_domain_id_txt'] = 'Web SitesÅŸ'; +$wb['domain_txt'] = 'Takma Etki Alanı Adı'; +$wb['add_new_record_txt'] = 'Yeni takma etki alanı adı ekle'; +$wb['domain_error_empty'] = 'Etki alanı adı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Etki alanı adı eÅŸsiz olmalıdır.'; +$wb['domain_error_regex'] = 'Etki alanı adı geçersiz.'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; -$wb['none_txt'] = 'Yok'; +$wb['none_txt'] = 'Hiçbiri'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_backup_list.lng b/interface/web/sites/lib/lang/tr_web_backup_list.lng index c9bc16ae78..31aea494ca 100644 --- a/interface/web/sites/lib/lang/tr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/tr_web_backup_list.lng @@ -1,8 +1,9 @@ <?php $wb['list_head_txt'] = 'Alınmış Yedekler'; $wb['date_txt'] = 'Tarih'; -$wb['backup_type_txt'] = 'Tip'; +$wb['backup_type_txt'] = 'Tür'; $wb['filename_txt'] = 'Yedek Dosyası'; +$wb['filesize_txt'] = 'Dosya Boyutu'; $wb['restore_backup_txt'] = 'Geri Yükle'; $wb['download_backup_txt'] = 'Ä°ndir'; $wb['download_info_txt'] = 'Yedek dosyası bir kaç dakika içinde web sitesinin backup klasörü altında indirilmeye hazır olacak.'; @@ -10,12 +11,12 @@ $wb['restore_info_txt'] = 'YedeÄŸin geri yüklenmesine baÅŸlandı. Bu iÅŸlemin t $wb['restore_confirm_txt'] = 'Geri yükleme iÅŸlemi web sitenizde bulunan dosyaların üzerine yazar. Bu yedeÄŸi geri yüklemek istediÄŸinize emin misiniz?'; $wb['download_pending_txt'] = 'Zaten bekleyen bir yedek indirme iÅŸlemi var.'; $wb['restore_pending_txt'] = 'Zaten bekleyen bir yedek geri yükleme iÅŸlemi var.'; +$wb['delete_backup_txt'] = 'YedeÄŸi Sil'; +$wb['delete_info_txt'] = 'YedeÄŸin silinmesine baÅŸlandı. Bu iÅŸlemin tamamlanması bir kaç dakika sürebilir.'; +$wb['delete_confirm_txt'] = 'Gerçekten bu yedeÄŸi silmek istediÄŸinize emin misiniz?'; +$wb['delete_pending_txt'] = 'Bekleyen bir yedek silme iÅŸlemi var.'; +$wb['backup_type_mongodb'] = 'MongoDB Veritabanı'; $wb['backup_type_mysql'] = 'MySQL Veritabanı'; $wb['backup_type_web'] = 'Web sitesi dosyaları'; -$wb['filesize_txt'] = 'Filesize'; -$wb['delete_backup_txt'] = 'Delete Backup'; -$wb['delete_info_txt'] = 'Delete of the backup has been started. This action takes several minutes to be completed.'; -$wb['delete_confirm_txt'] = 'Really delete this backup?'; -$wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; -$wb['backup_type_mongodb'] = 'MongoDB Database'; + ?> diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index e11c6a92b5..235e870117 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -1,26 +1,26 @@ <?php -$wb['ssl_state_txt'] = 'Mevki'; -$wb['ssl_locality_txt'] = 'Semt'; -$wb['ssl_organisation_txt'] = 'Organizasyon'; -$wb['ssl_organisation_unit_txt'] = 'Organizasyon Unitesi'; +$wb['ssl_state_txt'] = 'Ä°l'; +$wb['ssl_locality_txt'] = 'Bölge'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; +$wb['ssl_organisation_unit_txt'] = 'KuruluÅŸ Birimi'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; -$wb['ssl_action_txt'] = 'SSL Eylemi'; +$wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Domain'; -$wb['type_txt'] = 'ÇeÅŸit'; -$wb['parent_domain_id_txt'] = 'Ana Website'; -$wb['redirect_type_txt'] = 'Yönlendirme ÇeÅŸidi'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['type_txt'] = 'Tür'; +$wb['parent_domain_id_txt'] = 'Ana Web Sitesi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; -$wb['active_txt'] = 'Aktif'; -$wb['document_root_txt'] = 'Documentroot'; +$wb['active_txt'] = 'Etkin'; +$wb['document_root_txt'] = 'Belge Kök Klasörü'; $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IP Adresleri'; -$wb['vhost_type_txt'] = 'VHost ÇeÅŸidi'; -$wb['hd_quota_txt'] = 'Harddisk Kotası'; +$wb['vhost_type_txt'] = 'VHost Türü'; +$wb['hd_quota_txt'] = 'Sabit Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; @@ -28,93 +28,93 @@ $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınızdaki max. web domaini sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınızdaki max. aliasdomain sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınızdaki max. web subdomain sayısına ulaÅŸtınız.'; -$wb['apache_directives_txt'] = 'Apache direktifleri'; -$wb['domain_error_empty'] = 'Domain boÅŸ.'; -$wb['domain_error_unique'] = 'Bu isimde websitesi veya sub / aliasdomain zaten var.'; -$wb['domain_error_regex'] = 'Domain ismi geçersiz.'; -$wb['host_txt'] = 'Host'; -$wb['redirect_error_regex'] = 'Geçersiz yönlendirme yolu. Geçerli yönlendirmeler örneÄŸin: /test/ veya http://www.domain.tld/test/'; -$wb['no_redirect_txt'] = 'No redirect'; -$wb['no_flag_txt'] = 'No flag'; -$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; -$wb['proxy_directives_txt'] = 'Proxy Directives'; -$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; -$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.'; -$wb['backup_interval_txt'] = 'Backup interval'; -$wb['backup_copies_txt'] = 'Number of backup copies'; -$wb['ssl_key_txt'] = 'SSL Key'; -$wb['ssl_domain_txt'] = 'SSL Domain'; -$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.'; -$wb['ipv6_address_txt'] = 'IPv6-Address'; -$wb['errordocs_txt'] = 'Own Error-Documents'; -$wb['subdomain_txt'] = 'Auto-Subdomain'; -$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.'; -$wb['error_ssl_state_empty'] = 'SSL State is empty.'; -$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.'; -$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.'; -$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.'; -$wb['error_ssl_country_empty'] = 'SSL Country is empty.'; -$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty'; -$wb['client_group_id_txt'] = 'Client'; -$wb['stats_password_txt'] = 'Set Webstatistics password'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; +$wb['apache_directives_txt'] = 'Apache Yönergeleri'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt / takma etki alanı zaten var.'; +$wb['domain_error_regex'] = 'Etki alanı adı geçersiz.'; +$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.'; +$wb['domain_error_wildcard'] = 'Genel alt etki alanları kullanılamaz.'; +$wb['host_txt'] = 'Sunucu'; +$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnek yönlendirmeler: /test/ ya da http://www.domain.tld/test/'; +$wb['no_redirect_txt'] = 'Yönlendirme Yok'; +$wb['no_flag_txt'] = 'Ä°ÅŸaret Yok'; +$wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; +$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için yönlendirilecek yol olarak kullanılacak bir adres gereklidir.'; +$wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; +$wb['backup_copies_txt'] = 'Yedek Sayısı'; +$wb['ssl_key_txt'] = 'SSL Anahtarı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; +$wb['web_folder_error_regex'] = 'Yazılan klasör geçersiz. Lütfen bölü karakterini yazmayın.'; +$wb['ipv6_address_txt'] = 'IPv6-Adresi'; +$wb['errordocs_txt'] = 'Özel Hata Sayfaları'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; +$wb['domain_error_autosub'] = 'Aynı ayarları kullanan bir alt etki alanı zaten var.'; +$wb['hd_quota_error_empty'] = 'Sabit disk kotası 0 ya da boÅŸ.'; +$wb['traffic_quota_error_empty'] = 'Trafik kotası boÅŸ olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; +$wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; +$wb['error_ssl_organisation_unit_empty'] = 'SSL kuruluÅŸ birimi boÅŸ olamaz.'; +$wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; +$wb['error_ssl_cert_empty'] = 'SSL sertifika alanı boÅŸ olamaz.'; +$wb['client_group_id_txt'] = 'Müşteri'; +$wb['stats_password_txt'] = 'Web Ä°statistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; -$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota'; -$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_'; -$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_'; -$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_'; -$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_'; -$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z'; -$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota'; +$wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla sabit disk kotası'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; +$wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; -$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded'; +$wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Webstatistics username'; -$wb['stats_type_txt'] = 'Webstatistics program'; -$wb['custom_php_ini_txt'] = 'Custom php.ini settings'; -$wb['none_txt'] = 'None'; -$wb['disabled_txt'] = 'Disabled'; -$wb['save_certificate_txt'] = 'Save certificate'; -$wb['create_certificate_txt'] = 'Create certificate'; -$wb['delete_certificate_txt'] = 'Delete certificate'; -$wb['nginx_directives_txt'] = 'nginx Directives'; -$wb['seo_redirect_txt'] = 'SEO Redirect'; +$wb['stats_user_txt'] = 'Web Ä°statistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web Ä°statistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; +$wb['none_txt'] = 'Yok'; +$wb['disabled_txt'] = 'Devre Dışı'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; +$wb['nginx_directives_txt'] = 'nginx Yönergeleri'; +$wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM'; -$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; +$wb['error_no_sni_txt'] = 'Bu sunucu üzerinde SSL için SNI etkinleÅŸtirilmemiÅŸ. Bir IP adresi için yalnız bir SSL sertifikası kullanılabilir.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; $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['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; -$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['pm_txt'] = 'PHP-FPM Process Manager'; +$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm ayarları ÅŸu ÅŸekilde olmalıdır: 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 deÄŸeri pozitif bir tamsayı olmalıdır.'; +$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; +$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; +$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; +$wb['hd_quota_error_regex'] = 'Sabit disk kotası geçersiz.'; +$wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; +$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yönetimi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; -$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.'; -$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.'; -$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!'; -$wb['generate_password_txt'] = 'Generate Password'; -$wb['repeat_password_txt'] = 'Repeat Password'; -$wb['password_mismatch_txt'] = 'The passwords do not match.'; -$wb['password_match_txt'] = 'The passwords do match.'; -$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:'; -$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:'; -$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; -$wb['Domain'] = 'Aliasdomain'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; -$wb['ssl_letsencrypt_exclude_txt'] = 'Don\'t add to Let\'s Encrypt certificate'; +$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deÄŸeri pozitif bir tamsayı olmalıdır.'; +$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deÄŸeri pozitif bir tamsayı olmalıdır >= 0.'; +$wb['pm_ondemand_hint_txt'] = 'Ondemand iÅŸlem yönetimini kullanabilmek için PHP sürümünüz >= 5.3.9 olmalıdır. Daha eski bir PHP sürümü için ondemand seçilirse PHP çalışmaya baÅŸlayamaz!'; +$wb['generate_password_txt'] = 'Parola Ãœret'; +$wb['repeat_password_txt'] = 'Parola Onayı'; +$wb['password_mismatch_txt'] = 'Parola ve onayı aynı deÄŸil'; +$wb['password_match_txt'] = 'Parola ve onayı aynı deÄŸil.'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; +$wb['Domain'] = 'Takma Etki Alanı Adı'; +$wb['ssl_letsencrypt_exclude_txt'] = 'Let\'s Encrypt sertifikası eklenmesin'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng index 26b3acc9e9..33127c84cf 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain_list.lng @@ -1,18 +1,18 @@ <?php -$wb['list_head_txt'] = 'Takma Alan Adı'; +$wb['list_head_txt'] = 'Takma Etki Alanı'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['domain_txt'] = 'Takma Alan Adı'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı alan adı zaten var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; +$wb['domain_txt'] = 'Takma Etki Alanı'; +$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle'; +$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı etki alanı zaten var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; $wb['none_txt'] = 'Yok'; -$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.'; +$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları'; +$wb['subdomain_list_head_txt'] = 'Alt Etki Alanları'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng index d2590e53cf..a4380942e6 100644 --- a/interface/web/sites/lib/lang/tr_web_directive_snippets.lng +++ b/interface/web/sites/lib/lang/tr_web_directive_snippets.lng @@ -1,3 +1,3 @@ <?php -$wb['directive_snippets_id_txt'] = 'Desired configuration'; +$wb['directive_snippets_id_txt'] = 'Ä°stenilen Yapılandırma'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index c97ce73778..65db621f56 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'Ä°l'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.'; -$wb['type_txt'] = 'Tip'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen bölü karakterini yazmayın.'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -25,62 +25,62 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla baÅŸka alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt alan adı sayısına ulaÅŸtınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/baÅŸka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boÅŸ olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boÅŸ olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boÅŸ olamaz'; $wb['client_group_id_txt'] = 'Müşteri'; -$wb['stats_password_txt'] = 'Web istatistikleri parolası'; +$wb['stats_password_txt'] = 'Web Ä°statistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL ÅŸehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; -$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; +$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web Ä°statistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web Ä°statistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleÅŸtirilmemiÅŸ. Bir IP adresi için yalnız bir SSL sertifikası etkinleÅŸtirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -102,15 +102,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deÄŸeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'Ä°steÄŸe baÄŸlı iÅŸlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliÄŸini seçerseniz, PHP baÅŸlatılamaz!'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.'; $wb['no_backup_txt'] = 'Yedek alınmasın'; $wb['daily_backup_txt'] = 'Günlük'; @@ -122,16 +122,16 @@ $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; $wb['configuration_error_txt'] = 'AYAR HATASI'; $wb['variables_txt'] = 'DeÄŸiÅŸkenler'; $wb['added_by_txt'] = 'Ekleyen'; -$wb['added_date_txt'] = 'EklendiÄŸi tarih'; +$wb['added_date_txt'] = 'Eklenme Tarihi'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; $wb['invalid_custom_php_ini_settings_txt'] = 'php.ini ayarları geçersiz'; $wb['invalid_system_user_or_group_txt'] = 'Sistem kullanıcısı ya da grubu geçersiz'; $wb['apache_directive_blocked_error'] = 'Apache yönergesi güvenlik ayarları tarafından engellenmiÅŸ:'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; -$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; +$wb['nginx_directive_blocked_error'] = 'nginx yönergesi güvenlik ayarları tarafından engellendi:'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng index f86967d0d4..487c6a087c 100644 --- a/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_web_domain_admin_list.lng @@ -4,6 +4,6 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain_list.lng b/interface/web/sites/lib/lang/tr_web_domain_list.lng index a2320b5dcd..fbfa573470 100644 --- a/interface/web/sites/lib/lang/tr_web_domain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_domain_list.lng @@ -3,6 +3,6 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_folder_user.lng b/interface/web/sites/lib/lang/tr_web_folder_user.lng index a0479ee0d1..afbe01cab1 100644 --- a/interface/web/sites/lib/lang/tr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/tr_web_folder_user.lng @@ -4,8 +4,8 @@ $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; $wb['active_txt'] = 'Etkin'; $wb['folder_error_empty'] = 'Bir web klasörü seçilmemiÅŸ.'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng index 4fbdef871d..685fc22fc6 100644 --- a/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/tr_web_sites_stats_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Web TrafiÄŸi'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['this_month_txt'] = 'Bu ay'; $wb['last_month_txt'] = 'Geçen ay'; $wb['this_year_txt'] = 'Bu yıl'; diff --git a/interface/web/sites/lib/lang/tr_web_subdomain.lng b/interface/web/sites/lib/lang/tr_web_subdomain.lng index 188b257589..7d1cdcc5c0 100644 --- a/interface/web/sites/lib/lang/tr_web_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_subdomain.lng @@ -1,7 +1,7 @@ <?php $wb['ssl_state_txt'] = 'Ä°l'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; @@ -9,17 +9,17 @@ $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; -$wb['type_txt'] = 'Tip'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IP Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; @@ -28,23 +28,23 @@ $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla baÅŸka alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt alan adı sayısına ulaÅŸtınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/baÅŸka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt alan adları kullanılamaz.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt etki alanları kullanılamaz.'; $wb['host_txt'] = 'Sunucu'; -$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; +$wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; -$wb['error_proxy_requires_url'] = '\\"Vekil Sunucu\\" yönlendirme tipi için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; -$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['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; +$wb['error_proxy_requires_url'] = '"Vekil Sunucu" yönlendirme türü için, yönlendirilecek yolu gösteren bir Ä°nternet adresi gereklidir.'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng index 8155af64b3..6527242e2d 100644 --- a/interface/web/sites/lib/lang/tr_web_subdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_subdomain_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Alt Alan Adları'; +$wb['list_head_txt'] = 'Alt Etki Alanları'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['domain_txt'] = 'Alt Alan Adı'; -$wb['add_new_record_txt'] = 'Alt Alan Ekle'; +$wb['domain_txt'] = 'Alt Etki Alanı'; +$wb['add_new_record_txt'] = 'Alt Etki Alanı Ekle'; ?> 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 2e9384fee4..4cfe808bfb 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -3,7 +3,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'Ä°l'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -11,13 +11,13 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['web_folder_error_regex'] = 'Yazdığınız klasör geçersiz. Lütfen / karakterini yazmayın.'; -$wb['type_txt'] = 'Tip'; +$wb['type_txt'] = 'Tür'; $wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -25,63 +25,63 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla baÅŸka alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt alan adı sayısına ulaÅŸtınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/baÅŸka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt alan adı zaten var.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_acme_invalid'] = 'acme.invalid etki alanı adı kullanılamaz.'; +$wb['domain_error_autosub'] = 'Aynı ayarlara sahip bir alt etki alanı zaten var.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boÅŸ olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boÅŸ olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boÅŸ olamaz'; $wb['client_group_id_txt'] = 'Müşteri'; -$wb['stats_password_txt'] = 'Web istatistikleri parolası'; +$wb['stats_password_txt'] = 'Web Ä°statistikleri Parolası'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL ÅŸehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web Ä°statistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web Ä°statistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; -$wb['php_fpm_chroot_txt'] = 'Chroot PHP-FPM'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleÅŸtirilmemiÅŸ. Bir IP adresi için yalnız bir SSL sertifikası etkinleÅŸtirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -103,15 +103,15 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deÄŸeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'Ä°steÄŸe baÄŸlı iÅŸlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliÄŸini seçerseniz, PHP baÅŸlatılamaz!'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['no_server_error'] = 'Bir sunucu seçmelisiniz.'; $wb['no_backup_txt'] = 'Yedek alınmasın'; $wb['daily_backup_txt'] = 'Günlük'; @@ -121,36 +121,39 @@ $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları'; $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz'; $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; $wb['configuration_error_txt'] = 'AYAR HATASI'; +$wb['server_chosen_not_ok'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamıyor.'; $wb['variables_txt'] = 'DeÄŸiÅŸkenler'; $wb['added_by_txt'] = 'Ekleyen'; -$wb['added_date_txt'] = 'EklendiÄŸi tarih'; +$wb['added_date_txt'] = 'Eklenme Tarihi'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; -$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.'; -$wb['web_folder_txt'] = 'Web folder'; -$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.'; -$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.'; -$wb['host_txt'] = 'Hostname'; -$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; -$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; -$wb['load_client_data_txt'] = 'Load client details'; -$wb['load_my_data_txt'] = 'Load my contact details'; -$wb['reset_client_data_txt'] = 'Reset data'; -$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt SSL'; -$wb['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS'; -$wb['password_strength_txt'] = 'Password strength'; -$wb['directive_snippets_id_txt'] = 'Web server config'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; -$wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; -$wb['log_retention_txt'] = 'Logfiles retention time'; -$wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; -$wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; -$wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['web_folder_txt'] = 'Web klasörü'; +$wb['web_folder_invalid_txt'] = 'Web klasörü geçersiz, lütfen baÅŸka bir klasör seçin.'; +$wb['web_folder_unique_txt'] = 'Web klasörü zaten kullanılıyor, lütfen baÅŸka bir klasör seçin.'; +$wb['host_txt'] = 'Sunucu adı'; +$wb['domain_error_wildcard'] = 'Genel alt etki alanları kullanılamaz.'; +$wb['variables_txt'] = 'DeÄŸiÅŸkenler'; +$wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; +$wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; +$wb['subdomain_error_empty'] = 'Alt etki alanı boÅŸ ya da geçersiz karakterler içeriyor.'; +$wb['btn_save_txt'] = 'Kaydet'; +$wb['btn_cancel_txt'] = 'Ä°ptal'; +$wb['enable_spdy_txt'] = 'SPDY kullanılsın'; +$wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle'; +$wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle'; +$wb['reset_client_data_txt'] = 'Verileri Sıfırla'; +$wb['document_root_txt'] = 'Belge Kök Klasörü'; +$wb['ssl_letsencrypt_txt'] = 'Let'; +$wb['rewrite_to_https_txt'] = 'HTTP, HTTPS Yönlendirme'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; +$wb['directive_snippets_id_txt'] = 'Web Sunucu Yapılandırması'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; +$wb['enable_pagespeed_txt'] = 'PageSpeed Kullanılsın'; +$wb['log_retention_txt'] = 'Günlük Dosyalarının Silinme Sıklığı'; +$wb['log_retention_error_regex'] = 'Gün cinsinden günlük dosyalarının silinme sıklığı (En küçük: 0 - En büyük: 9999)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng index 4f07fd8588..423e956234 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_admin_list.lng @@ -1,14 +1,14 @@ <?php -$wb['sys_groupid_txt'] = 'Client'; -$wb['list_head_txt'] = 'Websites'; -$wb['domain_id_txt'] = 'ID'; -$wb['active_txt'] = 'Active'; -$wb['server_id_txt'] = 'Server'; -$wb['domain_txt'] = 'Domain'; -$wb['add_new_record_txt'] = 'Add new website'; -$wb['add_new_subdomain_txt'] = 'Add new subdomain'; -$wb['add_new_aliasdomain_txt'] = 'Add new aliasdomain'; -$wb['domain_list_head_txt'] = 'Websites'; -$wb['aliasdomain_list_head_txt'] = 'Aliasdomains (Vhost)'; -$wb['subdomain_list_head_txt'] = 'Subdomains (Vhost)'; +$wb['sys_groupid_txt'] = 'Müşteri'; +$wb['list_head_txt'] = 'Web Siteleri'; +$wb['domain_id_txt'] = 'Kod'; +$wb['active_txt'] = 'Etkin'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['domain_txt'] = 'Etki Alanı'; +$wb['add_new_record_txt'] = 'Web Sitesi Ekle'; +$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle'; +$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle'; +$wb['domain_list_head_txt'] = 'Web Siteleri'; +$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları (Sanal Sunucu)'; +$wb['subdomain_list_head_txt'] = 'Alt Etki Alanları (Sanal Sunucu)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng index b7df7ed9d0..061afec494 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain_list.lng @@ -3,12 +3,12 @@ $wb['list_head_txt'] = 'Web Siteleri'; $wb['domain_id_txt'] = 'Kod'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['parent_domain_id_txt'] = 'Website'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['add_new_record_txt'] = 'Web Sitesi Ekle'; -$wb['add_new_subdomain_txt'] = 'Add new subdomain'; -$wb['add_new_aliasdomain_txt'] = 'Add new aliasdomain'; -$wb['domain_list_head_txt'] = 'Websites'; -$wb['aliasdomain_list_head_txt'] = 'Aliasdomains (Vhost)'; -$wb['subdomain_list_head_txt'] = 'Subdomains (Vhost)'; +$wb['add_new_subdomain_txt'] = 'Alt Etki Alanı Ekle'; +$wb['add_new_aliasdomain_txt'] = 'Takma Etki Alanı Ekle'; +$wb['parent_domain_id_txt'] = 'Web Sitesi'; +$wb['domain_list_head_txt'] = 'Web Siteleri'; +$wb['aliasdomain_list_head_txt'] = 'Takma Etki Alanları (Sanal Sunucu)'; +$wb['subdomain_list_head_txt'] = 'Alt Etki Alanı Adları (Sanal Sunucu)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng index 2bbcfb661c..a24883881f 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng @@ -7,7 +7,7 @@ $wb['backup_interval_txt'] = 'Yedekleme Sıklığı'; $wb['backup_copies_txt'] = 'Yedek Kopyası Sayısı'; $wb['ssl_state_txt'] = 'Ä°l'; $wb['ssl_locality_txt'] = 'Bölge'; -$wb['ssl_organisation_txt'] = 'Kurum'; +$wb['ssl_organisation_txt'] = 'KuruluÅŸ'; $wb['ssl_organisation_unit_txt'] = 'Birim'; $wb['ssl_country_txt'] = 'Ãœlke'; $wb['ssl_key_txt'] = 'SSL Anahtarı'; @@ -15,13 +15,14 @@ $wb['ssl_request_txt'] = 'SSL Ä°steÄŸi'; $wb['ssl_cert_txt'] = 'SSL Sertifikası'; $wb['ssl_bundle_txt'] = 'SSL Yığını'; $wb['ssl_action_txt'] = 'SSL Ä°ÅŸlemi'; -$wb['ssl_domain_txt'] = 'SSL Alan Adı'; +$wb['ssl_domain_txt'] = 'SSL Etki Alanı'; $wb['server_id_txt'] = 'Sunucu'; -$wb['domain_txt'] = 'Alan Adı'; +$wb['domain_txt'] = 'Etki Alanı'; $wb['host_txt'] = 'Sunucu Adı'; $wb['web_folder_error_regex'] = 'Yazılan klasör geçersiz. Lütfen / karakteri kullanmadan yazın.'; -$wb['type_txt'] = 'Tip'; -$wb['redirect_type_txt'] = 'Yönlendirme Tipi'; +$wb['type_txt'] = 'Tür'; +$wb['parent_domain_id_txt'] = 'Ãœst Web Sitesi'; +$wb['redirect_type_txt'] = 'Yönlendirme Türü'; $wb['redirect_path_txt'] = 'Yönlendirme Yolu'; $wb['active_txt'] = 'Etkin'; $wb['document_root_txt'] = 'Kök Klasör'; @@ -29,30 +30,30 @@ $wb['system_user_txt'] = 'Linux Kullanıcısı'; $wb['system_group_txt'] = 'Linux Grubu'; $wb['ip_address_txt'] = 'IPv4 Adresi'; $wb['ipv6_address_txt'] = 'IPv6 Adresi'; -$wb['vhost_type_txt'] = 'SSunucu Tipi'; +$wb['vhost_type_txt'] = 'Sanal Sunucu Türü'; $wb['hd_quota_txt'] = 'Disk Kotası'; $wb['traffic_quota_txt'] = 'Trafik Kotası'; $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Özel Hata Sayfaları'; -$wb['subdomain_txt'] = 'Otomatik Alt Alan'; +$wb['subdomain_txt'] = 'Otomatik Alt Etki Alanı'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; $wb['client_txt'] = 'Müşteri'; -$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla baÅŸka alan adı sayısına ulaÅŸtınız.'; -$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt alan adı sayısına ulaÅŸtınız.'; +$wb['limit_web_domain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_aliasdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla takma etki alanı sayısına ulaÅŸtınız.'; +$wb['limit_web_subdomain_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla alt etki alanı sayısına ulaÅŸtınız.'; $wb['apache_directives_txt'] = 'Apache Yönergeleri'; -$wb['domain_error_empty'] = 'Alan adı boÅŸ olamaz.'; -$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/baÅŸka alan adı var.'; -$wb['domain_error_regex'] = 'Alan adı geçersiz.'; -$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt alan adları kullanılamaz.'; +$wb['domain_error_empty'] = 'Etki alanı boÅŸ olamaz.'; +$wb['domain_error_unique'] = 'Aynı adlı bir web sitesi ya da alt/takma etki alanı var.'; +$wb['domain_error_regex'] = 'Etki alanı geçersiz.'; +$wb['domain_error_wildcard'] = 'Genel karakterler içeren alt etki alanları kullanılamaz.'; $wb['hd_quota_error_empty'] = 'Disk kotası 0 ya da boÅŸ olamaz.'; $wb['traffic_quota_error_empty'] = 'Trafik kotası boÅŸ olamaz.'; -$wb['error_ssl_state_empty'] = 'SSL ÅŸehri boÅŸ olamaz.'; +$wb['error_ssl_state_empty'] = 'SSL ili boÅŸ olamaz.'; $wb['error_ssl_locality_empty'] = 'SSL bölgesi boÅŸ olamaz.'; -$wb['error_ssl_organisation_empty'] = 'SSL kurumu boÅŸ olamaz.'; +$wb['error_ssl_organisation_empty'] = 'SSL kuruluÅŸu boÅŸ olamaz.'; $wb['error_ssl_organisation_unit_empty'] = 'SSL birimi boÅŸ olamaz.'; $wb['error_ssl_country_empty'] = 'SSL ülkesi boÅŸ olamaz.'; $wb['error_ssl_cert_empty'] = 'SSL sertifikası alanı boÅŸ olamaz'; @@ -60,31 +61,31 @@ $wb['client_group_id_txt'] = 'Müşteri'; $wb['stats_password_txt'] = 'Web istatistikleri parolasını ayarla'; $wb['allow_override_txt'] = 'Apache AllowOverride'; $wb['limit_web_quota_free_txt'] = 'Kullanılabilecek en fazla disk kotası'; -$wb['ssl_state_error_regex'] = 'SSL ÅŸehri geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organisation_error_regex'] = 'SSL kurumu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; -$wb['ssl_organistaion_unit_error_regex'] = 'SSL birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_'; +$wb['ssl_state_error_regex'] = 'SSL ili geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_locality_error_regex'] = 'SSL bölgesi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organisation_error_regex'] = 'SSL kuruluÅŸu geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; +$wb['ssl_organistaion_unit_error_regex'] = 'SSL kuruluÅŸu birimi geçersiz. Kullanılabilecek karakterler: a-z, 0-9 ve .,-_&äöüÄÖÜ'; $wb['ssl_country_error_regex'] = 'SSL ülkesi geçersiz. Kullanılabilecek karakterler: A-Z'; $wb['limit_traffic_quota_free_txt'] = 'Kullanılabilecek en fazla trafik kotası'; $wb['redirect_error_regex'] = 'Yönlendirme yolu geçersiz. Geçerli örnekler: /test/ ya da http://www.domain.tld/test/'; $wb['php_open_basedir_txt'] = 'PHP open_basedir'; $wb['traffic_quota_exceeded_txt'] = 'Trafik kotası aşıldı'; $wb['ruby_txt'] = 'Ruby'; -$wb['stats_user_txt'] = 'Web istatistikleri kullanıcı adı'; -$wb['stats_type_txt'] = 'Web istatistikleri yazılımı'; -$wb['custom_php_ini_txt'] = 'Özel php.ini ayarları'; +$wb['stats_user_txt'] = 'Web Ä°statistikleri Kullanıcı Adı'; +$wb['stats_type_txt'] = 'Web Ä°statistikleri Uygulaması'; +$wb['custom_php_ini_txt'] = 'Özel php.ini Ayarları'; $wb['none_txt'] = 'Yok'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['no_redirect_txt'] = 'Yönlendirme yok'; $wb['no_flag_txt'] = 'Ä°ÅŸaret yok'; -$wb['save_certificate_txt'] = 'Sertifikayı kaydet'; -$wb['create_certificate_txt'] = 'Sertifika ekle'; -$wb['delete_certificate_txt'] = 'Sertifikayı sil'; +$wb['save_certificate_txt'] = 'Sertifikayı Kaydet'; +$wb['create_certificate_txt'] = 'Sertifika Ekle'; +$wb['delete_certificate_txt'] = 'Sertifikayı Sil'; $wb['nginx_directives_txt'] = 'nginx Yönergeleri'; $wb['seo_redirect_txt'] = 'AMD Yönlendirme'; $wb['non_www_to_www_txt'] = 'Non-www -> www'; $wb['www_to_non_www_txt'] = 'www -> non-www'; -$wb['php_fpm_use_socket_txt'] = 'PHP-FPM İçin Soket Kullanılsın'; +$wb['php_fpm_use_socket_txt'] = 'PHP-FPM Soketi'; $wb['error_no_sni_txt'] = 'Bu sunucuda SSL için SNI etkinleÅŸtirilmemiÅŸ. Bir IP adresi için yalnız bir SSL sertifikası etkinleÅŸtirebilirsiniz.'; $wb['python_txt'] = 'Python'; $wb['perl_txt'] = 'Perl'; @@ -106,26 +107,26 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests deÄŸeri sıfır ya da pozitif bir tamsayı olmalıdır.'; $wb['pm_ondemand_hint_txt'] = 'Ä°steÄŸe baÄŸlı iÅŸlem yöneticisini kullanabilmek için PHP Sürümünüz >= 5.3.9 olmalıdır. Daha önceki bir PHP sürümü için ondemand özelliÄŸini seçerseniz, PHP baÅŸlatılamaz!'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Parçaları:'; -$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Parçaları:'; -$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Parçaları:'; +$wb['available_php_directive_snippets_txt'] = 'Kullanılabilecek PHP Yönerge Kod Parçaları:'; +$wb['available_apache_directive_snippets_txt'] = 'Kullanılabilecek Apache Yönerge Kod Parçaları:'; +$wb['available_nginx_directive_snippets_txt'] = 'Kullanılabilecek nginx Yönerge Kod Parçaları:'; $wb['proxy_directives_txt'] = 'Vekil Sunucu Yönergeleri'; -$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Parçaları:'; +$wb['available_proxy_directive_snippets_txt'] = 'Kullanılabilecek Vekil Sunucu Yönerge Kod Parçaları:'; $wb['rewrite_rules_txt'] = 'Yeniden Yazma Kuralları'; $wb['invalid_rewrite_rules_txt'] = 'Yeniden Yazma Kuralları Geçersiz'; $wb['allowed_rewrite_rule_directives_txt'] = 'Kullanılabilecek Yönergeler:'; -$wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['configuration_error_txt'] = 'YAPILANDIRMA HATASI'; $wb['variables_txt'] = 'DeÄŸiÅŸkenler'; $wb['backup_excludes_txt'] = 'Katılmayacak Klasörler'; $wb['backup_excludes_note_txt'] = '(Klasörleri virgül ile ayırarak yazın. Örnek: web/cache/*,web/backup)'; $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karakterler bulunuyor.'; -$wb['subdomain_error_empty'] = 'Alt alan adı boÅŸ ya da geçersiz karakterler içeriyor.'; -$wb['http_port_txt'] = 'HTTP Port'; -$wb['https_port_txt'] = 'HTTPS Port'; -$wb['http_port_error_regex'] = 'HTTP Port invalid.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; +$wb['subdomain_error_empty'] = 'Alt etki alanı boÅŸ ya da geçersiz karakterler içeriyor.'; +$wb['http_port_txt'] = 'HTTP Kapı Numarası'; +$wb['https_port_txt'] = 'HTTPS Kapı Numarası'; +$wb['http_port_error_regex'] = 'HTTP kapı numarası geçersiz.'; +$wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng index bc7e7622c2..6527242e2d 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Alt Alanlar'; +$wb['list_head_txt'] = 'Alt Etki Alanları'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; -$wb['domain_txt'] = 'Alt Alan Adı'; -$wb['add_new_record_txt'] = 'Alt alan ekle'; +$wb['domain_txt'] = 'Alt Etki Alanı'; +$wb['add_new_record_txt'] = 'Alt Etki Alanı Ekle'; ?> diff --git a/interface/web/sites/lib/lang/tr_webdav_user.lng b/interface/web/sites/lib/lang/tr_webdav_user.lng index e592f052c4..c80088da95 100644 --- a/interface/web/sites/lib/lang/tr_webdav_user.lng +++ b/interface/web/sites/lib/lang/tr_webdav_user.lng @@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Sunucu'; $wb['parent_domain_id_txt'] = 'Web Sitesi'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['password_txt'] = 'Parola'; -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['active_txt'] = 'Etkin'; $wb['limit_webdav_user_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla webdav kullanıcısı sayısına ulaÅŸtınız.'; $wb['username_error_empty'] = 'Kullanıcı adı boÅŸ olamaz.'; @@ -14,7 +14,7 @@ $wb['directory_error_empty'] = 'Klasör boÅŸ olamaz.'; $wb['parent_domain_id_error_empty'] = 'Bir web sitesi seçmelisiniz.'; $wb['dir_dot_error'] = 'Yol içinde .. kullanılamaz.'; $wb['dir_slashdot_error'] = 'Yol içinde ./ kullanılamaz.'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; diff --git a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng index 172646f212..2b2fb51f9a 100644 --- a/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng +++ b/interface/web/strengthmeter/lib/lang/br_strengthmeter.lng @@ -2,7 +2,7 @@ $wb['password_strength_0_txt'] = 'Muito curta'; $wb['password_strength_1_txt'] = 'Fraca'; $wb['password_strength_2_txt'] = 'Razoável'; -$wb['password_strength_3_txt'] = 'Bom'; +$wb['password_strength_3_txt'] = 'Boa'; $wb['password_strength_4_txt'] = 'Forte'; -$wb['password_strength_5_txt'] = 'Muito Forte'; +$wb['password_strength_5_txt'] = 'Muito forte'; ?> diff --git a/interface/web/tools/lib/lang/br.lng b/interface/web/tools/lib/lang/br.lng index 3000e972fc..1c11472165 100644 --- a/interface/web/tools/lib/lang/br.lng +++ b/interface/web/tools/lib/lang/br.lng @@ -1,13 +1,13 @@ <?php -$wb['User Settings'] = 'Configurações do usuário'; +$wb['User Settings'] = 'Configurações de usuários'; $wb['Settings'] = 'Configurações'; $wb['ISPConfig Tools'] = 'Ferramentas'; +$wb['Interface'] = 'Interface'; $wb['Password and Language'] = 'Senha e Idioma'; -$wb['ispconfig_tools_note'] = 'Este módulo permite você alterar a senha e o idioma e sincronizar os registros dns.'; +$wb['ispconfig_tools_note'] = 'Este módulo permite alterar a senha e idioma e iniciar a sincronização de registros dns.'; +$wb['Sync Tools'] = 'Sincronização'; $wb['Resync'] = 'Sincronizar'; -$wb['Sync Tools'] = 'Sincronismo'; $wb['Import'] = 'Importar'; -$wb['ISPConfig 3 mail'] = 'ISPConfig 3'; -$wb['PDNS Tupa'] = 'Tupa PowerDNS'; -$wb['Interface'] = 'Interface'; +$wb['ISPConfig 3 mail'] = 'e-Mails do ISPConfig'; +$wb['PDNS Tupa'] = 'PowerDNS'; ?> diff --git a/interface/web/tools/lib/lang/br_import_ispconfig.lng b/interface/web/tools/lib/lang/br_import_ispconfig.lng index 8124d13f10..d77242b483 100644 --- a/interface/web/tools/lib/lang/br_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/br_import_ispconfig.lng @@ -1,23 +1,23 @@ <?php $wb['head_txt'] = 'Importar configuração de e-mail do ISPConfig 3'; -$wb['legend_txt'] = 'Detalhes da conexão do servidor remoto'; -$wb['legend2_txt'] = 'Importar domÃnio de e-mails'; +$wb['legend_txt'] = 'Detalhes da conexão remota do servidor'; +$wb['legend2_txt'] = 'Importar domÃnio de e-mail'; $wb['resync_sites_txt'] = 'Sincronizar sites'; $wb['resync_ftp_txt'] = 'Sincronizar usuários ftp'; -$wb['resync_shell_txt'] = 'Sincronizar usuários shell'; -$wb['resync_cron_txt'] = 'Sincronizar tarefas na cron'; -$wb['resync_db_txt'] = 'Sincronizar configurações de usuários do banco de dados'; -$wb['resync_mailbox_txt'] = 'Sincronizar e-mails'; +$wb['resync_shell_txt'] = 'Sincronizar usuários do shell'; +$wb['resync_cron_txt'] = 'Sincronizar tarefas no cron'; +$wb['resync_db_txt'] = 'Sincronizar configurações do cliente de banco de dados'; +$wb['resync_mailbox_txt'] = 'Sincronizar contas de e-mail'; $wb['resync_dns_txt'] = 'Sincronizar registros dns'; $wb['btn_start_txt'] = 'Iniciar importação'; -$wb['btn_connect_txt'] = 'Conectar no servidor remoto'; +$wb['btn_connect_txt'] = 'Conectar ao servidor remoto'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['client_group_id_txt'] = 'Cliente local'; -$wb['mail_domain_txt'] = 'DomÃnio de e-mails remoto'; -$wb['import_mailbox_txt'] = 'Importar e-mails'; -$wb['import_aliasdomain_txt'] = 'Importar apelidos de domÃnio'; -$wb['import_alias_txt'] = 'Importar apelidos de e-mails'; -$wb['import_forward_txt'] = 'Importar encaminhamentos de e-mails'; -$wb['import_user_filter_txt'] = 'Importar filtros de e-mail de usuários'; +$wb['mail_domain_txt'] = 'DomÃnio de e-mail remoto'; +$wb['import_mailbox_txt'] = 'Importar contas de e-mail'; +$wb['import_aliasdomain_txt'] = 'Importar alias de domÃnios'; +$wb['import_alias_txt'] = 'Importar alias de e-mail'; +$wb['import_forward_txt'] = 'Importar encaminhamentos de e-mail'; +$wb['import_user_filter_txt'] = 'Importar filtros de e-mail'; $wb['import_spamfilter_txt'] = 'Importar filtros anti-spam'; ?> diff --git a/interface/web/tools/lib/lang/br_import_vpopmail.lng b/interface/web/tools/lib/lang/br_import_vpopmail.lng index 55bc0bf238..c18b0b6810 100644 --- a/interface/web/tools/lib/lang/br_import_vpopmail.lng +++ b/interface/web/tools/lib/lang/br_import_vpopmail.lng @@ -1,7 +1,8 @@ <?php -$wb['head_txt'] = 'Importar configuração de e-mail do vpopmail'; -$wb['legend_txt'] = 'Detalhes da conexão do servidor de banco de dados remoto'; -$wb['btn_start_txt'] = 'Iniciar importação'; -$wb['btn_connect_txt'] = 'Conectar servidor remoto'; +$wb['head_txt'] = 'Importar configurações de e-mail do vpopmail'; +$wb['legend_txt'] = 'Detalhes da conexão remota do servidor de banco de dados'; +$wb['btn_start_txt'] = 'Iniciar Importação'; +$wb['btn_connect_txt'] = 'Conectar ao servidor remoto'; $wb['btn_cancel_txt'] = 'Cancelar'; + ?> diff --git a/interface/web/tools/lib/lang/br_index.lng b/interface/web/tools/lib/lang/br_index.lng index 437e1f01c3..bbb7085209 100644 --- a/interface/web/tools/lib/lang/br_index.lng +++ b/interface/web/tools/lib/lang/br_index.lng @@ -1,4 +1,4 @@ <?php -$wb['page_head_txt'] = 'Ferramentas'; +$wb['page_head_txt'] = 'Ferramentas do ISPConfig'; $wb['page_desc_txt'] = 'Alterar configurações de usuário'; ?> diff --git a/interface/web/tools/lib/lang/br_interface.lng b/interface/web/tools/lib/lang/br_interface.lng index 45341060c5..95677c4b59 100644 --- a/interface/web/tools/lib/lang/br_interface.lng +++ b/interface/web/tools/lib/lang/br_interface.lng @@ -1,7 +1,7 @@ <?php -$wb['interface_head_txt'] = 'Configurações da interface'; -$wb['interface_desc_txt'] = 'Alterar interface'; +$wb['interface_head_txt'] = 'Configurações da Interface'; +$wb['interface_desc_txt'] = 'Alterar a interface'; $wb['language_txt'] = 'Idioma'; -$wb['startmodule_txt'] = 'Módulo inicial'; +$wb['startmodule_txt'] = 'Módulo Inicial'; $wb['app_theme_txt'] = 'Tema'; ?> diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng index bf854b33b3..160a35dd0c 100644 --- a/interface/web/tools/lib/lang/br_resync.lng +++ b/interface/web/tools/lib/lang/br_resync.lng @@ -1,53 +1,53 @@ <?php -$wb['head_txt'] = 'Sincronismo'; -$wb['legend_txt'] = 'Sincronizar'; +$wb['head_txt'] = 'Ferramentas de Sincronização'; +$wb['legend_txt'] = 'Sincronização'; $wb['resync_all_txt'] = 'Todos os serviços'; $wb['resync_sites_txt'] = 'Sites'; -$wb['resync_ftp_txt'] = 'Contas ftp'; +$wb['resync_ftp_txt'] = 'Contas FTP'; $wb['resync_webdav_txt'] = 'Usuários webdav'; -$wb['resync_shell_txt'] = 'Usuários shell'; +$wb['resync_shell_txt'] = 'Usuários do shell'; $wb['resync_cron_txt'] = 'Tarefas no cron'; -$wb['resync_db_txt'] = 'Configurações de banco de dados de clientes'; -$wb['resync_mailbox_txt'] = 'e-mails'; -$wb['resync_mail_txt'] = 'DomÃnio de e-mails'; +$wb['resync_db_txt'] = 'Configurações do banco de dados de clientes'; +$wb['resync_mailbox_txt'] = 'Contas de e-mail'; +$wb['resync_mail_txt'] = 'DomÃnios de e-mail'; $wb['resync_mailfilter_txt'] = 'Filtros de e-mail'; $wb['resync_mailinglist_txt'] = 'Listas de e-mail'; $wb['resync_dns_txt'] = 'Registros dns'; -$wb['resync_vserver_txt'] = 'Servidores virtuais'; +$wb['resync_vserver_txt'] = 'Máquinas virtuais'; $wb['resync_client_txt'] = 'Clientes e revendas'; $wb['all_active_txt'] = 'Todos os servidores ativos'; $wb['all_active_mail_txt'] = 'Todos os servidores de e-mail ativos'; $wb['all_active_web_txt'] = 'Todos os servidores web ativos'; $wb['all_active_dns_txt'] = 'Todos os servidores dns ativos'; -$wb['all_active_file_txt'] = 'Todos servidores ftp ativos'; +$wb['all_active_file_txt'] = 'Todos os servidores ftp ativos'; $wb['all_active_db_txt'] = 'Todos os servidores de banco de dados ativos'; -$wb['all_active_vserver_txt'] = 'Todos servidores virtuais ativos'; -$wb['do_sites_txt'] = 'Sites sincronizados'; -$wb['do_ftp_txt'] = 'Usuários ftp sincronizados'; -$wb['do_webdav_txt'] = 'Usuários webdav sincronizados'; -$wb['do_shell_txt'] = 'Usuários shell sincronizados'; -$wb['do_cron_txt'] = 'Tarefas no cron sincronizadas'; -$wb['do_db_user_txt'] = 'Usuários de banco de dados sincronizados'; -$wb['do_db_txt'] = 'Banco de dados sincronizados'; -$wb['do_mail_txt'] = 'DomÃnio de e-mails sincronizados'; -$wb['do_mailbox_txt'] = 'Contas de e-mail sincronizadas'; -$wb['do_mail_alias_txt'] = 'Apelidos de e-mail sincronizados'; -$wb['do_mail_access_txt'] = 'Usuários remotos de e-mail sincronizados'; -$wb['do_mail_contentfilter_txt'] = 'Filtros de e-mail sincronizados'; -$wb['do_mail_userfilter_txt'] = 'Filtros de e-mail de usuários sincronizados'; -$wb['do_mailinglist_txt'] = 'Listas de e-mail sincronizadas'; -$wb['do_dns_txt'] = 'Zonas dns sincronizadas'; -$wb['do_vserver_txt'] = 'Servidores virtuais sincronizados'; -$wb['do_clients_txt'] = 'Clientes e revendas sincronizados'; -$wb['no_results_txt'] = 'Não encontrado'; +$wb['all_active_vserver_txt'] = 'Todos as máquinas virtuais ativas'; +$wb['do_sites_txt'] = 'Sites sincronizados.'; +$wb['do_ftp_txt'] = 'Usuários ftp sincronizados.'; +$wb['do_webdav_txt'] = 'Usuários webdav sincronizados.'; +$wb['do_shell_txt'] = 'Usuários do shell sincronizados.'; +$wb['do_cron_txt'] = 'Tarefas no cron sincronizadas.'; +$wb['do_db_user_txt'] = 'Usuários do banco de dados sincronizados.'; +$wb['do_db_txt'] = 'Banco de dados sincronizados.'; +$wb['do_mail_txt'] = 'DomÃnios de e-mal sincronizados.'; +$wb['do_mailbox_txt'] = 'Contas de e-mail sincronizadas.'; +$wb['do_mail_alias_txt'] = 'Alias de domÃnios de e-mail sincronizados.'; +$wb['do_mail_access_txt'] = 'Acessos de e-mail sincronizados.'; +$wb['do_mail_contentfilter_txt'] = 'Filtros de conteúdo de e-mail sincronizados.'; +$wb['do_mail_userfilter_txt'] = 'Filtros de e-mail sincronizados.'; +$wb['do_mailinglist_txt'] = 'Listas de e-mail sincronizadas.'; +$wb['do_dns_txt'] = 'Zonas DNS sincronizadas.'; +$wb['do_vserver_txt'] = 'Máquinas virtuais sincronizados.'; +$wb['do_clients_txt'] = 'Clientes e revendas sincronizados.'; +$wb['no_results_txt'] = 'Nada foi encontrado.'; $wb['btn_start_txt'] = 'Iniciar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$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'; +$wb['do_mail_spamfilter_policy_txt'] = 'Sincronizar polÃticas anti-spam'; +$wb['do_mail_spamfilter_txt'] = 'PolÃticas anti-spam sincronizadas.'; +$wb['do_mailget_txt'] = 'Contas de busca sincronizadas.'; +$wb['resync_mailget_txt'] = 'Sincronizar contas de busca.'; +$wb['resync_mailtransport_txt'] = 'Sincronizar transportes de e-mail'; +$wb['resync_mailrelay_txt'] = 'Sincronizar retransmissão de e-mail'; +$wb['do_mailtransport_txt'] = 'Transportes de e-mail sincronizados.'; +$wb['do_mailrelay_txt'] = 'Retransmissões de e-mail sincronizados.'; ?> diff --git a/interface/web/tools/lib/lang/br_tpl_default.lng b/interface/web/tools/lib/lang/br_tpl_default.lng index 1e09eea22c..30ae32b17a 100644 --- a/interface/web/tools/lib/lang/br_tpl_default.lng +++ b/interface/web/tools/lib/lang/br_tpl_default.lng @@ -1,7 +1,7 @@ <?php -$wb['list_head_txt'] = 'Configurações do tema padrão'; +$wb['list_head_txt'] = 'Configuração padrão de temas'; $wb['list_desc_txt'] = 'Alterar opções especÃficas do tema padrão'; -$wb['no_settings_txt'] = 'Não existem configurações para o tema padrão.'; +$wb['no_settings_txt'] = 'Não existe configurações para o tema padrão.'; $wb['btn_start_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Voltar'; ?> diff --git a/interface/web/tools/lib/lang/br_usersettings.lng b/interface/web/tools/lib/lang/br_usersettings.lng index 8fccd26852..cb3ae2dc4f 100644 --- a/interface/web/tools/lib/lang/br_usersettings.lng +++ b/interface/web/tools/lib/lang/br_usersettings.lng @@ -2,11 +2,11 @@ $wb['password_txt'] = 'Senha'; $wb['password_strength_txt'] = 'Dificuldade da senha'; $wb['language_txt'] = 'Idioma'; -$wb['password_mismatch'] = 'As senhas não coincidem'; -$wb['Form to edit the user password and language.'] = 'Alterar idioma e senha'; +$wb['password_mismatch'] = 'A senha e confirmação da senha não coincidem.'; +$wb['Form to edit the user password and language.'] = 'Editar senha e idioma do usuário'; $wb['Settings'] = 'Configurações'; -$wb['generate_password_txt'] = 'Gerar senha'; -$wb['repeat_password_txt'] = 'Repetir senha'; -$wb['password_mismatch_txt'] = 'A senhas não coincidem.'; -$wb['password_match_txt'] = 'A senhas coincidem.'; +$wb['generate_password_txt'] = 'Gerar Senha'; +$wb['repeat_password_txt'] = 'Repetir Senha'; +$wb['password_mismatch_txt'] = 'As senhas não coincidem.'; +$wb['password_match_txt'] = 'As senhas coincidem.'; ?> diff --git a/interface/web/tools/lib/lang/tr.lng b/interface/web/tools/lib/lang/tr.lng index 5782a862cf..6115b8a7a3 100644 --- a/interface/web/tools/lib/lang/tr.lng +++ b/interface/web/tools/lib/lang/tr.lng @@ -4,10 +4,10 @@ $wb['Settings'] = 'Ayarlar'; $wb['ISPConfig Tools'] = 'ISPConfig Araçları'; $wb['Interface'] = 'Arayüz'; $wb['Password and Language'] = 'Parola ve Dil'; -$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin deÄŸiÅŸtirilmesini saÄŸlayarak DNS kayıtları eÅŸleÅŸtirmesini baÅŸlatır.'; -$wb['Sync Tools'] = 'EÅŸleÅŸtirme Araçları'; -$wb['Resync'] = 'EÅŸleÅŸtirme'; -$wb['Import'] = 'Al'; -$wb['ISPConfig 3 mail'] = 'ISPConfig 3 postası'; +$wb['ispconfig_tools_note'] = 'Bu modül parola ve dilin deÄŸiÅŸtirilmesini saÄŸlayarak DNS kayıtları eÅŸitlemesini baÅŸlatır.'; +$wb['Sync Tools'] = 'EÅŸitleme Araçları'; +$wb['Resync'] = 'EÅŸitleme'; +$wb['Import'] = 'İçe Aktar'; +$wb['ISPConfig 3 mail'] = 'ISPConfig 3 E-postaları'; $wb['PDNS Tupa'] = 'PowerDNS Tupa Yöneticisi'; ?> diff --git a/interface/web/tools/lib/lang/tr_import_ispconfig.lng b/interface/web/tools/lib/lang/tr_import_ispconfig.lng index 7aec6bd470..67c98edbe7 100644 --- a/interface/web/tools/lib/lang/tr_import_ispconfig.lng +++ b/interface/web/tools/lib/lang/tr_import_ispconfig.lng @@ -1,23 +1,24 @@ <?php -$wb['head_txt'] = 'ISPConfig 3 E-posta Ayarları Alma'; -$wb['legend_txt'] = 'Uzak sunucu baÄŸlantı bilgileri'; -$wb['legend2_txt'] = 'E-posta alan adı alınsın'; -$wb['resync_sites_txt'] = 'Web siteleri eÅŸleÅŸtirilsin'; -$wb['resync_ftp_txt'] = 'FTP kullanıcıları eÅŸleÅŸtirilsin'; -$wb['resync_shell_txt'] = 'Kabuk kullanıcıları eÅŸleÅŸtirilsin'; -$wb['resync_cron_txt'] = 'Zamanlanmış görevler eÅŸleÅŸtirilsin'; -$wb['resync_db_txt'] = 'Müşteri veritabanı ayarları eÅŸleÅŸtirilsin'; -$wb['resync_mailbox_txt'] = 'Posta kutuları eÅŸleÅŸtirilsin'; -$wb['resync_dns_txt'] = 'DNS kayıtları eÅŸleÅŸtirilsin'; -$wb['btn_start_txt'] = 'Almayı BaÅŸlat'; +$wb['head_txt'] = 'ISPConfig 3 E-posta Ayarlarını İçe Aktarma'; +$wb['legend_txt'] = 'Uzak Sunucu BaÄŸlantı Bilgileri'; +$wb['legend2_txt'] = 'E-posta etki alanı içe aktarılsın'; +$wb['resync_sites_txt'] = 'Web Siteleri EÅŸitlensin'; +$wb['resync_ftp_txt'] = 'FTP Kullanıcıları EÅŸitlensin'; +$wb['resync_shell_txt'] = 'Kabuk Kullanıcıları EÅŸitlensin'; +$wb['resync_cron_txt'] = 'Zamanlanmış Görevler EÅŸitlensin'; +$wb['resync_db_txt'] = 'Müşteri Veritabanı Ayarları EÅŸitlensin'; +$wb['resync_mailbox_txt'] = 'E-posta Kutuları EÅŸitlensin'; +$wb['resync_dns_txt'] = 'DNS Kayıtları EÅŸitlensin'; +$wb['btn_start_txt'] = 'İçe Aktarmayı BaÅŸlat'; $wb['btn_connect_txt'] = 'Uzak Sunucuya BaÄŸlan'; $wb['btn_cancel_txt'] = 'Geri'; $wb['client_group_id_txt'] = 'Yerel Müşteri'; -$wb['mail_domain_txt'] = 'Uzak e-posta alan adı'; -$wb['import_mailbox_txt'] = 'Posta kutusunu al'; -$wb['import_aliasdomain_txt'] = 'Takma alan adını al'; -$wb['import_alias_txt'] = 'Takma e-postayı al'; -$wb['import_forward_txt'] = 'Yönlendirmeyi al'; -$wb['import_user_filter_txt'] = 'Kullanıcı süzgecini al'; -$wb['import_spamfilter_txt'] = 'Önemsiz posta süzgecini al'; +$wb['mail_domain_txt'] = 'Uzak E-posta Etki Alanı'; +$wb['import_mailbox_txt'] = 'E-posta Kutusu İçe Aktarılsın'; +$wb['import_aliasdomain_txt'] = 'Takma Etki Alanı İçe Aktarılsın'; +$wb['import_alias_txt'] = 'Takma E-posta İçe Aktarılsın'; +$wb['import_forward_txt'] = 'Yönlendirme İçe Aktarılsın'; +$wb['import_user_filter_txt'] = 'Kullanıcı Süzgeci İçe Aktarılsın'; +$wb['import_spamfilter_txt'] = 'Önemsiz Ä°leti Süzgeci İçe Aktarılsın'; + ?> diff --git a/interface/web/tools/lib/lang/tr_import_vpopmail.lng b/interface/web/tools/lib/lang/tr_import_vpopmail.lng index 66fe56da1c..f0c05ea741 100644 --- a/interface/web/tools/lib/lang/tr_import_vpopmail.lng +++ b/interface/web/tools/lib/lang/tr_import_vpopmail.lng @@ -1,7 +1,8 @@ <?php -$wb['head_txt'] = 'Import email configuration from Vpopmail'; -$wb['legend_txt'] = 'Remote database server connection details'; -$wb['btn_start_txt'] = 'Start Import'; -$wb['btn_connect_txt'] = 'Connect to remote server'; -$wb['btn_cancel_txt'] = 'Cancel'; +$wb['head_txt'] = 'Vpopmail e-posta yapılandırmasını içe aktar'; +$wb['legend_txt'] = 'Uzak veritabanı sunucusu baÄŸlantı bilgileri'; +$wb['btn_start_txt'] = 'İçe Aktarmayı BaÅŸlat'; +$wb['btn_connect_txt'] = 'Uzak Sunucuya BaÄŸlan'; +$wb['btn_cancel_txt'] = 'Ä°ptal'; + ?> diff --git a/interface/web/tools/lib/lang/tr_index.lng b/interface/web/tools/lib/lang/tr_index.lng index d8ea10cf55..6d9a6c361c 100644 --- a/interface/web/tools/lib/lang/tr_index.lng +++ b/interface/web/tools/lib/lang/tr_index.lng @@ -1,4 +1,4 @@ <?php $wb['page_head_txt'] = 'ISPConfig Araçları'; -$wb['page_desc_txt'] = 'Kullanıcı ayarlarını deÄŸiÅŸtirme'; +$wb['page_desc_txt'] = 'Kullanıcı Ayarlarını DeÄŸiÅŸtirme'; ?> diff --git a/interface/web/tools/lib/lang/tr_interface.lng b/interface/web/tools/lib/lang/tr_interface.lng index 2ff88a976e..2384c71107 100644 --- a/interface/web/tools/lib/lang/tr_interface.lng +++ b/interface/web/tools/lib/lang/tr_interface.lng @@ -1,6 +1,6 @@ <?php $wb['interface_head_txt'] = 'Arayüz Ayarları'; -$wb['interface_desc_txt'] = 'Arayüzü düzenleyin'; +$wb['interface_desc_txt'] = 'Arayüzü Düzenle'; $wb['language_txt'] = 'Dil'; $wb['startmodule_txt'] = 'BaÅŸlangıç modülü'; $wb['app_theme_txt'] = 'Tasarım'; diff --git a/interface/web/tools/lib/lang/tr_resync.lng b/interface/web/tools/lib/lang/tr_resync.lng index 71ebb0dda2..7cdfa91b9e 100644 --- a/interface/web/tools/lib/lang/tr_resync.lng +++ b/interface/web/tools/lib/lang/tr_resync.lng @@ -1,53 +1,53 @@ <?php -$wb['head_txt'] = 'EÅŸleÅŸtirme Aracı'; -$wb['legend_txt'] = 'EÅŸleÅŸtirme'; -$wb['resync_sites_txt'] = 'Web siteleri eÅŸleÅŸtirilsin'; -$wb['resync_ftp_txt'] = 'FTP kullanıcıları eÅŸleÅŸtirilsin'; -$wb['resync_shell_txt'] = 'Kabuk kullanıcıları eÅŸleÅŸtirilsin'; -$wb['resync_cron_txt'] = 'Zamanlanmış görevler eÅŸleÅŸtirilsin'; -$wb['resync_db_txt'] = 'Müşteri veritabanı ayarları eÅŸleÅŸtirilsin'; -$wb['resync_mailbox_txt'] = 'Posta kutuları eÅŸleÅŸtirilsin'; -$wb['resync_dns_txt'] = 'DNS kayıtları eÅŸleÅŸtirilsin'; -$wb['resync_client_txt'] = 'Müşteri kayıtları eÅŸleÅŸtirilsin'; -$wb['btn_start_txt'] = 'EÅŸleÅŸtir'; +$wb['head_txt'] = 'EÅŸitleme Aracı'; +$wb['legend_txt'] = 'EÅŸitleme'; +$wb['resync_all_txt'] = 'Tüm Hizmetler'; +$wb['resync_sites_txt'] = 'Web Siteleri EÅŸitlensin'; +$wb['resync_ftp_txt'] = 'FTP Kullanıcıları EÅŸitlensin'; +$wb['resync_webdav_txt'] = 'WebDAV Kullanıcıları'; +$wb['resync_shell_txt'] = 'Kabuk Kullanıcıları EÅŸitlensin'; +$wb['resync_cron_txt'] = 'Zamanlanmış Görevler EÅŸitlensin'; +$wb['resync_db_txt'] = 'Müşteri Veritabanı Ayarları EÅŸitlensin'; +$wb['resync_mailbox_txt'] = 'E-posta Kutuları EÅŸitlensin'; +$wb['resync_mail_txt'] = 'E-posta Etki Alanları'; +$wb['resync_mailfilter_txt'] = 'E-posta Süzgeci'; +$wb['resync_mailinglist_txt'] = 'E-posta Listesi'; +$wb['resync_dns_txt'] = 'DNS Kayıtları EÅŸitlensin'; +$wb['resync_vserver_txt'] = 'sSunucu'; +$wb['resync_client_txt'] = 'Müşteri Kayıtları EÅŸitlensin'; +$wb['all_active_txt'] = 'Tüm Etkin Sunucular'; +$wb['all_active_mail_txt'] = 'Tüm Etkin E-posta Sunucuları'; +$wb['all_active_web_txt'] = 'Tüm Etkin Web Sunucuları'; +$wb['all_active_dns_txt'] = 'Tüm Etkin DNS Sunucuları'; +$wb['all_active_file_txt'] = 'Tüm Etkin Dosya Sunucuları'; +$wb['all_active_db_txt'] = 'Tüm Etkin Veritabanı Sunucuları'; +$wb['all_active_vserver_txt'] = 'Tüm Etkin Sanal Sunucular'; +$wb['do_sites_txt'] = 'EÅŸitlenen Web Sitesi'; +$wb['do_ftp_txt'] = 'EÅŸitlenen FTP Kullanıcısı'; +$wb['do_webdav_txt'] = 'EÅŸitlenen WebDav Kullanıcısı'; +$wb['do_shell_txt'] = 'EÅŸitlenen Kabuk Kullanıcısı'; +$wb['do_cron_txt'] = 'EÅŸitlenen Zamanlanmış Görev'; +$wb['do_db_user_txt'] = 'EÅŸitlenen Veritabanı Kullanıcısı'; +$wb['do_db_txt'] = 'EÅŸitlenen Veritabanı'; +$wb['do_mail_txt'] = 'EÅŸitlenen E-posta Etki Alanı'; +$wb['do_mailbox_txt'] = 'EÅŸitlenen E-posta Kutusu'; +$wb['do_mail_alias_txt'] = 'EÅŸitlenen Takma Ad'; +$wb['do_mail_access_txt'] = 'EÅŸitlenen E-posta EriÅŸimi'; +$wb['do_mail_contentfilter_txt'] = 'EÅŸitlenen İçerik Süzgeci'; +$wb['do_mail_userfilter_txt'] = 'EÅŸitlenen E-posta Kullanıcı Süzgeci'; +$wb['do_mailinglist_txt'] = 'EÅŸitlenen E-posta Listesi'; +$wb['do_dns_txt'] = 'EÅŸitlenen DNS Bölgesi'; +$wb['do_vserver_txt'] = 'EÅŸitlenen Sanal Sunucu'; +$wb['do_clients_txt'] = 'EÅŸitlenen Müşteri ve Bayiler'; +$wb['no_results_txt'] = 'Herhangi bir ÅŸey bulunamadı'; +$wb['btn_start_txt'] = 'EÅŸitle'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['resync_all_txt'] = 'All services'; -$wb['resync_webdav_txt'] = 'WebDAV-Users'; -$wb['resync_mail_txt'] = 'Maildomains'; -$wb['resync_mailfilter_txt'] = 'Mailfilter'; -$wb['resync_mailinglist_txt'] = 'Mailinglist'; -$wb['resync_vserver_txt'] = 'vServer'; -$wb['all_active_txt'] = 'All active server'; -$wb['all_active_mail_txt'] = 'All active Mail-Server'; -$wb['all_active_web_txt'] = 'All active Web-Server'; -$wb['all_active_dns_txt'] = 'All active DNS-Server'; -$wb['all_active_file_txt'] = 'All active File-Server'; -$wb['all_active_db_txt'] = 'All active Database-Server'; -$wb['all_active_vserver_txt'] = 'All active vServer'; -$wb['do_sites_txt'] = 'Resynced Website'; -$wb['do_ftp_txt'] = 'Resynced FTP user'; -$wb['do_webdav_txt'] = 'Resynced WebDav user'; -$wb['do_shell_txt'] = 'Resynced Shell user'; -$wb['do_cron_txt'] = 'Resynced Cronjob'; -$wb['do_db_user_txt'] = 'Resynced Database User'; -$wb['do_db_txt'] = 'Resynced Database'; -$wb['do_mail_txt'] = 'Resynced Maildomain'; -$wb['do_mailbox_txt'] = 'Resynced Mailbox'; -$wb['do_mail_alias_txt'] = 'Resynced Alias'; -$wb['do_mail_access_txt'] = 'Resynced Mail access'; -$wb['do_mail_contentfilter_txt'] = 'Resynced Content Filter'; -$wb['do_mail_userfilter_txt'] = 'Resynced Mail User Filter'; -$wb['do_mailinglist_txt'] = 'Resynced Mailinglist'; -$wb['do_dns_txt'] = 'Resynced DNS zone'; -$wb['do_vserver_txt'] = 'Resynced vServer'; -$wb['do_clients_txt'] = 'Resynced clients and reseller'; -$wb['no_results_txt'] = 'Nothing found'; -$wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies'; -$wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter'; -$wb['do_mailget_txt'] = 'Resynced Fetchmail'; +$wb['do_mail_spamfilter_policy_txt'] = 'EÅŸitlenen Önemsiz Ä°leti Süzgeci Ä°lkeleri'; +$wb['do_mail_spamfilter_txt'] = 'EÅŸitlenen Önemsiz Ä°leti Süzgeci'; +$wb['do_mailget_txt'] = 'EÅŸitlenen 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'; +$wb['resync_mailtransport_txt'] = 'E-posta Gönderici'; +$wb['resync_mailrelay_txt'] = 'E-posta Aktarıcı'; +$wb['do_mailtransport_txt'] = 'E-posta Gönderici EÅŸitlendi'; +$wb['do_mailrelay_txt'] = 'E-posta Aktarıcı EÅŸitlendi'; ?> diff --git a/interface/web/tools/lib/lang/tr_usersettings.lng b/interface/web/tools/lib/lang/tr_usersettings.lng index 60c7679b9f..fa2eff63d7 100644 --- a/interface/web/tools/lib/lang/tr_usersettings.lng +++ b/interface/web/tools/lib/lang/tr_usersettings.lng @@ -1,12 +1,12 @@ <?php -$wb['password_strength_txt'] = 'Parola Güçlüğü'; +$wb['password_txt'] = 'Parola'; +$wb['password_strength_txt'] = 'Parola ZorluÄŸu'; $wb['language_txt'] = 'Dil'; $wb['password_mismatch'] = 'Parola ile onayı aynı deÄŸil.'; $wb['Form to edit the user password and language.'] = 'Parola ve dil ayarlarını deÄŸiÅŸtirme formu.'; $wb['Settings'] = 'Ayarlar'; -$wb['generate_password_txt'] = 'Parola OluÅŸtur'; +$wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; -$wb['password_txt'] = 'Password'; ?> diff --git a/interface/web/vm/lib/lang/br.lng b/interface/web/vm/lib/lang/br.lng index 513a018bf5..ae59107a78 100644 --- a/interface/web/vm/lib/lang/br.lng +++ b/interface/web/vm/lib/lang/br.lng @@ -1,7 +1,7 @@ <?php -$wb['Virtual Servers'] = 'Servidores virtuais'; -$wb['OS Templates'] = 'Gabaritos do SO'; -$wb['VM Templates'] = 'Gabaritos de máquina virtual'; +$wb['Virtual Servers'] = 'Máquinas virtuais'; +$wb['OS Templates'] = 'Gabaritos de SO'; +$wb['VM Templates'] = 'Gabaritos de VM'; $wb['IP addresses'] = 'Endereço IP'; $wb['OpenVZ'] = 'OpenVZ'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_action.lng b/interface/web/vm/lib/lang/br_openvz_action.lng index a301f51d0e..cc191c14e9 100644 --- a/interface/web/vm/lib/lang/br_openvz_action.lng +++ b/interface/web/vm/lib/lang/br_openvz_action.lng @@ -1,16 +1,16 @@ <?php -$wb['head_txt'] = 'Ações do servidor virtual para máquinas virtuais:'; +$wb['head_txt'] = 'Ações do virtualizador:'; $wb['start_txt'] = 'Iniciar máquina virtual'; $wb['stop_txt'] = 'Parar máquina virtual'; $wb['restart_txt'] = 'Reiniciar máquina virtual'; -$wb['ostemplate_txt'] = 'Adicionar gabarito de SO'; -$wb['ostemplate_desc_txt'] = '(exemplo: debian-6.0-i386-custom)'; +$wb['ostemplate_txt'] = 'Adicionar gabarito de sistema operacional'; +$wb['ostemplate_desc_txt'] = '(exemplo: debian-9.0-amd64-custom)'; $wb['btn_save_txt'] = 'Executar ação selecionada'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['start_exec_txt'] = 'O comando -iniciar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja iniciada.'; -$wb['stop_exec_txt'] = 'O comando -parar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual pare.'; -$wb['restart_exec_txt'] = 'O comando -reiniciar- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja reiniciada.'; -$wb['ostemplate_name_error'] = 'O gabarito de SO contém caracteres não permitidos.'; -$wb['ostemplate_name_unique_error'] = 'Já existe um gabarito de SO com este nome.'; -$wb['ostemplate_exec_txt'] = 'O comando -criar máquina virtual- foi enviado ao servidor servidor de máquinas virtuais. Espere alguns minutos até que a máquina virtual seja criada.'; +$wb['start_exec_txt'] = 'O comando "Iniciar" foi enviado para o virtualizador. Aguarde alguns instantes para a máquina virtual carregar.'; +$wb['stop_exec_txt'] = 'O comando "Parar" foi enviado para o virtualizador. Aguarde alguns instantes para a máquina virtual parar.'; +$wb['restart_exec_txt'] = 'O comando "Reiniciar" foi enviando para o virtualizador. Aguarde alguns instantes para a máquina virtual reiniciar.'; +$wb['ostemplate_name_error'] = 'O gabarito de sistema operacional contém caracteres não permitidos.'; +$wb['ostemplate_name_unique_error'] = 'Já existe um gabarito de sistema operacional com o mesmo nome.'; +$wb['ostemplate_exec_txt'] = 'O comando "Adicionar gabarito de SO" foi enviado para o virtualizador. Aguarde alguns instantes para o gabarito ser adicionado.'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_ip.lng b/interface/web/vm/lib/lang/br_openvz_ip.lng index 61fbd6ed68..612c391c94 100644 --- a/interface/web/vm/lib/lang/br_openvz_ip.lng +++ b/interface/web/vm/lib/lang/br_openvz_ip.lng @@ -1,8 +1,8 @@ <?php -$wb['server_id_txt'] = 'Servidor servidor'; +$wb['server_id_txt'] = 'Virtualizador'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['vm_id_txt'] = 'Servidor virtual'; -$wb['reserved_txt'] = 'Reservedo'; +$wb['vm_id_txt'] = 'Máquina virtual'; +$wb['reserved_txt'] = 'Reservado'; $wb['ip_error_wrong'] = 'Por favor, insira um endereço IPv4 válido.'; $wb['ip_error_unique'] = 'O endereço IP já existe.'; $wb['IP address'] = 'Endereço IP'; diff --git a/interface/web/vm/lib/lang/br_openvz_ip_list.lng b/interface/web/vm/lib/lang/br_openvz_ip_list.lng index 99ddfbc7d8..f9a9f33622 100644 --- a/interface/web/vm/lib/lang/br_openvz_ip_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_ip_list.lng @@ -1,7 +1,7 @@ <?php $wb['list_head_txt'] = 'Endereço IP do OpenVZ'; $wb['server_id_txt'] = 'Servidor'; +$wb['vm_id_txt'] = 'VM'; $wb['ip_address_txt'] = 'Endereço IP'; $wb['reserved_txt'] = 'Reservado'; -$wb['vm_id_txt'] = 'VPS'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng index edce912056..ea76c915b7 100644 --- a/interface/web/vm/lib/lang/br_openvz_ostemplate.lng +++ b/interface/web/vm/lib/lang/br_openvz_ostemplate.lng @@ -1,11 +1,11 @@ <?php $wb['template_name_txt'] = 'Nome do gabarito'; -$wb['template_file_txt'] = 'Arquivo do gabarito'; -$wb['server_id_txt'] = 'Servidor'; +$wb['template_file_txt'] = 'Nome do arquivo'; +$wb['server_id_txt'] = 'Virtualizador'; $wb['allservers_txt'] = 'DisponÃvel em todos os servidores'; $wb['active_txt'] = 'Ativo'; $wb['description_txt'] = 'Descrição'; $wb['template_name_error_empty'] = 'Nome do gabarito está em branco.'; -$wb['template_file_error_empty'] = 'Nome o arquivo do gabarito está em branco.'; +$wb['template_file_error_empty'] = 'Nome do arquivo está em branco.'; $wb['Template'] = 'Gabarito'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng index 04e94a889d..9e60baf179 100644 --- a/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_ostemplate_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Gabarito do SO openVZ'; +$wb['list_head_txt'] = 'Gabarito de sistema operacional'; $wb['active_txt'] = 'Ativo'; -$wb['template_name_txt'] = 'Nome'; -$wb['server_id_txt'] = 'Servidor'; +$wb['template_name_txt'] = 'Nome do gabarito'; +$wb['server_id_txt'] = 'Virtualizador'; $wb['allservers_txt'] = 'DisponÃvel em todos os servidores'; $wb['ostemplate_id_txt'] = 'ID'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_template.lng b/interface/web/vm/lib/lang/br_openvz_template.lng index 4190a31f9c..23d4c9b6af 100644 --- a/interface/web/vm/lib/lang/br_openvz_template.lng +++ b/interface/web/vm/lib/lang/br_openvz_template.lng @@ -1,97 +1,97 @@ <?php -$wb['numproc_txt'] = 'Nº de Processadores'; -$wb['numtcpsock_txt'] = 'Nº de soquetes TCP'; -$wb['numothersock_txt'] = 'Nº de outros soquetes'; -$wb['vmguarpages_txt'] = 'Páginas de guarda'; -$wb['kmemsize_txt'] = 'Kmemsize'; -$wb['tcpsndbuf_txt'] = 'Tcpsndbuf'; -$wb['tcprcvbuf_txt'] = 'Tcprcvbuf'; -$wb['othersockbuf_txt'] = 'Othersockbuf'; -$wb['dgramrcvbuf_txt'] = 'Dgramrcvbuf'; -$wb['oomguarpages_txt'] = 'Oomguarpages'; -$wb['privvmpages_txt'] = 'Privvmpages'; -$wb['lockedpages_txt'] = 'Lockedpages'; -$wb['shmpages_txt'] = 'Shmpages'; -$wb['physpages_txt'] = 'Physpages'; -$wb['numfile_txt'] = 'Numfile'; -$wb['avnumproc_txt'] = 'Avnumproc'; -$wb['numflock_txt'] = 'Numflock'; -$wb['numpty_txt'] = 'Numpty'; -$wb['numsiginfo_txt'] = 'Numsiginfo'; -$wb['dcachesize_txt'] = 'Dcachesize'; -$wb['numiptent_txt'] = 'Numiptent'; -$wb['swappages_txt'] = 'Swappages'; -$wb['hostname_txt'] = 'Nome do servidor'; -$wb['nameserver_txt'] = 'Servidor(es) de nome'; -$wb['nameserver_desc_txt'] = '(separado por espaços em branco)'; +$wb['numproc_txt'] = 'Número de Processadores'; +$wb['numtcpsock_txt'] = 'Número de sockets tcp'; +$wb['numothersock_txt'] = '(numothersock)'; +$wb['vmguarpages_txt'] = 'Páginas de guarda da vm (vmguardpages)'; +$wb['kmemsize_txt'] = 'Tamanho da memória (Kmemsize)'; +$wb['tcpsndbuf_txt'] = 'Buffers tcp de envio (tcpsndbuf)'; +$wb['tcprcvbuf_txt'] = 'Buffers tcp de recepção (tcprcvbuf)'; +$wb['othersockbuf_txt'] = 'Outros buffers (othersockbuf)'; +$wb['dgramrcvbuf_txt'] = 'Buffers datagrama de envio (dgramrcvbuf)'; +$wb['oomguarpages_txt'] = '(oomguarpages)'; +$wb['privvmpages_txt'] = 'Tamanho da memória alocada para aplicações, em páginas (privvmpages)'; +$wb['lockedpages_txt'] = 'Páginas bloqueadas (lockedpages)'; +$wb['shmpages_txt'] = '(Shmpages)'; +$wb['physpages_txt'] = '(Physpages)'; +$wb['numfile_txt'] = 'Número de arquivos'; +$wb['avnumproc_txt'] = 'Média de processadores'; +$wb['numflock_txt'] = 'Número de arquivos bloqueados (numflock)'; +$wb['numpty_txt'] = 'Número de PTY (numpty)'; +$wb['numsiginfo_txt'] = 'Número de siginfo (informações de geração de sinal)'; +$wb['dcachesize_txt'] = 'Tamanho do cache (dcachesize)'; +$wb['numiptent_txt'] = 'Número de endereços IP (numiptent)'; +$wb['swappages_txt'] = 'Páginas de troca (swappages)'; +$wb['hostname_txt'] = 'Nome do host'; +$wb['nameserver_txt'] = 'Servidor(es) dns'; +$wb['nameserver_desc_txt'] = '(separado por espaço)'; $wb['capability_txt'] = 'Capacidade'; $wb['template_name_txt'] = 'Nome do gabarito'; -$wb['diskspace_txt'] = 'Espaço em disco'; +$wb['diskspace_txt'] = 'Espaço do disco'; $wb['ram_txt'] = 'RAM (garantida)'; $wb['ram_burst_txt'] = 'RAM (rajada)'; -$wb['cpu_units_txt'] = 'Unidades de CPU'; -$wb['cpu_num_txt'] = 'Cores de CPU'; -$wb['cpu_limit_txt'] = 'Limite de CPU %'; +$wb['cpu_units_txt'] = 'Número de cores da CPU'; +$wb['cpu_num_txt'] = 'Número de CPUs'; +$wb['cpu_limit_txt'] = 'Limite da CPU %'; $wb['io_priority_txt'] = 'Prioridade de E/S'; $wb['active_txt'] = 'Ativo'; $wb['description_txt'] = 'Descrição'; -$wb['numproc_desc_txt'] = 'Número de processos e tarefas.'; -$wb['numtcpsock_desc_txt'] = 'Número de soquetes TCP.'; -$wb['numothersock_desc_txt'] = 'Número de soquetes não TCP.'; -$wb['vmguarpages_desc_txt'] = 'Alocação de memória garantida, em páginas.'; -$wb['kmemsize_desc_txt'] = 'Tamanho da memória sem swap no kernel, alocada para processos neste contêiner.'; -$wb['tcpsndbuf_desc_txt'] = 'Tamanho total de buffers TCP enviados.'; -$wb['tcprcvbuf_desc_txt'] = 'Tamanho total de buffers TCP recebidos.'; -$wb['othersockbuf_desc_txt'] = 'Tamanho total de soquetes de UNIX-domain UDP e outros protocolos de datagrama que enviam buffers..'; -$wb['dgramrcvbuf_desc_txt'] = 'Receber buffers de UDP e outros protocolos de datagrama.'; -$wb['oomguarpages_desc_txt'] = 'A garantia de memória para o caso de rajadas é superior à reserva (out-of-memory), em páginas.'; +$wb['numproc_desc_txt'] = 'Número de processos e threads.'; +$wb['numtcpsock_desc_txt'] = 'Número de sockets tcp.'; +$wb['numothersock_desc_txt'] = 'Número de outros sockets.'; +$wb['vmguarpages_desc_txt'] = 'Garantia de alocação de memória, em páginas.'; +$wb['kmemsize_desc_txt'] = 'Tamanho da memória do kernel não cambiável, alocada para processos neste contêiner.'; +$wb['tcpsndbuf_desc_txt'] = 'Tamanho de buffers de envio tcp.'; +$wb['tcprcvbuf_desc_txt'] = 'Tamanho de buffers de recepção tcp.'; +$wb['othersockbuf_desc_txt'] = 'Tamanho de buffers de socket de domÃnio unix, udp e outros buffers de envio de protocolos de datagrama.'; +$wb['dgramrcvbuf_desc_txt'] = 'Tamanho de buffers de recepção udp e outros protocolos de datagrama.'; +$wb['oomguarpages_desc_txt'] = 'Quantidade garantida de memória para o caso da memória estar "com excesso de reserva" (garantia de eliminação de falta de memória), em páginas.'; $wb['privvmpages_desc_txt'] = 'Limite de alocação de memória, em páginas.'; -$wb['lockedpages_desc_txt'] = 'Páginas de processo não tem permissão para troca (páginas bloqueadas por mlock(2)).'; -$wb['shmpages_desc_txt'] = 'Tamanho total da memória compartilhada (IPC, mapeamentos anônimos compartilhados e objetos tmpfs), em páginas.'; -$wb['physpages_desc_txt'] = 'Número total de páginas de RAM, usada pelos processos.'; +$wb['lockedpages_desc_txt'] = 'Páginas de processos que não podem ser trocadas (páginas bloqueadas por mlock(2)).'; +$wb['shmpages_desc_txt'] = 'Tamanho da memória compartilhada (ISPC, mapeamentos anônimos compartilhados e objetos tmpfs), em páginas.'; +$wb['physpages_desc_txt'] = 'Número total de páginas RAM usadas pelos processos'; $wb['numfile_desc_txt'] = 'Número de arquivos abertos.'; $wb['numflock_desc_txt'] = 'Número de arquivos bloqueados.'; -$wb['numpty_desc_txt'] = 'Número de pseudo terminais.'; -$wb['numsiginfo_desc_txt'] = 'Número de estruturas de siginfo.'; -$wb['dcachesize_desc_txt'] = 'Tamanho total de dentry e estruturas inode bloqueados na memória.'; -$wb['numiptent_desc_txt'] = 'Número de entradas no firewall (Filtros de pacotes IP).'; -$wb['swappages_desc_txt'] = 'Quantidade de área de troca a ser exibida no container.'; -$wb['create_dns_txt'] = 'Adicionar dns para servidor'; -$wb['template_name_error_empty'] = 'Nome do gabarito está em branco.'; -$wb['diskspace_error_empty'] = 'Espaço do disco está em branco.'; +$wb['numpty_desc_txt'] = 'Número de pseudo-terminais (tty).'; +$wb['numsiginfo_desc_txt'] = 'Número de estruturas siginfo.'; +$wb['dcachesize_desc_txt'] = 'Tamanho de estruturas dentry e inode bloqueadas na memória.'; +$wb['numiptent_desc_txt'] = 'Número total de entradas NETFILTER (filtragem de pacotes IP).'; +$wb['swappages_desc_txt'] = 'Quantidade de espaço de troca a ser exibido no contêiner.'; +$wb['create_dns_txt'] = 'Adicionar dns para o nome do host'; +$wb['template_name_error_empty'] = 'O nome do gabarito está em branco.'; +$wb['diskspace_error_empty'] = 'O tamanho do disco está em branco.'; $wb['ram_error_empty'] = 'RAM (garantida) está em branco.'; $wb['ram_burst_error_empty'] = 'RAM (rajada) está em branco.'; -$wb['cpu_units_error_empty'] = 'Unidades de CPU está em branco.'; -$wb['cpu_num_error_empty'] = 'Cores de CPU está em branco.'; -$wb['cpu_limit_error_empty'] = 'CPU limit % está em branco.'; +$wb['cpu_units_error_empty'] = 'Número de cores da CPU está em branco.'; +$wb['cpu_num_error_empty'] = 'Número de CPU está em branco.'; +$wb['cpu_limit_error_empty'] = 'Limite da CPU está em branco.'; $wb['io_priority_error_empty'] = 'Prioridade de E/S está em branco.'; -$wb['template_nameserver_error_empty'] = 'Servidor(es) de nome está em branco.'; -$wb['numproc_error_empty'] = 'N° de processadores está em branco.'; -$wb['numtcpsock_error_empty'] = 'N° de soquetes TCP está em branco.'; -$wb['numothersock_error_empty'] = 'N° de outros soquetes está em branco.'; -$wb['vmguarpages_error_empty'] = 'Páginas de guarda está em branco.'; +$wb['template_nameserver_error_empty'] = 'Servidor(es) dns está em branco.'; +$wb['numproc_error_empty'] = 'Número de processadores está em branco.'; +$wb['numtcpsock_error_empty'] = 'Número de sockets tcp está em branco.'; +$wb['numothersock_error_empty'] = 'Número de outros sockets está em branco.'; +$wb['vmguarpages_error_empty'] = 'Página de guarda da vm está em branco.'; $wb['kmemsize_error_empty'] = 'Kmemsize está em branco.'; -$wb['tcpsndbuf_error_empty'] = 'Tcpsndbuf está em branco.'; -$wb['tcprcvbuf_error_empty'] = 'Tcprcvbuf está em branco.'; -$wb['othersockbuf_error_empty'] = 'Othersockbuf está em branco.'; -$wb['dgramrcvbuf_error_empty'] = 'Dgramrcvbuf está em branco.'; +$wb['tcpsndbuf_error_empty'] = 'Tamanho de buffers de envio tcp está em branco.'; +$wb['tcprcvbuf_error_empty'] = 'Tamanho de buffers de recepção está em branco.'; +$wb['othersockbuf_error_empty'] = 'Tamanho de outros buffers de socket está em branco.'; +$wb['dgramrcvbuf_error_empty'] = 'Tamanho de buffers de recepção udp e outros protocolos de datagrama está em branco.'; $wb['oomguarpages_error_empty'] = 'Oomguarpages está em branco.'; -$wb['privvmpages_error_empty'] = 'Privvmpages está em branco.'; +$wb['privvmpages_error_empty'] = 'Tamanho da memória alocada para aplicações, em páginas, está em branco.'; $wb['lockedpages_error_empty'] = 'Lockedpages está em branco.'; $wb['shmpages_error_empty'] = 'Shmpages está em branco.'; $wb['physpages_error_empty'] = 'Physpages está em branco.'; -$wb['numfile_error_empty'] = 'Numfile está em branco.'; -$wb['avnumproc_error_empty'] = 'Avnumproc está em branco.'; -$wb['numflock_error_empty'] = 'Numflock está em branco.'; -$wb['numpty_error_empty'] = 'Numpty está em branco.'; -$wb['numsiginfo_error_empty'] = 'Numsiginfo está em branco.'; -$wb['dcachesize_error_empty'] = 'Dcachesize está em branco.'; -$wb['numiptent_error_empty'] = 'Numiptent está em branco.'; -$wb['swappages_error_empty'] = 'Swappages está em branco.'; +$wb['numfile_error_empty'] = 'Número de arquivos está em branco.'; +$wb['avnumproc_error_empty'] = 'Média de processadores está em branco.'; +$wb['numflock_error_empty'] = 'Número de arquivos bloqueados está em branco.'; +$wb['numpty_error_empty'] = 'Número de pseudo-terminais está em branco.'; +$wb['numsiginfo_error_empty'] = 'Número de informações siginfo está em branco.'; +$wb['dcachesize_error_empty'] = 'Tamanho do cache está em branco.'; +$wb['numiptent_error_empty'] = 'Número de entradas NETFILTER está em branco.'; +$wb['swappages_error_empty'] = 'Páginas de troca está em branco.'; $wb['Template'] = 'Gabarito'; $wb['Advanced'] = 'Avançado'; $wb['features_txt'] = 'Recursos'; -$wb['iptables_txt'] = 'Firewall'; +$wb['iptables_txt'] = 'Firewall (iptables)'; $wb['custom_txt'] = 'Configurações personalizadas'; -$wb['custom_error'] = 'Não permitido em configurações personalizadas: '; +$wb['custom_error'] = 'Não permitido nas configurações personalizadas: '; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_template_list.lng b/interface/web/vm/lib/lang/br_openvz_template_list.lng index 390869859a..00d1b648d8 100644 --- a/interface/web/vm/lib/lang/br_openvz_template_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_template_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Gabarito de máquina virtual OpenVZ'; +$wb['list_head_txt'] = 'Gabarito de máquina virtual'; $wb['active_txt'] = 'Ativo'; -$wb['template_name_txt'] = 'Nome do Gabarito'; +$wb['template_name_txt'] = 'Nome do gabarito'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_vm.lng b/interface/web/vm/lib/lang/br_openvz_vm.lng index 04794daf86..a8176e7688 100644 --- a/interface/web/vm/lib/lang/br_openvz_vm.lng +++ b/interface/web/vm/lib/lang/br_openvz_vm.lng @@ -1,45 +1,46 @@ <?php -$wb['diskspace_txt'] = 'Espaço em disco'; +$wb['diskspace_txt'] = 'Espaço no disco'; $wb['ram_txt'] = 'RAM (garantida)'; $wb['ram_burst_txt'] = 'RAM (rajada)'; -$wb['cpu_units_txt'] = 'Unidades de CPU(s)'; -$wb['cpu_num_txt'] = 'Quantidade de CPU(s)'; -$wb['cpu_limit_txt'] = 'Limite de CPU(s)'; -$wb['io_priority_txt'] = 'Prioridade de E/S'; -$wb['nameserver_txt'] = 'Servidor(es) de nome'; -$wb['nameserver_desc_txt'] = '(separado por espaços em branco)'; +$wb['cpu_units_txt'] = 'Número de cores da CPU'; +$wb['cpu_num_txt'] = 'Número de CPU'; +$wb['cpu_limit_txt'] = 'Limite de CPU (%)'; +$wb['io_priority_txt'] = 'prioridade de E/S'; +$wb['nameserver_txt'] = 'Servidor(es) dns'; +$wb['nameserver_desc_txt'] = '(separados por espaço)'; $wb['capability_txt'] = 'Capacidade'; -$wb['server_id_txt'] = 'Servidor servidor'; -$wb['ostemplate_id_txt'] = 'Gabarito do SO'; +$wb['server_id_txt'] = 'Virtualizador'; +$wb['ostemplate_id_txt'] = 'Gabarito de sistema operacional'; $wb['template_id_txt'] = 'Gabarito'; $wb['ip_address_txt'] = 'Endereço IP'; -$wb['hostname_txt'] = 'Servidor'; +$wb['hostname_txt'] = 'Nome do host'; $wb['vm_password_txt'] = 'Senha da máquina virtual'; $wb['start_boot_txt'] = 'Iniciar no boot'; $wb['active_txt'] = 'Ativo'; $wb['description_txt'] = 'Descrição'; $wb['client_group_id_txt'] = 'Cliente'; $wb['veid_txt'] = 'VEID'; -$wb['create_dns_txt'] = 'Adicionar DNS para servidor'; +$wb['create_dns_txt'] = 'Adicionar dns para a máquina virtual'; $wb['active_until_date_txt'] = 'Ativo até a data'; $wb['ip_address_error_empty'] = 'Endereço IP está em branco.'; -$wb['hostname_error_empty'] = 'Nome do servidor está em branco.'; +$wb['hostname_error_empty'] = 'Nome do host está em branco.'; $wb['vm_password_error_empty'] = 'Senha da máquina virtual está em branco.'; $wb['veid_error_empty'] = 'VEID está em branco.'; -$wb['veid_error_unique'] = 'VEID não existe.'; -$wb['diskspace_error_empty'] = 'Espaço em disco está em branco.'; +$wb['veid_error_unique'] = 'VEID já existe.'; +$wb['diskspace_error_empty'] = 'Espaço do disco está em branco.'; $wb['ram_error_empty'] = 'RAM (garantida) está em branco.'; $wb['ram_burst_error_empty'] = 'RAM (rajada) está em branco.'; -$wb['cpu_units_error_empty'] = 'Unidade de CPU(s) está em branco.'; -$wb['cpu_num_error_empty'] = 'Quantidade de CPU(s) está em branco.'; -$wb['cpu_limit_error_empty'] = 'Limite de CPU(s) está em branco.'; +$wb['cpu_units_error_empty'] = 'Número de cores da CPU está em branco.'; +$wb['cpu_num_error_empty'] = 'Número de CPU está em branco.'; +$wb['cpu_limit_error_empty'] = 'Limite de CPU está em branco.'; $wb['io_priority_error_empty'] = 'Prioridade de E/S está em branco.'; -$wb['template_nameserver_error_empty'] = 'Servidor(es) de nome está em branco.'; -$wb['Virtual server'] = 'Servidor virtual'; +$wb['template_nameserver_error_empty'] = 'Servidor(es) dns está em branco.'; +$wb['Virtual server'] = 'Máquina Virtual'; $wb['Advanced'] = 'Avançado'; +$wb['Additional IP'] = 'Endereço IP adicional'; $wb['features_txt'] = 'Recursos'; $wb['iptables_txt'] = 'Firewall'; $wb['custom_txt'] = 'Configurações personalizadas'; -$wb['bootorder_txt'] = 'Prioridade do boot'; -$wb['bootorder_error_notpositive'] = 'Somente números positivos podem ser configurados na prioridade do boot.'; +$wb['bootorder_txt'] = 'Ordem da prioridade do boot'; +$wb['bootorder_error_notpositive'] = 'São permitidos apenas números inteiros, > 0, na ordem da prioridade do boot.'; ?> diff --git a/interface/web/vm/lib/lang/br_openvz_vm_list.lng b/interface/web/vm/lib/lang/br_openvz_vm_list.lng index 03d510f2f7..c907c710ea 100644 --- a/interface/web/vm/lib/lang/br_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/br_openvz_vm_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'Servidor virtual'; +$wb['list_head_txt'] = 'Máquina virtual'; $wb['active_txt'] = 'Ativo'; -$wb['server_id_txt'] = 'ID do servidor'; +$wb['server_id_txt'] = 'Virtualizador'; $wb['ostemplate_id_txt'] = 'Gabarito do SO'; $wb['template_id_txt'] = 'Gabarito'; -$wb['hostname_txt'] = 'Servidor'; +$wb['hostname_txt'] = 'Nome do host'; $wb['ip_address_txt'] = 'Endereço IP'; $wb['veid_txt'] = 'VEID'; ?> diff --git a/interface/web/vm/lib/lang/tr.lng b/interface/web/vm/lib/lang/tr.lng index 82599dd038..23bca66851 100644 --- a/interface/web/vm/lib/lang/tr.lng +++ b/interface/web/vm/lib/lang/tr.lng @@ -1,7 +1,7 @@ <?php -$wb['Virtual Servers'] = 'Sanal Sunucular'; -$wb['OS Templates'] = 'OS Kalıpları'; -$wb['VM Templates'] = 'VM Kalıpları'; +$wb['Virtual Servers'] = 'sSunucular'; +$wb['OS Templates'] = 'Ä°ÅŸletim Sistemi Kalıpları'; +$wb['VM Templates'] = 'Sanal Makine Kalıpları'; $wb['IP addresses'] = 'IP Adresleri'; $wb['OpenVZ'] = 'OpenVZ'; ?> diff --git a/interface/web/vm/lib/lang/tr_openvz_action.lng b/interface/web/vm/lib/lang/tr_openvz_action.lng index 29759e0266..8e2a3652d2 100644 --- a/interface/web/vm/lib/lang/tr_openvz_action.lng +++ b/interface/web/vm/lib/lang/tr_openvz_action.lng @@ -1,16 +1,17 @@ <?php -$wb['head_txt'] = 'VM Sanal Sunucu Ä°ÅŸlemleri:'; +$wb['head_txt'] = 'Sanal Makine Sanal Sunucu Ä°ÅŸlemleri:'; $wb['start_txt'] = 'Sanal sunucuyu baÅŸlat'; $wb['stop_txt'] = 'Sanal sunucuyu durdur'; $wb['restart_txt'] = 'Sanal sunucuyu yeniden baÅŸlat'; -$wb['ostemplate_txt'] = 'OS Kalıbı OluÅŸtur'; +$wb['ostemplate_txt'] = 'Ä°ÅŸletim Sistemi Kalıbı Ekle'; $wb['ostemplate_desc_txt'] = '(örnek: debian-6.0-i386-custom)'; $wb['btn_save_txt'] = 'SeçilmiÅŸ iÅŸlemi yürüt'; $wb['btn_cancel_txt'] = 'Geri'; -$wb['start_exec_txt'] = 'VM sunucusuna baÅŸlatma komutu gönderildi. VM baÅŸlatılana kadar bir dakika geçebilir.'; -$wb['stop_exec_txt'] = 'VM sunucusuna durdurma komutu gönderildi. VM durdurulana kadar bir dakika geçebilir.'; -$wb['restart_exec_txt'] = 'VM sunucusuna yeniden baÅŸlatma komutu gönderildi. VM yeniden baÅŸlatılana kadar bir dakika geçebilir.'; -$wb['ostemplate_name_error'] = 'OS kalıbı adında izin verilmeyen karakterler var.'; +$wb['start_exec_txt'] = 'Sanal makine sunucusuna baÅŸlatma komutu gönderildi. Sanal makine baÅŸlatılana kadar bir dakika geçebilir.'; +$wb['stop_exec_txt'] = 'Sanal makine sunucusuna durdurma komutu gönderildi. Sanal makine durdurulana kadar bir dakika geçebilir.'; +$wb['restart_exec_txt'] = 'Sanal makine sunucusuna yeniden baÅŸlatma komutu gönderildi. Sanal makine yeniden baÅŸlatılana kadar bir dakika geçebilir.'; +$wb['ostemplate_name_error'] = 'Ä°ÅŸletim sistemi kalıbı adında izin verilmeyen karakterler var.'; $wb['ostemplate_name_unique_error'] = 'Aynı adlı bir iÅŸletim sistemi kalıbı zaten var.'; -$wb['ostemplate_exec_txt'] = 'VM sunucusuna iÅŸletim sistemi kalıbı oluÅŸturma komutu gönderildi. Ä°ÅŸletim sistemi kalıbının oluÅŸturulması bir kaç dakika alabilir.'; +$wb['ostemplate_exec_txt'] = 'Sanal makine sunucusuna iÅŸletim sistemi kalıbı oluÅŸturma komutu gönderildi. Ä°ÅŸletim sistemi kalıbının oluÅŸturulması bir kaç dakika alabilir.'; + ?> diff --git a/interface/web/vm/lib/lang/tr_openvz_ip.lng b/interface/web/vm/lib/lang/tr_openvz_ip.lng index 637a70f2ea..e24b354bae 100644 --- a/interface/web/vm/lib/lang/tr_openvz_ip.lng +++ b/interface/web/vm/lib/lang/tr_openvz_ip.lng @@ -1,7 +1,7 @@ <?php $wb['server_id_txt'] = 'Sunucu'; $wb['ip_address_txt'] = 'IP Adresi'; -$wb['vm_id_txt'] = 'Sanal Sunucu'; +$wb['vm_id_txt'] = 'sSunucu'; $wb['reserved_txt'] = 'Ayrılmış'; $wb['ip_error_wrong'] = 'Lütfen geçerli bir IPv4 adresi yazın.'; $wb['ip_error_unique'] = 'Bu IP adresi zaten var.'; diff --git a/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng index bf5923aed1..3a4a10fdaa 100644 --- a/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng +++ b/interface/web/vm/lib/lang/tr_openvz_ostemplate_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'OpenVZ OS Kalıbı'; +$wb['list_head_txt'] = 'OpenVZ Ä°ÅŸletim Sistemi Kalıbı'; $wb['active_txt'] = 'Etkin'; $wb['template_name_txt'] = 'Kalıp Adı'; $wb['server_id_txt'] = 'Sunucu'; diff --git a/interface/web/vm/lib/lang/tr_openvz_template.lng b/interface/web/vm/lib/lang/tr_openvz_template.lng index fb1452e885..7768d0bae6 100644 --- a/interface/web/vm/lib/lang/tr_openvz_template.lng +++ b/interface/web/vm/lib/lang/tr_openvz_template.lng @@ -2,11 +2,11 @@ $wb['numproc_txt'] = 'Ä°ÅŸlemci Sayısı'; $wb['numtcpsock_txt'] = 'TCP Soket Sayısı'; $wb['numothersock_txt'] = 'DiÄŸer Soket Sayısı'; -$wb['vmguarpages_txt'] = 'VM Koruma Sayfası'; +$wb['vmguarpages_txt'] = 'Sanal Makine Koruma Sayfası'; $wb['kmemsize_txt'] = 'Kmemsize'; -$wb['tcpsndbuf_txt'] = 'TCP Gönderme ArabelleÄŸi'; -$wb['tcprcvbuf_txt'] = 'TCP Alma ArabelleÄŸi'; -$wb['othersockbuf_txt'] = 'DiÄŸer Soket ArabelleÄŸi'; +$wb['tcpsndbuf_txt'] = 'TCP Gönderme Ara BelleÄŸi'; +$wb['tcprcvbuf_txt'] = 'TCP Alma Ara BelleÄŸi'; +$wb['othersockbuf_txt'] = 'DiÄŸer Soket Ara BelleÄŸi'; $wb['dgramrcvbuf_txt'] = 'Dgramrcvbuf'; $wb['oomguarpages_txt'] = 'Oomguarpages'; $wb['privvmpages_txt'] = 'Privvmpages'; @@ -40,11 +40,11 @@ $wb['numtcpsock_desc_txt'] = 'TCP soketi sayısı.'; $wb['numothersock_desc_txt'] = 'TCP olmayan soket sayısı.'; $wb['vmguarpages_desc_txt'] = 'Sayfa cinsinden garantili ayrılan bellek.'; $wb['kmemsize_desc_txt'] = 'Bu taşıyıcıdaki iÅŸlemler için takas edilemez kernel belleÄŸinin boyutu.'; -$wb['tcpsndbuf_desc_txt'] = 'TCP gönderme arabelleÄŸinin toplam boyutu.'; -$wb['tcprcvbuf_desc_txt'] = 'TCP alma arabelleÄŸinin toplam boyutu.'; -$wb['othersockbuf_desc_txt'] = 'UNIX alan adı soket arabelleÄŸinin toplam boyutu, UDP ve diÄŸer datagram iletiÅŸim kuralları gönderme ara bellekleri.'; +$wb['tcpsndbuf_desc_txt'] = 'TCP gönderme ara belleÄŸinin toplam boyutu.'; +$wb['tcprcvbuf_desc_txt'] = 'TCP alma ara belleÄŸinin toplam boyutu.'; +$wb['othersockbuf_desc_txt'] = 'UNIX etki alanı soket ara belleÄŸinin toplam boyutu, UDP ve diÄŸer datagram iletiÅŸim kuralları gönderme ara bellekleri.'; $wb['dgramrcvbuf_desc_txt'] = 'UDP ve diÄŸer datagram iletiÅŸim kuralları alma ara bellekleri.'; -$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, bellek taÅŸması durumlarında garanti edilen bellek miktarı\\" (bellek bitti boÅŸaltma garantisi).'; +$wb['oomguarpages_desc_txt'] = 'Bellek sayfası cinsinden, "bellek taÅŸması" durumlarında garanti edilen bellek miktarı (bellek bitti boÅŸaltma garantisi).'; $wb['privvmpages_desc_txt'] = 'Bellek sayfası cinsinden ayrılacak bellek sınırı.'; $wb['lockedpages_desc_txt'] = 'Ä°ÅŸlem sayfaları takasına izin verilmez (mlock(2) ile kilitlenmiÅŸ sayfalar).'; $wb['shmpages_desc_txt'] = 'Bellek sayfası cinsinden, paylaşılan belleÄŸin toplam boyutu (IPC, paylaşılan anonim haritalama ve tmpfs nesneleri).'; @@ -90,8 +90,8 @@ $wb['numiptent_error_empty'] = 'Numiptent boÅŸ olamaz.'; $wb['swappages_error_empty'] = 'Swappages boÅŸ olamaz.'; $wb['Template'] = 'Kalıp'; $wb['Advanced'] = 'GeliÅŸmiÅŸ'; -$wb['features_txt'] = 'Features'; +$wb['features_txt'] = 'Özellikle'; $wb['iptables_txt'] = 'IP Tables'; -$wb['custom_txt'] = 'Custom settings'; -$wb['custom_error'] = 'Not allowed in Custom settings: '; +$wb['custom_txt'] = 'Özel Ayarlar'; +$wb['custom_error'] = 'Özel ayarlarda izin verilmiyor: '; ?> diff --git a/interface/web/vm/lib/lang/tr_openvz_vm.lng b/interface/web/vm/lib/lang/tr_openvz_vm.lng index fad86d9f3a..7c2977cda9 100644 --- a/interface/web/vm/lib/lang/tr_openvz_vm.lng +++ b/interface/web/vm/lib/lang/tr_openvz_vm.lng @@ -10,21 +10,21 @@ $wb['nameserver_txt'] = 'Ad Sunucuları'; $wb['nameserver_desc_txt'] = '(boÅŸluk ile ayırarak)'; $wb['capability_txt'] = 'Yeterlilik'; $wb['server_id_txt'] = 'Sunucu'; -$wb['ostemplate_id_txt'] = 'OS Kalıbı'; +$wb['ostemplate_id_txt'] = 'Ä°ÅŸletim Sistemi Kalıbı'; $wb['template_id_txt'] = 'Kalıp'; $wb['ip_address_txt'] = 'IP Adresi'; $wb['hostname_txt'] = 'Sunucu Adı'; -$wb['vm_password_txt'] = 'VM Parolası'; -$wb['start_boot_txt'] = 'Açılışta baÅŸlat'; +$wb['vm_password_txt'] = 'Sanal Makine Parolası'; +$wb['start_boot_txt'] = 'Açılışta BaÅŸlatılsın'; $wb['active_txt'] = 'Etkin'; $wb['description_txt'] = 'Açıklama'; $wb['client_group_id_txt'] = 'Müşteri'; $wb['veid_txt'] = 'VEID'; $wb['create_dns_txt'] = 'Sunucu için DNS oluÅŸtur'; -$wb['active_until_date_txt'] = 'Åžu tarihe kadar etkin'; +$wb['active_until_date_txt'] = 'Åžu Tarihe Kadar Etkin'; $wb['ip_address_error_empty'] = 'IP adresi boÅŸ olamaz.'; $wb['hostname_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; -$wb['vm_password_error_empty'] = 'VM parolası boÅŸ olamaz.'; +$wb['vm_password_error_empty'] = 'Sanal makine parolası boÅŸ olamaz.'; $wb['veid_error_empty'] = 'VEID boÅŸ olamaz.'; $wb['veid_error_unique'] = 'VEID zaten var.'; $wb['diskspace_error_empty'] = 'Disk alanı boÅŸ olamaz.'; @@ -35,11 +35,11 @@ $wb['cpu_num_error_empty'] = 'Ä°ÅŸlemci sayısı boÅŸ olamaz.'; $wb['cpu_limit_error_empty'] = 'Ä°ÅŸlemci sınırı boÅŸ olamaz.'; $wb['io_priority_error_empty'] = 'G/Ç önceliÄŸi boÅŸ olamaz.'; $wb['template_nameserver_error_empty'] = 'Ad sunucuları boÅŸ olamaz.'; -$wb['Virtual server'] = 'Sanal sunucu'; +$wb['Virtual server'] = 'sSunucu'; $wb['Advanced'] = 'GeliÅŸmiÅŸ'; -$wb['features_txt'] = 'Features'; +$wb['features_txt'] = 'Özellikler'; $wb['iptables_txt'] = 'IP Tables'; -$wb['custom_txt'] = 'Custom settings'; -$wb['bootorder_txt'] = 'Boot order priority'; -$wb['bootorder_error_notpositive'] = 'Only positive integers are allowed for Boot order priority'; +$wb['custom_txt'] = 'Özel Ayarlar'; +$wb['bootorder_txt'] = 'BaÅŸlatma ÖnceliÄŸi'; +$wb['bootorder_error_notpositive'] = 'BaÅŸlatma önceliÄŸi deÄŸeri yalnız pozitif bir tamsayı olabilir'; ?> diff --git a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng index 1a4ed0e7b9..e188f60464 100644 --- a/interface/web/vm/lib/lang/tr_openvz_vm_list.lng +++ b/interface/web/vm/lib/lang/tr_openvz_vm_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Sanal Sunucu'; +$wb['list_head_txt'] = 'sSunucu'; $wb['active_txt'] = 'Etkin'; $wb['server_id_txt'] = 'Sunucu'; -$wb['ostemplate_id_txt'] = 'OS Kalıbı'; +$wb['ostemplate_id_txt'] = 'Ä°ÅŸl. Sis. Kalıbı'; $wb['template_id_txt'] = 'Kalıp'; $wb['hostname_txt'] = 'Sunucu Adı'; $wb['ip_address_txt'] = 'IP Adresi'; -- GitLab From 2f0d607b5e26ed98be084c4977bcd2c1d4219d19 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 11 Oct 2019 16:53:03 +0200 Subject: [PATCH 160/571] Fixed #5424 Unable to change passwd or user of admin --- interface/web/admin/form/users.tform.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index b7f00b4eef..be77122b10 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -218,12 +218,6 @@ $form['tabs']['users'] = array ( 'app_theme' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'RADIO', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'app_theme_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-z0-9\_]{0,64}$/', - 'errmsg'=> 'app_theme_regex'), - ), 'regex' => '', 'errmsg' => '', 'default' => 'default', -- GitLab From 04b0eb24cbe282017bdddb7ac5b4d6386563fa29 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 11 Oct 2019 16:56:43 +0200 Subject: [PATCH 161/571] Fixed #5425 Valid delete requests blocked by CSRF check --- interface/lib/classes/plugin_listview.inc.php | 8 ++++++++ interface/web/admin/templates/remote_user_list.htm | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/plugin_listview.inc.php b/interface/lib/classes/plugin_listview.inc.php index bd0aa0e160..ced308b2e5 100644 --- a/interface/lib/classes/plugin_listview.inc.php +++ b/interface/lib/classes/plugin_listview.inc.php @@ -123,6 +123,10 @@ class plugin_listview extends plugin_base { $lng_file = "lib/lang/".$app->functions->check_language($_SESSION["s"]["language"])."_".$app->listform->listDef['name']."_list.lng"; include $lng_file; $listTpl->setVar($wb); + + $csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); + $_csrf_id = $csrf_token['csrf_id']; + $_csrf_key = $csrf_token['csrf_key']; // Get the data @@ -157,6 +161,10 @@ class plugin_listview extends plugin_base { // The variable "id" contains always the index field $rec["id"] = $rec[$idx_key]; $rec["delete_confirmation"] = $wb['delete_confirmation']; + + // CSRF Token + $rec["csrf_id"] = $_csrf_id; + $rec["csrf_key"] = $_csrf_key; $records_new[] = $rec; } diff --git a/interface/web/admin/templates/remote_user_list.htm b/interface/web/admin/templates/remote_user_list.htm index de65c64536..7189dc20df 100644 --- a/interface/web/admin/templates/remote_user_list.htm +++ b/interface/web/admin/templates/remote_user_list.htm @@ -33,7 +33,7 @@ <td><a href="#" data-load-content="admin/remote_user_edit.php?id={tmpl_var name='remote_userid'}">{tmpl_var name="remote_userid"}</a></td> <td><a href="#" data-load-content="admin/remote_user_edit.php?id={tmpl_var name='remote_userid'}">{tmpl_var name="remote_username"}</a></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/remote_user_del.php?id={tmpl_var name='remote_userid'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/remote_user_del.php?id={tmpl_var name='remote_userid'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> </tmpl_loop> -- GitLab From 92d734f89346e5a1c0e430c063658d1d7b560653 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 14 Oct 2019 12:22:41 +0200 Subject: [PATCH 162/571] Improved Symlink option Apache vhost.conf.master --- server/conf/vhost.conf.master | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 75f6a72e87..0982a3cf41 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -93,7 +93,7 @@ <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler None </FilesMatch> - Options +FollowSymLinks + Options +SymlinksIfOwnerMatch AllowOverride <tmpl_var name='allow_override'> <tmpl_if name='apache_version' op='>' value='2.2' format='version'> Require all granted @@ -125,7 +125,7 @@ <FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler None </FilesMatch> - Options +FollowSymLinks + Options +SymlinksIfOwnerMatch AllowOverride <tmpl_var name='allow_override'> <tmpl_if name='apache_version' op='>' value='2.2' format='version'> Require all granted -- GitLab From 5d261ed7063964baada64f08faf0bca99d71bc90 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 14 Oct 2019 13:35:43 +0200 Subject: [PATCH 163/571] PHP compatibility changes (array definitions) in PowerDNS Plugin. --- server/plugins-available/powerdns_plugin.inc.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/plugins-available/powerdns_plugin.inc.php b/server/plugins-available/powerdns_plugin.inc.php index 2e44e014d5..7ab23ec549 100644 --- a/server/plugins-available/powerdns_plugin.inc.php +++ b/server/plugins-available/powerdns_plugin.inc.php @@ -536,14 +536,14 @@ class powerdns_plugin { $log[] = sprintf("\r\n%s %s", date('c'), 'Running set-nsec3 command...'); exec($cmd_set_nsec3, $log); - $pubkeys = []; + $pubkeys = array(); $cmd_show_zone = sprintf('%s show-zone %s 2>&1', $pdns_pdnssec, $zone); $log[] = sprintf("\r\n%s %s", date('c'), 'Running show-zone command...'); exec($cmd_show_zone, $pubkeys); $log = array_merge($log, $pubkeys); - $dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), ['', '== Raw log ============================'], $log); + $dnssec_info = array_merge($this->format_dnssec_pubkeys($pubkeys), array('', '== Raw log ============================'), $log); $dnssec_info = implode("\r\n", $dnssec_info); if ($app->dbmaster !== $app->db) { @@ -553,7 +553,7 @@ class powerdns_plugin { } function format_dnssec_pubkeys($lines) { - $formatted = []; + $formatted = array(); // We don't care about the first two lines about presigning and NSEC array_shift($lines); @@ -574,7 +574,7 @@ class powerdns_plugin { $key_type = $matches_key_type[1]; // We only care about the KSK or CSK - if (!in_array($key_type, ['KSK', 'CSK'], true)) { + if (!in_array($key_type, array('KSK', 'CSK'), true)) { break; } @@ -677,7 +677,7 @@ class powerdns_plugin { exec($cmd_disable_dnssec, $log); - $dnssec_info = array_merge(['== Raw log ============================'], $log); + $dnssec_info = array_merge(array('== Raw log ============================'), $log); $dnssec_info = implode("\r\n", $dnssec_info); if ($app->dbmaster !== $app->db) { -- GitLab From 7d41f01a2c3a4f6d4c9ae6751add7bae97bf3a12 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 16 Oct 2019 17:09:24 +0200 Subject: [PATCH 164/571] Fixed #5429 Wrong class variable in server/lib/classes/db_mysql.inc.php LINE 275 --- interface/lib/classes/db_mysql.inc.php | 2 +- server/lib/classes/db_mysql.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 227fab73fa..9c7269e568 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -272,7 +272,7 @@ class db if(!is_object($this->_iConnId)) { $this->_iConnId = mysqli_init(); } - if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { if(mysqli_connect_errno() == '111') { // server is not available if($try > 9) { diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 227fab73fa..9c7269e568 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -272,7 +272,7 @@ class db if(!is_object($this->_iConnId)) { $this->_iConnId = mysqli_init(); } - if(!mysqli_real_connect($this->_isConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { + if(!mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort, NULL, $this->dbClientFlags)) { if(mysqli_connect_errno() == '111') { // server is not available if($try > 9) { -- GitLab From 2fc824fe37ff504636a00d0a9171ba0045004795 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 16 Oct 2019 17:10:12 +0200 Subject: [PATCH 165/571] Changed PHP syntax in monitor_tools.inc.php for PHP 5.3 compatibility. --- server/lib/classes/monitor_tools.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index b2bd5ede30..d8d325fe60 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -254,7 +254,7 @@ class monitor_tools { preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name); preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version); $distname = is_array($name) ? $name[1][0] : 'openSUSE'; - $distver = is_array($version) ? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) : 'Unknown'; + $distver = is_array($version) ? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) : 'Unknown'; $distid = 'opensuse112'; $distbaseid = 'opensuse'; } else { @@ -309,7 +309,7 @@ class monitor_tools { } elseif(stristr($content, 'CentOS Linux release 7')) { preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); $distname = 'CentOS'; - $distver = is_array($version)? implode('.', array_filter([$version[1][0],$version[2][0],$version[3][0]],'strlen')) :'Unknown'; + $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown'; $distbaseid = 'fedora'; $var=explode(" ", $content); $var=explode(".", $var[3]); -- GitLab From 9d1d86244a7fc64c317f1b52ab1c5e46fd8ed9e4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 23 Oct 2019 08:35:02 +0200 Subject: [PATCH 166/571] Changed version file download URL in ispconfig_update.php to https. --- server/scripts/ispconfig_update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/scripts/ispconfig_update.php b/server/scripts/ispconfig_update.php index 0c2d3789e8..2c77607b65 100644 --- a/server/scripts/ispconfig_update.php +++ b/server/scripts/ispconfig_update.php @@ -91,7 +91,7 @@ echo "Please choose the update method. For production systems select 'stable'. \ $method = simple_query('Select update method', array('stable', 'git-stable', 'git-master'), 'stable'); if($method == 'stable') { - $new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.'); + $new_version = @file_get_contents('https://www.ispconfig.org/downloads/ispconfig3_version.txt') or die('Unable to retrieve version file.'); $new_version = trim($new_version); if(version_compare($new_version, ISPC_APP_VERSION, '>')) { passthru('/usr/local/ispconfig/server/scripts/update_stable.sh'); -- GitLab From b047ebde79ffd12b1628cd2127b75e007ca51cbd Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 23 Oct 2019 08:36:05 +0200 Subject: [PATCH 167/571] Changed link to ispconfig download to https. --- interface/web/dashboard/dashboard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php index 5426ba9572..005c364aa5 100644 --- a/interface/web/dashboard/dashboard.php +++ b/interface/web/dashboard/dashboard.php @@ -149,7 +149,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') { $info[] = array('info_msg' => '<p>There is a new Version of ISPConfig 3 available!</p>' . '<p>This Version: <b>' . $v1 . '</b></p>' . '<p>New Version : <b>' . $v2 . '</b></p>' . - '<p><a href="http://www.ispconfig.org/ispconfig-3/download" target="ISPC">See more...</a></p>'); + '<p><a href="https://www.ispconfig.org/ispconfig-3/download" target="ISPC">See more...</a></p>'); } } -- GitLab From f0bfe454941703b2954c78fe96f736bb06a21f60 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Mon, 4 Nov 2019 15:17:20 +0100 Subject: [PATCH 168/571] show ips only with vhost = y and show directive_snippets for the admin even if they are set to customer_viewable = 'n' --- interface/web/sites/web_vhost_domain_edit.php | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 86deb5b2a5..52b44acc79 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -206,7 +206,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field with the IP addresses that are allowed for this client on the current server - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n"; @@ -222,7 +222,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); //$ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; //$ip_select = ""; @@ -352,7 +352,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); $ip_select = ($web_config[$server_id]['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n"; @@ -368,7 +368,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=?)"; + $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv6' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); $ip_select = "<option value=''></option>"; //$ip_select = ""; @@ -549,7 +549,7 @@ class page_action extends tform_actions { } //* Fill the IPv4 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND server_id = ?"; + $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND virtualhost = 'y' AND server_id = ?"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; //$ip_select = ""; @@ -564,7 +564,7 @@ class page_action extends tform_actions { unset($ips); //* Fill the IPv6 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND server_id = ?"; + $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' AND server_id = ?"; $ips = $app->db->queryAllRecords($sql, $server_id); $ip_select = "<option value=''></option>"; //$ip_select = ""; @@ -863,8 +863,12 @@ class page_action extends tform_actions { } $directive_snippets_id_select .= '</optgroup>'; } - - $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + + if($is_admin) { + $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + } else { + $directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); + } if(is_array($directive_snippets) && !empty($directive_snippets)){ $directive_snippets_id_select .= '<optgroup label="'.$app->tform->wordbook["select_directive_snippet_txt"].'">'; foreach($directive_snippets as $directive_snippet){ -- GitLab From db4158a2c8a7e917dc3e2cad756f5e2b1419a74b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 13 Nov 2019 13:51:45 +0100 Subject: [PATCH 169/571] - Table sys_log clean-up not deleting entries with server_id 0, fixes #5450 --- server/lib/classes/cron.d/200-logfiles.inc.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index b229c76a8a..e2d9e9bb9e 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -240,6 +240,18 @@ class cronjob_logfiles extends cronjob { */ $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id != 0"; $app->dbmaster->query($sql, $tstamp); + + /* + * now delete those entries without a linked datalog entry (datalog_id = 0) + */ + $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id = 0"; + $app->dbmaster->query($sql, $tstamp); + + /* + * now delete those entries with a linked datalog entry (datalog_id != 0) only if older than 30 days + */ + $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id = 0 AND datalog_id != 0"; + $app->dbmaster->query($sql, $tstamp - (3600 * 24 * 23)); /* * Delete all remote-actions "done" and older than 7 days -- GitLab From 746e79db393f22b03fdd408cc086eecc084f1991 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 19 Nov 2019 21:34:03 +0100 Subject: [PATCH 170/571] - backported acme.sh support from master branch, fixes #5461 --- .../classes/cron.d/900-letsencrypt.inc.php | 25 +- server/lib/classes/letsencrypt.inc.php | 215 +++++++++++++----- server/lib/classes/system.inc.php | 5 +- 3 files changed, 180 insertions(+), 65 deletions(-) diff --git a/server/lib/classes/cron.d/900-letsencrypt.inc.php b/server/lib/classes/cron.d/900-letsencrypt.inc.php index 3e2c9190c6..b0f6f39c51 100644 --- a/server/lib/classes/cron.d/900-letsencrypt.inc.php +++ b/server/lib/classes/cron.d/900-letsencrypt.inc.php @@ -35,8 +35,6 @@ class cronjob_letsencrypt extends cronjob { /* this function is optional if it contains no custom code */ public function onPrepare() { - global $app; - parent::onPrepare(); } @@ -52,10 +50,19 @@ class cronjob_letsencrypt extends cronjob { global $app, $conf; $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { - $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); - $letsencrypt = reset($letsencrypt); - if(is_executable($letsencrypt)) { + if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { + $acme = $app->letsencrypt->get_acme_script(); + if($acme) { + // skip letsencrypt + parent::onRunJob(); + return; + } + + $letsencrypt = $app->letsencrypt->get_certbot_script(); + if($letsencrypt) { + $ret = null; + $val = 0; + $matches = array(); $version = exec($letsencrypt . ' --version 2>&1', $ret, $val); if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $version, $matches)) { $type = strtolower($matches[1]); @@ -86,11 +93,7 @@ class cronjob_letsencrypt extends cronjob { /* this function is optional if it contains no custom code */ public function onAfterRun() { - global $app; - parent::onAfterRun(); } -} - -?> +} \ No newline at end of file diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 62080e29b4..291ee41b12 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -37,15 +37,136 @@ class letsencrypt { */ private $base_path = '/etc/letsencrypt'; private $renew_config_path = '/etc/letsencrypt/renewal'; - + private $certbot_use_certcommand = false; public function __construct(){ } + + public function get_acme_script() { + $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = reset($acme); + if(is_executable($acme)) { + return $acme; + } else { + return false; + } + } + + public function get_acme_command($domains, $key_file, $bundle_file, $cert_file) { + + $letsencrypt = $this->get_acme_script(); + + $cmd = ''; + // generate cli format + foreach($domains as $domain) { + $cmd .= (string) " -d " . $domain; + } + + if($cmd == '') { + return false; + } + + $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' --fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file) . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; + + return $cmd; + } + + public function get_certbot_script() { + $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); + $letsencrypt = reset($letsencrypt); + if(is_executable($letsencrypt)) { + return $letsencrypt; + } else { + return false; + } + } + private function install_acme() { + $install_cmd = 'wget -O - https://get.acme.sh | sh'; + $ret = null; + $val = 0; + exec($install_cmd . ' 2>&1', $ret, $val); + + return ($val == 0 ? true : false); + } + + private function get_reload_command() { + global $app, $conf; + + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + + $daemon = ''; + switch ($web_config['server_type']) { + case 'nginx': + $daemon = $web_config['server_type']; + break; + default: + if(is_file($conf['init_scripts'] . '/' . 'httpd24-httpd') || is_dir('/opt/rh/httpd24/root/etc/httpd')) { + $daemon = 'httpd24-httpd'; + } elseif(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) { + $daemon = 'httpd'; + } else { + $daemon = 'apache2'; + } + } + + $cmd = $app->system->getinitcommand($daemon, 'force-reload'); + return $cmd; + } + + public function get_certbot_command($domains) { + global $app; + + $letsencrypt = $this->get_certbot_script(); + + $cmd = ''; + // generate cli format + foreach($domains as $domain) { + $cmd .= (string) " --domains " . $domain; + } + + if($cmd == '') { + return false; + } + + $matches = array(); + $ret = null; + $val = 0; + + $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); + if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { + $letsencrypt_version = $matches[2]; + } + if (version_compare($letsencrypt_version, '0.22', '>=')) { + $acme_version = 'https://acme-v02.api.letsencrypt.org/directory'; + } else { + $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; + } + if (version_compare($letsencrypt_version, '0.30', '>=')) { + $app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG); + $this->certbot_use_certcommand = true; + $webroot_map = array(); + for($i = 0; $i < count($domains); $i++) { + $webroot_map[$domains[$i]] = '/usr/local/ispconfig/interface/acme'; + } + $webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map))); + } else { + $webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme"; + } + + $cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cmd --webroot-path /usr/local/ispconfig/interface/acme"; + + return $cmd; + } + public function get_letsencrypt_certificate_paths($domains = array()) { global $app; + if($this->get_acme_script()) { + return false; + } + if(empty($domains)) return false; if(!is_dir($this->renew_config_path)) return false; @@ -133,9 +254,13 @@ class letsencrypt { } private function get_ssl_domain($data) { - $domain = $data['new']['ssl_domain']; - if(!$domain) $domain = $data['new']['domain']; + global $app; + $domain = $data['new']['ssl_domain']; + if(!$domain) { + $domain = $data['new']['domain']; + } + if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') { $domain = $data['new']['domain']; if(substr($domain, 0, 2) === '*.') { @@ -149,8 +274,6 @@ class letsencrypt { } public function get_website_certificate_paths($data) { - global $app; - $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = $this->get_ssl_domain($data); @@ -183,11 +306,17 @@ class letsencrypt { $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); + $use_acme = false; + if($this->get_acme_script()) { + $use_acme = true; + } elseif(!$this->get_certbot_script()) { + // acme and le missing + $this->install_acme(); + } + $tmp = $app->letsencrypt->get_website_certificate_paths($data); $domain = $tmp['domain']; $key_file = $tmp['key']; - $key_file2 = $tmp['key2']; - $csr_file = $tmp['csr']; $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; @@ -256,66 +385,50 @@ class letsencrypt { $app->log("There were " . $le_domain_count . " domains in the domain list. LE only supports 100, so we strip the rest.", LOGLEVEL_WARN); } - // generate cli format - foreach($temp_domains as $temp_domain) { - $cli_domain_arg .= (string) " --domains " . $temp_domain; - } - // unset useless data unset($subdomains); unset($aliasdomains); - $letsencrypt_use_certcommand = false; + $this->certbot_use_certcommand = false; $letsencrypt_cmd = ''; - $letsencrypt = false; - $success = false; - - $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 = false; + $allow_return_codes = null; + if($use_acme) { + $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file); + $allow_return_codes = array(2); + } else { + $letsencrypt_cmd = $this->get_certbot_command($temp_domains); } - if(!empty($cli_domain_arg)) { + + $success = false; + if($letsencrypt_cmd) { if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { $app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG); $app->log("Let's Encrypt SSL Cert domains: $cli_domain_arg", LOGLEVEL_DEBUG); - - if($letsencrypt) { - $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); - if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { - $letsencrypt_version = $matches[2]; - } - if (version_compare($letsencrypt_version, '0.22', '>=')) { - $acme_version = 'https://acme-v02.api.letsencrypt.org/directory'; - } else { - $acme_version = 'https://acme-v01.api.letsencrypt.org/directory'; - } - if (version_compare($letsencrypt_version, '0.30', '>=')) { - $app->log("LE version is " . $letsencrypt_version . ", so using certificates command", LOGLEVEL_DEBUG); - $letsencrypt_use_certcommand = true; - $webroot_map = array(); - for($i = 0; $i < count($temp_domains); $i++) { - $webroot_map[$temp_domains[$i]] = '/usr/local/ispconfig/interface/acme'; - } - $webroot_args = "--webroot-map " . escapeshellarg(str_replace(array("\r", "\n"), '', json_encode($webroot_map))); - } else { - $webroot_args = "$cli_domain_arg --webroot-path /usr/local/ispconfig/interface/acme"; - } - - $letsencrypt_cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $webroot_args"; - $success = $app->system->_exec($letsencrypt_cmd); - } + + $success = $app->system->_exec($letsencrypt_cmd, $allow_return_codes); } else { $app->log("Migration mode active, skipping Let's Encrypt SSL Cert creation for: $domain", LOGLEVEL_DEBUG); $success = true; } } + + if($use_acme === true) { + if(!$success) { + $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); + $app->log($letsencrypt_cmd, LOGLEVEL_WARN); + return false; + } else { + return true; + } + } + $le_files = array(); - if($letsencrypt_use_certcommand === true && $letsencrypt) { - $letsencrypt_cmd = $letsencrypt . " certificates " . $cli_domain_arg; + if($this->certbot_use_certcommand === true && $letsencrypt_cmd) { + $letsencrypt_cmd = $letsencrypt_cmd . " certificates " . $cli_domain_arg; $output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'")); $le_path = ''; $skip_to_next = true; + $matches = null; foreach($output as $outline) { $outline = trim($outline); $app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG); @@ -415,6 +528,4 @@ class letsencrypt { return false; } } -} - -?> +} \ No newline at end of file diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 3db57c510f..551e4e4853 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1742,13 +1742,14 @@ class system{ } - function _exec($command) { + function _exec($command, $allow_return_codes = null) { global $app; $out = array(); $ret = 0; $app->log('exec: '.$command, LOGLEVEL_DEBUG); exec($command, $out, $ret); - if($ret != 0) return false; + if(is_array($allow_return_codes) && in_array($ret, $allow_return_codes)) return true; + elseif($ret != 0) return false; else return true; } -- GitLab From 58708d959ca14762b4280c42348b5f9b85cc809c Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 22 Nov 2019 13:20:06 +0100 Subject: [PATCH 171/571] - added list id to mail filter options --- interface/lib/classes/remote.d/server.inc.php | 4 +--- interface/web/mail/form/mail_user_filter.tform.php | 2 +- interface/web/mail/lib/lang/ar_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/ca_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/dk_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/en_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/es_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/fi_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/fr_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/id_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/ja_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/pt_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/ro_mail_user_filter.lng | 1 + interface/web/mail/lib/lang/sk_mail_user_filter.lng | 1 + interface/web/mailuser/form/mail_user_filter.tform.php | 2 +- interface/web/mailuser/lib/lang/ar_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/bg_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/ca_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/dk_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/el_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/en_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/es_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/fi_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/hu_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/id_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/ja_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/pl_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/pt_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/ro_mail_user_filter.lng | 1 + interface/web/mailuser/lib/lang/sk_mail_user_filter.lng | 1 + 30 files changed, 30 insertions(+), 5 deletions(-) diff --git a/interface/lib/classes/remote.d/server.inc.php b/interface/lib/classes/remote.d/server.inc.php index 4962cb4c59..77649d1bb4 100644 --- a/interface/lib/classes/remote.d/server.inc.php +++ b/interface/lib/classes/remote.d/server.inc.php @@ -288,6 +288,4 @@ class remoting_server extends remoting { return false; } } -} - -?> +} \ No newline at end of file diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index c1134c5e41..be5fba3ed7 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -88,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', 'List-Id'=>'list_id_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', diff --git a/interface/web/mail/lib/lang/ar_mail_user_filter.lng b/interface/web/mail/lib/lang/ar_mail_user_filter.lng index b5d31b589c..9a15472e88 100644 --- a/interface/web/mail/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ar_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ca_mail_user_filter.lng b/interface/web/mail/lib/lang/ca_mail_user_filter.lng index 14b80ee07b..8744b2ab79 100644 --- a/interface/web/mail/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ca_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres courriel est atteint.'; $wb['subject_txt'] = 'Sujet'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Pour'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; diff --git a/interface/web/mail/lib/lang/dk_mail_user_filter.lng b/interface/web/mail/lib/lang/dk_mail_user_filter.lng index d43af17ffb..ef8be2a0c9 100644 --- a/interface/web/mail/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/dk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nÃ¥et.'; $wb['subject_txt'] = 'Emne'; $wb['from_txt'] = 'Fra'; $wb['to_txt'] = 'Til'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Indeholder'; $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; diff --git a/interface/web/mail/lib/lang/en_mail_user_filter.lng b/interface/web/mail/lib/lang/en_mail_user_filter.lng index e78f808efa..462ee6d936 100644 --- a/interface/web/mail/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/en_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb["limit_mailfilter_txt"] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng index 94100ef7a3..ed221d5cb3 100755 --- a/interface/web/mail/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/es_mail_user_filter.lng @@ -25,5 +25,6 @@ $wb['subject_txt'] = 'Asunto'; $wb['target_error_regex'] = 'El destino solo puede contener los siguientes caracteres: a-z, 0-9, -, ., _, y {espacio}'; $wb['target_txt'] = 'Carpeta'; $wb['to_txt'] = 'Para'; +$wb['list_id_txt'] = 'List ID'; $wb['move_to_txt'] = 'Move to'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter.lng b/interface/web/mail/lib/lang/fi_mail_user_filter.lng index 1a4e7218a2..1238dc86fd 100755 --- a/interface/web/mail/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fi_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/fr_mail_user_filter.lng b/interface/web/mail/lib/lang/fr_mail_user_filter.lng index 49c5076d95..b5cacf2e98 100644 --- a/interface/web/mail/lib/lang/fr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fr_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Le nombre max de filtres e-mail est atteint.'; $wb['subject_txt'] = 'Sujet'; $wb['from_txt'] = 'De'; $wb['to_txt'] = 'Pour'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; diff --git a/interface/web/mail/lib/lang/id_mail_user_filter.lng b/interface/web/mail/lib/lang/id_mail_user_filter.lng index 0def30d1a8..93f45979f3 100644 --- a/interface/web/mail/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/id_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ja_mail_user_filter.lng b/interface/web/mail/lib/lang/ja_mail_user_filter.lng index 847640fee4..8ee3801cc8 100644 --- a/interface/web/mail/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ja_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/pt_mail_user_filter.lng b/interface/web/mail/lib/lang/pt_mail_user_filter.lng index 42a7481d70..906c27ecd2 100644 --- a/interface/web/mail/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/pt_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/ro_mail_user_filter.lng b/interface/web/mail/lib/lang/ro_mail_user_filter.lng index 7c5c72ad72..22435d9e91 100644 --- a/interface/web/mail/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ro_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mail/lib/lang/sk_mail_user_filter.lng b/interface/web/mail/lib/lang/sk_mail_user_filter.lng index 20904653c6..7546cd6afa 100644 --- a/interface/web/mail/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/sk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/form/mail_user_filter.tform.php b/interface/web/mailuser/form/mail_user_filter.tform.php index adf7716317..9fdd8bdfc0 100644 --- a/interface/web/mailuser/form/mail_user_filter.tform.php +++ b/interface/web/mailuser/form/mail_user_filter.tform.php @@ -83,7 +83,7 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt') + 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng index e164d54bb2..0a92f580a1 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'Max. antal af mailfiltere er nÃ¥et.'; $wb['subject_txt'] = 'Emne'; $wb['from_txt'] = 'Fra'; $wb['to_txt'] = 'Til'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Indeholder'; $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; diff --git a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng index 23451b74db..c26150ba1d 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng @@ -12,6 +12,7 @@ $wb['mailbox_filter_txt'] = 'Mailbox filter'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng index 426ad1ad01..b8a19359f5 100755 --- a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng @@ -17,5 +17,6 @@ $wb['subject_txt'] = 'Asunto'; $wb['target_error_regex'] = 'La carpeta solo debe contener estos caracteres: a-z, 0-9, -, ., _, y {espacio}'; $wb['target_txt'] = 'Carpeta'; $wb['to_txt'] = 'Para'; +$wb['list_id_txt'] = 'List ID'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; ?> diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng index 4069a15351..9ac4be357e 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng @@ -11,6 +11,7 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Subject'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; -- GitLab From 141aec78b1ee07ff099d708ee5f34df5121b366f Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 22 Nov 2019 15:04:54 +0100 Subject: [PATCH 172/571] - fixed using fullchain instead of two files on acme.sh and apache > 2.4.8 --- server/lib/classes/letsencrypt.inc.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 291ee41b12..f60ad040e7 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -53,7 +53,8 @@ class letsencrypt { } } - public function get_acme_command($domains, $key_file, $bundle_file, $cert_file) { + public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') { + global $app; $letsencrypt = $this->get_acme_script(); @@ -66,8 +67,14 @@ class letsencrypt { if($cmd == '') { return false; } + + if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) { + $cert_arg = '--fullchain-file ' . escapeshellarg($cert_file); + } else { + $cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file); + } - $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' --fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file) . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; + $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; return $cmd; } @@ -393,7 +400,7 @@ class letsencrypt { $letsencrypt_cmd = ''; $allow_return_codes = null; if($use_acme) { - $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file); + $letsencrypt_cmd = $this->get_acme_command($temp_domains, $key_file, $bundle_file, $crt_file, $server_type); $allow_return_codes = array(2); } else { $letsencrypt_cmd = $this->get_certbot_command($temp_domains); -- GitLab From 26009352ab78589458b85a8ab4f585b7847e9b1e Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 22 Nov 2019 19:35:30 +0100 Subject: [PATCH 173/571] - fixed typo (amavis instead of amavisd), fixes #5453 --- install/lib/installer_base.lib.php | 2 +- install/lib/update.lib.php | 2 +- server/plugins-available/postfix_server_plugin.inc.php | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 4f72c6920b..513858ca68 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -326,7 +326,7 @@ class installer_base { $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi']; $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; - $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis'; + $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavisd'; $tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n'; $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 9deb8ca10e..4dcb31cff1 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -336,7 +336,7 @@ function updateDbAndIni() { $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier'; $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop'; // do not switch to rspamd automatically! - // $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavis'; + // $tpl_ini_array['mail']['content_filter'] = @($conf['rspamd']['installed']) ? 'rspamd' : 'amavisd'; $tpl_ini_array['mail']['rspamd_available'] = @($conf['rspamd']['installed']) ? 'y' : 'n'; $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user']; $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group']; diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 77ac689077..ad48e3dee8 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -215,8 +215,7 @@ class postfix_server_plugin { fclose($fpp); fclose($fps); unset($dkim_domains); - } - if($mail_config['content_filter'] == 'amavisd'){ + } else { exec("postconf -X 'smtpd_milters'"); exec("postconf -X 'milter_protocol'"); exec("postconf -X 'milter_mail_macros'"); -- GitLab From eac89bb002ac68ae832cd0642e4f5c882709dcaf Mon Sep 17 00:00:00 2001 From: Jason Townsend <jason.townsend@inbox.com> Date: Sat, 23 Nov 2019 17:15:28 +0000 Subject: [PATCH 174/571] Added proxy protocol feature: Added Global Setting to Server config tab to - Enable & Disable the feature - Set the Proxy HTTP & HTTPS Ports Added Per site level switch to enable and disable feature (Located in the Web Tab under the advanced section) Added Apache2 and Nginx vhost updates to enable proxy_protocol on the listen lines Added New database column to web_domain called "proxy_protocol" to enable site level config (Patch file Added upd_0089.sql) Updated the Base Table SQL file to include "proxy_protocol" field --- install/sql/incremental/upd_0089.sql | 6 +++++ install/sql/ispconfig3.sql | 1 + .../web/admin/form/server_config.tform.php | 22 +++++++++++++++++++ .../web/admin/lib/lang/ar_server_config.lng | 3 +++ .../web/admin/lib/lang/bg_server_config.lng | 3 +++ .../web/admin/lib/lang/br_server_config.lng | 3 +++ .../web/admin/lib/lang/ca_server_config.lng | 3 +++ .../web/admin/lib/lang/cz_server_config.lng | 3 +++ .../web/admin/lib/lang/de_server_config.lng | 3 +++ .../web/admin/lib/lang/dk_server_config.lng | 3 +++ .../web/admin/lib/lang/el_server_config.lng | 3 +++ .../web/admin/lib/lang/es_server_config.lng | 3 +++ .../web/admin/lib/lang/fi_server_config.lng | 3 +++ .../web/admin/lib/lang/fr_server_config.lng | 3 +++ .../web/admin/lib/lang/hr_server_config.lng | 3 +++ .../web/admin/lib/lang/hu_server_config.lng | 3 +++ .../web/admin/lib/lang/id_server_config.lng | 3 +++ .../web/admin/lib/lang/it_server_config.lng | 3 +++ .../web/admin/lib/lang/ja_server_config.lng | 3 +++ .../web/admin/lib/lang/nl_server_config.lng | 3 +++ .../web/admin/lib/lang/pl_server_config.lng | 3 +++ .../web/admin/lib/lang/pt_server_config.lng | 3 +++ .../web/admin/lib/lang/ro_server_config.lng | 3 +++ .../web/admin/lib/lang/ru_server_config.lng | 3 +++ .../web/admin/lib/lang/se_server_config.lng | 3 +++ .../web/admin/lib/lang/sk_server_config.lng | 3 +++ .../web/admin/lib/lang/tr_server_config.lng | 3 +++ .../templates/server_config_web_edit.htm | 14 ++++++++++++ .../web/sites/form/web_vhost_domain.tform.php | 6 +++++ .../sites/lib/lang/ar_web_vhost_domain.lng | 1 + .../sites/lib/lang/bg_web_vhost_domain.lng | 1 + .../sites/lib/lang/br_web_vhost_domain.lng | 1 + .../sites/lib/lang/ca_web_vhost_domain.lng | 1 + .../sites/lib/lang/cz_web_vhost_domain.lng | 1 + .../sites/lib/lang/de_web_vhost_domain.lng | 1 + .../sites/lib/lang/dk_web_vhost_domain.lng | 1 + .../sites/lib/lang/el_web_vhost_domain.lng | 1 + .../sites/lib/lang/en_web_vhost_domain.lng | 1 + .../sites/lib/lang/es_web_vhost_domain.lng | 1 + .../sites/lib/lang/fi_web_vhost_domain.lng | 1 + .../sites/lib/lang/fr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hu_web_vhost_domain.lng | 1 + .../sites/lib/lang/id_web_vhost_domain.lng | 1 + .../sites/lib/lang/it_web_vhost_domain.lng | 1 + .../sites/lib/lang/ja_web_vhost_domain.lng | 1 + .../sites/lib/lang/nl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pt_web_vhost_domain.lng | 1 + .../sites/lib/lang/ro_web_vhost_domain.lng | 1 + .../sites/lib/lang/ru_web_vhost_domain.lng | 1 + .../sites/lib/lang/se_web_vhost_domain.lng | 1 + .../sites/lib/lang/sk_web_vhost_domain.lng | 1 + .../templates/web_vhost_domain_advanced.htm | 8 ++++++- server/conf/nginx_vhost.conf.master | 10 +++++++++ server/conf/vhost.conf.master | 13 +++++++++++ .../plugins-available/apache2_plugin.inc.php | 20 +++++++++++++++++ server/plugins-available/nginx_plugin.inc.php | 9 ++++++++ 58 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 install/sql/incremental/upd_0089.sql diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql new file mode 100644 index 0000000000..5c676788d6 --- /dev/null +++ b/install/sql/incremental/upd_0089.sql @@ -0,0 +1,6 @@ +-- add new proxy_protocol column +ALTER TABLE `web_domain` + ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`; + +-- Update old entrys +UPDATE `web_domain` SET `proxy_protocol` = 'y'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 18b3ef57eb..6998257046 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2071,6 +2071,7 @@ CREATE TABLE `web_domain` ( `https_port` int(11) unsigned NOT NULL DEFAULT '443', `folder_directive_snippets` text, `log_retention` int(11) NOT NULL DEFAULT '10', + `proxy_protocol` enum('n','y') NOT NULL default 'y', PRIMARY KEY (`domain_id`), UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 2663cdd0e0..ef3676f05d 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -820,6 +820,28 @@ $form["tabs"]['web'] = array( 'default' => 'n', 'value' => array(0 => 'n',1 => 'y') ), + 'vhost_proxy_protocol_enabled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), + 'vhost_proxy_protocol_http_port' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '880', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), + 'vhost_proxy_protocol_https_port' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '8443', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), 'vhost_conf_dir' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index bccdcc42c0..4a48ea19ce 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 39531461c3..1e39776aac 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index f57a2310f2..be7da0ceca 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -301,3 +301,6 @@ $wb['content_filter_txt'] = 'Filtro de conteúdo'; $wb['rspamd_url_txt'] = 'URL do rspamd'; $wb['rspamd_user_txt'] = 'Usuário do rspamd'; $wb['rspamd_password_txt'] = 'Senha do rspamd'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 14f0b91d3b..9bcd747c84 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index a97d78b8eb..218742e5cf 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 960381e7c1..792d5de9bc 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content-Filter'; $wb['rspamd_url_txt'] = 'Rspamd-URL'; $wb['rspamd_user_txt'] = 'Rspamd-Benutzer'; $wb['rspamd_password_txt'] = 'Rspamd-Passwort'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 73e7ef1bfd..4dfd608667 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 84992261bb..5e7a7071d4 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 01350367ae..e8164da4a0 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6caf643abe..94af4c8e0e 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 25f7375688..3586fd5d60 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index faf08f4201..f233aec832 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 6347afb7da..1df1da23ce 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 9a28dff300..4d99bd6323 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 3dc37a3c1d..21b8461529 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 72bef72c4b..1241b89e59 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 2884f304ec..4ac525328b 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 29cb94e96c..45876422e0 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 3703c759ed..7f29d9b161 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 3251476126..1a3a2df2dc 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index b2f0b407d6..1352fa9930 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 1103baa4d2..d2363b624a 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 125e0b1ea2..6c272fc17a 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -300,4 +300,7 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 3b63e881f9..27058881dc 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -294,4 +294,7 @@ $wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)'; $wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 deÄŸerinden büyük bir sayı olmalıdır'; $wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması'; $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boÅŸ olamaz'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; ?> diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index eb285bbc07..4d11850ebc 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -54,6 +54,20 @@ {tmpl_var name='vhost_rewrite_v6'} </div> </div> + <div class="form-group"> + <label for="vhost_proxy_protocol_enabled" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_enabled_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='vhost_proxy_protocol_enabled'} + </div> + </div> + <div class="form-group"> + <label for="vhost_proxy_protocol_http_port" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_http_port_txt'}</label> + <div class="col-sm-9"><input type="text" name="vhost_proxy_protocol_http_port" id="vhost_proxy_protocol_http_port" value="{tmpl_var name='vhost_proxy_protocol_http_port'}" class="form-control"/></div> + </div> + <div class="form-group"> + <label for="vhost_proxy_protocol_https_port" class="col-sm-3 control-label">{tmpl_var name='vhost_proxy_protocol_https_port_txt'}</label> + <div class="col-sm-9"><input type="text" name="vhost_proxy_protocol_https_port" id="vhost_proxy_protocol_https_port" value="{tmpl_var name='vhost_proxy_protocol_https_port'}" class="form-control"/></div> + </div> <div class="form-group apache"> <label for="vhost_conf_dir" class="col-sm-3 control-label">{tmpl_var name='vhost_conf_dir_txt'}</label> <div class="col-sm-9"><input type="text" name="vhost_conf_dir" id="vhost_conf_dir" value="{tmpl_var name='vhost_conf_dir'}" class="form-control" /></div></div> diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 838445e361..8b5a36441a 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -766,6 +766,12 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'width' => '30', 'maxlength' => '255' ), + 'proxy_protocol' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n',1 => 'y') + ), 'php_fpm_use_socket' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 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 f208ab3f36..33e3609253 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 a84d915230..07732b9df1 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 01a7414a98..38869d7201 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -158,4 +158,5 @@ $wb['enable_pagespeed_txt'] = 'Habilitar PageSpeed'; $wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos'; $wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mÃnimo 0, máximo 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 aae2f46339..ea6592e0a4 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 deaa3269c4..ae70021b23 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 d95b6d47e4..bc56b403d2 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit'; $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 aae2f46339..ea6592e0a4 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 0ea2c2a796..0dd4ec4a3f 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 ae546e1c4d..ce67090685 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -158,4 +158,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 f98c02db15..31eacbda72 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 c7c4a14432..48bbe91304 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 931c00a533..ece6d134e3 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 7842d770b4..e0ad832ad0 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 a40a4b62a5..7c7a653007 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 617e7fe769..7e61328ed9 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 9fbca551a3..194704d185 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 0efd971187..3d22555524 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 dd007d549f..e0b580d96f 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 8a426b0a1a..f136e2c1c6 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 170f2feb04..08689a0cd9 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 046c2c71a6..9b799d1d80 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 e87af3b654..dcc6b04710 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 1a2572b950..22959a1bb0 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['enable_pagespeed_txt'] = 'Enable PageSpeed'; $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> 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 17e60da6e6..a688adac64 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -153,4 +153,5 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; +$wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; ?> diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm index 0b5ddfbd8b..11f95d9cbd 100644 --- a/interface/web/sites/templates/web_vhost_domain_advanced.htm +++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm @@ -49,7 +49,13 @@ <div class="form-group nginx"> <label for="https_port" class="col-sm-3 control-label">{tmpl_var name='https_port_txt'}</label> <div class="col-sm-9"><input name="https_port" id="https_port" value="{tmpl_var name='https_port'}" type="text" class="form-control" /></div> - </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='proxy_protocol_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='proxy_protocol'} + </div> + </div> <div class="phpfpm"> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_use_socket_txt'}</label> diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index b1db61fe1c..e45226d943 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -1,5 +1,10 @@ server { listen <tmpl_var name='ip_address'>:<tmpl_var name='http_port'>; +<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='proxy_protocol_http' op='>' value='0'> + listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_http'> proxy_protocol; +</tmpl_if> +</tmpl_if> <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='http_port'>; </tmpl_if> @@ -8,6 +13,11 @@ server { </tmpl_if> <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; +<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='proxy_protocol_https' op='>' value='0'> + listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; +</tmpl_if> +</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_prefer_server_ciphers on; diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0982a3cf41..47d3cef5b1 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -12,6 +12,19 @@ <tmpl_loop name='vhosts'> <VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}> + +<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='apache_version' op='>=' value='2.4.30' format='version'> + <IfModule mod_remoteip.c> + RemoteIPProxyProtocol On + </IfModule> + </tmpl_else> + <IfModule mod_proxy_protocol.c> + ProxyProtocol On + </IfModule> +</tmpl_if> +</tmpl_if> + <tmpl_hook name='apache2_vhost:vhost_header'> <tmpl_if name='php' op='==' value='suphp'> DocumentRoot <tmpl_var name='web_document_root'> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 59e97629cb..f0da9e62e0 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1675,6 +1675,16 @@ class apache2_plugin { if(count($rewrite_rules) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('redirects' => $rewrite_rules); if(count($alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $alias_seo_redirects); $vhosts[] = $tmp_vhost_arr; + + //if proxy protocol is enabled we need to add a new port to lsiten to + if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){ + if((int)$web_config['vhost_proxy_protocol_http_port'] > 0) { + $tmp_vhost_arr['port'] = (int)$web_config['vhost_proxy_protocol_http_port']; + $tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol']; + $vhosts[] = $tmp_vhost_arr; + } + } + unset($tmp_vhost_arr); //* Add vhost for ipv4 IP with SSL @@ -1689,6 +1699,16 @@ class apache2_plugin { } if(count($ipv4_ssl_alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $ipv4_ssl_alias_seo_redirects); $vhosts[] = $tmp_vhost_arr; + + //if proxy protocol is enabled we need to add a new port to lsiten to + if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){ + if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { + $tmp_vhost_arr['port'] = (int)$web_config['vhost_proxy_protocol_https_port']; + $tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol']; + $vhosts[] = $tmp_vhost_arr; + } + } + unset($tmp_vhost_arr, $ipv4_ssl_alias_seo_redirects); $app->log('Enable SSL for: '.$domain, LOGLEVEL_DEBUG); } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index a8a3c3bf16..79cb017161 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1519,6 +1519,15 @@ class nginx_plugin { } unset($tmp_output, $tmp_retval); } + + //proxy protocol settings + if($web_config['vhost_proxy_protocol_enabled'] == "y"){ + $vhost_data['proxy_protocol'] = $data['new']['proxy_protocol']; + $vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port']; + $vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port']; + }else{ + $vhost_data['proxy_protocol'] = "n"; + } // set logging variable $vhost_data['logging'] = $web_config['logging']; -- GitLab From 21559a634d07ba29c42b8d6b5c293161117fca96 Mon Sep 17 00:00:00 2001 From: Jason Townsend <jason.townsend@inbox.com> Date: Sat, 23 Nov 2019 18:05:43 +0000 Subject: [PATCH 175/571] Added Missed patch edit, and correct the vhost loop Change the name from proxy_protocol to use_proxy_protocol in vhost file due to site level overriding the check tested both on apache2 and nginx with haproxy load balancer on TCP Mode --- interface/web/admin/lib/lang/en_server_config.lng | 3 +++ server/conf/nginx_vhost.conf.master | 4 ++-- server/conf/vhost.conf.master | 3 +-- server/plugins-available/apache2_plugin.inc.php | 4 ++-- server/plugins-available/nginx_plugin.inc.php | 4 ++-- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 0ba3638a0a..9282cb4bd2 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -301,3 +301,6 @@ $wb['content_filter_txt'] = 'Content Filter'; $wb['rspamd_url_txt'] = 'Rspamd URL'; $wb['rspamd_user_txt'] = 'Rspamd User'; $wb['rspamd_password_txt'] = 'Rspamd Password'; +$wb['vhost_proxy_protocol_enabled_txt'] = 'Enable PROXY Protocol'; +$wb['vhost_proxy_protocol_http_port_txt'] = 'PROXY Protocol HTTP Port'; +$wb['vhost_proxy_protocol_https_port_txt'] = 'PROXY Protocol HTTPS Port'; diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index e45226d943..4487e4e450 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -1,6 +1,6 @@ server { listen <tmpl_var name='ip_address'>:<tmpl_var name='http_port'>; -<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_http' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_http'> proxy_protocol; </tmpl_if> @@ -13,7 +13,7 @@ server { </tmpl_if> <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; -<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; </tmpl_if> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 47d3cef5b1..ab6cebe4d0 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -12,8 +12,7 @@ <tmpl_loop name='vhosts'> <VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}> - -<tmpl_if name='proxy_protocol' op='==' value='y'> +<tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='apache_version' op='>=' value='2.4.30' format='version'> <IfModule mod_remoteip.c> RemoteIPProxyProtocol On diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index f0da9e62e0..5e80be9740 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1680,7 +1680,7 @@ class apache2_plugin { if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){ if((int)$web_config['vhost_proxy_protocol_http_port'] > 0) { $tmp_vhost_arr['port'] = (int)$web_config['vhost_proxy_protocol_http_port']; - $tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol']; + $tmp_vhost_arr['use_proxy_protocol'] = $data['new']['proxy_protocol']; $vhosts[] = $tmp_vhost_arr; } } @@ -1704,7 +1704,7 @@ class apache2_plugin { if($web_config['vhost_proxy_protocol_enabled'] == 'y' && $data['new']['proxy_protocol'] == 'y'){ if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { $tmp_vhost_arr['port'] = (int)$web_config['vhost_proxy_protocol_https_port']; - $tmp_vhost_arr['proxy_protocol'] = $data['new']['proxy_protocol']; + $tmp_vhost_arr['use_proxy_protocol'] = $data['new']['proxy_protocol']; $vhosts[] = $tmp_vhost_arr; } } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 79cb017161..ef9300e5dc 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1522,11 +1522,11 @@ class nginx_plugin { //proxy protocol settings if($web_config['vhost_proxy_protocol_enabled'] == "y"){ - $vhost_data['proxy_protocol'] = $data['new']['proxy_protocol']; + $vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol']; $vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port']; $vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port']; }else{ - $vhost_data['proxy_protocol'] = "n"; + $vhost_data['use_proxy_protocol'] = "n"; } // set logging variable -- GitLab From b92c60a87f96648f1db88669a66c7eebd0a147f0 Mon Sep 17 00:00:00 2001 From: Ales Seifert <seifert@alesak.net> Date: Sun, 24 Nov 2019 15:29:26 +1100 Subject: [PATCH 176/571] FIXES bug mysql-virtual_outgoing_bcc.cf table is not configured with correct DB server host when postfix configuration is updated during ISPConfig installation or update --- install/tpl/mysql-virtual_outgoing_bcc.cf | 2 +- install/tpl/mysql-virtual_outgoing_bcc.cf.master | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf b/install/tpl/mysql-virtual_outgoing_bcc.cf index dfeb04b553..78fca41a2f 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf @@ -5,4 +5,4 @@ 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 +hosts = {mysql_server_ip} \ 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 af062f66b2..53afa53106 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} \ No newline at end of file -- GitLab From 6661b222a9a47f3b7d8efba3e3bca2763b9d49a2 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 30 Oct 2019 13:08:20 +0100 Subject: [PATCH 177/571] #5428 ignore custom directives if forced https --- server/conf/vhost.conf.master | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0982a3cf41..d95d810ad3 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -529,7 +529,16 @@ # WEBDAV END </IfModule> -<tmpl_var name='apache_directives'> +<tmpl_if name='ssl_enabled'> + <tmpl_var name='apache_directives'> +<tmpl_else> + <tmpl_if name='rewrite_to_https' op='==' value='y'> + # skipping apache_directives, as that will be handled by the ssl vhost + <tmpl_else> + <tmpl_var name='apache_directives'> + </tmpl_if> +</tmpl_if> + <tmpl_hook name='apache2_vhost:vhost_footer'> </VirtualHost> -- GitLab From 89e4ff3334430812d423fdc5b5e7cfea83997125 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Tue, 22 Oct 2019 20:42:54 +0200 Subject: [PATCH 178/571] #5387 boyscout: wrap ProxyFCGISetEnvIf in appropriate IfVersion --- server/conf/vhost.conf.master | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0982a3cf41..312be41b52 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -379,10 +379,12 @@ </IfModule> <IfModule mod_proxy_fcgi.c> <tmpl_if name='php_fpm_chroot' op='==' value='y'> - ProxyFCGISetEnvIf "true" DOCUMENT_ROOT "<tmpl_var name='php_fpm_chroot_web_folder'>" - ProxyFCGISetEnvIf "true" CONTEXT_DOCUMENT_ROOT "%{reqenv:DOCUMENT_ROOT}" - ProxyFCGISetEnvIf "true" HOME "%{reqenv:DOCUMENT_ROOT}" - ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "%{reqenv:DOCUMENT_ROOT}%{reqenv:SCRIPT_NAME}" + <IfVersion >= 2.4.26> + ProxyFCGISetEnvIf "true" DOCUMENT_ROOT "<tmpl_var name='php_fpm_chroot_web_folder'>" + ProxyFCGISetEnvIf "true" CONTEXT_DOCUMENT_ROOT "%{reqenv:DOCUMENT_ROOT}" + ProxyFCGISetEnvIf "true" HOME "%{reqenv:DOCUMENT_ROOT}" + ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "%{reqenv:DOCUMENT_ROOT}%{reqenv:SCRIPT_NAME}" + </IfVersion> </tmpl_if> <tmpl_if name='use_tcp'> #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:<tmpl_var name='fpm_port'><tmpl_var name='web_document_root'>/$1 -- GitLab From b2d8559a5323977f7e77d75d634de3babfd4bd11 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Tue, 22 Oct 2019 22:01:32 +0200 Subject: [PATCH 179/571] #5387 make apache init script overridable in server config --- install/tpl/server.ini.master | 1 + install/update.php | 9 ++++++++- interface/lib/classes/IDS/Config/Config.ini.php | 1 + interface/web/admin/form/server_config.tform.php | 8 ++++++++ interface/web/admin/lib/lang/ar_server_config.lng | 2 ++ interface/web/admin/lib/lang/bg_server_config.lng | 2 ++ interface/web/admin/lib/lang/br_server_config.lng | 2 ++ interface/web/admin/lib/lang/ca_server_config.lng | 2 ++ interface/web/admin/lib/lang/cz_server_config.lng | 2 ++ interface/web/admin/lib/lang/de_server_config.lng | 2 ++ interface/web/admin/lib/lang/dk_server_config.lng | 2 ++ interface/web/admin/lib/lang/el_server_config.lng | 2 ++ interface/web/admin/lib/lang/en_server_config.lng | 2 ++ interface/web/admin/lib/lang/es_server_config.lng | 2 ++ interface/web/admin/lib/lang/fi_server_config.lng | 2 ++ interface/web/admin/lib/lang/fr_server_config.lng | 2 ++ interface/web/admin/lib/lang/hr_server_config.lng | 2 ++ interface/web/admin/lib/lang/hu_server_config.lng | 2 ++ interface/web/admin/lib/lang/id_server_config.lng | 2 ++ interface/web/admin/lib/lang/it_server_config.lng | 2 ++ interface/web/admin/lib/lang/ja_server_config.lng | 2 ++ interface/web/admin/lib/lang/nl_server_config.lng | 2 ++ interface/web/admin/lib/lang/pl_server_config.lng | 2 ++ interface/web/admin/lib/lang/pt_server_config.lng | 2 ++ interface/web/admin/lib/lang/ro_server_config.lng | 2 ++ interface/web/admin/lib/lang/ru_server_config.lng | 2 ++ interface/web/admin/lib/lang/se_server_config.lng | 2 ++ interface/web/admin/lib/lang/sk_server_config.lng | 2 ++ interface/web/admin/lib/lang/tr_server_config.lng | 2 ++ interface/web/admin/templates/server_config_web_edit.htm | 3 +++ security/ids.whitelist | 1 + server/mods-available/web_module.inc.php | 4 +++- 32 files changed, 75 insertions(+), 2 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 36f157d8e6..3786fc2ca3 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -72,6 +72,7 @@ website_symlinks_rel=n network_filesystem=n vhost_conf_dir=/etc/apache2/sites-available vhost_conf_enabled_dir=/etc/apache2/sites-enabled +apache_init_script= nginx_vhost_conf_dir=/etc/nginx/sites-available nginx_vhost_conf_enabled_dir=/etc/nginx/sites-enabled security_level=20 diff --git a/install/update.php b/install/update.php index 11570aa666..3b3cf969ef 100644 --- a/install/update.php +++ b/install/update.php @@ -567,7 +567,14 @@ if($reconfigure_services_answer == 'yes') { if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &'); } if($conf['services']['web'] || $inst->install_ispconfig_interface) { - if($conf['webserver']['server_type'] == 'apache' && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart')); + if($conf['webserver']['server_type'] == 'apache') { + // If user has configured a custom Apache init script, use that. Otherwise use the default auto-detected init script + if(!empty($conf['server_config']['web']['apache_init_script'])) { + system($inst->getinitcommand($conf['server_config']['web']['apache_init_script'], 'restart')); + } elseif(!empty($conf['apache']['init_script'])) { + system($inst->getinitcommand($conf['apache']['init_script'], 'restart')); + } + } //* Reload is enough for nginx if($conf['webserver']['server_type'] == 'nginx'){ if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload')); diff --git a/interface/lib/classes/IDS/Config/Config.ini.php b/interface/lib/classes/IDS/Config/Config.ini.php index 080055298d..19af5d59bd 100644 --- a/interface/lib/classes/IDS/Config/Config.ini.php +++ b/interface/lib/classes/IDS/Config/Config.ini.php @@ -47,6 +47,7 @@ ; exceptions[] = POST.website_symlinks ; exceptions[] = POST.vhost_conf_dir ; exceptions[] = POST.vhost_conf_enabled_dir + ; exceptions[] = POST.apache_init_script ; exceptions[] = POST.nginx_vhost_conf_dir ; exceptions[] = POST.nginx_vhost_conf_enabled_dir ; exceptions[] = POST.php_open_basedir diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 2663cdd0e0..0e02b8525b 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -848,6 +848,14 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), + 'apache_init_script' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), 'nginx_enable_pagespeed' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index bccdcc42c0..dec2b56c8e 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Website basedir'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 39531461c3..186462720e 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init Ñкрипт'; +$wb['apache_init_script_note_txt'] = 'ОÑтавÑнето на това празно ще открие автоматично Ñкрипта за Apache init'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index f57a2310f2..25cb1a3a3d 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Auto alias - site'; $wb['website_autoalias_note_txt'] = 'Ãrea reservada:'; $wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado'; +$wb['apache_init_script_txt'] = 'Script de inicialização do Apache'; +$wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache'; $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail'; $wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 14f0b91d3b..f0d79a89f9 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Website auto alias'; $wb['website_autoalias_note_txt'] = 'Placeholders:'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index a97d78b8eb..100694c625 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Website config adresář'; $wb['vhost_conf_dir_txt'] = 'Vhost config adresář'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled adresář'; +$wb['apache_init_script_txt'] = 'InicializaÄnà skript Apache'; +$wb['apache_init_script_note_txt'] = 'Ponecháte-li toto prázdné, automaticky detekuje iniciaÄnà skript Apache'; $wb['getmail_config_dir_txt'] = 'Getmail složka pro konfigurace'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 960381e7c1..d7f21fc473 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -8,6 +8,8 @@ $wb['website_symlinks_txt'] = 'Webseiten Symlinks'; $wb['website_symlinks_rel_txt'] = 'Erstelle relative Symlinks'; $wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis'; $wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache-Init-Skript'; +$wb['apache_init_script_note_txt'] = 'Wenn Sie dieses Feld leer lassen, wird das Apache-Init-Skript automatisch erkannt'; $wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis'; $wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad'; $wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 73e7ef1bfd..2a8c13e143 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Webside auto alias'; $wb['website_autoalias_note_txt'] = 'Pladsholdere:'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'Forlader denne tomme vilje automatisk registrering Apache init-script'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 84992261bb..60d3564e13 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'ΔημιουÏγία σχετικών symlink $wb['website_basedir_txt'] = 'Βασικός φάκελος Website'; $wb['vhost_conf_dir_txt'] = 'Φάκελος Ïυθμίσεων Vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Φάκελος Ïυθμίσεων (ενεÏγών) Vhost'; +$wb['apache_init_script_txt'] = 'Apache script init'; +$wb['apache_init_script_note_txt'] = 'Εάν αφήσετε αυτό το κενό, θα ανιχνευθεί αυτόματα το σενάÏιο εισαγωγής Apache'; $wb['getmail_config_dir_txt'] = 'Φάκελος Ïυθμίσεων Getmail'; $wb['fastcgi_starter_path_txt'] = 'ΔιαδÏομή εκκίνησης FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script εκκίνησης FastCGI'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 0ba3638a0a..82c847f88d 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -19,6 +19,8 @@ $wb["website_autoalias_txt"] = 'Website auto alias'; $wb["website_autoalias_note_txt"] = 'Placeholders:'; $wb["vhost_conf_dir_txt"] = 'Vhost config dir'; $wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir'; +$wb["apache_init_script_txt"] = 'Apache init script'; +$wb["apache_init_script_note_txt"] = 'Leaving this empty will auto-detect the Apache init script'; $wb["getmail_config_dir_txt"] = 'Getmail config dir'; $wb["fastcgi_starter_path_txt"] = 'FastCGI starter path'; $wb["fastcgi_starter_script_txt"] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 01350367ae..04333c60a3 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -2,6 +2,8 @@ $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios web al grupo -sshusers-'; $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de siguiente nivel'; $wb['apache_group_error_empty'] = 'El grupo de Apache está vacÃo.'; +$wb['apache_init_script_note_txt'] = 'Dejar esto vacÃo detectará automáticamente el script de inicio de Apache'; +$wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_user_error_empty'] = 'El usuario de Apache está vacÃo.'; $wb['apps_vhost_enabled_txt'] = 'Host virtual de aplicaciones habilitado'; $wb['apps_vhost_ip_error_empty'] = 'La IP para el host virtual de las aplicaciones está vacÃa.'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6caf643abe..c471b4c11b 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Verkkotunnuksen symmetriset linkit'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['vhost_conf_dir_txt'] = 'Virtuaalipalvelimen asetuskansio'; $wb['vhost_conf_enabled_dir_txt'] = 'Virtuaalipalvelimen käyttöönottokansio'; +$wb['apache_init_script_txt'] = 'Apache-aloituskomentosarja'; +$wb['apache_init_script_note_txt'] = 'Jätä tämä tyhjä tunnistaa Apache-aloitusohjelman automaattisesti'; $wb['getmail_config_dir_txt'] = 'Getmail-asetuskansio'; $wb['fastcgi_starter_path_txt'] = 'FastCGI:n käynnistyspolku'; $wb['fastcgi_starter_script_txt'] = 'FastCGI:n käynnistysskripti'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 25f7375688..b7741efefc 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Liens symboliques du site web'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['vhost_conf_dir_txt'] = 'Répertoire de configuration des VHosts'; $wb['vhost_conf_enabled_dir_txt'] = 'Répertoire de configuration des VHosts actifs'; +$wb['apache_init_script_txt'] = 'Script d\'initiation Apache'; +$wb['apache_init_script_note_txt'] = 'Si vous laissez ce champ vide, le script init Apache sera automatiquement détecté.'; $wb['getmail_config_dir_txt'] = 'Répertoire de configuration de Getmail'; $wb['fastcgi_starter_path_txt'] = 'Chemin du lanceur de FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script lanceur de FastCGI'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index faf08f4201..d1da411eec 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -8,6 +8,8 @@ $wb['website_symlinks_txt'] = 'Symlinkovi Web stranice'; $wb['website_basedir_txt'] = 'Bazni direktorij Web stranice'; $wb['vhost_conf_dir_txt'] = 'Vhost konfiguracijski direktorij'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost dozvoljeni konfiguracijski direktorij'; +$wb['apache_init_script_txt'] = 'Apache init skripta'; +$wb['apache_init_script_note_txt'] = 'Ostavite ovo prazno automatski će otkriti skriptu Apache init'; $wb['getmail_config_dir_txt'] = 'Getmail konfiguracijski direktorij'; $wb['fastcgi_starter_path_txt'] = 'Put do FastCGI-a'; $wb['fastcgi_starter_script_txt'] = 'FastCGI poÄetna skripta'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 6347afb7da..f07dc1a7dd 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init parancsfájl'; +$wb['apache_init_script_note_txt'] = 'Ha üresen hagyja, az automatikusan felismeri az Apache init parancsfájlját'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 9a28dff300..71e060c0ea 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Basedir Situs web'; $wb['vhost_conf_dir_txt'] = 'Direktori konfigurasi vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Direktori konfigurasi vhost yang aktif'; +$wb['apache_init_script_txt'] = 'Skrip init Apache'; +$wb['apache_init_script_note_txt'] = 'Membiarkan ini kosong akan secara otomatis mendeteksi skrip init Apache'; $wb['getmail_config_dir_txt'] = 'Direktori konfigurasi getmail'; $wb['fastcgi_starter_path_txt'] = 'Path pemicu FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Skrip pemicu FastCGI'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 3dc37a3c1d..b853e1f4ab 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -6,6 +6,8 @@ $wb['website_path_txt'] = 'Percorso Sito Web'; $wb['website_symlinks_txt'] = 'Sito Web symlinks'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config dir abilitata'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'Lasciare questo vuoto rileverà automaticamente lo script init di Apache'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'Percorso FastCGI starter'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 72bef72c4b..efaff2df6c 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'ウェブサイトã®ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª'; $wb['vhost_conf_dir_txt'] = 'ãƒãƒ¼ãƒãƒ£ãƒ«ãƒ›ã‚¹ãƒˆè¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª'; $wb['vhost_conf_enabled_dir_txt'] = 'ãƒãƒ¼ãƒãƒ£ãƒ«ãƒ›ã‚¹ãƒˆè¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªï¼ˆæœ‰åŠ¹ï¼‰'; +$wb['apache_init_script_txt'] = 'Apache initスクリプト'; +$wb['apache_init_script_note_txt'] = 'ã“れを空ã®ã¾ã¾ã«ã™ã‚‹ã¨ã€Apache initスクリプトãŒè‡ªå‹•æ¤œå‡ºã•ã‚Œã¾ã™'; $wb['getmail_config_dir_txt'] = 'Getmail è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª'; $wb['fastcgi_starter_path_txt'] = 'FastCGIスターターã®ãƒ‘ス'; $wb['fastcgi_starter_script_txt'] = 'FastCGIスタータースクリプト'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 2884f304ec..e081fd79ea 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Maak relative symlinks'; $wb['website_basedir_txt'] = 'Website basedir'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'Als u dit leeg laat, wordt het Apache init-script automatisch gedetecteerd'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter pad'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 29cb94e96c..68ad88c95a 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Twórz linki relatywne'; $wb['website_basedir_txt'] = 'Åšcieżka bazowa strony WWW'; $wb['vhost_conf_dir_txt'] = 'Åšcieżka do konfiguracyji wirtualnego serwera'; $wb['vhost_conf_enabled_dir_txt'] = 'Åšcieżka do aktywnej konfiguracyji Vhost'; +$wb['apache_init_script_txt'] = 'Skrypt inicjujÄ…cy Apache'; +$wb['apache_init_script_note_txt'] = 'Pozostawienie tego pustego spowoduje automatyczne wykrycie skryptu inicjujÄ…cego Apache'; $wb['getmail_config_dir_txt'] = 'Åšcieżka do konfiguracyji Getmail'; $wb['fastcgi_starter_path_txt'] = 'Adres startowy FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Startowy skrypt FastCGI'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 3703c759ed..8639ad3a8b 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -8,6 +8,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Website basedir: pasta base '; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost pasta de configuração activo'; +$wb['apache_init_script_txt'] = 'Script de inicialização do Apache'; +$wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI: Pasta inicial'; $wb['fastcgi_starter_script_txt'] = 'FastCGI: Script inicial'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 3251476126..4292ee008f 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -8,6 +8,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Website basedir'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Scriptul Apache init'; +$wb['apache_init_script_note_txt'] = 'Lăsând acest gol, va detecta automat scriptul iniÈ›ial Apache'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index b2f0b407d6..43468ce757 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -6,6 +6,8 @@ $wb['website_path_txt'] = 'Путь к web-Ñайту'; $wb['website_symlinks_txt'] = 'Симлинки Web-Ñайта'; $wb['vhost_conf_dir_txt'] = 'Каталог config Vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Каталог Vhost conf enabled'; +$wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_note_txt'] = 'ЕÑли оÑтавить Ñто поле пуÑтым, будет автоматичеÑки обнаружен Ñкрипт инициализации Apache.'; $wb['getmail_config_dir_txt'] = 'Папка конфига Getmail'; $wb['fastcgi_starter_path_txt'] = 'Стартовый путь FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Стартовый Ñкрипт FastCGI'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 1103baa4d2..baf3c16e6f 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -7,6 +7,8 @@ $wb['website_symlinks_txt'] = 'Website symlinks'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; +$wb['apache_init_script_txt'] = 'Apache init-skript'; +$wb['apache_init_script_note_txt'] = 'Om du lämnar detta tomt kommer det automatiskt att upptäcka Apache-init-skriptet'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 125e0b1ea2..4eaacc4b59 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -9,6 +9,8 @@ $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; $wb['website_basedir_txt'] = 'Website základny adresár'; $wb['vhost_conf_dir_txt'] = 'Vhost konfig adresár'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost konfig odblokovaný adresár'; +$wb['apache_init_script_txt'] = 'InicializaÄný skript Apache'; +$wb['apache_init_script_note_txt'] = 'Ak ponecháte toto pole prázdne, automaticky zistà iniciaÄný skript Apache'; $wb['getmail_config_dir_txt'] = 'Getmail konfig adresár'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 3b63e881f9..a5ca5adfff 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -19,6 +19,8 @@ $wb['website_autoalias_txt'] = 'Otomatik Web Sitesi Takma Adı'; $wb['website_autoalias_note_txt'] = 'Kodlar:'; $wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü'; $wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü'; +$wb['apache_init_script_txt'] = 'Apache init betiÄŸi'; +$wb['apache_init_script_note_txt'] = 'Bu deÄŸerin boÅŸ bırakılması Apache init betiÄŸini otomatik olarak algılar'; $wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü'; $wb['fastcgi_starter_path_txt'] = 'FastCGI BaÅŸlatıcı Yolu'; $wb['fastcgi_starter_script_txt'] = 'FastCGI BaÅŸlatıcı BetiÄŸi'; diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index eb285bbc07..97dc0557fc 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -60,6 +60,9 @@ <div class="form-group apache"> <label for="vhost_conf_enabled_dir" class="col-sm-3 control-label">{tmpl_var name='vhost_conf_enabled_dir_txt'}</label> <div class="col-sm-9"><input type="text" name="vhost_conf_enabled_dir" id="vhost_conf_enabled_dir" value="{tmpl_var name='vhost_conf_enabled_dir'}" class="form-control" /></div></div> + <div class="form-group apache"> + <label for="apache_init_script" class="col-sm-3 control-label">{tmpl_var name='apache_init_script_txt'}</label> + <div class="col-sm-9"><input type="text" name="apache_init_script" id="apache_init_script" value="{tmpl_var name='apache_init_script'}" class="form-control" />{tmpl_var name='apache_init_script_note_txt'}</div></div> <div class="form-group nginx"> <label for="nginx_enable_pagespeed" class="col-sm-3 control-label">{tmpl_var name='nginx_enable_pagespeed_txt'}</label> <div class="col-sm-9">{tmpl_var name='nginx_enable_pagespeed'}</div></div> diff --git a/security/ids.whitelist b/security/ids.whitelist index a9b045e15f..6a953f45cf 100644 --- a/security/ids.whitelist +++ b/security/ids.whitelist @@ -7,6 +7,7 @@ admin:/admin/server_config_edit.php:POST.website_path admin:/admin/server_config_edit.php:POST.website_symlinks admin:/admin/server_config_edit.php:POST.vhost_conf_dir admin:/admin/server_config_edit.php:POST.vhost_conf_enabled_dir +admin:/admin/server_config_edit.php:POST.apache_init_script admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_dir admin:/admin/server_config_edit.php:POST.nginx_vhost_conf_enabled_dir admin:/admin/server_config_edit.php:POST.php_open_basedir diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index aecec10579..02f31510c2 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -203,7 +203,9 @@ class web_module { $daemon = $web_config['server_type']; break; default: - if(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) { + if (!empty($web_config['apache_init_script'])) { + $daemon = $web_config['apache_init_script']; + } elseif(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) { $daemon = 'httpd'; } else { $daemon = 'apache2'; -- GitLab From 215570809d0a5246a0dac783373720efc1c56a59 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Wed, 27 Nov 2019 15:43:14 +0100 Subject: [PATCH 180/571] #5387 add regex check to apache init script form input --- interface/web/admin/form/server_config.tform.php | 4 ++++ interface/web/admin/lib/lang/ar_server_config.lng | 1 + interface/web/admin/lib/lang/bg_server_config.lng | 1 + interface/web/admin/lib/lang/br_server_config.lng | 1 + interface/web/admin/lib/lang/ca_server_config.lng | 1 + interface/web/admin/lib/lang/cz_server_config.lng | 1 + interface/web/admin/lib/lang/de_server_config.lng | 1 + interface/web/admin/lib/lang/dk_server_config.lng | 1 + interface/web/admin/lib/lang/el_server_config.lng | 1 + interface/web/admin/lib/lang/en_server_config.lng | 1 + interface/web/admin/lib/lang/es_server_config.lng | 1 + interface/web/admin/lib/lang/fi_server_config.lng | 1 + interface/web/admin/lib/lang/fr_server_config.lng | 1 + interface/web/admin/lib/lang/hr_server_config.lng | 1 + interface/web/admin/lib/lang/hu_server_config.lng | 1 + interface/web/admin/lib/lang/id_server_config.lng | 1 + interface/web/admin/lib/lang/it_server_config.lng | 1 + interface/web/admin/lib/lang/ja_server_config.lng | 1 + interface/web/admin/lib/lang/nl_server_config.lng | 1 + interface/web/admin/lib/lang/pl_server_config.lng | 1 + interface/web/admin/lib/lang/pt_server_config.lng | 1 + interface/web/admin/lib/lang/ro_server_config.lng | 1 + interface/web/admin/lib/lang/ru_server_config.lng | 1 + interface/web/admin/lib/lang/se_server_config.lng | 1 + interface/web/admin/lib/lang/sk_server_config.lng | 1 + interface/web/admin/lib/lang/tr_server_config.lng | 1 + 26 files changed, 29 insertions(+) diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 0e02b8525b..c6022e6bc2 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -852,6 +852,10 @@ $form["tabs"]['web'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', 'default' => '', + 'validators' => array( 0 => array('type' => 'REGEX', + 'regex' => '/^(|[a-zA-Z0-9\.\-\_]{1,128})$/', + 'errmsg' => 'apache_init_script_error_regex'), + ), 'value' => '', 'width' => '40', 'maxlength' => '255' diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index dec2b56c8e..f271e007d3 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script'; +$wb['apache_init_script_error_regex'] = 'Invalid apache init script.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 186462720e..46c77fe794 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init Ñкрипт'; $wb['apache_init_script_note_txt'] = 'ОÑтавÑнето на това празно ще открие автоматично Ñкрипта за Apache init'; +$wb['apache_init_script_error_regex'] = 'Ðевалиден Apache Ñкрипт за задейÑтване.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 25cb1a3a3d..c12a1a7dad 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Diretório de configuração vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Diretório de configuração vhost habilitado'; $wb['apache_init_script_txt'] = 'Script de inicialização do Apache'; $wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache'; +$wb["apache_init_script_error_regex"] = 'Script de inicialização do Apache inválido.'; $wb['getmail_config_dir_txt'] = 'Diretório de configuração do getmail'; $wb['fastcgi_starter_path_txt'] = 'Caminho de inicialização do FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script de inicialização do FastCGI'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index f0d79a89f9..1dac17eda5 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'Leaving this empty will auto-detect the Apache init script'; +$wb['apache_init_script_error_regex'] = 'Invalid Apache init script.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 100694c625..2b42cf6691 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config adresář'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled adresář'; $wb['apache_init_script_txt'] = 'InicializaÄnà skript Apache'; $wb['apache_init_script_note_txt'] = 'Ponecháte-li toto prázdné, automaticky detekuje iniciaÄnà skript Apache'; +$wb['apache_init_script_error_regex'] = 'Neplatný iniciaÄnà skript Apache.'; $wb['getmail_config_dir_txt'] = 'Getmail složka pro konfigurace'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index d7f21fc473..9e0ce6f48f 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'vHost Konfigurationsverzeichnis'; $wb['vhost_conf_enabled_dir_txt'] = 'vHost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache-Init-Skript'; $wb['apache_init_script_note_txt'] = 'Wenn Sie dieses Feld leer lassen, wird das Apache-Init-Skript automatisch erkannt'; +$wb['apache_init_script_error_regex'] = 'Ungültiges Apache-Init-Skript.'; $wb['getmail_config_dir_txt'] = 'Getmail Konfigurationsverzeichnis'; $wb['fastcgi_starter_path_txt'] = 'FastCGI Starter Pfad'; $wb['fastcgi_starter_script_txt'] = 'FastCGI Starter Script'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 2a8c13e143..e6d5eaa289 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'Forlader denne tomme vilje automatisk registrering Apache init-script'; +$wb['apache_init_script_error_regex'] = 'Ugyldigt Apache init-script.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 60d3564e13..394ba2bde9 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Φάκελος Ïυθμίσεων Vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Φάκελος Ïυθμίσεων (ενεÏγών) Vhost'; $wb['apache_init_script_txt'] = 'Apache script init'; $wb['apache_init_script_note_txt'] = 'Εάν αφήσετε αυτό το κενό, θα ανιχνευθεί αυτόματα το σενάÏιο εισαγωγής Apache'; +$wb['apache_init_script_error_regex'] = 'Μη ÎγκυÏη δÎσμη ενεÏγειών Apache.'; $wb['getmail_config_dir_txt'] = 'Φάκελος Ïυθμίσεων Getmail'; $wb['fastcgi_starter_path_txt'] = 'ΔιαδÏομή εκκίνησης FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script εκκίνησης FastCGI'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 82c847f88d..1d2bf74ec9 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -21,6 +21,7 @@ $wb["vhost_conf_dir_txt"] = 'Vhost config dir'; $wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir'; $wb["apache_init_script_txt"] = 'Apache init script'; $wb["apache_init_script_note_txt"] = 'Leaving this empty will auto-detect the Apache init script'; +$wb["apache_init_script_error_regex"] = 'Invalid Apache init script.'; $wb["getmail_config_dir_txt"] = 'Getmail config dir'; $wb["fastcgi_starter_path_txt"] = 'FastCGI starter path'; $wb["fastcgi_starter_script_txt"] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 04333c60a3..08c80ec80e 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -4,6 +4,7 @@ $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de sig $wb['apache_group_error_empty'] = 'El grupo de Apache está vacÃo.'; $wb['apache_init_script_note_txt'] = 'Dejar esto vacÃo detectará automáticamente el script de inicio de Apache'; $wb['apache_init_script_txt'] = 'Apache init script'; +$wb['apache_init_script_error_regex'] = 'Guión de inicio Apache no válido.'; $wb['apache_user_error_empty'] = 'El usuario de Apache está vacÃo.'; $wb['apps_vhost_enabled_txt'] = 'Host virtual de aplicaciones habilitado'; $wb['apps_vhost_ip_error_empty'] = 'La IP para el host virtual de las aplicaciones está vacÃa.'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index c471b4c11b..b81f77ac08 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Virtuaalipalvelimen asetuskansio'; $wb['vhost_conf_enabled_dir_txt'] = 'Virtuaalipalvelimen käyttöönottokansio'; $wb['apache_init_script_txt'] = 'Apache-aloituskomentosarja'; $wb['apache_init_script_note_txt'] = 'Jätä tämä tyhjä tunnistaa Apache-aloitusohjelman automaattisesti'; +$wb['apache_init_script_error_regex'] = 'Virheellinen Apache-aloituskomentosarja.'; $wb['getmail_config_dir_txt'] = 'Getmail-asetuskansio'; $wb['fastcgi_starter_path_txt'] = 'FastCGI:n käynnistyspolku'; $wb['fastcgi_starter_script_txt'] = 'FastCGI:n käynnistysskripti'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index b7741efefc..705c376a29 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Répertoire de configuration des VHosts'; $wb['vhost_conf_enabled_dir_txt'] = 'Répertoire de configuration des VHosts actifs'; $wb['apache_init_script_txt'] = 'Script d\'initiation Apache'; $wb['apache_init_script_note_txt'] = 'Si vous laissez ce champ vide, le script init Apache sera automatiquement détecté.'; +$wb['apache_init_script_error_regex'] = 'Script d\'initialisation Apache non valide.'; $wb['getmail_config_dir_txt'] = 'Répertoire de configuration de Getmail'; $wb['fastcgi_starter_path_txt'] = 'Chemin du lanceur de FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Script lanceur de FastCGI'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index d1da411eec..609d9ab889 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost konfiguracijski direktorij'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost dozvoljeni konfiguracijski direktorij'; $wb['apache_init_script_txt'] = 'Apache init skripta'; $wb['apache_init_script_note_txt'] = 'Ostavite ovo prazno automatski će otkriti skriptu Apache init'; +$wb['apache_init_script_error_regex'] = 'Nevažeća skripta Apache init.'; $wb['getmail_config_dir_txt'] = 'Getmail konfiguracijski direktorij'; $wb['fastcgi_starter_path_txt'] = 'Put do FastCGI-a'; $wb['fastcgi_starter_script_txt'] = 'FastCGI poÄetna skripta'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index f07dc1a7dd..0bd058a5bc 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init parancsfájl'; $wb['apache_init_script_note_txt'] = 'Ha üresen hagyja, az automatikusan felismeri az Apache init parancsfájlját'; +$wb['apache_init_script_error_regex'] = 'Érvénytelen Apache init parancsfájl.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 71e060c0ea..e4c1e47ce5 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Direktori konfigurasi vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Direktori konfigurasi vhost yang aktif'; $wb['apache_init_script_txt'] = 'Skrip init Apache'; $wb['apache_init_script_note_txt'] = 'Membiarkan ini kosong akan secara otomatis mendeteksi skrip init Apache'; +$wb['apache_init_script_error_regex'] = 'Skrip init Apache tidak valid.'; $wb['getmail_config_dir_txt'] = 'Direktori konfigurasi getmail'; $wb['fastcgi_starter_path_txt'] = 'Path pemicu FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Skrip pemicu FastCGI'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index b853e1f4ab..2d7d9e9ddb 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -8,6 +8,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config dir abilitata'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'Lasciare questo vuoto rileverà automaticamente lo script init di Apache'; +$wb['apache_init_script_error_regex'] = 'Script init Apache non valido.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'Percorso FastCGI starter'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index efaff2df6c..4d1d362502 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'ãƒãƒ¼ãƒãƒ£ãƒ«ãƒ›ã‚¹ãƒˆè¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª'; $wb['vhost_conf_enabled_dir_txt'] = 'ãƒãƒ¼ãƒãƒ£ãƒ«ãƒ›ã‚¹ãƒˆè¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªï¼ˆæœ‰åŠ¹ï¼‰'; $wb['apache_init_script_txt'] = 'Apache initスクリプト'; $wb['apache_init_script_note_txt'] = 'ã“れを空ã®ã¾ã¾ã«ã™ã‚‹ã¨ã€Apache initスクリプトãŒè‡ªå‹•æ¤œå‡ºã•ã‚Œã¾ã™'; +$wb['apache_init_script_error_regex'] = '無効ãªApache initスクリプト。'; $wb['getmail_config_dir_txt'] = 'Getmail è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª'; $wb['fastcgi_starter_path_txt'] = 'FastCGIスターターã®ãƒ‘ス'; $wb['fastcgi_starter_script_txt'] = 'FastCGIスタータースクリプト'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index e081fd79ea..542add696b 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'Als u dit leeg laat, wordt het Apache init-script automatisch gedetecteerd'; +$wb['apache_init_script_error_regex'] = 'Ongeldig Apache init-script.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter pad'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 68ad88c95a..61509f30cf 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Åšcieżka do konfiguracyji wirtualnego serwera'; $wb['vhost_conf_enabled_dir_txt'] = 'Åšcieżka do aktywnej konfiguracyji Vhost'; $wb['apache_init_script_txt'] = 'Skrypt inicjujÄ…cy Apache'; $wb['apache_init_script_note_txt'] = 'Pozostawienie tego pustego spowoduje automatyczne wykrycie skryptu inicjujÄ…cego Apache'; +$wb['apache_init_script_error_regex'] = 'Niepoprawny skrypt inicjujÄ…cy Apache.'; $wb['getmail_config_dir_txt'] = 'Åšcieżka do konfiguracyji Getmail'; $wb['fastcgi_starter_path_txt'] = 'Adres startowy FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Startowy skrypt FastCGI'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 8639ad3a8b..98bf41a283 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost pasta de configuração activo'; $wb['apache_init_script_txt'] = 'Script de inicialização do Apache'; $wb['apache_init_script_note_txt'] = 'Deixando esta vontade vazio detectar automaticamente o script de inicialização do Apache'; +$wb['apache_init_script_error_regex'] = 'Script de inicialização do Apache inválido.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI: Pasta inicial'; $wb['fastcgi_starter_script_txt'] = 'FastCGI: Script inicial'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 4292ee008f..27926c44a8 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -10,6 +10,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Scriptul Apache init'; $wb['apache_init_script_note_txt'] = 'Lăsând acest gol, va detecta automat scriptul iniÈ›ial Apache'; +$wb['apache_init_script_error_regex'] = 'Scriptul iniÈ›ial de Apache nevalid.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 43468ce757..db17e9ac5a 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -8,6 +8,7 @@ $wb['vhost_conf_dir_txt'] = 'Каталог config Vhost'; $wb['vhost_conf_enabled_dir_txt'] = 'Каталог Vhost conf enabled'; $wb['apache_init_script_txt'] = 'Apache init script'; $wb['apache_init_script_note_txt'] = 'ЕÑли оÑтавить Ñто поле пуÑтым, будет автоматичеÑки обнаружен Ñкрипт инициализации Apache.'; +$wb['apache_init_script_error_regex'] = 'ÐедопуÑтимый Ñкрипт инициализации Apache.'; $wb['getmail_config_dir_txt'] = 'Папка конфига Getmail'; $wb['fastcgi_starter_path_txt'] = 'Стартовый путь FastCGI'; $wb['fastcgi_starter_script_txt'] = 'Стартовый Ñкрипт FastCGI'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index baf3c16e6f..afaac77796 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -9,6 +9,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost config dir'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost config enabled dir'; $wb['apache_init_script_txt'] = 'Apache init-skript'; $wb['apache_init_script_note_txt'] = 'Om du lämnar detta tomt kommer det automatiskt att upptäcka Apache-init-skriptet'; +$wb['apache_init_script_error_regex'] = 'Ogiltigt Apache-init-skript.'; $wb['getmail_config_dir_txt'] = 'Getmail config dir'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter path'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter script'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 4eaacc4b59..f97bc7f86f 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -11,6 +11,7 @@ $wb['vhost_conf_dir_txt'] = 'Vhost konfig adresár'; $wb['vhost_conf_enabled_dir_txt'] = 'Vhost konfig odblokovaný adresár'; $wb['apache_init_script_txt'] = 'InicializaÄný skript Apache'; $wb['apache_init_script_note_txt'] = 'Ak ponecháte toto pole prázdne, automaticky zistà iniciaÄný skript Apache'; +$wb['apache_init_script_error_regex'] = 'Neplatný iniciaÄný skript Apache.'; $wb['getmail_config_dir_txt'] = 'Getmail konfig adresár'; $wb['fastcgi_starter_path_txt'] = 'FastCGI starter cesta'; $wb['fastcgi_starter_script_txt'] = 'FastCGI starter skript'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index a5ca5adfff..7d664b6947 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -21,6 +21,7 @@ $wb['vhost_conf_dir_txt'] = 'Sanal Sunucu Ayarları Klasörü'; $wb['vhost_conf_enabled_dir_txt'] = 'Etkin Sanal Sunucu Ayarları Klasörü'; $wb['apache_init_script_txt'] = 'Apache init betiÄŸi'; $wb['apache_init_script_note_txt'] = 'Bu deÄŸerin boÅŸ bırakılması Apache init betiÄŸini otomatik olarak algılar'; +$wb['apache_init_script_error_regex'] = 'Geçersiz Apache init betiÄŸi.'; $wb['getmail_config_dir_txt'] = 'Getmail Ayarları Klasörü'; $wb['fastcgi_starter_path_txt'] = 'FastCGI BaÅŸlatıcı Yolu'; $wb['fastcgi_starter_script_txt'] = 'FastCGI BaÅŸlatıcı BetiÄŸi'; -- GitLab From 8f069999ce0cab99d24ee88f324e73f92bffd29f Mon Sep 17 00:00:00 2001 From: Ales Seifert <seifert@alesak.net> Date: Thu, 28 Nov 2019 21:27:03 +1100 Subject: [PATCH 181/571] added update status check for Redhat based distros --- .../cron.d/100-monitor_system_update.inc.php | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php index bc4f521073..3d4ebf408e 100644 --- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php +++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php @@ -159,7 +159,29 @@ class cronjob_monitor_system_update extends cronjob { * Fetch the output */ $data['output'] = shell_exec('zypper lu'); - } else { + } elseif(file_exists('/etc/redhat-release')) { + /* + * update and find the upgrade. + * if there is any output, then there is a needed update + */ + $aptData = shell_exec('yum -q list updates'); + if ($aptData == '') { + /* There is nothing to update! */ + $state = 'ok'; + } else { + /* + * There is something to update! this is in most cases not critical, so we can + * do a system-update once a month or so... + */ + $state = 'info'; + } + + /* + * Fetch the output + */ + $data['output'] = shell_exec('yum -q list updates'); + + } else { /* * It is not Debian/Ubuntu, so there is no data and no state * -- GitLab From 81768b88aff964c18444e4f6cd0d38b5d9b12666 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git_projects@michaelseevogel.de> Date: Fri, 29 Nov 2019 11:52:12 +0100 Subject: [PATCH 182/571] use dnf as default package manager whenever possible --- .../cron.d/100-monitor_system_update.inc.php | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php index 3d4ebf408e..34f944fa67 100644 --- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php +++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php @@ -160,28 +160,38 @@ class cronjob_monitor_system_update extends cronjob { */ $data['output'] = shell_exec('zypper lu'); } elseif(file_exists('/etc/redhat-release')) { - /* - * update and find the upgrade. - * if there is any output, then there is a needed update - */ - $aptData = shell_exec('yum -q list updates'); - if ($aptData == '') { - /* There is nothing to update! */ - $state = 'ok'; - } else { - /* - * There is something to update! this is in most cases not critical, so we can - * do a system-update once a month or so... - */ - $state = 'info'; - } - - /* - * Fetch the output - */ - $data['output'] = shell_exec('yum -q list updates'); + /* + * update and find the upgrade. + * if there is any output, then there is a needed update + */ + + /* try to figure out the default package manager first */ + if(file_exists('/usr/bin/dnf') && (is_link('/usr/bin/yum'))) { + $rhPkgMgr = 'dnf'; + } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum')) || (!is_link('/usr/bin/yum'))) { + $rhPkgMgr = 'dnf'; + } else { + $rhPkgMgr = 'yum'; + } + + $aptData = shell_exec($rhPkgMgr. ' -q list updates'); + if ($aptData == '') { + /* There is nothing to update! */ + $state = 'ok'; + } else { + /* + * There is something to update! this is in most cases not critical, so we can + * do a system-update once a month or so... + */ + $state = 'info'; + } + + /* + * Fetch the output + */ + $data['output'] = shell_exec($rhPkgMgr. ' -q list updates'); - } else { + } else { /* * It is not Debian/Ubuntu, so there is no data and no state * -- GitLab From 1abf95299b76dc55e238054731e1e1e193a04989 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git_projects@michaelseevogel.de> Date: Fri, 29 Nov 2019 11:56:20 +0100 Subject: [PATCH 183/571] added CentOS 8 detection to monitoring tools --- server/lib/classes/monitor_tools.inc.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index d8d325fe60..aba19df7a4 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -319,6 +319,14 @@ class monitor_tools { } else { $distid = 'centos72'; } + } elseif(stristr($content, 'CentOS Linux release 8')) { + preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); + $distname = 'CentOS'; + $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown'; + $distbaseid = 'fedora'; + $var=explode(" ", $content); + $var=explode(".", $var[3]); + $var=$var[0].".".$var[1]; } else { $distname = 'Redhat'; $distver = 'Unknown'; -- GitLab From f6553cd855fcd2a52f5a522e5335277400485fd8 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git_projects@michaelseevogel.de> Date: Fri, 29 Nov 2019 12:05:43 +0100 Subject: [PATCH 184/571] added CentOS 8 detection to installer --- install/lib/install.lib.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 1e49e025ca..02ebba2850 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -341,6 +341,15 @@ function get_distname() { $distid = 'centos72'; } swriteln("Operating System: CentOS $var\n"); + } elseif(stristr($content, 'CentOS Linux release 8')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distbaseid = 'fedora'; + $distid = 'centos80'; + $var=explode(" ", $content); + $var=explode(".", $var[3]); + $var=$var[0].".".$var[1]; + swriteln("Operating System: CentOS $var\n"); } else { $distname = 'Redhat'; $distver = 'Unknown'; -- GitLab From 1d10294cee99e75cadebb6eff02160632f482c56 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 29 Nov 2019 14:00:48 +0100 Subject: [PATCH 185/571] Test webserver configuration on restart was not shown for nginx --- interface/web/admin/lib/lang/ar_server_config.lng | 2 +- interface/web/admin/lib/lang/bg_server_config.lng | 2 +- interface/web/admin/lib/lang/ca_server_config.lng | 2 +- interface/web/admin/lib/lang/en_server_config.lng | 2 +- interface/web/admin/lib/lang/fi_server_config.lng | 2 +- interface/web/admin/lib/lang/hu_server_config.lng | 2 +- interface/web/admin/lib/lang/ja_server_config.lng | 2 +- interface/web/admin/lib/lang/pt_server_config.lng | 2 +- interface/web/admin/lib/lang/ro_server_config.lng | 2 +- interface/web/admin/lib/lang/se_server_config.lng | 2 +- interface/web/admin/lib/lang/sk_server_config.lng | 2 +- interface/web/admin/templates/server_config_web_edit.htm | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index f271e007d3..24a1a41933 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['CA_path_txt'] = 'CA Path'; $wb['CA_pass_txt'] = 'CA passphrase'; $wb['ufw_enable_txt'] = 'Enable'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 46c77fe794..aa4385b8ae 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° бекъп'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 1dac17eda5..40f02fb637 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -96,7 +96,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['network_config_warning_txt'] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.'; $wb['CA_path_txt'] = 'CA Path'; $wb['CA_pass_txt'] = 'CA passphrase'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 1d2bf74ec9..b8c9166d43 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -97,7 +97,7 @@ $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'; -$wb["check_apache_config_txt"] = 'Test apache configuration on restart'; +$wb["check_apache_config_txt"] = 'Test webserver configuration on restart'; $wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.'; $wb["CA_path_txt"] = 'CA Path'; $wb["CA_pass_txt"] = 'CA passphrase'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index b81f77ac08..85b994a72e 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['CA_path_txt'] = 'CA Path'; $wb['CA_pass_txt'] = 'CA passphrase'; $wb['ufw_enable_txt'] = 'Enable'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 0bd058a5bc..52533a2c78 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Mentés könyvtára'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['network_config_warning_txt'] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.'; $wb['CA_path_txt'] = 'CA Path'; $wb['CA_pass_txt'] = 'CA passphrase'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 4d1d362502..6cd157154a 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 98bf41a283..fabd1d61cc 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['CA_path_txt'] = 'CA Path'; $wb['CA_pass_txt'] = 'CA passphrase'; $wb['ufw_enable_txt'] = 'Enable'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 27926c44a8..b5a1a18759 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index afaac77796..92b55336f0 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index f97bc7f86f..801a4fece1 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -84,7 +84,7 @@ $wb['backup_dir_txt'] = 'Backup directory'; $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'; -$wb['check_apache_config_txt'] = 'Test apache configuration on restart'; +$wb['check_apache_config_txt'] = 'Test webserver configuration on restart'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 97dc0557fc..05042bac85 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -78,7 +78,7 @@ {tmpl_var name='security_level'} </select></div> </div> - <div class="form-group apache"> + <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='check_apache_config_txt'}</label> <div class="col-sm-9"> {tmpl_var name='check_apache_config'} -- GitLab From 1477f12bdbbf2df77fa6e9abf5773745954b226e Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git_projects@michaelseevogel.de> Date: Sat, 30 Nov 2019 13:50:25 +0100 Subject: [PATCH 186/571] added missing dist files --- install/dist/conf/centos80.conf.php | 224 ++++++++++++++++++++++++++++ install/dist/lib/centos80.lib.php | 40 +++++ 2 files changed, 264 insertions(+) create mode 100644 install/dist/conf/centos80.conf.php create mode 100644 install/dist/lib/centos80.lib.php diff --git a/install/dist/conf/centos80.conf.php b/install/dist/conf/centos80.conf.php new file mode 100644 index 0000000000..04257d4dfe --- /dev/null +++ b/install/dist/conf/centos80.conf.php @@ -0,0 +1,224 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +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. +*/ + +//*** Fedora 9 default settings + +//* Main +$conf['language'] = 'en'; +$conf['distname'] = 'centos80'; +$conf['hostname'] = 'server1.domain.tld'; // Full hostname +$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error +$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; +$conf['server_id'] = 1; +$conf['init_scripts'] = '/etc/init.d'; +$conf['runlevel'] = '/etc'; +$conf['shells'] = '/etc/shells'; +$conf['pam'] = '/etc/pam.d'; + +//* Services provided by this server, this selection will be overridden by the expert mode +$conf['services']['mail'] = true; +$conf['services']['web'] = true; +$conf['services']['dns'] = true; +$conf['services']['file'] = true; +$conf['services']['db'] = true; +$conf['services']['vserver'] = true; + +//* MySQL +$conf['mysql']['installed'] = false; // will be detected automatically during installation +$conf['mysql']['init_script'] = 'mariadb'; +$conf['mysql']['host'] = 'localhost'; +$conf['mysql']['ip'] = '127.0.0.1'; +$conf['mysql']['port'] = '3306'; +$conf['mysql']['database'] = 'dbispconfig'; +$conf['mysql']['admin_user'] = 'root'; +$conf['mysql']['admin_password'] = ''; +$conf['mysql']['charset'] = 'utf8'; +$conf['mysql']['ispconfig_user'] = 'ispconfig'; +$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); +$conf['mysql']['master_slave_setup'] = 'n'; +$conf['mysql']['master_host'] = ''; +$conf['mysql']['master_database'] = 'dbispconfig'; +$conf['mysql']['master_admin_user'] = 'root'; +$conf['mysql']['master_admin_password'] = ''; +$conf['mysql']['master_ispconfig_user'] = ''; +$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); + +//* Apache +$conf['apache']['installed'] = false; // will be detected automatically during installation +$conf['apache']['user'] = 'apache'; +$conf['apache']['group'] = 'apache'; +$conf['apache']['init_script'] = 'httpd'; +$conf['apache']['version'] = '2.2'; +$conf['apache']['vhost_conf_dir'] = '/etc/httpd/conf/sites-available'; +$conf['apache']['vhost_conf_enabled_dir'] = '/etc/httpd/conf/sites-enabled'; +$conf['apache']['vhost_port'] = '8080'; +$conf['apache']['php_ini_path_apache'] = '/etc/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php.ini'; + +//* Website base settings +$conf['web']['website_basedir'] = '/var/www'; +$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; +$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; + +//* Apps base settings +$conf['web']['apps_vhost_ip'] = '_default_'; +$conf['web']['apps_vhost_port'] = '8081'; +$conf['web']['apps_vhost_servername'] = ''; +$conf['web']['apps_vhost_user'] = 'ispapps'; +$conf['web']['apps_vhost_group'] = 'ispapps'; + +//* Fastcgi +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/'; +$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; +$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; + +//* Postfix +$conf['postfix']['installed'] = false; // will be detected automatically during installation +$conf['postfix']['config_dir'] = '/etc/postfix'; +$conf['postfix']['init_script'] = 'postfix'; +$conf['postfix']['user'] = 'postfix'; +$conf['postfix']['group'] = 'postfix'; +$conf['postfix']['vmail_userid'] = '5000'; +$conf['postfix']['vmail_username'] = 'vmail'; +$conf['postfix']['vmail_groupid'] = '5000'; +$conf['postfix']['vmail_groupname'] = 'vmail'; +$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; + +//* Mailman +$conf['mailman']['installed'] = false; // will be detected automatically during installation +$conf['mailman']['config_dir'] = '/etc/mailman'; +$conf['mailman']['init_script'] = 'mailman'; + +//* Getmail +$conf['getmail']['installed'] = false; // will be detected automatically during installation +$conf['getmail']['config_dir'] = '/etc/getmail'; +$conf['getmail']['program'] = '/usr/bin/getmail'; + +//* Courier +$conf['courier']['installed'] = false; // will be detected automatically during installation +$conf['courier']['config_dir'] = '/etc/authlib'; +$conf['courier']['courier-authdaemon'] = 'courier-authlib'; +$conf['courier']['courier-imap'] = 'courier-imap'; +$conf['courier']['courier-imap-ssl'] = ''; +$conf['courier']['courier-pop'] = ''; +$conf['courier']['courier-pop-ssl'] = ''; + +//* Dovecot +$conf['dovecot']['installed'] = false; // will be detected automatically during installation +$conf['dovecot']['config_dir'] = '/etc/dovecot'; +$conf['dovecot']['init_script'] = 'dovecot'; + +//* SASL +$conf['saslauthd']['installed'] = false; // will be detected automatically during installation +$conf['saslauthd']['config'] = '/etc/sysconfig/saslauthd'; +$conf['saslauthd']['init_script'] = 'saslauthd'; + +//* Amavisd +$conf['amavis']['installed'] = false; // will be detected automatically during installation +$conf['amavis']['config_dir'] = '/etc/amavisd'; +$conf['amavis']['init_script'] = 'amavisd'; + +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + +//* ClamAV +$conf['clamav']['installed'] = false; // will be detected automatically during installation +$conf['clamav']['init_script'] = 'clamd@amavisd'; + +//* Pureftpd +$conf['pureftpd']['installed'] = false; // will be detected automatically during installation +$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; +$conf['pureftpd']['init_script'] = 'pure-ftpd'; + +//* MyDNS +$conf['mydns']['installed'] = false; // will be detected automatically during installation +$conf['mydns']['config_dir'] = '/etc'; +$conf['mydns']['init_script'] = 'mydns'; + +//* PowerDNS +$conf['powerdns']['installed'] = false; // will be detected automatically during installation +$conf['powerdns']['database'] = 'powerdns'; +$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; +$conf['powerdns']['init_script'] = 'pdns'; + +//* BIND DNS Server +$conf['bind']['installed'] = false; // will be detected automatically during installation +$conf['bind']['bind_user'] = 'named'; +$conf['bind']['bind_group'] = 'named'; +$conf['bind']['bind_zonefiles_dir'] = '/var/named'; +$conf['bind']['named_conf_path'] = '/etc/named.conf'; +$conf['bind']['named_conf_local_path'] = '/etc/named.conf.local'; +$conf['bind']['init_script'] = 'named'; + +//* Jailkit +$conf['jailkit']['installed'] = false; // will be detected automatically during installation +$conf['jailkit']['config_dir'] = '/etc/jailkit'; +$conf['jailkit']['jk_init'] = 'jk_init.ini'; +$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /bin/basename /usr/bin/dirname /usr/bin/nano'; +$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; + +//* Squid +$conf['squid']['installed'] = false; // will be detected automatically during installation +$conf['squid']['config_dir'] = '/etc/squid'; +$conf['squid']['init_script'] = 'squid'; + +//* Nginx +$conf['nginx']['installed'] = false; // will be detected automatically during installation +$conf['nginx']['user'] = 'nginx'; +$conf['nginx']['group'] = 'nginx'; +$conf['nginx']['config_dir'] = '/etc/nginx'; +$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; +$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; +$conf['nginx']['init_script'] = 'nginx'; +$conf['nginx']['vhost_port'] = '8080'; +$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; +$conf['nginx']['php_fpm_init_script'] = 'php-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php-fpm.d'; +$conf['nginx']['php_fpm_start_port'] = 9010; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php5-fpm'; + +//* vlogger +$conf['vlogger']['config_dir'] = '/etc'; + +//* cron +$conf['cron']['init_script'] = 'crond'; +$conf['cron']['crontab_dir'] = '/etc/cron.d'; +$conf['cron']['wget'] = '/usr/bin/wget'; + +//* OpenVZ +$conf['openvz']['installed'] = false; + +?> diff --git a/install/dist/lib/centos80.lib.php b/install/dist/lib/centos80.lib.php new file mode 100644 index 0000000000..3dcd7494d3 --- /dev/null +++ b/install/dist/lib/centos80.lib.php @@ -0,0 +1,40 @@ +<?php + +/* +Copyright (c) 2014, Till Brehm, ISPConfig UG +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. +*/ + +require_once realpath(dirname(__FILE__)) . '/centos_base.lib.php'; + +class installer extends installer_centos { + + protected $clamav_socket = '/var/run/clamd.amavisd/clamd.sock'; + + // everything else is inherited from installer_centos class +} + +?> -- GitLab From fe83d4b7eb40dd0ad317623b213e4d45d1d2a271 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sat, 30 Nov 2019 22:09:26 +0100 Subject: [PATCH 187/571] Filter aliasdomains like the form does for API Functions mail_user_update and mail_user_add --- interface/lib/classes/remote.d/mail.inc.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index 477743dfc3..771698e9dc 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -208,9 +208,9 @@ class remoting_mail extends remoting { //* Check if mail domain exists $email_parts = explode('@', $params['email']); - $tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ?", $email_parts[1]); + $tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ? AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain')", $email_parts[1]); if($tmp['domain'] != $email_parts[1]) { - throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist.'); + throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist as primary.'); return false; } @@ -234,11 +234,11 @@ class remoting_mail extends remoting { return false; } - //* Check if mail domain exists + //* Check if mail domain exists, and is not used as aliasdomain $email_parts = explode('@', $params['email']); - $tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ?", $email_parts[1]); + $tmp = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = ? AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain')", $email_parts[1]); if($tmp['domain'] != $email_parts[1]) { - throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist.'); + throw new SoapFault('mail_domain_does_not_exist', 'Mail domain - '.$email_parts[1].' - does not exist as primary.'); return false; } -- GitLab From 8c9f7aa33482877a605170085bc9c7ed8dce2f06 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Mon, 2 Dec 2019 10:32:16 +0100 Subject: [PATCH 188/571] Fix APS installer limits check --- interface/web/sites/aps_install_package.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php index 1a38190a9f..04b815bb2d 100644 --- a/interface/web/sites/aps_install_package.php +++ b/interface/web/sites/aps_install_package.php @@ -49,8 +49,8 @@ $app->load_language_file('web/sites/'.$lngfile); // we will check only users, not admins if($_SESSION["s"]["user"]["typ"] == 'user') { - $app->tform->formDef['db_table_idx'] = 'client_id'; - $app->tform->formDef['db_table'] = 'client'; + $app->tform->formDef['db_table_idx'] = 'id'; + $app->tform->formDef['db_table'] = 'aps_instances'; if(!$app->tform->checkClientLimit('limit_aps')) { $app->error($app->lng("limit_aps_txt")); } -- GitLab From 2d4fb14e565384cac469ae7ebf20a623a34da8b7 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 3 Dec 2019 14:57:44 +0100 Subject: [PATCH 189/571] - fixed problem with invalid mail addresses in white/blacklists --- .../plugins-available/rspamd_plugin.inc.php | 202 ++++++++++++------ 1 file changed, 137 insertions(+), 65 deletions(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index f6bb5d5a8e..cfb0979eb5 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -46,6 +46,59 @@ class rspamd_plugin { } } + private function isValidEmail($email) { + $atIndex = strrpos($email, '@'); + if($atIndex === false) { + return false; + } + + $domain = substr($email, $atIndex + 1); + $local = substr($email, 0, $atIndex); + $localLen = strlen($local); + $domainLen = strlen($domain); + if($localLen > 64) { + return false; + } elseif($domainLen < 1 || $domainLen > 255) { + return false; + } elseif(substr($local, 0, 1) == '.' || substr($local, -1, 1) == '.') { + return false; // first or last sign is dot + } elseif(strpos($local, '..') !== false) { + return false; // two dots not allowed + } elseif(!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { + return false; // invalid character + } elseif(strpos($domain, '..') !== false) { + return false; // two dots not allowed + } elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) { + // character not valid in local part unless + // local part is quoted + if(!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) { + return false; + } + } + + $domain_array = explode('.', $domain); + for($i = 0; $i < count($domain_array); $i++) { + if(!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $domain_array[$i])) { + return false; + } + } + + if(!preg_match("/^\[?[0-9\.]+\]?$/", $domain)) { + $domain_array = explode('.', $domain); + if(count($domain_array) < 2) { + return false; // Not enough parts to domain + } + + for($i = 0; $i < count($domain_array); $i++) { + if(!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) { + return false; + } + } + } + + return true; + } + /* This function is called when the plugin is loaded */ @@ -190,62 +243,69 @@ class rspamd_plugin { $app->system->mkdirpath($this->users_config_dir); } - $app->load('tpl'); - - $tpl = new tpl(); - $tpl->newTemplate('rspamd_users.inc.conf.master'); - - $tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id); - $tpl->setVar('priority', $settings_priority); - - if($type === 'spamfilter_user') { - if($data[$use_data]['local'] === 'Y') { + if(!$this->isValidEmail($app->functions->idn_encode($email_address))) { + if(is_file($settings_file)) { + unlink($settings_file); + } + } else { + + $app->load('tpl'); + + $tpl = new tpl(); + $tpl->newTemplate('rspamd_users.inc.conf.master'); + + $tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id); + $tpl->setVar('priority', $settings_priority); + + if($type === 'spamfilter_user') { + if($data[$use_data]['local'] === 'Y') { + $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + } else { + $tpl->setVar('from_email', $app->functions->idn_encode($email_address)); + } + $spamfilter = $data[$use_data]; + } else { $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); + + // need to get matching spamfilter user if any + $spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address); + } + + if(!isset($policy['rspamd_spam_tag_level'])) { + $policy['rspamd_spam_tag_level'] = 6.0; + } + if(!isset($policy['rspamd_spam_tag_method'])) { + $policy['rspamd_spam_tag_method'] = 'add_header'; + } + if(!isset($policy['rspamd_spam_kill_level'])) { + $policy['rspamd_spam_kill_level'] = 15.0; + } + if(!isset($policy['rspamd_virus_kill_level'])) { + $policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000; + } + + $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); + $tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method'])); + $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); + $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); + + if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') { + $tpl->setVar('spam_lover', true); + } + if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') { + $tpl->setVar('virus_lover', true); + } + + $tpl->setVar('greylisting', $greylisting); + + if(isset($policy['rspamd_spam_greylisting_level'])) { + $tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); } else { - $tpl->setVar('from_email', $app->functions->idn_encode($email_address)); + $tpl->setVar('greylisting_level', 0.1); } - $spamfilter = $data[$use_data]; - } else { - $tpl->setVar('to_email', $app->functions->idn_encode($email_address)); - - // need to get matching spamfilter user if any - $spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address); - } - - if(!isset($policy['rspamd_spam_tag_level'])) { - $policy['rspamd_spam_tag_level'] = 6.0; - } - if(!isset($policy['rspamd_spam_tag_method'])) { - $policy['rspamd_spam_tag_method'] = 'add_header'; - } - if(!isset($policy['rspamd_spam_kill_level'])) { - $policy['rspamd_spam_kill_level'] = 15.0; - } - if(!isset($policy['rspamd_virus_kill_level'])) { - $policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000; - } - - $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); - $tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method'])); - $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); - $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); - - if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') { - $tpl->setVar('spam_lover', true); - } - if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') { - $tpl->setVar('virus_lover', true); - } - - $tpl->setVar('greylisting', $greylisting); - if(isset($policy['rspamd_spam_greylisting_level'])) { - $tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level'])); - } else { - $tpl->setVar('greylisting_level', 0.1); + $app->system->file_put_contents($settings_file, $tpl->grab()); } - - $app->system->file_put_contents($settings_file, $tpl->grab()); } if($mail_config['content_filter'] == 'rspamd'){ @@ -318,20 +378,32 @@ class rspamd_plugin { $filter_rcpt = substr($filter_rcpt, 1); } } - - $tpl = new tpl(); - $tpl->newTemplate('rspamd_wblist.inc.conf.master'); - $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); - $tpl->setVar('record_id', $record_id); - // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists - $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20)); - $tpl->setVar('from', $filter_from); - $tpl->setVar('recipient', $filter_rcpt); - $tpl->setVar('hostname', $filter['hostname']); - $tpl->setVar('ip', $filter['ip']); - $tpl->setVar('wblist', $filter['wb']); - - $app->system->file_put_contents($wblist_file, $tpl->grab()); + + if(!$this->isValidEmail($filter_from)) { + $filter_from = ''; + } + if(!$this->isValidEmail($filter_rcpt)) { + $filter_rcpt = ''; + } + if(($global_filter === true && !$filter_from && !$filter_rcpt) || ($global_filter === false && (!$filter_from || !$filter_rcpt))) { + if(is_file($wblist_file)) { + unlink($wblist_file); + } + } else { + $tpl = new tpl(); + $tpl->newTemplate('rspamd_wblist.inc.conf.master'); + $tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter')); + $tpl->setVar('record_id', $record_id); + // we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists + $tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20)); + $tpl->setVar('from', $filter_from); + $tpl->setVar('recipient', $filter_rcpt); + $tpl->setVar('hostname', $filter['hostname']); + $tpl->setVar('ip', $filter['ip']); + $tpl->setVar('wblist', $filter['wb']); + + $app->system->file_put_contents($wblist_file, $tpl->grab()); + } } elseif(is_file($wblist_file)) { unlink($wblist_file); } -- GitLab From 06a08d81e53607e47baf9e1e5555f7861890ea97 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 3 Dec 2019 15:05:36 +0100 Subject: [PATCH 190/571] - added missing allow domain only for previous commit --- server/plugins-available/rspamd_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index cfb0979eb5..212cb2c21c 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -68,7 +68,7 @@ class rspamd_plugin { return false; // invalid character } elseif(strpos($domain, '..') !== false) { return false; // two dots not allowed - } elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) { + } elseif($local && !preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) { // character not valid in local part unless // local part is quoted if(!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) { -- GitLab From f8317f75d4e3a7569c64555f7b42da7eaaed432f Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 9 Dec 2019 16:15:22 +0100 Subject: [PATCH 191/571] Fixed csrf issue when deleting an invoice draft --- server/lib/classes/aps_installer.inc.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php index 922f32e612..70b77a3a7e 100644 --- a/server/lib/classes/aps_installer.inc.php +++ b/server/lib/classes/aps_installer.inc.php @@ -550,10 +550,21 @@ class ApsInstaller extends ApsBase foreach($this->putenv as $var) { putenv($var); } + + $tmpi = "<?php\n\n"; + foreach($this->putenv as $var) { + $tmpi .= "putenv('".$var."');\n"; + } + $tmpi .= "chdir('".$this->local_installpath.'install_scripts/'."');\n"; + $tmpi .= 'exec("php '.$this->local_installpath.'install_scripts/'.$cfgscript.' install");'; + + $app->system->file_put_contents($this->local_installpath.'install_scripts/ispinstall.php', $tmpi); + exec('php '.$this->local_installpath.'install_scripts/ispinstall.php'); + die(); $shell_retcode = true; $shell_ret = array(); - $app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript); + //$app->system->exec_safe('sudo -u ? php ? install 2>&1', $this->file_owner_user, $this->local_installpath.'install_scripts/'.$cfgscript); $shell_ret = $app->system->last_exec_out(); $shell_retcode = $app->system->last_exec_retcode(); $shell_ret = array_filter($shell_ret); -- GitLab From 2bdc1c8ac9246692f53d94691d36d6485d0aafa4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 9 Dec 2019 16:22:30 +0100 Subject: [PATCH 192/571] Revert "Fixed csrf issue when deleting an invoice draft" This reverts commit f8317f75d4e3a7569c64555f7b42da7eaaed432f --- server/lib/classes/aps_installer.inc.php | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php index 70b77a3a7e..922f32e612 100644 --- a/server/lib/classes/aps_installer.inc.php +++ b/server/lib/classes/aps_installer.inc.php @@ -550,21 +550,10 @@ class ApsInstaller extends ApsBase foreach($this->putenv as $var) { putenv($var); } - - $tmpi = "<?php\n\n"; - foreach($this->putenv as $var) { - $tmpi .= "putenv('".$var."');\n"; - } - $tmpi .= "chdir('".$this->local_installpath.'install_scripts/'."');\n"; - $tmpi .= 'exec("php '.$this->local_installpath.'install_scripts/'.$cfgscript.' install");'; - - $app->system->file_put_contents($this->local_installpath.'install_scripts/ispinstall.php', $tmpi); - exec('php '.$this->local_installpath.'install_scripts/ispinstall.php'); - die(); $shell_retcode = true; $shell_ret = array(); - //$app->system->exec_safe('sudo -u ? php ? install 2>&1', $this->file_owner_user, $this->local_installpath.'install_scripts/'.$cfgscript); + $app->system->exec_safe('php ? install 2>&1', $this->local_installpath.'install_scripts/'.$cfgscript); $shell_ret = $app->system->last_exec_out(); $shell_retcode = $app->system->last_exec_retcode(); $shell_ret = array_filter($shell_ret); -- GitLab From c83ce3f6b4f9007125675184e562d072892cab96 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Mon, 9 Dec 2019 18:22:38 +0100 Subject: [PATCH 193/571] add {WEBROOT} to php-directive-snippets --- interface/web/admin/templates/directive_snippets_edit.htm | 5 +++-- interface/web/sites/web_vhost_domain_edit.php | 2 +- server/plugins-available/apache2_plugin.inc.php | 1 + server/plugins-available/nginx_plugin.inc.php | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm index 72eb82369c..657d0ad1ef 100644 --- a/interface/web/admin/templates/directive_snippets_edit.htm +++ b/interface/web/admin/templates/directive_snippets_edit.htm @@ -19,7 +19,8 @@ <label for="snippet" class="col-sm-3 control-label">{tmpl_var name='snippet_txt'}</label> <tmpl_if name='is_master'><div class="col-sm-9 col-text"><pre>{tmpl_var name='snippet'}</pre></div></tmpl_else><div class="col-sm-9"><textarea class="form-control" name="snippet" id="snippet" rows='10' cols='50'>{tmpl_var name='snippet'}</textarea> Nginx {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{FASTCGIPASS}</a>, <a href="javascript:void(0);" class="addPlaceholder">{PHPFALLBACKFASTCGIPASS}</a><br /> - Apache {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a> + Apache {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a> <br /> + PHP {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{WEBROOT}</a> </div></tmpl_if> </div> <tmpl_if name='is_master'></tmpl_else> @@ -81,4 +82,4 @@ } }); -</script> \ No newline at end of file +</script> diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 52b44acc79..459af39670 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1310,7 +1310,7 @@ class page_action extends tform_actions { // value inside '' if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*\'.*\'\s*;*\s*$@', $custom_php_ini_settings_line)) continue; // everything else - if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; + if(preg_match('@^\s*;*\s*[a-zA-Z0-9._]*\s*=\s*[-a-zA-Z0-9~&=_\@/,.#\{\}\s\|]*\s*;*\s*$@', $custom_php_ini_settings_line)) continue; $custom_php_ini_settings_are_valid = false; break; } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 59e97629cb..db0778ce88 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -3149,6 +3149,7 @@ class apache2_plugin { $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings); $ini_settings = explode("\n", $custom_php_ini_settings); if(is_array($ini_settings) && !empty($ini_settings)){ + $ini_settings = str_replace('{DOCROOT}', $data['new']['document_root'], $ini_settings); foreach($ini_settings as $ini_setting){ $ini_setting = trim($ini_setting); if(substr($ini_setting, 0, 1) == ';') continue; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index a8a3c3bf16..a26a96896f 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2778,6 +2778,7 @@ class nginx_plugin { $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings); $ini_settings = explode("\n", $custom_php_ini_settings); if(is_array($ini_settings) && !empty($ini_settings)){ + $ini_settings = str_replace('{WEBROOT}', $data['new']['document_root'].'/web', $ini_settings); foreach($ini_settings as $ini_setting){ $ini_setting = trim($ini_setting); if(substr($ini_setting, 0, 1) == ';') continue; -- GitLab From 9584fb94d5842177c698eb8e91e650f24e0655a5 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Mon, 9 Dec 2019 18:24:49 +0100 Subject: [PATCH 194/571] fix last commit for apache --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index db0778ce88..08730bee8e 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -3149,7 +3149,7 @@ class apache2_plugin { $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings); $ini_settings = explode("\n", $custom_php_ini_settings); if(is_array($ini_settings) && !empty($ini_settings)){ - $ini_settings = str_replace('{DOCROOT}', $data['new']['document_root'], $ini_settings); + $ini_settings = str_replace('{WEBROOT}', $data['new']['document_root'].'/web', $ini_settings); foreach($ini_settings as $ini_setting){ $ini_setting = trim($ini_setting); if(substr($ini_setting, 0, 1) == ';') continue; -- GitLab From 20225e7b238c13c99ed71510089d103c6da84142 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Thu, 12 Dec 2019 09:02:15 +0100 Subject: [PATCH 195/571] Prevent conflicting APS install paths --- interface/lib/classes/aps_guicontroller.inc.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 8a764a9c5c..8e4c17af79 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -637,11 +637,27 @@ class ApsGUIController extends ApsBase // The location might be empty but the DB return must not be false! if($location_for_domain) $used_path .= $location_for_domain['value']; + // If user is trying to install into exactly the same path, give an error if($new_path == $used_path) { $temp_errstr = $app->lng('error_used_location'); break; } + + // If the new path is _below_ an existing path, give an error because the + // installation will delete the files of the existing APS installation + if (mb_substr($used_path, 0, mb_strlen($new_path)) === $new_path) { + $temp_errstr = $app->lng('error_used_location'); + break; + } + + // If the new path is _within_ an existing path, give an error. Even if + // installation would proceed fine in theory, deleting the "lower" package + // in the future would also inadvertedly delete the "nested" package + if (mb_substr($new_path, 0, mb_strlen($used_path)) === $used_path) { + $temp_errstr = $app->lng('error_used_location'); + break; + } } } } -- GitLab From 044e403a3b24d94d0d0e3d859595c57dd7481da8 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Sat, 14 Dec 2019 13:41:20 +0100 Subject: [PATCH 196/571] update dovecot.conf (move mail_plugins - Global setting mail_plugins won't change the setting inside an earlier filter) --- install/tpl/debian_dovecot2.conf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index cfe3bd0182..e1929b188d 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -9,6 +9,7 @@ ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 mail_max_userip_connections = 100 +mail_plugins = $mail_plugins quota passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql @@ -65,7 +66,6 @@ protocol lmtp { mail_plugins = quota sieve } -mail_plugins = $mail_plugins quota #2.3+ service stats { #2.3+ unix_listener stats-reader { -- GitLab From 605e7b1dfdf75ff9597e784eff5eeade62cfdc36 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 2 Aug 2019 22:33:27 +0200 Subject: [PATCH 197/571] Add additional option to frontend, #5325 --- interface/web/mail/form/mail_user_filter.tform.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index be5fba3ed7..b1370ecaa1 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -88,13 +88,14 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt') + 'value' => array('Subject' => 'subject_txt', 'From'=>'from_txt', 'To'=>'to_txt', 'List-Id'=>'list_id_txt', 'Header' => 'header_txt', 'Size' => 'size_over_txt') ), 'op' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt') + //'value' => array('contains'=>'contains_txt','is' => 'Is','begins'=>'Begins with','ends'=>'Ends with') + 'value' => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt', 'localpart' => 'localpart_txt', 'domain' => 'domain_txt') ), 'searchterm' => array ( 'datatype' => 'VARCHAR', @@ -115,7 +116,7 @@ $form["tabs"]['filter'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('move' => 'move_to_txt', 'delete'=>'delete_txt') + 'value' => array('move' => 'move_to_txt', 'delete'=>'delete_txt', 'keep' => 'keep_txt', 'reject' => 'reject_txt') ), 'target' => array ( 'datatype' => 'VARCHAR', -- GitLab From 30fdcaa46a6037019216beee7cecba064025e2cc Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 14 Nov 2019 12:30:10 +0100 Subject: [PATCH 198/571] Update reference to renamed plugin --- interface/lib/classes/remote.d/sites.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index 59c2e371f3..d90b90bd89 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -423,7 +423,7 @@ class remoting_sites extends remoting { $params['client_group_id'] = $rec['groupid']; } - //* Set a few params to "not empty" values which get overwritten by the sites_web_domain_plugin + //* Set a few params to "not empty" values which get overwritten by the sites_web_vhost_domain_plugin if($params['document_root'] == '') $params['document_root'] = '-'; if($params['system_user'] == '') $params['system_user'] = '-'; if($params['system_group'] == '') $params['system_group'] = '-'; -- GitLab From d8826462719152f83a57602b41f7f3b3c47a3d06 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sat, 30 Nov 2019 22:11:38 +0100 Subject: [PATCH 199/571] typo --- interface/lib/plugins/mail_user_filter_plugin.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php index 26c0b02b83..ccf58b853c 100644 --- a/interface/lib/plugins/mail_user_filter_plugin.inc.php +++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php @@ -80,7 +80,7 @@ class mail_user_filter_plugin { } } - // We did not found our rule, so we add it now as first rule. + // We did not find our rule, so we add it now as first rule. if($found == false && $page_form->dataRecord["active"] == 'y') { $new_rule = $this->mail_user_filter_get_rule($page_form); $out = $new_rule . $out; @@ -92,7 +92,7 @@ class mail_user_filter_plugin { } /* - * Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted + * Remove the rendered filter from custom_mailfilter when a mail_user_filter is deleted. */ function mail_user_filter_del($event_name, $page_form) { global $app, $conf; -- GitLab From 13da3ecd1d2359a2e884c9507961a505e6b540a7 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 24 Dec 2019 09:43:05 +0100 Subject: [PATCH 200/571] Document _ispconfig_pw_crypted parameter --- remoting_client/API-docs/mail_user_add.html | 1 + remoting_client/API-docs/mail_user_update.html | 1 + 2 files changed, 2 insertions(+) diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html index 88ab952e6a..a893e24e3f 100644 --- a/remoting_client/API-docs/mail_user_add.html +++ b/remoting_client/API-docs/mail_user_add.html @@ -25,6 +25,7 @@ <p class="margin"> email (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> login (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> password (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> _ispconfig_pw_crypted (<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p> <p class="margin"> name (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> uid (<span class="paratype">int(11)</span>)</p> <p class="margin"> gid (<span class="paratype">int(11)</span>)</p> diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html index 46d23dacf9..1f46858473 100644 --- a/remoting_client/API-docs/mail_user_update.html +++ b/remoting_client/API-docs/mail_user_update.html @@ -24,6 +24,7 @@ <p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> <p class="margin"> email (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> password (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> _ispconfig_pw_crypted (<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p> <p class="margin"> name (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> uid (<span class="paratype">int(11)</span>)</p> <p class="margin"> gid (<span class="paratype">int(11)</span>)</p> -- GitLab From 91d3122279481debf00a0c9e95818e24dd9dee79 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 24 Dec 2019 09:44:00 +0100 Subject: [PATCH 201/571] fix syntax error --- remoting_client/API-docs/mail_user_update.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html index 1f46858473..8cb900fb40 100644 --- a/remoting_client/API-docs/mail_user_update.html +++ b/remoting_client/API-docs/mail_user_update.html @@ -12,7 +12,7 @@ </style></head> -<body style="color: rgb(0, 0, 0); alink="#804080" link="#804080" vlink="#603060"> +<body style="color: rgb(0, 0, 0);" alink="#804080" link="#804080" vlink="#603060"> <div style="padding:40px"> <h1>mail_user_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1> <br> -- GitLab From 00260e643ae681ecd74f3169da54eab6c43f8acd Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 24 Dec 2019 09:50:54 +0100 Subject: [PATCH 202/571] Add Dutch email template --- server/conf/mail/welcome_email_nl.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 server/conf/mail/welcome_email_nl.txt diff --git a/server/conf/mail/welcome_email_nl.txt b/server/conf/mail/welcome_email_nl.txt new file mode 100644 index 0000000000..cd4baf4815 --- /dev/null +++ b/server/conf/mail/welcome_email_nl.txt @@ -0,0 +1,4 @@ +From: ISPConfig <postmaster@localhost.localdomain> +Subject: Welkom in uw nieuwe account. + +Welkom in uw nieuwe email account. Uw webmaster. -- GitLab From d8d70b33cf3de5444ea5580e234bf1f511ad50c0 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Mon, 30 Dec 2019 12:18:33 +0100 Subject: [PATCH 203/571] Use translated string instead of untranslated string unlimited #5476 --- interface/lib/classes/quota_lib.inc.php | 12 ++++++------ interface/web/mail/user_quota_stats.php | 2 +- interface/web/sites/database_quota_stats.php | 2 +- interface/web/sites/user_quota_stats.php | 12 ++++++------ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/interface/lib/classes/quota_lib.inc.php b/interface/lib/classes/quota_lib.inc.php index 3946b216dd..3bae97f046 100644 --- a/interface/lib/classes/quota_lib.inc.php +++ b/interface/lib/classes/quota_lib.inc.php @@ -71,11 +71,11 @@ class quota_lib { $sites[$i]['hard'] .= ' KB'; } - if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited'); - if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited'); + if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited_txt'); + if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited_txt'); - if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited'); - if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited'); + if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited_txt'); + if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited_txt'); /* if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B'; @@ -266,7 +266,7 @@ class quota_lib { if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000'; if($emails[$i]['quota'] == 0){ - $emails[$i]['quota'] = $app->lng('unlimited'); + $emails[$i]['quota'] = $app->lng('unlimited_txt'); } else { $emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 1).' MB'; } @@ -327,7 +327,7 @@ class quota_lib { if($used_ratio >= 1) $databases[$i]['display_colour'] = '#cc0000'; if($databases[$i]['database_quota'] == 0){ - $databases[$i]['database_quota'] = $app->lng('unlimited'); + $databases[$i]['database_quota'] = $app->lng('unlimited_txt'); } else { $databases[$i]['database_quota'] = $databases[$i]['database_quota'] . ' MB'; } diff --git a/interface/web/mail/user_quota_stats.php b/interface/web/mail/user_quota_stats.php index 90a92558fa..9699acafda 100644 --- a/interface/web/mail/user_quota_stats.php +++ b/interface/web/mail/user_quota_stats.php @@ -52,7 +52,7 @@ class list_action extends listform_actions { if (!is_numeric($rec['used'])) $rec['used']=$rec['used'][1]; if($rec['quota'] == 0){ - $rec['quota'] = $app->lng('unlimited'); + $rec['quota'] = $app->lng('unlimited_txt'); $rec['percentage'] = ''; $rec['percentage_sort'] = 0; } else { diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index 5f550cf8d1..4e960bce27 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -72,7 +72,7 @@ class list_action extends listform_actions { $rec['quota'] = $monitor_data[$rec['server_id'].'.'.$database_name]['quota']; if($rec['quota'] == 0){ - $rec['quota'] = $app->lng('unlimited'); + $rec['quota'] = $app->lng('unlimited_txt'); $rec['percentage'] = ''; } else { if ($rec['used'] > 0 ) $rec['percentage'] = round(100 * intval($rec['used']) / ( intval($rec['quota'])*1024*1024) ).'%'; diff --git a/interface/web/sites/user_quota_stats.php b/interface/web/sites/user_quota_stats.php index 9c93008076..8c641eede9 100644 --- a/interface/web/sites/user_quota_stats.php +++ b/interface/web/sites/user_quota_stats.php @@ -63,8 +63,8 @@ class list_action extends listform_actions { $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['soft'] == "NAN") $rec['soft'] = $app->lng('unlimited_txt'); + if($rec['hard'] == "NAN") $rec['hard'] = $app->lng('unlimited_txt'); /* if($rec['used'] > 1024) { $rec['used'] = round($rec['used'] / 1024, 2).' MB'; @@ -84,8 +84,8 @@ class list_action extends listform_actions { $rec['hard'] .= ' KB'; } - if($rec['soft'] == " KB") $rec['soft'] = $app->lng('unlimited'); - if($rec['hard'] == " KB") $rec['hard'] = $app->lng('unlimited'); + if($rec['soft'] == " KB") $rec['soft'] = $app->lng('unlimited_txt'); + if($rec['hard'] == " KB") $rec['hard'] = $app->lng('unlimited_txt'); */ /* @@ -94,8 +94,8 @@ class list_action extends listform_actions { 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'); + if($rec['soft'] == '0 B' || $rec['soft'] == '0 KB' || $rec['soft'] == '0') $rec['soft'] = $app->lng('unlimited_txt'); + if($rec['hard'] == '0 B' || $rec['hard'] == '0 KB' || $rec['hard'] == '0') $rec['hard'] = $app->lng('unlimited_txt'); */ //* The variable "id" contains always the index variable $rec['id'] = $rec[$this->idx_key]; -- GitLab From b7dc74dc5344167f8217732e7986d779cad0da4f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 31 Dec 2019 15:46:30 +0100 Subject: [PATCH 204/571] Move unlimited_txt string to global scope #5476 --- interface/lib/lang/ar.lng | 1 + interface/lib/lang/bg.lng | 1 + interface/lib/lang/br.lng | 1 + interface/lib/lang/ca.lng | 1 + interface/lib/lang/cz.lng | 1 + interface/lib/lang/de.lng | 1 + interface/lib/lang/dk.lng | 1 + interface/lib/lang/el.lng | 1 + interface/lib/lang/en.lng | 3 ++- interface/lib/lang/es.lng | 1 + interface/lib/lang/fi.lng | 1 + interface/lib/lang/fr.lng | 1 + interface/lib/lang/hr.lng | 1 + interface/lib/lang/hu.lng | 1 + interface/lib/lang/id.lng | 1 + interface/lib/lang/it.lng | 1 + interface/lib/lang/ja.lng | 1 + interface/lib/lang/nl.lng | 1 + interface/lib/lang/pl.lng | 1 + interface/lib/lang/pt.lng | 1 + interface/lib/lang/ro.lng | 1 + interface/lib/lang/ru.lng | 1 + interface/lib/lang/se.lng | 1 + interface/lib/lang/sk.lng | 1 + interface/lib/lang/tr.lng | 1 + interface/web/dashboard/lib/lang/ar_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/bg_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/br_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/ca_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/cz_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/de_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/dk_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/el_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/en_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/es_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/fi_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/fr_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/hr_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/hu_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/id_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/it_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/ja_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/nl_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/pl_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/pt_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/ro_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/ru_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/se_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/sk_dashlet_limits.lng | 1 - interface/web/dashboard/lib/lang/tr_dashlet_limits.lng | 1 - 50 files changed, 26 insertions(+), 26 deletions(-) diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index 25dd920831..f8fd2b5a50 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index ff1e39fe34..049807e66d 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Ðеограничен'; ?> diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index 60a0dcf910..3bab13ab3a 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -158,4 +158,5 @@ $wb['security_check1_txt'] = 'Verifique as permissões de segurança:'; $wb['security_check2_txt'] = 'falhou.'; $wb['select_directive_snippet_txt'] = 'Diretiva de trechos de código'; $wb['select_master_directive_snippet_txt'] = 'Diretiva mestre de trechos de código'; +$wb['unlimited_txt'] = 'Ilimitado'; ?> diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng index c39cd0db27..6d48482cfc 100644 --- a/interface/lib/lang/ca.lng +++ b/interface/lib/lang/ca.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Illimité'; ?> diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index eeb0819292..93eeb671e5 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Smazat XMPP doménu'; $wb['datalog_status_i_xmpp_user'] = 'VytvoÅ™it XMPP uživatele'; $wb['datalog_status_u_xmpp_user'] = 'Aktualizovat XMPP uživatele'; $wb['datalog_status_d_xmpp_user'] = 'Smazat XMPP uživatele'; +$wb['unlimited_txt'] = 'neomezeno'; ?> diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 61551ceeab..54091c1417 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -158,4 +158,5 @@ $wb['security_check1_txt'] = 'Sicherheitsüberprüfung für:'; $wb['security_check2_txt'] = 'fehlgeschlagen.'; $wb['select_directive_snippet_txt'] = 'Direktiven Schnipsel'; $wb['select_master_directive_snippet_txt'] = 'Master Direktiven Schnipsel'; +$wb['unlimited_txt'] = 'unlimitiert'; ?> diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng index 798d2ccd45..cbb9fc5efd 100644 --- a/interface/lib/lang/dk.lng +++ b/interface/lib/lang/dk.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Ubegrænset'; ?> diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 382bf4a758..3e6c60c90f 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'ΑπεÏιόÏιστα'; ?> diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng index 66f4ee3811..b5b2ebcdae 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -159,4 +159,5 @@ $wb['security_check1_txt'] = 'Check for security permission:'; $wb['security_check2_txt'] = 'failed.'; $wb['select_directive_snippet_txt'] = 'Directive Snippets'; $wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets'; -?> \ No newline at end of file +$wb['unlimited_txt'] = "Unlimited"; +?> diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index 3b1bae0b46..b78499f800 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Ilimitado'; ?> diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index d4c23ca777..27749510bb 100755 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng index 3e9bfa8daa..c302b32faa 100644 --- a/interface/lib/lang/fr.lng +++ b/interface/lib/lang/fr.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Illimité'; ?> diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 310371be47..3be5dc7e16 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'neograniÄeno'; ?> diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index dd4cce79b3..3fc91bd600 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Korlátlan'; ?> diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index bd90fd5a1b..13fbff1a08 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Tak terbatas'; ?> diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 33d16c3d5f..4a85a58e09 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'illimitati'; ?> diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index 2a56e77399..bb1290173c 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index 888f9c0200..a733142d49 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Ongelimiteerd'; ?> diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index b5b62c816d..ffbac09ef4 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'nielimitowane'; ?> diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 7845520a5b..195da8e619 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index 613f2377a1..1365a54172 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index e5e8ce6278..19cdcf8a04 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -158,4 +158,5 @@ $wb['datalog_status_d_xmpp_domain'] = 'Удалить домен XMPP'; $wb['datalog_status_i_xmpp_user'] = 'Создать Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMPP'; $wb['datalog_status_u_xmpp_user'] = 'Обновить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMPP'; $wb['datalog_status_d_xmpp_user'] = 'Удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMPP'; +$wb['unlimited_txt'] = 'Безлимитный'; ?> diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index b6767144df..2d3146f033 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Obegränsat'; ?> diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index 6b4ef7676f..ece15b3a22 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -158,4 +158,5 @@ $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['unlimited_txt'] = 'Unlimited'; ?> diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index cf4491ad5d..31e5f2fbef 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -159,4 +159,5 @@ $wb['security_check1_txt'] = 'Güvenlik iznini denetle:'; $wb['security_check2_txt'] = 'baÅŸarısız.'; $wb['select_directive_snippet_txt'] = 'Yönerge Kod Parçaları'; $wb['select_master_directive_snippet_txt'] = 'Ana Komut Parçaları'; +$wb['unlimited_txt'] = 'Sınırsız'; ?> diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng index 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ar_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng index dad751aaf0..961e6825df 100644 --- a/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/bg_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Ðкаунт ограничениÑ'; $wb['of_txt'] = 'на'; -$wb['unlimited_txt'] = 'Ðеограничен'; $wb['limit_maildomain_txt'] = 'Брой на email домейни'; $wb['limit_mailbox_txt'] = 'Брой на пощенÑките кутии'; $wb['limit_mailalias_txt'] = 'Брой на email пÑевдоними'; diff --git a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng index 72558f5797..739c7e4445 100644 --- a/interface/web/dashboard/lib/lang/br_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/br_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Limites de contas'; $wb['of_txt'] = 'de'; -$wb['unlimited_txt'] = 'Ilimitado'; $wb['limit_maildomain_txt'] = 'Número de domÃnios de e-mail'; $wb['limit_mailmailinglist_txt'] = 'Número de listas de e-mail'; $wb['limit_mailbox_txt'] = 'Número de contas de e-mail'; diff --git a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng index f482b47e38..ae78112c85 100644 --- a/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ca_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Limites du compte'; $wb['of_txt'] = 'sur'; -$wb['unlimited_txt'] = 'Illimité'; $wb['limit_maildomain_txt'] = 'Nombre de domaines courriel'; $wb['limit_mailmailinglist_txt'] = 'Nombre de mailing lists'; $wb['limit_mailbox_txt'] = 'Nombre de boites courriel'; diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng index a7aecc4a53..d93dd87761 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Limity úÄtů'; $wb['of_txt'] = 'z'; -$wb['unlimited_txt'] = 'neomezeno'; $wb['limit_maildomain_txt'] = 'PoÄet e-mailových domén'; $wb['limit_mailbox_txt'] = 'PoÄet e-mailových schránek'; $wb['limit_mailalias_txt'] = 'PoÄet e-mailových pÅ™ezdÃvek'; diff --git a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng index 335c17ca85..22e87237d5 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Kontobeschränkungen'; $wb['of_txt'] = 'von'; -$wb['unlimited_txt'] = 'unlimitiert'; $wb['limit_maildomain_txt'] = 'Anzahl der E-Mail Domains'; $wb['limit_mailbox_txt'] = 'Anzahl der E-Mail Konten'; $wb['limit_mailalias_txt'] = 'Anzahl der E-Mail Aliase'; diff --git a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng index eb128750b2..402aa722f5 100644 --- a/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/dk_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Konto begrænsninger'; $wb['of_txt'] = 'af'; -$wb['unlimited_txt'] = 'Ubegrænset'; $wb['limit_maildomain_txt'] = 'Antal af e-mail domæner'; $wb['limit_mailmailinglist_txt'] = 'Antal af mail-lister'; $wb['limit_mailbox_txt'] = 'Antal af mail-bokse'; diff --git a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng index dac3b55623..f51c1da1b5 100644 --- a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'ÎŒÏια ΛογαÏιασμών'; $wb['of_txt'] = 'από'; -$wb['unlimited_txt'] = 'ΑπεÏιόÏιστα'; $wb['limit_maildomain_txt'] = 'ΑÏιθμός email domains'; $wb['limit_mailbox_txt'] = 'ΑÏιθμός θυÏίδων'; $wb['limit_mailalias_txt'] = 'ΑÏιθμός ψευδωνÏμων email'; diff --git a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng index 5d504c8e9b..d30977799f 100644 --- a/interface/web/dashboard/lib/lang/en_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/en_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = "Account limits"; $wb['of_txt'] = "of"; -$wb['unlimited_txt'] = "Unlimited"; $wb['limit_maildomain_txt'] = "Number of email domains"; $wb['limit_mailmailinglist_txt'] = "Number of mailing lists"; $wb['limit_mailbox_txt'] = "Number of mailboxes"; diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng index da6cd6b513..d56d17c661 100755 --- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng @@ -27,7 +27,6 @@ $wb['limit_web_subdomain_txt'] = 'Cantidad de sub-dominios'; $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 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/fi_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng index 525249f6d4..fa5043ab85 100644 --- a/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/fr_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Limites du compte'; $wb['of_txt'] = 'sur'; -$wb['unlimited_txt'] = 'Illimité'; $wb['limit_maildomain_txt'] = 'Nombre de domaines e-mail'; $wb['limit_mailmailinglist_txt'] = 'Nombre de liste de distribution'; $wb['limit_mailbox_txt'] = 'Nombre de boîtes aux lettres'; diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng index 1a3db42a24..2aa1792f91 100644 --- a/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/hr_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'OgraniÄenja'; $wb['of_txt'] = 'od'; -$wb['unlimited_txt'] = 'neograniÄeno'; $wb['limit_maildomain_txt'] = 'Mail domene'; $wb['limit_mailbox_txt'] = 'Mailboxi'; $wb['limit_mailalias_txt'] = 'Mail aliasi'; diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng index 13c5a4e450..76498eed86 100644 --- a/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/hu_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = '-'; -$wb['unlimited_txt'] = 'Korlátlan'; $wb['limit_maildomain_txt'] = 'Email domainek száma'; $wb['limit_mailbox_txt'] = 'Mailbox-ok száma'; $wb['limit_mailalias_txt'] = 'Email aliasok száma'; diff --git a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng index 8079b742b7..94a64e226f 100644 --- a/interface/web/dashboard/lib/lang/id_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/id_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Batasan Akun'; $wb['of_txt'] = 'dari'; -$wb['unlimited_txt'] = 'Tak terbatas'; $wb['limit_maildomain_txt'] = 'Jumlah domain email'; $wb['limit_mailbox_txt'] = 'Jumlah mailbox'; $wb['limit_mailalias_txt'] = 'Jumlah alias email'; diff --git a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng index a1a2000edf..dd83e1ad58 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Sintesi account'; $wb['of_txt'] = 'su'; -$wb['unlimited_txt'] = 'illimitati'; $wb['limit_maildomain_txt'] = 'Domini email'; $wb['limit_mailbox_txt'] = 'Caselle email'; $wb['limit_mailalias_txt'] = 'Alias di email'; diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng index 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ja_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng index 10d1e82837..35a2b9e0be 100644 --- a/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/nl_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limieten'; $wb['of_txt'] = 'van'; -$wb['unlimited_txt'] = 'Ongelimiteerd'; $wb['limit_maildomain_txt'] = 'Aantal email domeinen'; $wb['limit_mailbox_txt'] = 'Aantal mailboxes'; $wb['limit_mailalias_txt'] = 'Aantal e-mail aliassen'; diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng index 4d5b971469..5513b32551 100644 --- a/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/pl_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Limity konta'; $wb['of_txt'] = 'z'; -$wb['unlimited_txt'] = 'nielimitowane'; $wb['limit_maildomain_txt'] = 'Liczba domen e-mail'; $wb['limit_mailbox_txt'] = 'Liczba skrzynek pocztowych'; $wb['limit_mailalias_txt'] = 'Liczba aliasów e-mail'; diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng index 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/pt_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng index 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ro_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng index 19295b65e3..9e77f43d8d 100644 --- a/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/ru_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Лимиты учётной запиÑи'; $wb['of_txt'] = 'из'; -$wb['unlimited_txt'] = 'Безлимитный'; $wb['limit_maildomain_txt'] = 'КоличеÑтво почтовых аккаунтов'; $wb['limit_mailbox_txt'] = 'КоличеÑтво почтовых Ñщиков'; $wb['limit_mailalias_txt'] = 'КоличеÑтво алиаÑов почты'; diff --git a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng index d1f38b1b0d..f02f83bffd 100644 --- a/interface/web/dashboard/lib/lang/se_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/se_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Kontogränser'; $wb['of_txt'] = 'av'; -$wb['unlimited_txt'] = 'Obegränsat'; $wb['limit_maildomain_txt'] = 'Antal epostdomäner'; $wb['limit_mailbox_txt'] = 'Antal epostkonton'; $wb['limit_mailalias_txt'] = 'Antal epostalias'; diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng index 6ec82aad5b..b15261dfc4 100644 --- a/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/sk_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Account limits'; $wb['of_txt'] = 'of'; -$wb['unlimited_txt'] = 'Unlimited'; $wb['limit_maildomain_txt'] = 'Number of email domains'; $wb['limit_mailbox_txt'] = 'Number of mailboxes'; $wb['limit_mailalias_txt'] = 'Number of email aliases'; diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng index 9fa1fb5b90..6a4a6a0d24 100644 --- a/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/tr_dashlet_limits.lng @@ -1,7 +1,6 @@ <?php $wb['limits_txt'] = 'Hesap Sınırları'; $wb['of_txt'] = '/'; -$wb['unlimited_txt'] = 'Sınırsız'; $wb['limit_maildomain_txt'] = 'E-posta Etki Alanı Sayısı'; $wb['limit_mailmailinglist_txt'] = 'E-posta Listesi Sayısı'; $wb['limit_mailbox_txt'] = 'E-posta Kutusu Sayısı'; -- GitLab From a6c847e030c316b988b06c3d9d05ad0c449f2924 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 3 Jan 2020 14:40:30 +0100 Subject: [PATCH 205/571] add ipv6-addresses for ispconfig slave-users on the master-server (#5493) --- install/lib/installer_base.lib.php | 180 +++++++++++++++++------------ 1 file changed, 104 insertions(+), 76 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 513858ca68..0cf2ee23e7 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -409,80 +409,92 @@ class installer_base { } - + + public function get_host_ips() { + $out = array(); + exec('hostname --all-ip-addresses', $ret, $val); + if($val == 0) { + if(is_array($ret) && !empty($ret)){ + $temp = (explode(' ', $ret[0])); + foreach($temp as $ip) { + $out[] = $ip; + } + } + } + + return $out; + } + public function detect_ips(){ global $conf; + + $output = $this->get_host_ips(); - 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){ - $line = trim($line); - $ip_type = ''; - if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - $ip_type = 'IPv4'; - } - if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $ip_type = 'IPv6'; - } - if($ip_type == '') continue; - if($this->db->dbHost != $this->dbmaster->dbHost){ - $this->dbmaster->query('INSERT INTO server_ip ( - sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $conf['server_id'], $ip_type, $line); - $server_ip_id = $this->dbmaster->insertID(); - $this->db->query('INSERT INTO server_ip ( - server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - ?, - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $server_ip_id, $conf['server_id'], $ip_type, $line); - } else { - $this->db->query('INSERT INTO server_ip ( - sys_userid, sys_groupid, sys_perm_user, sys_perm_group, - sys_perm_other, server_id, client_id, ip_type, ip_address, - virtualhost, virtualhost_port - ) VALUES ( - 1, - 1, - "riud", - "riud", - "", - ?, - 0, - ?, - ?, - "y", - "80,443" - )', $conf['server_id'], $ip_type, $line); - } + if(is_array($output) && !empty($output)){ + foreach($output as $line){ + $ip_type = ''; + if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + $ip_type = 'IPv4'; + } + if (filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { + $ip_type = 'IPv6'; + } + if($ip_type == '') continue; + if($this->db->dbHost != $this->dbmaster->dbHost){ + $this->dbmaster->query('INSERT INTO server_ip ( + sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $conf['server_id'], $ip_type, $line); + $server_ip_id = $this->dbmaster->insertID(); + $this->db->query('INSERT INTO server_ip ( + server_php_id, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + ?, + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $server_ip_id, $conf['server_id'], $ip_type, $line); + } else { + $this->db->query('INSERT INTO server_ip ( + sys_userid, sys_groupid, sys_perm_user, sys_perm_group, + sys_perm_other, server_id, client_id, ip_type, ip_address, + virtualhost, virtualhost_port + ) VALUES ( + 1, + 1, + "riud", + "riud", + "", + ?, + 0, + ?, + ?, + "y", + "80,443" + )', $conf['server_id'], $ip_type, $line); } } } @@ -509,15 +521,23 @@ class installer_base { //* insert the ispconfig user in the remote server $from_host = $conf['hostname']; - $from_ip = gethostbyname($conf['hostname']); - $hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user']; $hosts[$from_host]['db'] = $conf['mysql']['master_database']; $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password']; - $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user']; - $hosts[$from_ip]['db'] = $conf['mysql']['master_database']; - $hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password']; + $host_ips = $this->get_host_ips(); + if(is_arary($host_ips) && !empty($host_ips)) { + foreach($host_ips 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 { + $from_ip = gethostbyname($conf['hostname']); + $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user']; + $hosts[$from_ip]['db'] = $conf['mysql']['master_database']; + $hosts[$from_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 @@ -696,6 +716,14 @@ class installer_base { $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"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.managed_php', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } + } } -- GitLab From 2d03b4525a9574736c0f9312e7024d3652ac2b8c Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 3 Jan 2020 14:43:54 +0100 Subject: [PATCH 206/571] remove code from last commit --- install/lib/installer_base.lib.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 0cf2ee23e7..94ffd5703f 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -716,14 +716,6 @@ class installer_base { $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"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.managed_php', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } - } } -- GitLab From a08a29104365e40418ef7b5261f71cdec56adce1 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 7 Jan 2020 08:11:00 +0100 Subject: [PATCH 207/571] BUG - Cleanup website tmp directories (#5434) --- server/lib/classes/cron.d/200-logfiles.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index e2d9e9bb9e..203d3c0bda 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -217,7 +217,7 @@ class cronjob_logfiles extends cronjob { foreach($records as $rec){ $tmp_path = realpath($rec['document_root'].'/tmp'); if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){ - exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); + $app->system->exec_safe("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); } } } -- GitLab From 4b281bf70d5668769eda440bceeb4fb01d376a4d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 14 Jan 2020 10:56:48 +0100 Subject: [PATCH 208/571] Fix exec to exec_safe to make placeholder work again, #5434 #5510 --- server/lib/classes/cron.d/200-logfiles.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index e2d9e9bb9e..203d3c0bda 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -217,7 +217,7 @@ class cronjob_logfiles extends cronjob { foreach($records as $rec){ $tmp_path = realpath($rec['document_root'].'/tmp'); if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){ - exec("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); + $app->system->exec_safe("cd ?; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null", $tmp_path); } } } -- GitLab From 88fd29a6c91f226ca4a2ffca536f30e80588ea59 Mon Sep 17 00:00:00 2001 From: Silviu CHINGARU <silviuchingaru@yahoo.com> Date: Thu, 16 Jan 2020 21:32:07 +0200 Subject: [PATCH 209/571] Fixes ispconfig/ispconfig3#5513 - right exposing tag method to template. --- .../plugins-available/rspamd_plugin.inc.php | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 212cb2c21c..4812deb683 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -33,7 +33,7 @@ class rspamd_plugin { var $plugin_name = 'rspamd_plugin'; var $class_name = 'rspamd_plugin'; var $users_config_dir = '/etc/rspamd/local.d/users/'; - + //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. function onInstall() { @@ -98,7 +98,7 @@ class rspamd_plugin { return true; } - + /* This function is called when the plugin is loaded */ @@ -114,17 +114,17 @@ class rspamd_plugin { $app->plugins->registerEvent('spamfilter_wblist_insert', $this->plugin_name, 'spamfilter_wblist_insert'); $app->plugins->registerEvent('spamfilter_wblist_update', $this->plugin_name, 'spamfilter_wblist_update'); $app->plugins->registerEvent('spamfilter_wblist_delete', $this->plugin_name, 'spamfilter_wblist_delete'); - + //* global mail access filters $app->plugins->registerEvent('mail_access_insert', $this->plugin_name, 'spamfilter_wblist_insert'); $app->plugins->registerEvent('mail_access_update', $this->plugin_name, 'spamfilter_wblist_update'); $app->plugins->registerEvent('mail_access_delete', $this->plugin_name, 'spamfilter_wblist_delete'); - + //* server ip $app->plugins->registerEvent('server_ip_insert', $this->plugin_name, 'server_ip'); $app->plugins->registerEvent('server_ip_update', $this->plugin_name, 'server_ip'); $app->plugins->registerEvent('server_ip_delete', $this->plugin_name, 'server_ip'); - + //* spamfilter_users $app->plugins->registerEvent('spamfilter_users_insert', $this->plugin_name, 'user_settings_update'); $app->plugins->registerEvent('spamfilter_users_update', $this->plugin_name, 'user_settings_update'); @@ -141,11 +141,11 @@ class rspamd_plugin { function user_settings_update($event_name, $data) { global $app, $conf; - + if(!is_dir('/etc/rspamd')) { return; } - + $use_data = 'new'; if(substr($event_name, -7) === '_delete') { $mode = 'delete'; @@ -159,7 +159,7 @@ class rspamd_plugin { // get the config $app->uses('getconf,system,functions'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - + $type = false; $identifier = false; $entry_id = false; @@ -180,7 +180,7 @@ class rspamd_plugin { $app->log('Invalid event name for rspamd_plugin: ' . $event_name, LOGLEVEL_WARN); return; } - + $is_domain = false; $email_address = $data[$use_data][$identifier]; $settings_name = $email_address; @@ -199,13 +199,13 @@ class rspamd_plugin { $email_address = '@' . $email_address; $is_domain = true; } - + if($settings_name == '') { // missing settings file name $app->log('Empty rspamd identifier in rspamd_plugin from identifier: ' . $use_data . '/' . $identifier, LOGLEVEL_WARN); return; } - + $settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf'; //$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); if($mode === 'delete') { @@ -219,11 +219,11 @@ class rspamd_plugin { } elseif($is_domain === true) { $settings_priority = 18; } - + // get policy for entry if($type === 'spamfilter_user') { $policy = $app->db->queryOneRecord("SELECT * FROM spamfilter_policy WHERE id = ?", intval($data['new']['policy_id'])); - + $check = $app->db->queryOneRecord('SELECT `greylisting` FROM `mail_user` WHERE `server_id` = ? AND `email` = ? UNION SELECT `greylisting` FROM `mail_forwarding` WHERE `server_id` = ? AND `source` = ? ORDER BY (`greylisting` = ?) DESC', $conf['server_id'], $email_address, $conf['server_id'], $email_address, 'y'); if($check) { $greylisting = $check['greylisting']; @@ -233,16 +233,16 @@ class rspamd_plugin { } else { $search_for_policy[] = $email_address; $search_for_policy[] = substr($email_address, strpos($email_address, '@')); - + $policy = $app->db->queryOneRecord("SELECT p.* FROM spamfilter_users as u INNER JOIN spamfilter_policy as p ON (p.id = u.policy_id) WHERE u.server_id = ? AND u.email IN ? ORDER BY u.priority DESC", $conf['server_id'], $search_for_policy); - + $greylisting = $data[$use_data]['greylisting']; } - + if(!is_dir($this->users_config_dir)){ $app->system->mkdirpath($this->users_config_dir); } - + if(!$this->isValidEmail($app->functions->idn_encode($email_address))) { if(is_file($settings_file)) { unlink($settings_file); @@ -285,7 +285,7 @@ class rspamd_plugin { } $tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level'])); - $tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method'])); + $tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']); $tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level'])); $tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000); @@ -324,7 +324,7 @@ class rspamd_plugin { $app->uses('getconf,system,functions'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - + if(is_dir('/etc/rspamd')) { $global_filter = false; //* Create the config file @@ -354,12 +354,12 @@ class rspamd_plugin { ); } } - + if($data['new']['active'] == 'y' && is_array($filter) && !empty($filter)){ if(!is_dir($this->users_config_dir)){ $app->system->mkdirpath($this->users_config_dir); } - + $app->load('tpl'); $filter_from = $filter['from']; @@ -407,13 +407,13 @@ class rspamd_plugin { } elseif(is_file($wblist_file)) { unlink($wblist_file); } - + if($mail_config['content_filter'] == 'rspamd' && is_file('/etc/init.d/rspamd')) { $app->services->restartServiceDelayed('rspamd', 'reload'); } } } - + function spamfilter_wblist_delete($event_name, $data) { global $app, $conf; @@ -439,17 +439,17 @@ class rspamd_plugin { function server_ip($event_name, $data) { global $app, $conf; - + // get the config $app->uses("getconf,system"); $app->load('tpl'); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - + if(is_dir('/etc/rspamd')) { $tpl = new tpl(); $tpl->newTemplate('rspamd_users.conf.master'); - + $whitelist_ips = array(); $ips = $app->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ?", $conf['server_id']); if(is_array($ips) && !empty($ips)){ @@ -459,13 +459,13 @@ class rspamd_plugin { } $tpl->setLoop('whitelist_ips', $whitelist_ips); $app->system->file_put_contents('/etc/rspamd/local.d/users.conf', $tpl->grab()); - + if($mail_config['content_filter'] == 'rspamd'){ $app->services->restartServiceDelayed('rspamd', 'reload'); } } } - + private function _is_valid_ip_address($ip) { if(function_exists('filter_var')) { if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) { -- GitLab From dfe37d7241403e12f8d62d6e26a9044cc8594f80 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 17 Jan 2020 15:04:49 +0100 Subject: [PATCH 210/571] Fixed #5515 API client_template_additional_get always return just one template --- interface/lib/classes/remote.d/client.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php index e07e227e60..1457bf569a 100644 --- a/interface/lib/classes/remote.d/client.inc.php +++ b/interface/lib/classes/remote.d/client.inc.php @@ -257,7 +257,7 @@ class remoting_client extends remoting { if(@is_numeric($client_id)) { $sql = "SELECT * FROM `client_template_assigned` WHERE `client_id` = ?"; - return $app->db->queryOneRecord($sql, $client_id); + return $app->db->queryAllRecords($sql, $client_id); } else { throw new SoapFault('The ID must be an integer.'); return array(); -- GitLab From a5cdc4751b17e972f47d98a496a9d6176c399148 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 22 Jan 2020 10:56:47 +0100 Subject: [PATCH 211/571] - merged request !945 to stable --- interface/web/dashboard/lib/lang/it.lng | 1 + .../lib/lang/it_dashlet_customer.lng | 4 ++-- .../lib/lang/it_dashlet_databasequota.lng | 8 +++---- .../dashboard/lib/lang/it_dashlet_limits.lng | 24 +++++++++---------- .../lib/lang/it_dashlet_mailquota.lng | 10 ++++---- .../dashboard/lib/lang/it_dashlet_modules.lng | 2 +- .../dashboard/lib/lang/it_dashlet_quota.lng | 12 +++++----- interface/web/login/lib/lang/it.lng | 20 ++++++++-------- 8 files changed, 41 insertions(+), 40 deletions(-) diff --git a/interface/web/dashboard/lib/lang/it.lng b/interface/web/dashboard/lib/lang/it.lng index db8858aafd..6a22e7cf5e 100644 --- a/interface/web/dashboard/lib/lang/it.lng +++ b/interface/web/dashboard/lib/lang/it.lng @@ -1,4 +1,5 @@ <?php $wb['welcome_user_txt'] = 'Buongiorno %s'; $wb['available_modules_txt'] = 'Moduli disponibili'; +$wb['last_login_ip'] = "Ultimo login %s da %s"; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_customer.lng b/interface/web/dashboard/lib/lang/it_dashlet_customer.lng index 4fe6cb0ef7..bb6c2c5a6d 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_customer.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_customer.lng @@ -1,4 +1,4 @@ <?php -$wb['customerdata_txt'] = 'My Data'; -$wb['edit_txt'] = 'Edit'; +$wb['customerdata_txt'] = 'I miei dati'; +$wb['edit_txt'] = 'Modifica'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng b/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng index bd2402dbf6..61ab6d9b21 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_databasequota.lng @@ -1,7 +1,7 @@ <?php -$wb['databasequota_txt'] = 'Database Quota'; -$wb['database_txt'] = 'Database Name'; -$wb['used_txt'] = 'Used Space'; +$wb['databasequota_txt'] = 'Quota Database'; +$wb['database_txt'] = 'Nome Database'; +$wb['used_txt'] = 'Spazio Usato'; $wb['quota_txt'] = 'Quota'; -$wb['no_database_accounts_txt'] = 'No databases found.'; +$wb['no_database_accounts_txt'] = 'Nessun database trovato.'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng index dd83e1ad58..895f619864 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_limits.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_limits.lng @@ -1,14 +1,14 @@ <?php $wb['limits_txt'] = 'Sintesi account'; $wb['of_txt'] = 'su'; -$wb['limit_maildomain_txt'] = 'Domini email'; -$wb['limit_mailbox_txt'] = 'Caselle email'; -$wb['limit_mailalias_txt'] = 'Alias di email'; +$wb['limit_maildomain_txt'] = 'Domini e-mail'; +$wb['limit_mailbox_txt'] = 'Caselle e-mail'; +$wb['limit_mailalias_txt'] = 'Alias di e-mail'; $wb['limit_mailaliasdomain_txt'] = 'Alias di domini'; -$wb['limit_mailforward_txt'] = 'Inoltro email'; -$wb['limit_mailcatchall_txt'] = 'Account catchall email'; -$wb['limit_mailrouting_txt'] = 'Instradamento email'; -$wb['limit_mailfilter_txt'] = 'Filtri email'; +$wb['limit_mailforward_txt'] = 'Inoltro e-mail'; +$wb['limit_mailcatchall_txt'] = 'Account catchall e-mail'; +$wb['limit_mailrouting_txt'] = 'Instradamento e-mail'; +$wb['limit_mailfilter_txt'] = 'Filtri e-mail'; $wb['limit_fetchmail_txt'] = 'Account fetchmail'; $wb['limit_spamfilter_wblist_txt'] = 'Filtri spamfilter white / blacklist'; $wb['limit_spamfilter_user_txt'] = 'Utenti spamfilter'; @@ -25,9 +25,9 @@ $wb['limit_shell_user_txt'] = 'Utenti Shell'; $wb['limit_webdav_user_txt'] = 'Utenti Webdav'; $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'; +$wb['limit_mailmailinglist_txt'] = 'Numero mailing-list'; +$wb['limit_domain_txt'] = 'Numero domini'; +$wb['limit_mailquota_txt'] = 'Quota mailbox assegnata'; +$wb['limit_web_quota_txt'] = 'Quota web assegnata'; +$wb['limit_database_quota_txt'] = 'Quota database assegnata'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng index 1ab1e66658..daaaa67f49 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng @@ -1,8 +1,8 @@ <?php -$wb['mailquota_txt'] = 'Mailbox Quota'; -$wb['email_txt'] = 'Email Address'; -$wb['name_txt'] = 'Name'; -$wb['used_txt'] = 'Used Space'; +$wb['mailquota_txt'] = 'Quota Mailbox'; +$wb['email_txt'] = 'Indirizzo e-mail'; +$wb['name_txt'] = 'Nome'; +$wb['used_txt'] = 'Spazio Usato'; $wb['quota_txt'] = 'Quota'; -$wb['no_email_accounts_txt'] = 'No email accounts found.'; +$wb['no_email_accounts_txt'] = 'Nessun account e-mail trovato.'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng index 69d5c07997..a80b302092 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_modules.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_modules.lng @@ -1,4 +1,4 @@ <?php $wb['available_modules_txt'] = 'Moduli disponibili'; -$wb['go_to_txt'] = 'Go to'; +$wb['go_to_txt'] = 'Vai a'; ?> diff --git a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng index de7b5a8936..63799d2ee3 100644 --- a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng @@ -1,8 +1,8 @@ <?php -$wb['quota_txt'] = 'Website Harddisk Quota'; -$wb['domain_txt'] = 'Domain / Website'; -$wb['used_txt'] = 'Used space'; -$wb['hard_txt'] = 'Hard limit'; -$wb['soft_txt'] = 'Soft limit'; -$wb['no_sites_txt'] = 'No web sites found.'; +$wb['quota_txt'] = 'Quota disco domini'; +$wb['domain_txt'] = 'Dominio'; +$wb['used_txt'] = 'Spazio usato'; +$wb['hard_txt'] = 'Limite (forzato)'; +$wb['soft_txt'] = 'Limite'; +$wb['no_sites_txt'] = 'Nessun dominio trovato.'; ?> diff --git a/interface/web/login/lib/lang/it.lng b/interface/web/login/lib/lang/it.lng index 017d60df78..6d23aa0ccb 100644 --- a/interface/web/login/lib/lang/it.lng +++ b/interface/web/login/lib/lang/it.lng @@ -2,32 +2,32 @@ $wb['error_user_password_empty'] = 'Nome utente o password vuoti.'; $wb['error_user_password_incorrect'] = 'Nome utente o password errati.'; $wb['error_user_blocked'] = 'Utente bloccato.'; -$wb['error_user_too_many_logins'] = 'Troppi tentativi errati di login. Riprovare tra 15 minuti'; +$wb['error_user_too_many_logins'] = 'Troppi tentativi errati di login. Riprovare tra 15 minuti.'; $wb['pass_reset_txt'] = 'Una nuova password sarà generata e spedita alla tua email se lemail inserita corrisponde a quella delle impostazioni dellutente.'; $wb['pw_reset'] = 'La password è stata reimpostata e spedita al tuo indirizzo mail.'; -$wb['pw_error'] = 'Nome utente o email non corrispondenti.'; -$wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo email.'; -$wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo ISPConfig 3 è stata reimpostata. La nuova password è: '; -$wb['pw_reset_mail_title'] = 'Password del pannello di controllo ISPConfig 3 reimpostata.'; +$wb['pw_error'] = 'Nome utente o e-mail non corrispondenti.'; +$wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo e-mail.'; +$wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo è stata reimpostata. La nuova password è: '; +$wb['pw_reset_mail_title'] = 'Password del pannello di controllo reimpostata.'; $wb['user_regex_error'] = 'Nome utente contenente caratteri non permessi oppure più lungo di 64 caratteri.'; $wb['pw_error_length'] = 'Lunghezza password maggiore di 64 caratteri.'; $wb['username_txt'] = 'Nome utente'; $wb['password_txt'] = 'Password'; $wb['login_button_txt'] = 'Accedi'; $wb['pw_lost_txt'] = 'Password smarrita'; -$wb['error_maintenance_mode'] = 'Il pannello di controllo ISPConfig è in manutenzione. Saremo online tra breve. Grazie per la collaborazione.'; +$wb['error_maintenance_mode'] = 'Il pannello di controllo è in manutenzione.'; $wb['login_txt'] = 'Accedi'; $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Invia password'; -$wb['email_txt'] = 'Email'; -$wb['theme_not_compatible'] = 'Il tema selezionato non è compatibile con questa versione del pannello ISPConfig. Verificare esistenza di una nuova versione del tema.<br />Il tema di default è stato attivato automaticamente.'; +$wb['email_txt'] = 'E-mail'; +$wb['theme_not_compatible'] = 'Il tema selezionato non è compatibile con questa versione del pannello. Verificare esistenza di una nuova versione del tema.<br />Il tema di default è stato attivato automaticamente.'; $wb['back_txt'] = 'Indietro'; $wb['email_error'] = 'Email contiene caratteri non autorizzati o un formato non valido.'; $wb['stay_logged_in_txt'] = 'Ricordami'; $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['pw_reset_act_mail_title'] = 'Conferma reset password'; +$wb['pw_reset_act_mail_msg'] = 'Per confermare il reset della password si prega di visitare questo 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.'; -- GitLab From 0e59b84685f12dd7d0440d53390427da1267121c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 24 Jan 2020 09:59:39 +0100 Subject: [PATCH 212/571] Fixed Typo in installer --- install/lib/installer_base.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 94ffd5703f..346b62b9ab 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -526,7 +526,7 @@ class installer_base { $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password']; $host_ips = $this->get_host_ips(); - if(is_arary($host_ips) && !empty($host_ips)) { + if(is_array($host_ips) && !empty($host_ips)) { foreach($host_ips as $ip) { $hosts[$ip]['user'] = $conf['mysql']['master_ispconfig_user']; $hosts[$ip]['db'] = $conf['mysql']['master_database']; -- GitLab From f3065bc8f710619303123c7af16b05f056c5cda5 Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Fri, 24 Jan 2020 10:18:53 +0100 Subject: [PATCH 213/571] Show 0 & -1 as unlimited in database stats --- interface/web/sites/database_quota_stats.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/sites/database_quota_stats.php b/interface/web/sites/database_quota_stats.php index 4e960bce27..03431a6ded 100644 --- a/interface/web/sites/database_quota_stats.php +++ b/interface/web/sites/database_quota_stats.php @@ -37,7 +37,7 @@ if(is_array($tmp_rec)) { } else { $temp['username'] = 'admin'; } - + if(is_array($temp) && !empty($temp)) { $monitor_data[$server_id.'.'.$db_name]['database_name'] = $data['database_name']; $monitor_data[$server_id.'.'.$db_name]['client'] = isset($temp['username']) ? $temp['username'] : ''; @@ -61,7 +61,7 @@ class list_action extends listform_actions { $rec['bgcolor'] = $this->DataRowColor; $database_name = $rec['database_name']; - + if(!empty($monitor_data[$rec['server_id'].'.'.$database_name])){ $rec['database'] = $monitor_data[$rec['server_id'].'.'.$database_name]['database_name']; $rec['client'] = $monitor_data[$rec['server_id'].'.'.$database_name]['client']; @@ -71,7 +71,7 @@ class list_action extends listform_actions { $rec['used'] = $monitor_data[$rec['server_id'].'.'.$database_name]['used']; $rec['quota'] = $monitor_data[$rec['server_id'].'.'.$database_name]['quota']; - if($rec['quota'] == 0){ + if($rec['quota'] <= 0){ $rec['quota'] = $app->lng('unlimited_txt'); $rec['percentage'] = ''; } else { -- GitLab From a64c9c806330edfb0785a193fd2e0cea70d1bbdf Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Fri, 24 Jan 2020 10:19:52 +0100 Subject: [PATCH 214/571] Sort list quota correct --- interface/lib/classes/listform_actions.inc.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 4a463fe015..097b41fc0d 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -39,6 +39,7 @@ class listform_actions { private $sortKeys; private function _sort($aOne, $aTwo) { + $suffixes=array('k' => 1, 'M' => 1024, 'G' => 1048576, 'T' => 1099511627776); if(!is_array($aOne) || !is_array($aTwo)) return 0; if(!is_array($this->sortKeys)) $this->sortKeys = array($this->sortKeys); @@ -49,6 +50,15 @@ class listform_actions { } $a = $aOne[$sKey]; $b = $aTwo[$sKey]; + + if(preg_match('/(\d+\.?\d*) ([kMGT])B/', $a, $match)) { + $a = $match[1] * $suffixes[$match[2]]; + } + + if(preg_match('/(\d+\.?\d*) ([kMGT])B/', $b, $match)) { + $b = $match[1] * $suffixes[$match[2]]; + } + if(is_string($a)) $a = strtolower($a); if(is_string($b)) $b = strtolower($b); if($a < $b) return $sDir == 'DESC' ? 1 : -1; @@ -129,7 +139,7 @@ class listform_actions { // Getting Datasets from DB $records = $app->db->queryAllRecords($this->getQueryString($php_sort)); - + $csrf_token = $app->auth->csrf_token_get($app->listform->listDef['name']); $_csrf_id = $csrf_token['csrf_id']; $_csrf_key = $csrf_token['csrf_key']; -- GitLab From d77fdaa724830384065f1c7dbabf9240b3459b1f Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 24 Jan 2020 12:29:13 +0100 Subject: [PATCH 215/571] Add conf-custom support for security_settings.ini (Fixes #5480) --- install/lib/installer_base.lib.php | 23 +++++-------------- .../tpl/security_settings.ini.master | 0 2 files changed, 6 insertions(+), 17 deletions(-) rename security/security_settings.ini => install/tpl/security_settings.ini.master (100%) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 346b62b9ab..e5ac1428d8 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2478,24 +2478,13 @@ class installer_base { //* 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~')); - $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); - if(is_array($security_settings_new) && is_array($security_settings_old)) { - foreach($security_settings_new as $section => $sval) { - if(is_array($sval)) { - foreach($sval as $key => $val) { - if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { - $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; - } - } - } - } - file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); - } + + $configfile = 'security_settings.ini'; + if(is_file($install_dir.'/security/'.$configfile)) { + copy($install_dir.'/security/'.$configfile, $install_dir.'/security/'.$configfile.'~'); } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + wf($install_dir.'/security/'.$configfile, $content); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 diff --git a/security/security_settings.ini b/install/tpl/security_settings.ini.master similarity index 100% rename from security/security_settings.ini rename to install/tpl/security_settings.ini.master -- GitLab From 8238d0400fd80f57426b875fcfede2731ffddb4d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Mon, 27 Jan 2020 11:07:13 +0100 Subject: [PATCH 216/571] Workaround to set app_module context to mail, #5448 --- interface/web/mail/mail_user_edit.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 263b98ef31..d291367d11 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -70,6 +70,9 @@ class page_action extends tform_actions { function onShowEnd() { global $app, $conf; + // Workaround for #5448, accessed via link on quota dashlet. + $app->tpl->setVar('app_module', 'mail'); + $email = $this->dataRecord["email"]; $email_parts = explode("@", $email); $app->tpl->setVar("email_local_part", $email_parts[0]); -- GitLab From 080c722a11bded37d6d66d9872a2161d0ec4a25f Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Tue, 28 Jan 2020 10:30:52 +0100 Subject: [PATCH 217/571] Do not index and follow --- interface/web/themes/default/templates/main.tpl.htm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 15aa44e148..0cdd2f89b3 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -8,7 +8,7 @@ <meta name='viewport' content='width=device-width, user-scalable=yes'> <meta name='description' lang='en' content='' /> <meta name='keywords' lang='en' content='' /> - <meta name='robots' content='index, follow' /> + <meta name='robots' content='noindex, nofollow' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> @@ -123,15 +123,15 @@ <script> <!-- //$('.ttip').tipsy({live: true, gravity: 'ne', html: true}); - + ISPConfig.tabChangeDiscard = '<tmpl_var name="tabchange_discard_enabled">'; ISPConfig.tabChangeWarning = '<tmpl_var name="tabchange_warning_enabled">'; ISPConfig.tabChangeWarningTxt = '<tmpl_var name="global_tabchange_warning_txt">'; ISPConfig.tabChangeDiscardTxt = '<tmpl_var name="global_tabchange_discard_txt">'; - + <tmpl_if name="use_loadindicator" value="y">ISPConfig.setOption('useLoadIndicator', true);</tmpl_if> <tmpl_if name="use_combobox" value="y">ISPConfig.setOption('useComboBox', true);</tmpl_if> - + $(document).ready(function() { $('#globalsearch').ispconfigSearch({ dataSrc: '/dashboard/ajax_get_json.php?type=globalsearch', -- GitLab From 34d9a7f9f901c3d0a6ddb59263a77a1a4e46b8db Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Tue, 28 Jan 2020 10:31:36 +0100 Subject: [PATCH 218/571] Search for name in mailbox quota --- interface/web/mail/templates/user_quota_stats_list.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/mail/templates/user_quota_stats_list.htm b/interface/web/mail/templates/user_quota_stats_list.htm index 4b4b831aab..99690d6a33 100644 --- a/interface/web/mail/templates/user_quota_stats_list.htm +++ b/interface/web/mail/templates/user_quota_stats_list.htm @@ -17,7 +17,7 @@ </tr> <tr> <td><input class="form-control" type="text" name="search_email" value="{tmpl_var name='search_email'}" /></td> - <td><input class="form-control" type="text" name="search_system_user" value="{tmpl_var name='search_name'}" /></td> + <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td> <td> </td> <td> </td> <td> </td> @@ -50,5 +50,5 @@ </tfoot> </table> </div> - + </div> -- GitLab From e6c3be53645de21666a6dd62d04b076fb3252d9d Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Tue, 28 Jan 2020 10:32:41 +0100 Subject: [PATCH 219/571] Fix column sorting foer mailbox quota --- interface/web/mail/list/user_quota_stats.list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/list/user_quota_stats.list.php b/interface/web/mail/list/user_quota_stats.list.php index e8faae3634..1ba9fc6702 100644 --- a/interface/web/mail/list/user_quota_stats.list.php +++ b/interface/web/mail/list/user_quota_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('used_sort', 'percentage_sort'); +$liste["phpsort"] = array('used', 'percentage'); /***************************************************** * Suchfelder -- GitLab From 25ceb4434f43640bd6ae63427a861f2c5a04e63e Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 7 Feb 2020 07:09:25 +0100 Subject: [PATCH 220/571] update --- interface/lib/classes/listform_actions.inc.php | 1 + .../web/sites/templates/web_vhost_domain_admin_list.htm | 8 +++++++- interface/web/sites/templates/web_vhost_domain_list.htm | 8 +++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 097b41fc0d..ccfb91de1f 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -189,6 +189,7 @@ class listform_actions { //* substitute value for select fields if(is_array($app->listform->listDef['item']) && count($app->listform->listDef['item']) > 0) { foreach($app->listform->listDef['item'] as $field) { + if($rec['active'] == 'n') $rec['warn_inactive'] = 'y'; $key = $field['field']; if(isset($field['formtype']) && $field['formtype'] == 'SELECT') { if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') { diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm index 1ab14300d0..ddea17d706 100644 --- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm @@ -37,8 +37,14 @@ </thead> <tbody> <tmpl_loop name="records"> - <tr> + <tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if> +<tmpl_if name="site_error"> + +<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}"> +<span class="glyphicon glyphicon-warning-sign"></span></a> +</tmpl_if> +</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td> <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="sys_groupid"}</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="server_id"}</a></td> diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index 105dac9399..8ef06f3151 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -52,8 +52,14 @@ </thead> <tbody> <tmpl_loop name="records"> - <tr> + <tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if> +<tmpl_if name="site_error"> + +<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}"> +<span class="glyphicon glyphicon-warning-sign"></span></a> +</tmpl_if> +</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='server_id'}">{tmpl_var name="server_id"}</a></td> <tmpl_if name="vhostdomain_type" op="!=" value="domain"><td><a href="#" data-load-content="sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td></tmpl_if> -- GitLab From ea14e05154352880b0a8b7300f68420bd8570b90 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Fri, 7 Feb 2020 07:11:46 +0100 Subject: [PATCH 221/571] "highlight" inactive web-domains --- .../web/sites/templates/web_vhost_domain_admin_list.htm | 8 +------- interface/web/sites/templates/web_vhost_domain_list.htm | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm index ddea17d706..9bd98ddada 100644 --- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm @@ -37,14 +37,8 @@ </thead> <tbody> <tmpl_loop name="records"> - <tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > + <tr <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if> -<tmpl_if name="site_error"> - -<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}"> -<span class="glyphicon glyphicon-warning-sign"></span></a> -</tmpl_if> -</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td> <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="sys_groupid"}</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="server_id"}</a></td> diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index 8ef06f3151..99738858f2 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -52,14 +52,8 @@ </thead> <tbody> <tmpl_loop name="records"> - <tr <tmpl_if name="site_error"> class="danger" </tmpl_if> <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > + <tr <tmpl_if name="warn_inactive"> class="danger" </tmpl_if> > <tmpl_if name="vhostdomain_type" value="domain"><td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="domain_id"}</a></td></tmpl_if> -<tmpl_if name="site_error"> - -<a href="#" data-toggle="tooltip" title="{tmpl_var name="site_error"}"> -<span class="glyphicon glyphicon-warning-sign"></span></a> -</tmpl_if> -</a></td></tmpl_if> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}">{tmpl_var name="active"}</a></td> <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='server_id'}">{tmpl_var name="server_id"}</a></td> <tmpl_if name="vhostdomain_type" op="!=" value="domain"><td><a href="#" data-load-content="sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}">{tmpl_var name="parent_domain_id"}</a></td></tmpl_if> -- GitLab From e91e34aa3a5f8524e26fdc0988d9020509cff7ea Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 11 Feb 2020 17:11:52 +0100 Subject: [PATCH 222/571] add check before delete an additional php-version --- .../web/admin/lib/lang/de_server_php.lng | 1 + .../web/admin/lib/lang/en_server_php.lng | 1 + interface/web/admin/server_php_del.php | 36 +++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng index 67dad7064a..4eb9065ba3 100644 --- a/interface/web/admin/lib/lang/de_server_php.lng +++ b/interface/web/admin/lib/lang/de_server_php.lng @@ -14,4 +14,5 @@ $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'; +$wb['php_in_use_error'] = 'Diese PHP-Version wird noch benutzt.'; ?> diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng index 179a8fc357..6ae160b648 100644 --- a/interface/web/admin/lib/lang/en_server_php.lng +++ b/interface/web/admin/lib/lang/en_server_php.lng @@ -14,4 +14,5 @@ $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'; +$wb['php_in_use_error'] = 'This PHP-Version is in use.'; ?> diff --git a/interface/web/admin/server_php_del.php b/interface/web/admin/server_php_del.php index 6848eea8d4..f160c1b2d9 100644 --- a/interface/web/admin/server_php_del.php +++ b/interface/web/admin/server_php_del.php @@ -46,7 +46,39 @@ require_once '../../lib/app.inc.php'; $app->auth->check_module_permissions('admin'); $app->auth->check_security_permissions('admin_allow_server_php'); -$app->uses("tform_actions"); -$app->tform_actions->onDelete(); +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onBeforeDelete() { + global $app; $conf; + + $check = array(); + + // fastcgi + if(!empty(trim($this->dataRecord['php_fastcgi_binary']))) $check[] = trim($this->dataRecord['php_fastcgi_binary']); + if(!empty(trim($this->dataRecord['php_fastcgi_ini_dir']))) $check[] = trim($this->dataRecord['php_fastcgi_ini_dir']); + if(!empty($check)) $fastcgi_check = implode(':', $check); + unset($check); + + // fpm + if(!empty(trim($this->dataRecord['php_fpm_init_script']))) $check[] = trim($this->dataRecord['php_fpm_init_script']); + if(!empty(trim($this->dataRecord['php_fpm_ini_dir']))) $check[] = trim($this->dataRecord['php_fpm_ini_dir']); + if(!empty(trim($this->dataRecord['php_fpm_pool_dir']))) $check[] = trim($this->dataRecord['php_fpm_pool_dir']); + if(!empty($check)) $fpm_check = implode(':', $check); + + $sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?'; + if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check); + if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check); + + if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm)) $app->error($app->tform->lng('php_in_use_error')); + + } + +} + +$page = new page_action; +$page->onDelete(); ?> -- GitLab From 49499f7cc90f0b82a63c611661af1c818d7bdd94 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Thu, 13 Feb 2020 13:21:04 +0100 Subject: [PATCH 223/571] #4617 dont trigger tab change alert when loading php vhost domain config --- interface/web/sites/templates/web_vhost_domain_edit.htm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 149d430887..8b1bd6e155 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -391,10 +391,6 @@ } if(noFormChange) { ISPConfig.resetFormChanged(); - jQuery('#php').addClass('no-page-form-change').change(); - jQuery('#php').removeClass('no-page-form-change'); - } else { - jQuery('#php').change(); } }); } -- GitLab From dec8b545a0dadb66fec55eb6945ec940e955f13b Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 18 Feb 2020 20:32:21 +0100 Subject: [PATCH 224/571] Document allow_send_ase and greylisting, #5536 --- remoting_client/API-docs/mail_alias_add.html | 2 ++ remoting_client/API-docs/mail_alias_update.html | 2 ++ 2 files changed, 4 insertions(+) diff --git a/remoting_client/API-docs/mail_alias_add.html b/remoting_client/API-docs/mail_alias_add.html index 0e87abd8fc..101d3bfef8 100644 --- a/remoting_client/API-docs/mail_alias_add.html +++ b/remoting_client/API-docs/mail_alias_add.html @@ -24,6 +24,8 @@ <p class="margin"> destination (<span class="paratype">text</span>)</p> <p class="margin"> type (<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> allow_send_ase (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> greylisting (<span class="paratype">enum('n','y')</span>)</p> <p class="headgrp">Output: </p> <p class="margin"> Returns the ID of the newly added mail alias.</p> <!--<b>Output:</b> diff --git a/remoting_client/API-docs/mail_alias_update.html b/remoting_client/API-docs/mail_alias_update.html index 0a2c689074..f4d960a059 100644 --- a/remoting_client/API-docs/mail_alias_update.html +++ b/remoting_client/API-docs/mail_alias_update.html @@ -24,6 +24,8 @@ <p class="margin"> destination (<span class="paratype">text</span>)</p> <p class="margin"> type (<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> allow_send_ase (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> greylisting (<span class="paratype">enum('n','y')</span>)</p> <b>Output: </b> <p class="margin"> Returns the number of affected rows.</p> <!--<b>Output:</b> -- GitLab From 7fca6989ca04cb29274e57e5cac811d3ba5c9cc1 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 21 Feb 2020 15:16:01 +0100 Subject: [PATCH 225/571] - fixes #5541 --- interface/lib/app.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index e341a57943..e817fcbd44 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -356,8 +356,8 @@ class app { $forwarded_host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : null ); if($forwarded_host !== null && $forwarded_host !== $cookie_domain) { // Just check for complete domain name and not auto subdomains - $sql = "SELECT domain_id from web_domain where domain = '$forwarded_host'"; - $recs = $this->db->queryOneRecord($sql); + $sql = "SELECT domain_id from web_domain where domain = ?"; + $recs = $this->db->queryOneRecord($sql, $forwarded_host); if($recs !== null) { $cookie_domain = $forwarded_host; } -- GitLab From cf593c7db0254ef82b7a01fee652b8a91720ac08 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 26 Feb 2020 21:32:11 +0100 Subject: [PATCH 226/571] Show harddisk and database quota dashlet only when user has access --- interface/lib/classes/auth.inc.php | 36 ++++++++++++------- .../web/dashboard/dashlets/databasequota.php | 3 ++ interface/web/dashboard/dashlets/quota.php | 3 ++ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php index 2075c7b90d..5daabd50b3 100644 --- a/interface/lib/classes/auth.inc.php +++ b/interface/lib/classes/auth.inc.php @@ -141,12 +141,18 @@ class auth { } } - public function check_module_permissions($module) { + + /** + * Check that the user has access to the given module. + * + * @return boolean + */ + public function verify_module_permissions($module) { // Check if the current user has the permissions to access this module $module = trim(preg_replace('@\s+@', '', $module)); $user_modules = explode(',',$_SESSION["s"]["user"]["modules"]); + $can_use_module = false; if(strpos($module, ',') !== false){ - $can_use_module = false; $tmp_modules = explode(',', $module); if(is_array($tmp_modules) && !empty($tmp_modules)){ foreach($tmp_modules as $tmp_module){ @@ -158,17 +164,21 @@ class auth { } } } - if(!$can_use_module){ - // echo "LOGIN_REDIRECT:/index.php"; - header("Location: /index.php"); - exit; - } - } else { - if(!in_array($module,$user_modules)) { - // echo "LOGIN_REDIRECT:/index.php"; - header("Location: /index.php"); - exit; - } + } + elseif(in_array($module,$user_modules)) { + $can_use_module = true; + } + return $can_use_module; + } + + /** + * Check that the user has access to the given module, redirect and exit on failure. + */ + public function check_module_permissions($module) { + if(!$this->verify_module_permissions($module)) { + // echo "LOGIN_REDIRECT:/index.php"; + header("Location: /index.php"); + exit; } } diff --git a/interface/web/dashboard/dashlets/databasequota.php b/interface/web/dashboard/dashlets/databasequota.php index 6439cdee12..d8c131702f 100644 --- a/interface/web/dashboard/dashlets/databasequota.php +++ b/interface/web/dashboard/dashlets/databasequota.php @@ -7,6 +7,9 @@ class dashlet_databasequota { //* Loading Template $app->uses('tpl,quota_lib'); + if (!$app->auth->verify_module_permissions('sites')) { + return; + } $tpl = new tpl; $tpl->newTemplate("dashlets/templates/databasequota.htm"); diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php index 6ff975b623..dfb82d5c24 100644 --- a/interface/web/dashboard/dashlets/quota.php +++ b/interface/web/dashboard/dashlets/quota.php @@ -7,6 +7,9 @@ class dashlet_quota { //* Loading Template $app->uses('tpl,quota_lib'); + if (!$app->auth->verify_module_permissions('sites')) { + return; + } $tpl = new tpl; $tpl->newTemplate("dashlets/templates/quota.htm"); -- GitLab From 9be213cf0374ef0d5c7aad3a56c80586fc9e71fc Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 26 Feb 2020 21:55:22 +0100 Subject: [PATCH 227/571] Check permission to the mail instead of the sites module --- interface/web/mail/backup_stats.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/backup_stats.php b/interface/web/mail/backup_stats.php index 1317326573..0bf0ceae0b 100644 --- a/interface/web/mail/backup_stats.php +++ b/interface/web/mail/backup_stats.php @@ -9,7 +9,7 @@ $list_def_file = 'list/backup_stats.list.php'; ******************************************/ //* Check permissions for module -$app->auth->check_module_permissions('sites'); +$app->auth->check_module_permissions('mail'); $app->load('listform_actions','functions'); -- GitLab From e82b879172f077f4c36066fa0ac9d98b4ec4d2e1 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 26 Feb 2020 22:09:45 +0100 Subject: [PATCH 228/571] Check the Backupfunction available setting when showing Backup Stats --- interface/web/mail/lib/module.conf.php | 13 +++++++------ interface/web/sites/lib/module.conf.php | 14 ++++++++------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php index 6466f614c6..cc100cd7d2 100644 --- a/interface/web/mail/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -189,12 +189,13 @@ $items[] = array( 'title' => 'Mailbox traffic', 'target' => 'content', 'link' => 'mail/mail_user_stats.php', 'html_id' => 'mail_user_stats'); -$items[] = array ( - 'title' => 'Backup Stats', - 'target' => 'content', - 'link' => 'mail/backup_stats.php', - 'html_id' => 'backup_stats'); - +if($app->auth->get_client_limit($userid, 'backup') == 'y') { + $items[] = array ( + 'title' => 'Backup Stats', + 'target' => 'content', + 'link' => 'mail/backup_stats.php', + 'html_id' => 'backup_stats'); +} $module['nav'][] = array( 'title' => 'Statistics', 'open' => 1, diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php index c37f3b7437..a9aefad967 100644 --- a/interface/web/sites/lib/module.conf.php +++ b/interface/web/sites/lib/module.conf.php @@ -209,12 +209,14 @@ $items[] = array( 'title' => 'Database quota', 'link' => 'sites/database_quota_stats.php', 'html_id' => 'databse_quota_stats'); -$items[] = array ( - 'title' => 'Backup Stats', - 'target' => 'content', - 'link' => 'sites/backup_stats.php', - 'html_id' => 'backup_stats' -); +if($app->auth->get_client_limit($userid, 'backup') == 'y') { + $items[] = array ( + 'title' => 'Backup Stats', + 'target' => 'content', + 'link' => 'sites/backup_stats.php', + 'html_id' => 'backup_stats' + ); +} $module['nav'][] = array( 'title' => 'Statistics', 'open' => 1, -- GitLab From c1dba41d0e20f530742bd851adfb91311fc3ae93 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Thu, 27 Feb 2020 11:15:35 +0100 Subject: [PATCH 229/571] Relative paths for login-as functionality --- interface/web/login/login_as.php | 2 +- interface/web/login/logout.php | 2 +- interface/web/themes/default/assets/javascripts/ispconfig.js | 2 +- .../web/themes/default/assets/javascripts/ispconfig.min.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/web/login/login_as.php b/interface/web/login/login_as.php index 4c2fb33393..67d5858ff6 100644 --- a/interface/web/login/login_as.php +++ b/interface/web/login/login_as.php @@ -96,7 +96,7 @@ echo ' <input type="hidden" name="s_pg" value="dashboard" /> <input type="hidden" name="login_as" value="1" /> <div class="wf_actions buttons"> - <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="/login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button> + <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button> <button class="btn btn-default formbutton-default" value="'.$wb['btn_back_txt'].'" data-load-content="'.$backlink.'"><span>'.$wb['btn_back_txt'].'</span></button> </div> '; diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php index dadd871bab..fa60fba632 100644 --- a/interface/web/login/logout.php +++ b/interface/web/login/logout.php @@ -54,7 +54,7 @@ if ((isset($_SESSION['s_old']) && ($_SESSION['s_old']['user']['typ'] == 'admin' <input type="hidden" name="s_pg" value="index" /> <input type="hidden" name="login_as" value="1" /> <div class="wf_actions buttons"> - <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="/login/index.php"><span>Yes, re-login as ' . $utype . '</span></button> + <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="login/index.php"><span>Yes, re-login as ' . $utype . '</span></button> <button class="btn btn-default formbutton-default" type="button" value="No, logout" data-load-content="login/logout.php?l=1"><span>No, logout</span></button> </div> '; diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index 5f797af328..70e3a903a6 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -172,7 +172,7 @@ var ISPConfig = { ISPConfig.loadContent(parts[1]); } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) { // Go to the login page - document.location.href = '/index.php'; + document.location.href = './index.php'; } else { $('#pageContent').html(jqXHR.responseText); ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize()); diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.min.js b/interface/web/themes/default/assets/javascripts/ispconfig.min.js index 76af49d1dc..e118b994b0 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.min.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.min.js @@ -1 +1 @@ -var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="/index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}}); \ No newline at end of file +var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="./index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}}); \ No newline at end of file -- GitLab From 9735af1965c849160b9425ef3507810f8c4b5bbd Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Thu, 27 Feb 2020 11:19:06 +0100 Subject: [PATCH 230/571] Switch to recommanded CI container --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 736fbc3083..2ee654e1f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,7 @@ stages: syntax:lint: stage: syntax - image: bobey/docker-gitlab-ci-runner-php7 + image: edbizarro/gitlab-ci-pipeline-php:7.2 allow_failure: false only: - schedules -- GitLab From 51309b175a675bd5472e49f74e4ee3cc5bfe50d8 Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xwissen@xwissen.info> Date: Thu, 27 Feb 2020 11:20:54 +0100 Subject: [PATCH 231/571] Add favicon, app, color & tile --- interface/web/favicon.ico | Bin 18478 -> 0 bytes .../assets/favicon/android-chrome-192x192.png | Bin 0 -> 729 bytes .../assets/favicon/android-chrome-512x512.png | Bin 0 -> 1673 bytes .../assets/favicon/apple-touch-icon.png | Bin 0 -> 619 bytes .../default/assets/favicon/browserconfig.xml | 9 +++++++++ .../default/assets/favicon/favicon-16x16.png | Bin 0 -> 259 bytes .../default/assets/favicon/favicon-32x32.png | Bin 0 -> 309 bytes .../themes/default/assets/favicon/favicon.ico | Bin 0 -> 15086 bytes .../default/assets/favicon/mstile-150x150.png | Bin 0 -> 606 bytes .../assets/favicon/safari-pinned-tab.svg | 1 + .../default/assets/favicon/site.webmanifest | 18 ++++++++++++++++++ .../web/themes/default/templates/main.tpl.htm | 10 ++++++++++ .../default/templates/main_login.tpl.htm | 11 ++++++++++- 13 files changed, 48 insertions(+), 1 deletion(-) delete mode 100644 interface/web/favicon.ico create mode 100644 interface/web/themes/default/assets/favicon/android-chrome-192x192.png create mode 100644 interface/web/themes/default/assets/favicon/android-chrome-512x512.png create mode 100644 interface/web/themes/default/assets/favicon/apple-touch-icon.png create mode 100644 interface/web/themes/default/assets/favicon/browserconfig.xml create mode 100644 interface/web/themes/default/assets/favicon/favicon-16x16.png create mode 100644 interface/web/themes/default/assets/favicon/favicon-32x32.png create mode 100644 interface/web/themes/default/assets/favicon/favicon.ico create mode 100644 interface/web/themes/default/assets/favicon/mstile-150x150.png create mode 100644 interface/web/themes/default/assets/favicon/safari-pinned-tab.svg create mode 100644 interface/web/themes/default/assets/favicon/site.webmanifest diff --git a/interface/web/favicon.ico b/interface/web/favicon.ico deleted file mode 100644 index dc71b5320c890943e4aba52d80689deb58c6b39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18478 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 diff --git a/interface/web/themes/default/assets/favicon/android-chrome-192x192.png b/interface/web/themes/default/assets/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..fd24a98743b0457c88874bffdc136ed0e99401a5 GIT binary patch literal 729 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvG8AvYpRA>UE)B}7%TzxVN&+>{w&`}i~IJ<A^ zEC>RM02!~JN2UX{aF+!61v4CYsV^|EV#@ibncJ17g)=ZPg?YL-hE&{oduyZrZ3mI# zAKMKUzMXdL?WL2w3!25ZFFdo3>CFNL=5EJ{5)qfeP93tpurYi4KW;l0n>+h2*spRf zm}8OtuzXMW%D3;W*<RXh(tmDzN>H&yz=>m_edLDvTCJNuOEwt&`%s+IYMh>F`tMn1 z=!>sT9Qz`sR;hl7ORvd3#&50>#`NazAGO*IS-mCt2W~ZWyqJ9N$F&rflEoZ1=Dm~M zv`yjGHJSUfTyh0%ro8lP+^QJ+f~mHvv{CY9Up{xP!g_|!VFuzKN)>LjGM`ZS{v#Ub zSq$(``@zrtP4BG^Y>rR0X9P<(?3bwcxYmc0gYQ(3?1PhkXFGg3wf<#7<~*yrl^dBq zoC`T#kg@pR@t7yypLj(ubIqK8r@Hq*&pi(YwQQzePRHfaGMNRuWdEI%YUsRjadNDA zg3!vt#%hI3-%oeH%j})wF#ky3gu9lFJxBN?o~~q`QD32I!706t^~S`VEhnueoKKH? zA#|v8K}}OmmyO=9>;t=x8h`L`+OeAX=Z;(IeQ{hieOV4BarYjzT|XYX|B-0IYMcL; zZEvrByXfj{uJyM?7f8A0RPT>u6#2v~5&nw3M67tmONQvLbGaOh4W6xKwiEamW+b0r z*L`c-+r66GW7+rpcD!8^$KrHt@u6h)SwH@AU)k5f`XRpa^AuK@S9RXCX_ikI-*_5G z3O|_lQh$fF;&-{i_X6Lmr>N&Ne7Cbys*{&|{C=67L&43eKN^akgrfYuoRj-0`bK`c sMXQ{z@FzV9yE?AF4ZwI;YzgSDW8Nh&+dd?@(GV2Up00i_>zopr02^6E1poj5 literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/android-chrome-512x512.png b/interface/web/themes/default/assets/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d9ad1e03c2471a88f883de17c129555e906774 GIT binary patch literal 1673 zcmdT>Yc$k(82<hLb74nB7;>9Q)O2x4hm_l2+l^c%#$|8};b?P-9mys7BO6I8EmMqb zvfGe~IcjrDCdwryVKpRXT#7DY-5V1-yB|9HWl#HcpAYZ*ocDd+bKdhjnN*j9iUchJ z06@{<&^|W+U>Su079(qT&$c#M)22Gn_B(wSEl^Y!D5?n*i84~@>TxlzKt^Ph=~Jj9 zlgY)nxwwPLU<bBYvtFd9zwDmqu+N?r_j2-;z-`1)6CE}-2qnQ!EVkzR>J-^f)CMd! zvZ9R1w6cf3maHV=y9-k6Iz;k*W$4sYF==_T0W_ZRHRx}r+YUYM9qkO69bVOQ?unrs z$>V<RkLZe8y7`#i-w<ZHQsRBiMBmMpRDf+eMmZuRO_5elj*Z%pbNmiVCsj2wuMp$3 z3P6s(z@=}8S@I>;pf>;ar%N|FPC?cgMP-dMu(C?qeTbXi+z_PlAoET_p_RB%lmAAI zX93;k@*8#d619o*^)HlC!_vTO){j`PZ_|L;s>1Z~XsH{02o_d7y4a>pHsjU94{xWW zA3-~r;-?dYC8ko$or?_5g^y>$Z>KcQ5vSvoUk<{y7Eqlpza@0Us|n;WpABl`DGEJ_ zoQ$#ii^!!+rf&Nvt7BmUxw0}zK7(d)LatmFqc8x1MnP`f^$0Xm6*%pxQZfa6O9YQb zqy9#SdDhL1z;j0uu5^VfCrj!70thx}uO(=MRjHS-;lDgR0k{6U%yh2kdWWQ{`5%hD zvILs<<y#+a6;2-L)<fK~=dYd7gC`sd7XZbmXs{oz>~KwHt^Vgf`T^b^{-ACO@mx8& zd;=<K14lqVq!8xL-vwilDirjAw;W}5C-^BnQC=O9JfQ>sG+fT7x4>h-@Ru-^3$A$Y z-NJ7)kjl#t{+VG@D;L>@W-^EMFy`(Yb>t(vj#bS?w9(2a<FOzlI7$oYU3uz2_lRDH zoLE(CQZ8U)r;`m;W{j6s?5wrKpN~s61f!D?JRCx=7Vk=#G=F~7lGJIN8%PV|48$tP zFFT5vS|rT$IA-2gHrkDxTxz3du$l%pu9!`v@%9kK?M62^LjD{3KAXM9Wm%7!0mJT~ z-@&<*(!`FAw`Z+!o-NRA2I4eYv+kHYwY-8I$#)M3(g>I5#mC9En_58lko($r4NV=0 zm$cbXoJI~?OLg&i;6Uu#@m!u$H5xnPZlKZR3}S7)ol^(pgq@Ez0TUxe$(naM;ea~p z*I%E$HKz(g31d{m6KDb51P)u+aFkdo^JOMP6qX-IxCiywtspqO08+{p)i8RlK$27E zL{+W_dIEn1Z)dB!7PsY+cIGjNnm=Qy+;a_K(^aqCh8On}v%#LbMT4)5(^lVfCN<Ti zcHzH7&cTvz)(0DfgP7xX_r@$ht>U%b_1ISEivXAsOc}|pFKyTK+NI1$f)7FHxCRaa z;=Le2ueh@wP!euMj^M};-x4i08F<|cy%S02=Gcu>?cJ=yf+;0ha&yJF(ChSPY-It- zzttKltsySVM|lg<(UNvxKF+CdrwVpYyjP<!*DUS9_3B`*?gECSjQYtG$5{I_iJaW5 zz%#yRt}}U7o^w=nx*Av7hdmt$Z7u)1MrJ1_JI4kl;wavjWG^(88SrsEfAK`c(y~G6 zm=9&vCYcpCh;M&og^EP_A3l*9gj+a)a9k0rwF&Lq!U=-or1QGEs(jIJi1`axJpMh8 zZDk%$$J&%o)@E@S$KYzINtZ{Bdv9+#uG?ySyTXL_Y6wn3Xqoaet9?$VK5KRfZQyE< zDa%#qJw7u*`CL)$LeJHaVXJYrukFz3AQh<&QROQrs#}GEE{D*IiJ>8XIq$IFWncN; HfYd($pD1^) literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/apple-touch-icon.png b/interface/web/themes/default/assets/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..713b3d50d1aaa8f4421ffb898b8d7310e2ee97c1 GIT binary patch literal 619 zcmV-x0+juUP)<h;3K|Lk000e1NJLTq006WA006WE0{{R3&*K{b0000aP)t-s|NsBZ z4He*PZ`3h2k(iy&79R1w!1vtU=7)><@9^oCna|SHDhvw400064Nkl<ZXx{DG&r8B! z9LMps$X~Z@45X6=VR}l#q|V(s&5>szNa{2QDv!~j=rk<)<;991`v)TW=c2j9AJ5|+ zzk3E&pZBeUFYIyqDt=WIgb+dqA%qY@{E|m|<eC%Z*jagpoLzAEa(r0})uzimjb|-n z>pZ$;g{6%;=SgR^(AC&<$_h^#>{oJElTe;XXJydL6Ny<eXq|QaC1l8&$+|}7rO;Z3 zK`+RmGYoo84!z2!OH0IxfpmsCj~}C>PeFqQ4H`6P(4aws1`Yae)9p{Mj|k}NEw63R zph1J4F}mHO-=mw??yq<&$Q=vT?EgPW@9%6NZLf(|+V>x+dXKRJY4I$(>(fEssS>^k zHtJ%uN?F8=J(BtTHDwE7c1CID9wJ$!?sx|2H1ooIp)5<>5xT;pTN?31)X@_fD^59) zjbU2n%mvEMr#4LII8%V~wDlpn>hLDa-SoEY4$wxIKfO-MluP7?w$CR`#+xVMjfT~~ zMG_^im4+fG{|@u+zWeW7MTvl(wzxm>BcQK(E9^=X^u%rLjMLROcCS`wnzn+LLQ^hh zRd_s2T}p^vq|jm`wnDm<g;w^okBEoVwYi+bP7`OFz=`CEb2IqUgYHmAa?nq6%shGA zKNP7y>k+UgJ#Vw%C?UE%xZri!koRtg5JCtcgb+gip)cAGy>82Ec;o;8002ovPDHLk FV1i>tFuMQ% literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/browserconfig.xml b/interface/web/themes/default/assets/favicon/browserconfig.xml new file mode 100644 index 0000000000..d0076c46ca --- /dev/null +++ b/interface/web/themes/default/assets/favicon/browserconfig.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<browserconfig> + <msapplication> + <tile> + <square150x150logo src="/themes/default/assets/favicon/mstile-150x150.png"/> + <TileColor>#cc151c</TileColor> + </tile> + </msapplication> +</browserconfig> diff --git a/interface/web/themes/default/assets/favicon/favicon-16x16.png b/interface/web/themes/default/assets/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6877b0cf7cb185bcd9031c22eeabcd06a7d75175 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7>nU-$v%I1}bdFnihqEVy z?UPvuVF1aQ^{sF=gfXdiQs`QbOrQxuB|(0{LXUc7m{-kbxb}zJf4kH1@{m*BUS7w6 zvRR%kjv*4^rRQ(+wHR=?UUc?$%+mk$-`@H~Mw8k)^D?K5h58S=78pH?XfjOn<~)($ z`E!|8I)@!o^ZdlS*CklwJ}oTLV>8<2ndkOG({u8ZS-HlgKOVXH-r4Z(uwc>8{m})i gd;gWoweS1G;GDr``Di20M4+t<p00i_>zopr03Whk5C8xG literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/favicon-32x32.png b/interface/web/themes/default/assets/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..562f38a8669e4e568002f000b5804f9496bde006 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu4j2gL5N2L$^dhHG7ArD z89+o%NGSmsQ`>v`rp^MPX|un^w5tNO3zP);1^@HEDe+D>j)7zET)V>TlXI?`IbR3L zE%bD846!(Uck)4@!wMWO*BP1?Wd8e~UF~^kW#6|8^M0+{R~S&XQ2u~F%j`v~Hatn~ zQg=?(dC>FJas%UoS?WJ3d(Xs8_~&O)U#E2=`Tp&o8~u;D6+2dJ75j21WU5BIw6x~J zXVT0(^VdYKVQ6Tc<IWJGolw>^tHa|-)Z{xB53~f6!dI;|sNSX7P`**#ZRK2nJN!4r n)$d(;Z)CPQ|BV0coliLJ^2AsdE3tV39n0Y9>gTe~DWM4fY3qBB literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/favicon.ico b/interface/web/themes/default/assets/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..13554cb35355c7a7eee489693006c26041312d25 GIT binary patch literal 15086 zcmeHOF;5gh6n=;i8if!vArS5gh*pXwiiwG+g&m=>CU%(El914Fg`rUj5=>Msp~T1^ zK&!(Fl^9}&g&~#{#L7?**6-V$IcLXNZ|`n*ImmAE-P@g=dGCAQ%+B6DQKU`UWn@HP zi}H3@<d%pOi|V>t<OkZiVR`?_S&?~kxPm?yB98&K`^QjV^3Pm>T!CDH+czp5Ngzul z$#>x5)&#H&tS5xo;lk$SwDVBh$=gc-d+<4tW)AQ_n*wiBi@mhw0lY5(+bQ#BF3V}m z0d;|I&T&Yuf!?j1rV#c=-|JkbN#_v3pU(p4r6DMv_MC2~!C!IYzEefBYgPG-<j*{8 zM9quRg3sq_hT#5dugR+ZxJN$r9v#|inV;%s`!UyfmglQlWALJuuGr){%YLw253RzT zJgV;ioJa9zPJUlld;Pic&7#fM)O>bp@Fyp(Et}h3Q~P1P`)Qybb)GP}tF^Hl;^N}^ zZyS9%_d`D8Hlq60({A%N)_;|UzrRqMFkjcYcfS8#FD={wep^`6vC_6m4|}cW{L>a* z`Oo$D*Z&&Ue+U`L&-WCc<%ZWkd2*kyagz9F#nlxj3H@DuvuexvXQi||&MDR3{_e(W z=l2J<D%rK3QvG9p|H)2icccjY^Y!DFEAiF{{ZHfiS+##-waT^sTe9}=FV0D;!hT-K z)Ba9s_i5#8)*o7_{!@=u)ZVXIz_L!q>w3l?U*Dh(QLS@vv-9f{K_09rvxd@&Ah%Hc zGx3c&cbF@XE08M?QvuIEL}J@RkvR|je~A>7?V{Zk=?GcR^RMBU7Tu+zOQZsOu3e-A zd!Y><I0geFcVRn7WEXZfrq%sZwu)lalz0aI6<XxO`~>-thDRM@TK=6@5x56b|4yqL z7x{7G6u5cqV`sfcDoK2=7zfJ0W}PS(`o3IkhKGv14|~)g$hogk4j9Y48;z~UO*ays z^NrZ=0p?GT3+EyZI8Mhe*NV?roGTmfF$qj5jNA94uF>Dr&5v*QWlZuy-#*n}=b41n zxzkP?TJl=^Cr8FMwKB&wecs=@^__WJ@lC&`PDkvY6jWa0)L6wY)3?fBbD$RHIoB37 z@$r0q>8S?u(Cu-oo?pi2VT_r?xsGYteZ~lS2b}S5T9r317d(PI^u1;*VlziGu0C(c z_|$;NI)7@+IW*CX?s{xo{dNDOZ5}_~`cGPS?Jw8Ab@j*GuwFNrGD7b>#4_JOdN0nz zs`ugaF>zqtQ|jH!cM^5scabc>SmX9P+T82YJlA_cZjWDqpq^lSmfHL>!x2giM}>nq z&pVhaiEMyr1(k$K0S$v=f5Gb-@Jkr*(FO<Yo^`NJ!LmdVsMaa)f6dZ99^U`ZIW+jG z#|7T|U;MtFul;y_-T^xiSfSr29~kop_zCb?U$MZpL*Riqp4Y&F0>|jFx=mX>o-t-r ze~x85`lYRf6_um*rN{d1&*olDEWTL$Ov`>YsNd-IjWdQ$j7uyqCv&`+qw5@Fm}_Xf zo;${HjWOF?<IVfE&eIrA-f>~Y-@!H4T|Llq$F=aSLClb^>sg7@7H6Jn%|lT8L_HL> YP@;4mBk+`tqHau#S)jiX>Zp3$ACgKrHvj+t literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/mstile-150x150.png b/interface/web/themes/default/assets/favicon/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..83fcba69390f17f68b5dde4969858fb3d9d28292 GIT binary patch literal 606 zcmeAS@N?(olHy`uVBq!ia0y~yVB`Z~7G|JG*Ze2bfRsdlPl&5eX5oKq;GWa7D?l~u zB|(0{3{N&G7$x#JSSM@+n(@xl#WAGf*4tZq{SP@vG<@`CDf`K>I;mwV+g(Ma;-3Q7 zmUUFmp78toQUwl{h1d7(HT(6)jQ!B$*Gpq+{563_!odUis6BgU&$hZGdAfS8OR2`} zz;`cF4$Vt(Q_XC<#(R>_zOaoi=3w8G(~7$ko~Cv69nd_K967n#;B$!VR;L{Pwc$y! zXG3HcMzrgN9ACTftrgoL*~9BrF4wVQ`W(+SpU>*Wf@U<LPek@{Sjwd8<KOnrD22%X z^E#fkY-0WK&k9Co_A2l5vHGHN?#1!n|4#UBN&D+#mDGEv?75Kr?wt{5K7M`kU?RtP z&faIs7EX?AzbUh`?vkRp`@8JNtd=h_x=SVQ8E44X9}#`6F_ZUNxV!8^^=pY04;6o< z{jb=~5h<nX@#Wdw@{W6_1C<xE7V=xEOi$kH+_SF#?%$FSSygGHzOPaCFFE9@y&{%c zcP!leS|j&g&DRjSZ?a-KX7(Ta-pMXL>sN7NZ}RWht&2)(<|Xe}&Y638%MHW+&vM!> z?b%Bg$4}^6y<F+w?0M6tJf736v!g0<XWH_|uh<H8OJgbxw9f~*KmGJFXIYMB>@7v! x^HJ?pKmX3SQ82|-{_(ZSV1Gt<v>-E%?PK5zS<O-^Szrqi_H^}gS?83{1OO7c6D<G$ literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg new file mode 100644 index 0000000000..12238ebc5b --- /dev/null +++ b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg @@ -0,0 +1 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" width="1422.667" height="1422.667" viewBox="0 0 1067.000000 1067.000000"><path d="M92.9 141.4c-.2.2-2.8.7-5.8 1.1-19.1 2.4-41.8 14.2-57.7 30.1C22 180 13 191.6 13 193.8c0 .5-.8 2-1.9 3.3-1.9 2.5-8.4 19-9.8 25C.9 224 .5 329.7.5 457v231.5l2.7 8.5c9.4 29.1 29.3 51.5 57.2 64.5 8.4 3.9 18.1 7.3 23.1 8 1.1.2 4.5.6 7.5 1.1 3 .4 144.4.8 314.3.8l308.7.1.1 8c0 4.4.2 9.3.3 10.8.1 1.6-.2 3.1-.6 3.3-.5.3-.6 1-.2 1.5.3.5.5 6.2.4 12.7-.1 6.4-.1 12.6-.1 13.7 0 2-.5 2-147.2 1.8-81-.2-163.5-.3-183.4-.3h-36.2l-.3-13.7-.3-13.7-52-.1c-28.6 0-52.4.1-53 .2-2 .6-.8 40.4 1.5 49.3.5 1.9 1.1 4.6 1.4 6 1 5.1 7.9 21.6 9.5 23 .3.3 1.7 2.5 3 5 1.4 2.5 3 5 3.5 5.6.6.6 2.5 2.8 4.1 4.9 2.8 3.6 10.7 11.7 13.7 14 .7.6 3.1 2.5 5.3 4.2 3.8 3 6.7 4.8 16.2 9.8 4.1 2.2 16.2 6.7 21.8 8 3 .8 4.1.9 12.5 2.1 4.9.6 385 1.2 386.3.6.5-.2 3.2-.6 6-.8 6.4-.4 15.5-2.5 22.4-5.2 2.9-1.1 5.4-1.7 5.7-1.4.4.3.6 0 .6-.6 0-.7.3-1.1.8-1 1 .3 10.5-4.6 16.5-8.6 6.7-4.5 14.5-11.2 18.8-16.1 1.9-2.2 4.1-4.7 4.9-5.6 7.4-8.5 16.5-26.4 19.5-38.3 1.8-7.6 2-8.5 3-14.2.6-3.8.7-70 .1-73.9-.1-1.1-.6-4.5-1.1-7.5-.4-3-1.4-7.2-2.1-9.2-.7-2.1-1.3-3.9-1.3-4.1 0-.1-.4-1.5-1-3-.6-1.6-1.1-3-1.1-3.2 0-2.8-11.6-22.7-17-29-10-11.7-26.4-24-39.7-29.5-4.2-1.8-8.3-3.3-9.2-3.5-.9-.3-4.2-1.1-7.3-2-3.2-.8-9.2-1.9-13.5-2.3-4.3-.4-146.1-.7-315-.7H103l-.1-6.5c0-7.6 0-407.7.1-413.2v-3.6h855v8.1c.4 71.1 0 414.1-.4 414.5-.3.3-19.1.5-41.6.5-22.6 0-41.3.4-41.5.8-.4.5-.7 62.4-.5 98.4v5l46.8-.1c38.4 0 55.5-.6 60.2-1.9.3-.1 1.9-.5 3.5-.9 25-6.1 48-22 62.2-43.1 6.1-8.9 10-16.9 13.2-27 2.9-9.1 3.6-11.9 4.8-21 .8-6.5.9-436.1 0-444-1-9.5-1.4-11.5-4.6-21-2.6-8-4.5-12-10.7-23-3.2-5.6-10.1-14-16.5-19.8-8.3-7.6-8.9-8.1-12.4-10.3-1.6-1-3.2-2.1-3.5-2.4-2.8-2.9-22.1-11.5-30.5-13.6-1.6-.4-3.4-.8-4-1-.5-.1-2.3-.6-4-1-2.9-.9-884.8-1.8-885.6-1z"/><path d="M240.3 539.6c.2 1.3.1 2.7-.3 2.9-.4.2-.5 1.7-.3 3.2.8 5.6.8 7.8 0 9-.4.6-.4 1.4.2 1.7.6.4.6 1.8.1 3.6-.5 1.7-.5 3 0 3s.5 1.3 0 2.9c-.4 1.6-.6 3.2-.4 3.4.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.8 1.3 1.1 5.7.3 5.7-.3 0-.5 1.8-.5 4s.2 4 .5 4 .5 1.1.5 2.5-.4 2.5-.8 2.5-.3.8.2 1.8.6 2.4.1 3.3c-.5.8-.5 2.1 0 2.8.4.8.4 2.6 0 4.2-.5 1.5-.6 3-.4 3.2.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.9 1.4 1.1 5.7.2 5.7-.3 0-.3 1.7 0 3.7l.6 3.8 53 .1c50.2.1 56.5-.2 55-2.6-.3-.5-.5-3-.5-5.7 0-6.2 0-13.8-.2-16.1 0-.9 0-3.1.1-4.7.2-6.6.2-8.1.2-9.3-.1-.6-.1-1.8-.2-2.5 0-.6.1-3.9.2-7.3.1-3.3 0-6.5-.4-7-.3-.6-.2-2.6.2-4.6.5-2 .5-4.2.1-4.9-.5-.7-.4-2.3 0-3.5.5-1.3.5-2.6.1-2.9-.8-.4-.5-6.3.4-9.1.2-.6-.1-1.7-.5-2.5-.5-.7-.5-1.8.1-2.5s.6-1.5.1-1.8c-.8-.5-.5-8.5.4-9.5.2-.2-.1-1.1-.6-2.1-.6-1-.6-3 0-4.8.7-2.5.5-3.2-.8-3.6-.9-.3-25.5-.5-54.6-.5h-52.8l.5 2.5z"/></svg> \ No newline at end of file diff --git a/interface/web/themes/default/assets/favicon/site.webmanifest b/interface/web/themes/default/assets/favicon/site.webmanifest new file mode 100644 index 0000000000..a94d9f4b4a --- /dev/null +++ b/interface/web/themes/default/assets/favicon/site.webmanifest @@ -0,0 +1,18 @@ +{ + "name": "ISPConfig", + "short_name": "ISPConfig", + "icons": [ + { + "src": "/themes/default/assets/favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/themes/default/assets/favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#cc151c", + "background_color": "#cc151c" +} diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 0cdd2f89b3..b49e6cd61d 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -10,6 +10,16 @@ <meta name='keywords' lang='en' content='' /> <meta name='robots' content='noindex, nofollow' /> + <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'> + <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'> + <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'> + <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'> + <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'> + <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'> + <meta name='msapplication-TileColor' content='#cc151c'> + <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'> + <meta name='theme-color' content='#cc151c'> + <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/ispconfig.css' /> diff --git a/interface/web/themes/default/templates/main_login.tpl.htm b/interface/web/themes/default/templates/main_login.tpl.htm index 11042f02af..c52e9071f2 100644 --- a/interface/web/themes/default/templates/main_login.tpl.htm +++ b/interface/web/themes/default/templates/main_login.tpl.htm @@ -8,7 +8,16 @@ <meta name='viewport' content='width=device-width, user-scalable=yes'> <meta name='description' lang='en' content='' /> <meta name='keywords' lang='en' content='' /> - <meta name='robots' content='index, follow' /> + + <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'> + <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'> + <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'> + <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'> + <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'> + <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'> + <meta name='msapplication-TileColor' content='#cc151c'> + <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'> + <meta name='theme-color' content='#cc151c'> <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> -- GitLab From 9f38e0599bc56f54cbf9a4159194c8eb82fb2a46 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Thu, 27 Feb 2020 13:12:06 +0100 Subject: [PATCH 232/571] Allow hostname in SPF wizard --- interface/web/dns/dns_spf_edit.php | 38 ++++++++++++++------ interface/web/dns/dns_txt_edit.php | 15 ++++++++ interface/web/dns/form/dns_spf.tform.php | 2 +- interface/web/dns/lib/lang/ar_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/bg_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/br_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/ca_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/cz_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/de_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/dk_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/el_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/en_dns_spf.lng | 5 ++- interface/web/dns/lib/lang/es_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/fi_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/fr_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/hr_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/hu_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/id_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/it_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/ja_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/nl_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/pl_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/pt_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/ro_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/ru_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/se_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/sk_dns_spf.lng | 4 +++ interface/web/dns/lib/lang/tr_dns_spf.lng | 4 +++ interface/web/dns/templates/dns_spf_edit.htm | 6 +++- 29 files changed, 148 insertions(+), 14 deletions(-) diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php index 94096662a1..70f39e44eb 100644 --- a/interface/web/dns/dns_spf_edit.php +++ b/interface/web/dns/dns_spf_edit.php @@ -72,13 +72,16 @@ class page_action extends tform_actions { } function onShowEnd() { - global $app, $conf; + global $app; + + $id = $app->functions->intval($_GET['id']); - $zone = $app->functions->intval($_GET['zone']); + // if there is no existing SPF record, assume we want a new active record + $app->tpl->setVar('active', 'CHECKED'); //* check for an existing spf-record - $sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=spf1%' AND zone = ? AND " . $app->tform->getAuthSQL('r'); - $rec = $app->db->queryOneRecord($sql, $zone); + $sql = "SELECT data, active FROM dns_rr WHERE id = ? AND " . $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord($sql, $id); if ( isset($rec) && !empty($rec) ) { $this->id = 1; $old_data = strtolower($rec['data']); @@ -132,7 +135,6 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - // Get the parent soa record of the domain $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $app->functions->intval($_POST["zone"])); @@ -153,8 +155,27 @@ class page_action extends tform_actions { } } } // end if user is not admin + + // Check that the record does not yet exist + $existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE id != ? AND zone = ? AND name = ? AND type = 'TXT'", $this->dataRecord['id'], $_POST['zone'], $_POST['name']); + if (!empty($existing_records)) { + if (count($existing_records) > 1) { + $multiple_existing_records_error_txt = $app->tform->wordbook['spf_record_exists_multiple_txt']; + $multiple_existing_records_error_txt = str_replace('{hostname}', $_POST['name'], $multiple_existing_records_error_txt); + + $app->error($multiple_existing_records_error_txt); + } - //create spf-record + $existing_record = array_pop($existing_records); + + $existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt']; + $existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt); + $existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt); + + $app->error($existing_record_error_txt); + } + + // Create spf-record if (!empty($this->dataRecord['spf_mx'])) { $spf_record[] = 'mx'; } @@ -217,7 +238,6 @@ class page_action extends tform_actions { else $this->dataRecord['data'] = 'v=spf1 ' . $this->dataRecord['spf_mechanism'] . 'all'; unset($temp); - $this->dataRecord['name'] = $soa['origin']; if (isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'Y'; // Set the server ID of the rr record to the same server ID as the parent record. @@ -228,10 +248,6 @@ class page_action extends tform_actions { $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]); $this->dataRecord["stamp"] = date('Y-m-d H:i:s'); - // always update an existing entry - $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data LIKE 'v=spf1%' AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord['name']); - $this->id = $check['id']; - if (!isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'N'; parent::onSubmit(); diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php index 8f61d2bfe7..6d518e19d5 100644 --- a/interface/web/dns/dns_txt_edit.php +++ b/interface/web/dns/dns_txt_edit.php @@ -44,7 +44,22 @@ require_once './dns_edit_base.php'; // Loading classes class page_action extends dns_page_action { + function onLoad() { + parent::onLoad(); + + // The SPF wizard has a button to edit a record as TXT. We need this to prevent a redirect loop. + if (!empty($_GET['edit_raw'])) { + return; + } + // Redirect to SPF wizard if we detect a SPF record + if (!empty($this->dataRecord['data'])) { + if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) { + header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id'])); + exit; + } + } + } } $page = new page_action; diff --git a/interface/web/dns/form/dns_spf.tform.php b/interface/web/dns/form/dns_spf.tform.php index 62b6b5283b..53081b7cca 100644 --- a/interface/web/dns/form/dns_spf.tform.php +++ b/interface/web/dns/form/dns_spf.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/lib/lang/ar_dns_spf.lng b/interface/web/dns/lib/lang/ar_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/ar_dns_spf.lng +++ b/interface/web/dns/lib/lang/ar_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_spf.lng b/interface/web/dns/lib/lang/bg_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/bg_dns_spf.lng +++ b/interface/web/dns/lib/lang/bg_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng index 739e59cf41..bbf571c3b7 100644 --- a/interface/web/dns/lib/lang/br_dns_spf.lng +++ b/interface/web/dns/lib/lang/br_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'Registro SPF'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; $wb['spf_mechanism_pass_txt'] = 'Pass - permitir e-mails de outros remetentes'; $wb['spf_mechanism_fail_txt'] = 'Fail - rejeitar e-mails de outros remetentes'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'O domÃnio é inválido.'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; $wb['record_exists_txt'] = 'Registro dns já existe.'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $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 dns nesta zona.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_spf.lng b/interface/web/dns/lib/lang/ca_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/ca_dns_spf.lng +++ b/interface/web/dns/lib/lang/ca_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng index 3086454c34..a5691ee340 100644 --- a/interface/web/dns/lib/lang/cz_dns_spf.lng +++ b/interface/web/dns/lib/lang/cz_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Záznam'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanismus'; $wb['spf_mechanism_pass_txt'] = 'PÅ™ijmout - pÅ™ijÃmat e-mail od ostatnÃch odesÃlatelů'; $wb['spf_mechanism_fail_txt'] = 'OdmÃtat - odmÃtnout e-mail od ostatnÃch odesÃlatelů'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Neplatné doménové jméno'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; $wb['record_exists_txt'] = 'DNS záznam již existuje'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_spf.lng b/interface/web/dns/lib/lang/de_dns_spf.lng index aec5595ad3..a4f0f7827f 100644 --- a/interface/web/dns/lib/lang/de_dns_spf.lng +++ b/interface/web/dns/lib/lang/de_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanismus'; $wb['spf_mechanism_pass_txt'] = 'Pass - Mails von anderen Sendern zulassen'; $wb['spf_mechanism_fail_txt'] = 'Fail - Mails von anderen Sendern abweisen'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Ungültiger Domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Aktiv'; $wb['record_exists_txt'] = 'DNS-Eintrag existiert bereits'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.'; $wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.'; $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_spf.lng b/interface/web/dns/lib/lang/dk_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/dk_dns_spf.lng +++ b/interface/web/dns/lib/lang/dk_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_spf.lng b/interface/web/dns/lib/lang/el_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/el_dns_spf.lng +++ b/interface/web/dns/lib/lang/el_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_spf.lng b/interface/web/dns/lib/lang/en_dns_spf.lng index 7ac24dd227..455b5ce0ab 100644 --- a/interface/web/dns/lib/lang/en_dns_spf.lng +++ b/interface/web/dns/lib/lang/en_dns_spf.lng @@ -2,6 +2,7 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -21,8 +22,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb["ttl_txt"] = 'TTL'; $wb["active_txt"] = 'Active'; $wb["record_exists_txt"] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> - diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng index e4094672bb..353134aded 100755 --- a/interface/web/dns/lib/lang/es_dns_spf.lng +++ b/interface/web/dns/lib/lang/es_dns_spf.lng @@ -1,9 +1,12 @@ <?php $wb['active_txt'] = 'Habilitado'; +$wb['name_txt'] = 'Hostname'; $wb['data_txt'] = 'Registro SPF'; $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; $wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.'; $wb['record_exists_txt'] = 'El registro DNS ya existe'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['spf_a_txt'] = 'Permitir a la dirección IP actual del dominio enviar correo electrónico para este dominio'; $wb['spf_domain_note_txt'] = '(dominios separados por espacios en blanco)'; $wb['spf_domain_txt'] = 'Cualquier dominio que pueda entregar o retransmitir correo para este dominio'; @@ -22,4 +25,5 @@ $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; $wb['spf_mx_txt'] = 'Permite a los servidores configurados como MX enviar correos desde este dominio'; $wb['ttl_range_error'] = 'El tiempo mÃn. de TTL es 60 segundos.'; $wb['ttl_txt'] = 'TTL'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_spf.lng b/interface/web/dns/lib/lang/fi_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/fi_dns_spf.lng +++ b/interface/web/dns/lib/lang/fi_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_spf.lng b/interface/web/dns/lib/lang/fr_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/fr_dns_spf.lng +++ b/interface/web/dns/lib/lang/fr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_spf.lng b/interface/web/dns/lib/lang/hr_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/hr_dns_spf.lng +++ b/interface/web/dns/lib/lang/hr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_spf.lng b/interface/web/dns/lib/lang/hu_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/hu_dns_spf.lng +++ b/interface/web/dns/lib/lang/hu_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_spf.lng b/interface/web/dns/lib/lang/id_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/id_dns_spf.lng +++ b/interface/web/dns/lib/lang/id_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_spf.lng b/interface/web/dns/lib/lang/it_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/it_dns_spf.lng +++ b/interface/web/dns/lib/lang/it_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_spf.lng b/interface/web/dns/lib/lang/ja_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/ja_dns_spf.lng +++ b/interface/web/dns/lib/lang/ja_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_spf.lng b/interface/web/dns/lib/lang/nl_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/nl_dns_spf.lng +++ b/interface/web/dns/lib/lang/nl_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_spf.lng b/interface/web/dns/lib/lang/pl_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/pl_dns_spf.lng +++ b/interface/web/dns/lib/lang/pl_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_spf.lng b/interface/web/dns/lib/lang/pt_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/pt_dns_spf.lng +++ b/interface/web/dns/lib/lang/pt_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_spf.lng b/interface/web/dns/lib/lang/ro_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/ro_dns_spf.lng +++ b/interface/web/dns/lib/lang/ro_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_spf.lng b/interface/web/dns/lib/lang/ru_dns_spf.lng index cc4b4b087b..a0e77b41b1 100644 --- a/interface/web/dns/lib/lang/ru_dns_spf.lng +++ b/interface/web/dns/lib/lang/ru_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-запиÑÑŒ'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'Механизм SPF'; $wb['spf_mechanism_pass_txt'] = 'Pass - разрешить почту от других отправителей'; $wb['spf_mechanism_fail_txt'] = 'Fail - отклонить почту от других отправителей'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'ÐедопуÑтимое доменное им $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ðктивно'; $wb['record_exists_txt'] = 'DNS-запиÑÑŒ уже ÑущеÑтвует'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'МакÑ. количеÑтво DNS-запиÑей Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи доÑтигнуто.'; $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту запиÑÑŒ.'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_spf.lng b/interface/web/dns/lib/lang/se_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/se_dns_spf.lng +++ b/interface/web/dns/lib/lang/se_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_spf.lng b/interface/web/dns/lib/lang/sk_dns_spf.lng index df8d1fe145..09720321b2 100644 --- a/interface/web/dns/lib/lang/sk_dns_spf.lng +++ b/interface/web/dns/lib/lang/sk_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng index 40cad402a4..2683560275 100644 --- a/interface/web/dns/lib/lang/tr_dns_spf.lng +++ b/interface/web/dns/lib/lang/tr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Kaydı'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Yöntemi'; $wb['spf_mechanism_pass_txt'] = 'Kabul - DiÄŸer göndericilerden gelen e-postalar kabul edilsin'; $wb['spf_mechanism_fail_txt'] = 'Red - DiÄŸer göndericilerden gelen e-postalar reddedilsin'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Etki alanı adı geçersiz'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['record_exists_txt'] = 'DNS kaydı zaten var'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/templates/dns_spf_edit.htm b/interface/web/dns/templates/dns_spf_edit.htm index 3c34b37a41..fc7400d620 100644 --- a/interface/web/dns/templates/dns_spf_edit.htm +++ b/interface/web/dns/templates/dns_spf_edit.htm @@ -5,6 +5,10 @@ + <div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> + <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div> + </div> <div class="form-group"> <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label> <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" readonly class="form-control" /></div></div> @@ -52,11 +56,11 @@ <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone"> <input type="hidden" name="type" value="{tmpl_var name='type'}"> - <input type="hidden" name="name" value="{tmpl_var name='name'}"> </div> <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_spf_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_edit_as_txt_record_txt'}" data-load-content="dns/dns_txt_edit.php?id={tmpl_var name='id'}&zone={tmpl_var name='zone'}&edit_raw=1">{tmpl_var name='btn_edit_as_txt_record_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> </div></div> -- GitLab From 53e799ec7ca60eb2a9b54cc0a82672645fedc094 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 2 Mar 2020 10:19:16 +0100 Subject: [PATCH 233/571] Add CSRF key and token to FAQ delete links --- interface/web/help/templates/faq_manage_questions_list.htm | 2 +- interface/web/help/templates/help_faq_sections_list.htm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/help/templates/faq_manage_questions_list.htm b/interface/web/help/templates/faq_manage_questions_list.htm index a29d0f06d0..9b54e7d4ff 100644 --- a/interface/web/help/templates/faq_manage_questions_list.htm +++ b/interface/web/help/templates/faq_manage_questions_list.htm @@ -24,7 +24,7 @@ <td width="60%">{tmpl_var name='hf_question'}</td> <td width="30%">{tmpl_var name='hf_section'}</td> <td class="text-right" width="5%"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_delete.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_delete.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> <td class="text-right" width="5%"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="help/faq_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> diff --git a/interface/web/help/templates/help_faq_sections_list.htm b/interface/web/help/templates/help_faq_sections_list.htm index 5a3733aa0b..1d0ef16443 100644 --- a/interface/web/help/templates/help_faq_sections_list.htm +++ b/interface/web/help/templates/help_faq_sections_list.htm @@ -26,7 +26,7 @@ <tr> <td><b>{tmpl_var name='hfs_name'}</b></td> <td class="text-right"> - <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_sections_delete.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> + <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('help/faq_sections_delete.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> <td class="text-right"> <a class="btn btn-default formbutton-default formbutton-narrow" data-load-content="help/faq_sections_edit.php?id={tmpl_var name='id'}"><span class="icon icon-edit"></span></a> -- GitLab From 3d4981e3c275aa9ba24a590b791d8cc69282a3ee Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 2 Mar 2020 10:21:21 +0100 Subject: [PATCH 234/571] #5545 pw reset is always english --- interface/web/login/password_reset.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php index 02c71f2948..1550ae8af2 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/'.$app->functions->check_language($_SESSION['s']['language']).'.lng'; +include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$app->functions->check_language($conf['language']).'.lng'; $app->tpl->setVar($wb); $continue = true; -- GitLab From 8cb829063dd053d70c93b03be32070a496eff1db Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 2 Mar 2020 10:21:57 +0100 Subject: [PATCH 235/571] Fix php warning when adding empty spf --- interface/web/dns/dns_spf_edit.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php index 70f39e44eb..ee043d284f 100644 --- a/interface/web/dns/dns_spf_edit.php +++ b/interface/web/dns/dns_spf_edit.php @@ -176,6 +176,8 @@ class page_action extends tform_actions { } // Create spf-record + $spf_record = []; + if (!empty($this->dataRecord['spf_mx'])) { $spf_record[] = 'mx'; } -- GitLab From ebdc1c772416eb89177a855bf939fb56e78b3e69 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 2 Mar 2020 15:34:50 +0100 Subject: [PATCH 236/571] Fix SPF multiple records validation --- interface/web/dns/dns_spf_edit.php | 17 +++++++++++------ interface/web/dns/dns_txt_edit.php | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php index ee043d284f..1c632d2d12 100644 --- a/interface/web/dns/dns_spf_edit.php +++ b/interface/web/dns/dns_spf_edit.php @@ -157,7 +157,7 @@ class page_action extends tform_actions { } // end if user is not admin // Check that the record does not yet exist - $existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE id != ? AND zone = ? AND name = ? AND type = 'TXT'", $this->dataRecord['id'], $_POST['zone'], $_POST['name']); + $existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE zone = ? AND name = ? AND type = 'TXT' AND data LIKE 'v=spf1%'", $_POST['zone'], $_POST['name']); if (!empty($existing_records)) { if (count($existing_records) > 1) { $multiple_existing_records_error_txt = $app->tform->wordbook['spf_record_exists_multiple_txt']; @@ -166,13 +166,18 @@ class page_action extends tform_actions { $app->error($multiple_existing_records_error_txt); } + // If there is just one existing record, three things can be going on: + // - if we are adding a new record, show a warning that it already exists and offer to edit it + // - if we are editing an existing record and changing its 'name' field to one that is already existing, also show the warning + // - otherwise we are just editing the existing the record, so there is no need for a warning $existing_record = array_pop($existing_records); - - $existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt']; - $existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt); - $existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt); + if (empty($this->dataRecord['id']) || ($this->dataRecord['id'] !== $existing_record['id'])) { + $existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt']; + $existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt); + $existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt); - $app->error($existing_record_error_txt); + $app->error($existing_record_error_txt); + } } // Create spf-record diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php index 6d518e19d5..7caa27d040 100644 --- a/interface/web/dns/dns_txt_edit.php +++ b/interface/web/dns/dns_txt_edit.php @@ -53,7 +53,7 @@ class page_action extends dns_page_action { } // Redirect to SPF wizard if we detect a SPF record - if (!empty($this->dataRecord['data'])) { + if ('GET' === $_SERVER['REQUEST_METHOD'] && !empty($this->dataRecord['data'])) { if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) { header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id'])); exit; -- GitLab From 37534873db85372e4ec0c5415964bce58c49279f Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 2 Mar 2020 15:38:50 +0100 Subject: [PATCH 237/571] Hide default php version --- install/tpl/server.ini.master | 1 + .../web/admin/form/server_config.tform.php | 6 ++ .../web/admin/lib/lang/ar_server_config.lng | 1 + .../web/admin/lib/lang/bg_server_config.lng | 1 + .../web/admin/lib/lang/br_server_config.lng | 1 + .../web/admin/lib/lang/ca_server_config.lng | 1 + .../web/admin/lib/lang/cz_server_config.lng | 1 + .../web/admin/lib/lang/de_server_config.lng | 1 + .../web/admin/lib/lang/dk_server_config.lng | 1 + .../web/admin/lib/lang/el_server_config.lng | 1 + .../web/admin/lib/lang/en_server_config.lng | 1 + .../web/admin/lib/lang/es_server_config.lng | 1 + .../web/admin/lib/lang/fi_server_config.lng | 1 + .../web/admin/lib/lang/fr_server_config.lng | 1 + .../web/admin/lib/lang/hr_server_config.lng | 1 + .../web/admin/lib/lang/hu_server_config.lng | 1 + .../web/admin/lib/lang/id_server_config.lng | 1 + .../web/admin/lib/lang/it_server_config.lng | 1 + .../web/admin/lib/lang/ja_server_config.lng | 1 + .../web/admin/lib/lang/nl_server_config.lng | 1 + .../web/admin/lib/lang/pl_server_config.lng | 1 + .../web/admin/lib/lang/pt_server_config.lng | 1 + .../web/admin/lib/lang/ro_server_config.lng | 1 + .../web/admin/lib/lang/ru_server_config.lng | 1 + .../web/admin/lib/lang/se_server_config.lng | 1 + .../web/admin/lib/lang/sk_server_config.lng | 1 + .../web/admin/lib/lang/tr_server_config.lng | 1 + .../templates/server_config_web_edit.htm | 8 ++- interface/web/sites/ajax_get_json.php | 4 +- .../sites/lib/lang/ar_web_vhost_domain.lng | 2 + .../sites/lib/lang/bg_web_vhost_domain.lng | 2 + .../sites/lib/lang/br_web_vhost_domain.lng | 2 + .../sites/lib/lang/ca_web_vhost_domain.lng | 2 + .../sites/lib/lang/cz_web_vhost_domain.lng | 2 + .../sites/lib/lang/de_web_vhost_domain.lng | 2 + .../sites/lib/lang/dk_web_vhost_domain.lng | 2 + .../sites/lib/lang/el_web_vhost_domain.lng | 2 + .../sites/lib/lang/en_web_vhost_domain.lng | 2 + .../sites/lib/lang/es_web_vhost_domain.lng | 2 + .../sites/lib/lang/fi_web_vhost_domain.lng | 2 + .../sites/lib/lang/fr_web_vhost_domain.lng | 2 + .../sites/lib/lang/hr_web_vhost_domain.lng | 2 + .../sites/lib/lang/hu_web_vhost_domain.lng | 2 + .../sites/lib/lang/id_web_vhost_domain.lng | 2 + .../sites/lib/lang/it_web_vhost_domain.lng | 2 + .../sites/lib/lang/ja_web_vhost_domain.lng | 2 + .../sites/lib/lang/nl_web_vhost_domain.lng | 2 + .../sites/lib/lang/pl_web_vhost_domain.lng | 2 + .../sites/lib/lang/pt_web_vhost_domain.lng | 2 + .../sites/lib/lang/ro_web_vhost_domain.lng | 2 + .../sites/lib/lang/ru_web_vhost_domain.lng | 2 + .../sites/lib/lang/se_web_vhost_domain.lng | 2 + .../sites/lib/lang/sk_web_vhost_domain.lng | 2 + .../sites/lib/lang/tr_web_vhost_domain.lng | 2 + .../sites/templates/web_vhost_domain_edit.htm | 3 + interface/web/sites/web_vhost_domain_edit.php | 55 ++++++++++++++++++- 56 files changed, 147 insertions(+), 5 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 3786fc2ca3..45a5644392 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -105,6 +105,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_hide=n php_default_name=Default set_folder_permissions_on_update=n add_web_users_to_sshusers_group=y diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index c6022e6bc2..30dc11601c 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1129,6 +1129,12 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), + 'php_default_hide' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'php_default_name' => array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 24a1a41933..a855abaddf 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index aa4385b8ae..fd2c842654 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index c12a1a7dad..5be35952e4 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -296,6 +296,7 @@ $wb['logging_txt'] = 'Gravar logs de acesso e erros de sites'; $wb['logging_desc_txt'] = 'Usar Ferramentas > Sicronizar para aplicar mudanças em sites existentes. Para o Apache, os logs de acesso e erros podem ser anonimizados. Para o nginx, apenas o log de acesso é anonimizado, o log de erros conterá endereços IP.'; $wb['log_retention_txt'] = 'Tempo de retenção do log (dias)'; $wb['log_retention_error_ispositive'] = 'O tempo de retenção do log deve ser um número > 0.'; +$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Descrição da versão padrão do php'; $wb['php_default_name_error_empty'] = 'A descrição da versão padrão do php está em branco.'; $wb['error_mailbox_message_size_txt'] = 'O tamanho da cota da conta de e-mail deve ser maior ou igual o tamanho da cota de mensagens.'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 40f02fb637..c7bf8fb6e6 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 2b42cf6691..4b363ce3f5 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 9e0ce6f48f..2bd71ed3b9 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Beschreibung Standard PHP'; $wb['php_default_name_error_empty'] = 'Beschreibung Standard PHP ist leer.'; $wb['error_mailbox_message_size_txt'] = 'Mailboxgröße muss gleich oder größer als max. Nachrichtengröße sein.'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index e6d5eaa289..52da85b76e 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 394ba2bde9..7a8f97097f 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index b8c9166d43..1d3eac33cb 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -296,6 +296,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 08c80ec80e..90b1f50ac0 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 85b994a72e..2a4eac40ee 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 705c376a29..e9091f4bce 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 609d9ab889..379f3f317a 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 52533a2c78..9e5fa5e278 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index e4c1e47ce5..b201d79269 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 2d7d9e9ddb..a4e3a64a4c 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 6cd157154a..e0484786c2 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 542add696b..a514926d53 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 61509f30cf..d825718726 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index fabd1d61cc..1b4772908c 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index b5a1a18759..a0371719e0 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index db17e9ac5a..0e96ff297e 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 92b55336f0..c9aba33e2f 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 801a4fece1..f2799dcabe 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -295,6 +295,7 @@ $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_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Description Default PHP-Version'; $wb['php_default_name_error_empty'] = 'Description Default PHP-Version must not be empty'; $wb['error_mailbox_message_size_txt'] = 'Mailbox size must be larger or equal to message size'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 7d664b6947..f343964750 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -295,6 +295,7 @@ $wb['logging_txt'] = 'Web Sitesi EriÅŸim ve Hata Günlükleri Kaydedilsin'; $wb['logging_desc_txt'] = 'DeÄŸiÅŸiklikleri var olan sitelere uygulamak için Araçlar > Yeniden EÅŸitle komutunu kullanın. Apache için, eriÅŸim ve hata günlükleri anonimleÅŸtirilebilir. nginx için, only eriÅŸim günlüğü anonimleÅŸtirilebilir, hata günlüğüne IP adresleri kaydedilir.'; $wb['log_retention_txt'] = 'Günlük Tutma Süresi (Gün)'; $wb['log_retention_error_ispositive'] = 'Günlük tutma süresi 0 deÄŸerinden büyük bir sayı olmalıdır'; +$wb['php_default_hide_txt'] = 'Hide Default PHP-Version in selectbox'; $wb['php_default_name_txt'] = 'Varsayılan PHP Sürümü Açıklaması'; $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması boÅŸ olamaz'; ?> diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 05042bac85..48c3b8bcbc 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -258,7 +258,13 @@ </div> <div id="collapsePHP" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPHP"> <div class="panel-body"> - <!-- Begin content --> + <!-- Begin content --> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='php_default_hide_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='php_default_hide'} + </div> + </div> <div class="form-group"> <label for="php_default_name" class="col-sm-3 control-label">{tmpl_var name='php_default_name_txt'}</label> <div class="col-sm-9"><input type="text" name="php_default_name" id="php_default_name" value="{tmpl_var name='php_default_name'}" class="form-control" /></div></div> diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index 494f274f10..298fbdb019 100644 --- a/interface/web/sites/ajax_get_json.php +++ b/interface/web/sites/ajax_get_json.php @@ -97,7 +97,9 @@ if($type == 'getphpfastcgi'){ } 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 = ? AND active = 'y'".$sql_where, $server_id); } - $php_records[]=array('name' => $app->functions->htmlentities($web_config['php_default_name'])); + if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { + $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)) { 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 f208ab3f36..35c1d80928 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index a84d915230..a3742c7b8b 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -94,6 +94,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be $wb['hd_quota_error_regex'] = 'квотата за диÑковото проÑтранÑтво е грешна.'; $wb['traffic_quota_error_regex'] = 'Трафик квота е грешна.'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index 01a7414a98..8a89cb5b20 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; $wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; 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 aae2f46339..5dcb4216ff 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng index deaa3269c4..1bf4e87453 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -100,6 +100,8 @@ $wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.'; $wb['ssl_key_txt'] = 'SSL klÃÄ'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'VýbÄ›r PHP verze'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng index d95b6d47e4..037535b9a5 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -99,6 +99,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß ein $wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng index aae2f46339..5dcb4216ff 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng index 0ea2c2a796..61f90bb828 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index ae546e1c4d..3ebccaa78e 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -98,6 +98,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index f98c02db15..659f50fd65 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['perl_txt'] = 'Perl'; $wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.'; $wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.'; $wb['fastcgi_php_version_txt'] = 'Versión de PHP'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Gestor de Procesos'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index c7c4a14432..6a3fe8c197 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 931c00a533..73502d2916 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; $wb['ssl_key_txt'] = 'Clé SSL'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'Version de PHP'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index 7842d770b4..1595a2cecb 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index a40a4b62a5..04ff11f952 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 617e7fe769..4ea200465b 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index 9fbca551a3..43ff80b44b 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index 0efd971187..7c8736dc6b 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index dd007d549f..bc4139d44c 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is niet correct.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Versie'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng index 8a426b0a1a..1b0afea1a3 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -98,6 +98,8 @@ $wb['web_folder_error_regex'] = 'Wprowadzono nieprawidÅ‚owy katalog. ProszÄ™ nie $wb['domain_error_autosub'] = 'Istnieje już subdomena z tymi ustawieniami.'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'Wersja PHP'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index 170f2feb04..0f4c1c0080 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index 046c2c71a6..6badcdfb67 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index e87af3b654..f2b8dadad5 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° траф $wb['ssl_key_txt'] = 'SSL-ключ'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng index 1a2572b950..f612e60ccf 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index 17e60da6e6..0c6bc30d96 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -96,6 +96,8 @@ $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 4cfe808bfb..a190375c37 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -97,6 +97,8 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; $wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; +$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yöneticisi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 149d430887..46235e09c2 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -230,6 +230,9 @@ <div class="col-sm-9"><select name="fastcgi_php_version" id="fastcgi_php_version" class="form-control"> {tmpl_var name='fastcgi_php_version'} </select></div> + <tmpl_if name="fastcgi_php_version_default_hidden_warning_confirmed"> + <input type="hidden" id="fastcgi_php_version_default_hidden_warning_confirmed" name="fastcgi_php_version_default_hidden_warning_confirmed" value="{tmpl_var name='fastcgi_php_version_default_hidden_warning_confirmed'}" /> + </tmpl_if> </div> <tmpl_if name="limit_directive_snippets" op="==" value="y"><div class="form-group"> <label for="directive_snippets_id" class="col-sm-3 control-label">{tmpl_var name='directive_snippets_id_txt'}</label> diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 459af39670..7f0cd697e9 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -257,7 +257,9 @@ class page_action extends tform_actions { $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'", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } } - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { + $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + } 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')){ @@ -403,7 +405,9 @@ class page_action extends tform_actions { $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'", $parent_domain['server_id'], $_SESSION['s']['user']['client_id']); } } - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { + $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + } 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')){ @@ -623,7 +627,9 @@ class page_action extends tform_actions { $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ? AND active = 'y'", $parent_domain['server_id']); } } - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { + $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + } 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')){ @@ -1375,6 +1381,8 @@ class page_action extends tform_actions { } } + $this->validateDefaultFastcgiPhpVersion(); + parent::onSubmit(); } @@ -1539,6 +1547,47 @@ class page_action extends tform_actions { 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); } + + function validateDefaultFastcgiPhpVersion() { + global $app; + + // If PHP is not enabled, we don't need to validate the default PHP version + if (empty($this->dataRecord['php']) || 'no' === $this->dataRecord['php']) { + return; + } + + // If the default PHP version is not hidden, we don't need to do any additional validation + $app->uses('getconf'); + $web_config = $app->getconf->get_server_config($this->dataRecord['server_id'], 'web'); + if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { + return; + } + + // The default PHP version is indicated by an empty string, so if the default PHP version is hidden + // then an empty string is not a valid PHP version. + if (empty($this->dataRecord['fastcgi_php_version'])) { + $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_invalid_txt')); + return; + } + + // If the default PHP version is now hidden but this vhost was using it, we don't want to implicitly + // switch the user to some random Additional PHP version. So we show a warning instead. + $old_fastcgi_php_version = null; + if ($this->id > 0) { + $existing = $app->db->queryOneRecord('SELECT fastcgi_php_version FROM web_domain WHERE domain_id = ?', $this->id); + $old_fastcgi_php_version = $existing['fastcgi_php_version']; + } + + if ('' === $old_fastcgi_php_version) { + // Warning was already shown, user confirmed the new PHP version + if (!empty($_POST['fastcgi_php_version_default_hidden_warning_confirmed'])) { + return; + } + + $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_default_hidden_warning_txt')); + $app->tpl->setVar('fastcgi_php_version_default_hidden_warning_confirmed', 1); + } + } } $page = new page_action; -- GitLab From df09183d8914e3298dc3fea988dd068a0ddf74c6 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 3 Mar 2020 13:55:42 +0100 Subject: [PATCH 238/571] Do not add redirection when the command already does that itself. --- server/plugins-available/cron_plugin.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index af4e24d974..4c1e07c65f 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -259,7 +259,13 @@ class cron_plugin { $command .= "\t"; //if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/'; - $command .= $job['command'] . " " . $log_target; + + $command .= $job['command']; + + // Add a default log target when no redirection is included in the command. + if (!preg_match('/>/', $job['command'])) { + $command .= " " . $log_target; + } } if($job['type'] == 'chrooted') { -- GitLab From b450032f620376b80379659c0fef0523bcb9d0a2 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 3 Mar 2020 15:09:33 +0100 Subject: [PATCH 239/571] disable change the name of an additional-version which is still in use --- .../web/admin/lib/lang/de_server_php.lng | 1 + .../web/admin/lib/lang/en_server_php.lng | 1 + interface/web/admin/server_php_edit.php | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng index 4eb9065ba3..f43e79b4af 100644 --- a/interface/web/admin/lib/lang/de_server_php.lng +++ b/interface/web/admin/lib/lang/de_server_php.lng @@ -15,4 +15,5 @@ $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'; $wb['php_in_use_error'] = 'Diese PHP-Version wird noch benutzt.'; +$wb['php_name_in_use_error'] = 'Der Name kann nicht geändert werden.'; ?> diff --git a/interface/web/admin/lib/lang/en_server_php.lng b/interface/web/admin/lib/lang/en_server_php.lng index 6ae160b648..9d322804bb 100644 --- a/interface/web/admin/lib/lang/en_server_php.lng +++ b/interface/web/admin/lib/lang/en_server_php.lng @@ -15,4 +15,5 @@ $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'; $wb['php_in_use_error'] = 'This PHP-Version is in use.'; +$wb['php_name_in_use_error'] = 'The name can not be changed.'; ?> diff --git a/interface/web/admin/server_php_edit.php b/interface/web/admin/server_php_edit.php index 12aacf60b9..c200b25bae 100644 --- a/interface/web/admin/server_php_edit.php +++ b/interface/web/admin/server_php_edit.php @@ -50,7 +50,35 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { + function onSubmit() { + global $app; + + if(isset($this->id) && $this->id > 0 && $app->tform->getCurrentTab() == 'php_name') { + $rec = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $this->id); + if($rec['name'] != $this->dataRecord['name']) { + $check = array(); + // fastcgi + if($rec['php_fastcgi_binary'] != '') $check[] = $rec['php_fastcgi_binary']; + if($rec['php_fastcgi_ini_dir'] != '') $check[] = $rec['php_fastcgi_ini_dir']; + if(!empty($check)) $fastcgi_check = implode(':', $check); + unset($check); + // fpm + if($rec['php_fpm_init_script'] != '') $check[] = $rec['php_fpm_init_script']; + if($rec['php_fpm_ini_dir'] != '') $check[] = $rec['php_fpm_ini_dir']; + if($rec['php_fpm_pool_dir'] != '') $check[] = $rec['php_fpm_pool_dir']; + if(!empty($check)) $fpm_check = implode(':', $check); + + $sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?'; + if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check); + if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check); + + if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm)) $app->error($app->tform->lng('php_in_use_error').' '.$app->tform->lng('php_name_in_use_error')); + } + } + parent::onSubmit(); + + } function onBeforeUpdate() { global $app, $conf; -- GitLab From 814cfb8183935e412dd9988ccda2971ac236fb37 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Wed, 4 Mar 2020 08:25:18 +0100 Subject: [PATCH 240/571] Fix spf name error regex translation --- interface/web/dns/lib/lang/ar_dns_spf.lng | 1 + interface/web/dns/lib/lang/bg_dns_spf.lng | 1 + interface/web/dns/lib/lang/br_dns_spf.lng | 1 + interface/web/dns/lib/lang/ca_dns_spf.lng | 1 + interface/web/dns/lib/lang/cz_dns_spf.lng | 1 + interface/web/dns/lib/lang/de_dns_spf.lng | 1 + interface/web/dns/lib/lang/dk_dns_spf.lng | 1 + interface/web/dns/lib/lang/el_dns_spf.lng | 1 + interface/web/dns/lib/lang/en_dns_spf.lng | 1 + interface/web/dns/lib/lang/es_dns_spf.lng | 1 + interface/web/dns/lib/lang/fi_dns_spf.lng | 1 + interface/web/dns/lib/lang/fr_dns_spf.lng | 1 + interface/web/dns/lib/lang/hr_dns_spf.lng | 1 + interface/web/dns/lib/lang/hu_dns_spf.lng | 1 + interface/web/dns/lib/lang/id_dns_spf.lng | 1 + interface/web/dns/lib/lang/it_dns_spf.lng | 1 + interface/web/dns/lib/lang/ja_dns_spf.lng | 1 + interface/web/dns/lib/lang/nl_dns_spf.lng | 1 + interface/web/dns/lib/lang/pl_dns_spf.lng | 1 + interface/web/dns/lib/lang/pt_dns_spf.lng | 1 + interface/web/dns/lib/lang/ro_dns_spf.lng | 1 + interface/web/dns/lib/lang/ru_dns_spf.lng | 1 + interface/web/dns/lib/lang/se_dns_spf.lng | 1 + interface/web/dns/lib/lang/sk_dns_spf.lng | 1 + interface/web/dns/lib/lang/tr_dns_spf.lng | 1 + 25 files changed, 25 insertions(+) diff --git a/interface/web/dns/lib/lang/ar_dns_spf.lng b/interface/web/dns/lib/lang/ar_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/ar_dns_spf.lng +++ b/interface/web/dns/lib/lang/ar_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_spf.lng b/interface/web/dns/lib/lang/bg_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/bg_dns_spf.lng +++ b/interface/web/dns/lib/lang/bg_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng index bbf571c3b7..13722f6696 100644 --- a/interface/web/dns/lib/lang/br_dns_spf.lng +++ b/interface/web/dns/lib/lang/br_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $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 dns nesta zona.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_spf.lng b/interface/web/dns/lib/lang/ca_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/ca_dns_spf.lng +++ b/interface/web/dns/lib/lang/ca_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng index a5691ee340..637d0ca767 100644 --- a/interface/web/dns/lib/lang/cz_dns_spf.lng +++ b/interface/web/dns/lib/lang/cz_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_spf.lng b/interface/web/dns/lib/lang/de_dns_spf.lng index a4f0f7827f..9bf5e676ec 100644 --- a/interface/web/dns/lib/lang/de_dns_spf.lng +++ b/interface/web/dns/lib/lang/de_dns_spf.lng @@ -23,6 +23,7 @@ $wb['record_exists_txt'] = 'DNS-Eintrag existiert bereits'; $wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.'; $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; diff --git a/interface/web/dns/lib/lang/dk_dns_spf.lng b/interface/web/dns/lib/lang/dk_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/dk_dns_spf.lng +++ b/interface/web/dns/lib/lang/dk_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_spf.lng b/interface/web/dns/lib/lang/el_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/el_dns_spf.lng +++ b/interface/web/dns/lib/lang/el_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_spf.lng b/interface/web/dns/lib/lang/en_dns_spf.lng index 455b5ce0ab..2518d4f51f 100644 --- a/interface/web/dns/lib/lang/en_dns_spf.lng +++ b/interface/web/dns/lib/lang/en_dns_spf.lng @@ -27,5 +27,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng index 353134aded..62c60654f0 100755 --- a/interface/web/dns/lib/lang/es_dns_spf.lng +++ b/interface/web/dns/lib/lang/es_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; $wb['spf_mx_txt'] = 'Permite a los servidores configurados como MX enviar correos desde este dominio'; $wb['ttl_range_error'] = 'El tiempo mÃn. de TTL es 60 segundos.'; $wb['ttl_txt'] = 'TTL'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_spf.lng b/interface/web/dns/lib/lang/fi_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/fi_dns_spf.lng +++ b/interface/web/dns/lib/lang/fi_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_spf.lng b/interface/web/dns/lib/lang/fr_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/fr_dns_spf.lng +++ b/interface/web/dns/lib/lang/fr_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_spf.lng b/interface/web/dns/lib/lang/hr_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/hr_dns_spf.lng +++ b/interface/web/dns/lib/lang/hr_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_spf.lng b/interface/web/dns/lib/lang/hu_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/hu_dns_spf.lng +++ b/interface/web/dns/lib/lang/hu_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_spf.lng b/interface/web/dns/lib/lang/id_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/id_dns_spf.lng +++ b/interface/web/dns/lib/lang/id_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_spf.lng b/interface/web/dns/lib/lang/it_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/it_dns_spf.lng +++ b/interface/web/dns/lib/lang/it_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_spf.lng b/interface/web/dns/lib/lang/ja_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/ja_dns_spf.lng +++ b/interface/web/dns/lib/lang/ja_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_spf.lng b/interface/web/dns/lib/lang/nl_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/nl_dns_spf.lng +++ b/interface/web/dns/lib/lang/nl_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_spf.lng b/interface/web/dns/lib/lang/pl_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/pl_dns_spf.lng +++ b/interface/web/dns/lib/lang/pl_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_spf.lng b/interface/web/dns/lib/lang/pt_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/pt_dns_spf.lng +++ b/interface/web/dns/lib/lang/pt_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_spf.lng b/interface/web/dns/lib/lang/ro_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/ro_dns_spf.lng +++ b/interface/web/dns/lib/lang/ro_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_spf.lng b/interface/web/dns/lib/lang/ru_dns_spf.lng index a0e77b41b1..2d69c49a32 100644 --- a/interface/web/dns/lib/lang/ru_dns_spf.lng +++ b/interface/web/dns/lib/lang/ru_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'МакÑ. количеÑтво DNS-запиÑей Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи доÑтигнуто.'; $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту запиÑÑŒ.'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_spf.lng b/interface/web/dns/lib/lang/se_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/se_dns_spf.lng +++ b/interface/web/dns/lib/lang/se_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_spf.lng b/interface/web/dns/lib/lang/sk_dns_spf.lng index 09720321b2..0cbf77862f 100644 --- a/interface/web/dns/lib/lang/sk_dns_spf.lng +++ b/interface/web/dns/lib/lang/sk_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng index 2683560275..5ca1e470e3 100644 --- a/interface/web/dns/lib/lang/tr_dns_spf.lng +++ b/interface/web/dns/lib/lang/tr_dns_spf.lng @@ -25,5 +25,6 @@ $wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> -- GitLab From fa5f136581e3b5d25f01c9d662632095c865be72 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:42:16 +0100 Subject: [PATCH 241/571] Update nginx_plugin.inc.php (add port check for proxy) --- server/plugins-available/nginx_plugin.inc.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index ef9300e5dc..ca14daf791 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1522,9 +1522,13 @@ class nginx_plugin { //proxy protocol settings if($web_config['vhost_proxy_protocol_enabled'] == "y"){ - $vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol']; - $vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port']; - $vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port']; + if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { + $vhost_data['use_proxy_protocol'] = $data['new']['proxy_protocol']; + $vhost_data['proxy_protocol_http'] = (int)$web_config['vhost_proxy_protocol_http_port']; + $vhost_data['proxy_protocol_https'] = (int)$web_config['vhost_proxy_protocol_https_port']; + } else { + $vhost_data['use_proxy_protocol'] = "n"; + } }else{ $vhost_data['use_proxy_protocol'] = "n"; } -- GitLab From bc713be21b3d12ec93fb9c2f93f9558431dd930d Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:53:01 +0100 Subject: [PATCH 242/571] Update upd_0089.sql - we do not allow merges into upd_xxx files. --- install/sql/incremental/upd_0089.sql | 6 ------ 1 file changed, 6 deletions(-) diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql index 5c676788d6..e69de29bb2 100644 --- a/install/sql/incremental/upd_0089.sql +++ b/install/sql/incremental/upd_0089.sql @@ -1,6 +0,0 @@ --- add new proxy_protocol column -ALTER TABLE `web_domain` - ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`; - --- Update old entrys -UPDATE `web_domain` SET `proxy_protocol` = 'y'; -- GitLab From 54302cf5cbcc6e401f12b4953c6d48d5a8cd30ea Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:55:07 +0100 Subject: [PATCH 243/571] Delete upd_0089.sql --- install/sql/incremental/upd_0089.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 install/sql/incremental/upd_0089.sql diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql deleted file mode 100644 index e69de29bb2..0000000000 -- GitLab From c97f8313d37c412cf122fa2a9515c59f65fbb170 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:55:23 +0100 Subject: [PATCH 244/571] Update upd_dev_collection.sql --- install/sql/incremental/upd_dev_collection.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index e69de29bb2..872fe77073 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -0,0 +1,3 @@ +-- add new proxy_protocol column +ALTER TABLE `web_domain` + ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`; -- GitLab From c100d85de43979252ec9b3e1474f9f53dcba468b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:55:33 +0100 Subject: [PATCH 245/571] Update upd_dev_collection.sql --- install/sql/incremental/upd_dev_collection.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 872fe77073..29ba602bf8 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,3 +1,3 @@ -- add new proxy_protocol column ALTER TABLE `web_domain` - ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'y' AFTER `log_retention`; + ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `log_retention`; -- GitLab From 2597d721df00ef5ce2de5da5a51e508077cf73d8 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 4 Mar 2020 09:56:57 +0100 Subject: [PATCH 246/571] Update ispconfig3.sql --- install/sql/ispconfig3.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 6998257046..bfef9733e5 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2071,7 +2071,7 @@ CREATE TABLE `web_domain` ( `https_port` int(11) unsigned NOT NULL DEFAULT '443', `folder_directive_snippets` text, `log_retention` int(11) NOT NULL DEFAULT '10', - `proxy_protocol` enum('n','y') NOT NULL default 'y', + `proxy_protocol` enum('n','y') NOT NULL default 'n', PRIMARY KEY (`domain_id`), UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- GitLab From 03ed8666876866851cb662e52b19903ef1da13ad Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 4 Mar 2020 17:13:04 +0100 Subject: [PATCH 247/571] Revert earlier, just default log_target to empty string, cron discards the output anyway. --- server/plugins-available/cron_plugin.inc.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index 4c1e07c65f..dac261832f 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -224,7 +224,7 @@ class cron_plugin { $command = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']); } - $log_target = ">/dev/null 2>&1"; + $log_target = ""; $log_wget_target = '/dev/null'; $log_root = ''; if($job['log'] == 'y') { @@ -259,13 +259,7 @@ class cron_plugin { $command .= "\t"; //if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/'; - - $command .= $job['command']; - - // Add a default log target when no redirection is included in the command. - if (!preg_match('/>/', $job['command'])) { - $command .= " " . $log_target; - } + $command .= $job['command'] . " " . $log_target; } if($job['type'] == 'chrooted') { -- GitLab From b88ffe44c55616b721e465fc21cb0e12b8b69de8 Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer <xaver.maierhofer@xwissen.info> Date: Sat, 7 Mar 2020 22:25:50 +0100 Subject: [PATCH 248/571] Disable stats button if stats are none --- .../sites/templates/web_vhost_domain_admin_list.htm | 10 +++++----- .../web/sites/templates/web_vhost_domain_list.htm | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/interface/web/sites/templates/web_vhost_domain_admin_list.htm b/interface/web/sites/templates/web_vhost_domain_admin_list.htm index 1ab14300d0..20be5a359f 100644 --- a/interface/web/sites/templates/web_vhost_domain_admin_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_admin_list.htm @@ -4,12 +4,12 @@ <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - + <button class="btn btn-default formbutton-success" type="button" data-load-content="sites/web_vhost_domain_edit.php?type={tmpl_var name='vhostdomain_type'}"><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="add_new_record_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="add_new_subdomain_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="add_new_aliasdomain_txt"}</tmpl_if></button> - - - + + + <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> <div class="table-wrapper marginTop15"> <table class="table"> @@ -46,7 +46,7 @@ <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='domain'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> <a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></a> - <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a> + <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"<tmpl_if name='stats_type' op='==' value=''> disabled</tmpl_if>><span class="glyphicon glyphicon-signal"></span></a> <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> </tr> diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index 105dac9399..4cdde852a3 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -21,12 +21,12 @@ </div> </tmpl_if> <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - + <button class="btn btn-default formbutton-success" type="button" data-load-content="sites/web_vhost_domain_edit.php?type={tmpl_var name='vhostdomain_type'}"><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="add_new_record_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="add_new_subdomain_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="add_new_aliasdomain_txt"}</tmpl_if></button> - - - + + + <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> <div class="table-wrapper marginTop15"> <table class="table"> @@ -60,7 +60,7 @@ <td><a href="#" data-load-content="sites/web_vhost_domain_edit.php?id={tmpl_var name='id'}&type={tmpl_var name='vhostdomain_type'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='domain'}">{tmpl_var name="domain"}</a></td> <td class="text-right"> <a href="http://{tmpl_var name="domain"}" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="icon icon-link"></span></button> - <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"><span class="glyphicon glyphicon-signal"></span></a> + <a href="http://{tmpl_var name="domain"}/stats/" target="_blank" class="btn btn-default formbutton-default formbutton-narrow"<tmpl_if name='stats_type' op='==' value=''> disabled</tmpl_if>><span class="glyphicon glyphicon-signal"></span></a> <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button> </td> </tr> -- GitLab From 8400a46c2a61124a77dcf434207d9160c7c0d8fc Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 20 Mar 2020 18:57:25 +0100 Subject: [PATCH 249/571] - escape database name on GRANT --- .../mysql_clientdb_plugin.inc.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index a26129eed9..72f602f9da 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -108,9 +108,9 @@ class mysql_clientdb_plugin { $result->free(); } } - + $app->log("Calling $action for $database_name with access $user_access_mode and hosts " . implode(', ', $host_list), LOGLEVEL_DEBUG); - + // loop through hostlist foreach($host_list as $db_host) { $db_host = trim($db_host); @@ -137,22 +137,24 @@ class mysql_clientdb_plugin { $app->log("Invalid host " . $db_host . " for GRANT to " . $database_name, LOGLEVEL_DEBUG); continue; } - + $grants = 'ALL PRIVILEGES'; if($user_access_mode == 'r') $grants = 'SELECT'; elseif($user_access_mode == 'rd') $grants = 'SELECT, DELETE, ALTER, DROP'; - + + $database_name = str_replace('_', '\\_', $link->escape_string($database_name)); + if($action == 'GRANT') { if($user_access_mode == 'r' || $user_access_mode == 'rd') { - if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; - $app->log("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); + if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; + $app->log("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); $success = true; } - - if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false; - $app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); + + if(!$link->query("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false; + $app->log("GRANT " . $grants . " ON `".$database_name."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); } elseif($action == 'REVOKE') { - if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; + if(!$link->query("REVOKE ALL PRIVILEGES ON `".$database_name."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; } elseif($action == 'DROP') { if(!$link->query("DROP USER '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; } elseif($action == 'RENAME') { @@ -293,7 +295,7 @@ class mysql_clientdb_plugin { $app->log('Unable to connect to the database: '.$link->connect_error, LOGLEVEL_ERROR); return; } - + // check if the database exists if($data['new']['database_name'] == $data['old']['database_name']) { $result = $link->query("SHOW DATABASES LIKE '".$link->escape_string($data['new']['database_name'])."'"); -- GitLab From df33e63a635034bd2925ef3ca73a94f8593529eb Mon Sep 17 00:00:00 2001 From: Ramil Valitov <ramilvalitov@gmail.com> Date: Tue, 24 Mar 2020 02:45:09 +0300 Subject: [PATCH 250/571] [add] make zip file in a single command --- server/lib/classes/cron.d/500-backup.inc.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index f261daf468..a499918d69 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -127,9 +127,7 @@ 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'; - $app->system->exec_safe('cd ? && sudo -u ? find . -group ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); - $retval = $app->system->last_exec_retcode(); - if($retval == 0 || $retval == 12) $app->system->exec_safe('cd ? && sudo -u ? find . -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --update --symlinks ? -@', $web_path, $web_user, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); + $app->system->exec_safe('cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); $retval = $app->system->last_exec_retcode(); } else { //* Create a tar.gz backup as root user -- GitLab From b72e5ec3563e73bfac4ea8e61603096517310128 Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Thu, 26 Mar 2020 17:46:59 +0100 Subject: [PATCH 251/571] Feature/add api example system config get --- interface/lib/classes/remote.d/admin.inc.php | 7 ++- remoting_client/API-docs/navigation.html | 1 + .../API-docs/system_config_get.html | 29 +++++++++++ .../examples/system_config_get.php | 48 +++++++++++++++++++ 4 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 remoting_client/API-docs/system_config_get.html create mode 100644 remoting_client/examples/system_config_get.php diff --git a/interface/lib/classes/remote.d/admin.inc.php b/interface/lib/classes/remote.d/admin.inc.php index 793f9ed339..479b991b7b 100644 --- a/interface/lib/classes/remote.d/admin.inc.php +++ b/interface/lib/classes/remote.d/admin.inc.php @@ -131,11 +131,10 @@ class remoting_admin extends remoting { /** Get the values of the system configuration @param int session id - @param string section of the config field in the table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc - @param string key of the option that you want to set - @param string option value that you want to set + @param string section of the config field in the table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc + @param string|null key of the option that you want to get */ - public function system_config_get($session_id, $section, $key) { + public function system_config_get($session_id, $section, $key = null) { global $app; if(!$this->checkPerm($session_id, 'system_config_get')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html index 5168122f28..d8c296801b 100644 --- a/remoting_client/API-docs/navigation.html +++ b/remoting_client/API-docs/navigation.html @@ -245,6 +245,7 @@ <p><a href="sites_web_subdomain_delete.html" target="content">sites_web_subdomain_delete</a></p> <p><a href="sites_web_subdomain_get.html" target="content">sites_web_subdomain_get</a></p> <p><a href="sites_web_subdomain_update.html" target="content">sites_web_subdomain_update</a></p> +<p><a href="system_config_get.html" target="content">system_config_get</a></p> <p><a href=""></a></p> <p></p> diff --git a/remoting_client/API-docs/system_config_get.html b/remoting_client/API-docs/system_config_get.html new file mode 100644 index 0000000000..7d73c974a3 --- /dev/null +++ b/remoting_client/API-docs/system_config_get.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>system_config_get(<span class="var">$session_id</span>, <span class="var">$section</span>, <span class="var">$key</span> ='');</h1> +<br> +<b>Description: </b> +<p class="margin"> Returns system config by section and optional key</p><br> +<b>Input Variables: </b> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$section</span>, <span class="var">$key</span> =''</p> +<b>Parameters (in <span class="var">$params</span>): </b> +<p class="margin"> None.</p> +<b>Output: </b> +<p class="margin"> Returns an array with the system config's section values, or a string with the value if a specific config key was requested.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/examples/system_config_get.php b/remoting_client/examples/system_config_get.php new file mode 100644 index 0000000000..f5d3d47f7b --- /dev/null +++ b/remoting_client/examples/system_config_get.php @@ -0,0 +1,48 @@ +<?php + +require 'soap_config.php'; + +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + //* Set the function parameters. + $server_id = 1; + + $result = $client->system_config_get($session_id, 'misc'); + print_r($result); + echo "<br>"; + + $result = $client->system_config_get($session_id, 'misc', 'maintenance_mode'); + print_r($result); + echo "<br>"; + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> -- GitLab From 3336bba7ac3ad67fbe0643d4858eb01e20163f9e Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Sat, 28 Mar 2020 16:09:23 +0100 Subject: [PATCH 252/571] Load remoting classes from modules --- interface/lib/classes/json_handler.inc.php | 40 +--------- .../lib/classes/remoting_handler_base.inc.php | 75 +++++++++++++++++++ interface/lib/classes/rest_handler.inc.php | 40 +--------- interface/lib/classes/soap_handler.inc.php | 40 +--------- interface/web/remote/index.php | 2 +- interface/web/remote/json.php | 2 +- interface/web/remote/rest.php | 2 +- 7 files changed, 81 insertions(+), 120 deletions(-) create mode 100644 interface/lib/classes/remoting_handler_base.inc.php diff --git a/interface/lib/classes/json_handler.inc.php b/interface/lib/classes/json_handler.inc.php index de8dd5ba0d..fb0811d314 100644 --- a/interface/lib/classes/json_handler.inc.php +++ b/interface/lib/classes/json_handler.inc.php @@ -30,45 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -class ISPConfigJSONHandler { - private $methods = array(); - private $classes = array(); - - public function __construct() { - global $app; - - // load main remoting file - $app->load('remoting'); - - // load all remote classes and get their methods - $dir = dirname(realpath(__FILE__)) . '/remote.d'; - $d = opendir($dir); - while($f = readdir($d)) { - if($f == '.' || $f == '..') continue; - if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue; - - $name = substr($f, 0, strpos($f, '.')); - - include $dir . '/' . $f; - $class_name = 'remoting_' . $name; - if(class_exists($class_name, false)) { - $this->classes[$class_name] = new $class_name(); - foreach(get_class_methods($this->classes[$class_name]) as $method) { - $this->methods[$method] = $class_name; - } - } - } - closedir($d); - - // add main methods - $this->methods['login'] = 'remoting'; - $this->methods['logout'] = 'remoting'; - $this->methods['get_function_list'] = 'remoting'; - - // create main class - $this->classes['remoting'] = new remoting(array_keys($this->methods)); - } - +class ISPConfigJSONHandler extends ISPConfigRemotingHandlerBase { private function _return_json($code, $message, $data = false) { $ret = new stdClass; $ret->code = $code; diff --git a/interface/lib/classes/remoting_handler_base.inc.php b/interface/lib/classes/remoting_handler_base.inc.php new file mode 100644 index 0000000000..6393959df8 --- /dev/null +++ b/interface/lib/classes/remoting_handler_base.inc.php @@ -0,0 +1,75 @@ +<?php + +/* +Copyright (c) 2020, ISPConfig +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. +*/ + +class ISPConfigRemotingHandlerBase +{ + protected $methods = array(); + protected $classes = array(); + + public function __construct() + { + global $app; + + // load main remoting file + $app->load('remoting'); + + // load all remoting classes and get their methods + $this->load_remoting_classes(realpath(__DIR__) . '/remote.d/*.inc.php'); + + // load all remoting classes from modules + $this->load_remoting_classes(realpath(__DIR__) . '/../../web/*/lib/classes/remote.d/*.inc.php'); + + // add main methods + $this->methods['login'] = 'remoting'; + $this->methods['logout'] = 'remoting'; + $this->methods['get_function_list'] = 'remoting'; + + // create main class + $this->classes['remoting'] = new remoting(array_keys($this->methods)); + } + + private function load_remoting_classes($glob_pattern) + { + $files = glob($glob_pattern); + + foreach ($files as $file) { + $name = str_replace('.inc.php', '', basename($file)); + $class_name = 'remoting_' . $name; + + include_once $file; + if(class_exists($class_name, false)) { + $this->classes[$class_name] = new $class_name(); + foreach(get_class_methods($this->classes[$class_name]) as $method) { + $this->methods[$method] = $class_name; + } + } + } + } +} diff --git a/interface/lib/classes/rest_handler.inc.php b/interface/lib/classes/rest_handler.inc.php index ceaa7c63be..ae3e443d48 100644 --- a/interface/lib/classes/rest_handler.inc.php +++ b/interface/lib/classes/rest_handler.inc.php @@ -30,46 +30,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -class ISPConfigRESTHandler { - private $methods = array(); - private $classes = array(); - +class ISPConfigRESTHandler extends ISPConfigRemotingHandlerBase { private $api_version = 1; - - public function __construct() { - global $app; - - // load main remoting file - $app->load('remoting'); - - // load all remote classes and get their methods - $dir = dirname(realpath(__FILE__)) . '/remote.d'; - $d = opendir($dir); - while($f = readdir($d)) { - if($f == '.' || $f == '..') continue; - if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue; - - $name = substr($f, 0, strpos($f, '.')); - - include $dir . '/' . $f; - $class_name = 'remoting_' . $name; - if(class_exists($class_name, false)) { - $this->classes[$class_name] = new $class_name(); - foreach(get_class_methods($this->classes[$class_name]) as $method) { - $this->methods[$method] = $class_name; - } - } - } - closedir($d); - - // add main methods - $this->methods['login'] = 'remoting'; - $this->methods['logout'] = 'remoting'; - $this->methods['get_function_list'] = 'remoting'; - - // create main class - $this->classes['remoting'] = new remoting(array_keys($this->methods)); - } private function _return_error($code, $codename, $message) { header('HTTP/1.1 ' . $code . ' ' . $codename); diff --git a/interface/lib/classes/soap_handler.inc.php b/interface/lib/classes/soap_handler.inc.php index 704e21b20b..16693e12c9 100644 --- a/interface/lib/classes/soap_handler.inc.php +++ b/interface/lib/classes/soap_handler.inc.php @@ -30,45 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -class ISPConfigSoapHandler { - private $methods = array(); - private $classes = array(); - - public function __construct() { - global $app; - - // load main remoting file - $app->load('remoting'); - - // load all remote classes and get their methods - $dir = dirname(realpath(__FILE__)) . '/remote.d'; - $d = opendir($dir); - while($f = readdir($d)) { - if($f == '.' || $f == '..') continue; - if(!is_file($dir . '/' . $f) || substr($f, strrpos($f, '.')) != '.php') continue; - - $name = substr($f, 0, strpos($f, '.')); - - include_once $dir . '/' . $f; - $class_name = 'remoting_' . $name; - if(class_exists($class_name, false)) { - $this->classes[$class_name] = new $class_name(); - foreach(get_class_methods($this->classes[$class_name]) as $method) { - $this->methods[$method] = $class_name; - } - } - } - closedir($d); - - // add main methods - $this->methods['login'] = 'remoting'; - $this->methods['logout'] = 'remoting'; - $this->methods['get_function_list'] = 'remoting'; - - // create main class - $this->classes['remoting'] = new remoting(array_keys($this->methods)); - } - +class ISPConfigSoapHandler extends ISPConfigRemotingHandlerBase { public function __call($method, $params) { if(array_key_exists($method, $this->methods) == false) { throw new SoapFault('invalid_method', 'Method ' . $method . ' does not exist'); diff --git a/interface/web/remote/index.php b/interface/web/remote/index.php index 670a9db13b..6352dfe504 100644 --- a/interface/web/remote/index.php +++ b/interface/web/remote/index.php @@ -8,7 +8,7 @@ require_once '../../lib/app.inc.php'; if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); -$app->load('soap_handler,getconf'); +$app->load('remoting_handler_base,soap_handler,getconf'); $security_config = $app->getconf->get_security_config('permissions'); if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); diff --git a/interface/web/remote/json.php b/interface/web/remote/json.php index 926a995395..d6eb8dcbc1 100644 --- a/interface/web/remote/json.php +++ b/interface/web/remote/json.php @@ -8,7 +8,7 @@ require_once '../../lib/app.inc.php'; if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); -$app->load('json_handler,getconf'); +$app->load('remoting_handler_base,json_handler,getconf'); $security_config = $app->getconf->get_security_config('permissions'); if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); diff --git a/interface/web/remote/rest.php b/interface/web/remote/rest.php index 4f202c6eee..381fd42655 100644 --- a/interface/web/remote/rest.php +++ b/interface/web/remote/rest.php @@ -6,7 +6,7 @@ require_once '../../lib/config.inc.php'; $conf['start_session'] = false; require_once '../../lib/app.inc.php'; -$app->load('rest_handler,getconf'); +$app->load('remoting_handler_base,rest_handler,getconf'); $security_config = $app->getconf->get_security_config('permissions'); if($security_config['remote_api_allowed'] != 'yes') die('Remote API is disabled in security settings.'); -- GitLab From aa1eed46b3d03746640a73db6df7d163ba036df3 Mon Sep 17 00:00:00 2001 From: Ramil Valitov <ramilvalitov@gmail.com> Date: Mon, 30 Mar 2020 12:41:39 +0200 Subject: [PATCH 253/571] Feature/backup copies --- interface/web/mail/form/mail_user.tform.php | 2 +- interface/web/sites/form/web_vhost_domain.tform.php | 2 +- server/lib/classes/cron.d/500-backup.inc.php | 9 +++++++-- server/lib/classes/cron.d/500-backup_mail.inc.php | 7 ++++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index da386f5844..0efc7f3d6b 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -469,7 +469,7 @@ if ($backup_available) { 'datatype' => 'INTEGER', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10') + 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30') ), ################################## # END Datatable fields diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 8b5a36441a..5c3057f685 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -668,7 +668,7 @@ if ($backup_available) { 'datatype' => 'INTEGER', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10') + 'value' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30') ), 'backup_excludes' => array ( 'datatype' => 'VARCHAR', diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index f261daf468..b68dd3b8e1 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -33,6 +33,11 @@ class cronjob_backup extends cronjob { // job schedule protected $_schedule = '0 0 * * *'; + /** + * The maximum number of backups that ISPConfig can store. + */ + const max_backups = 30; + /* this function is optional if it contains no custom code */ public function onPrepare() { global $app; @@ -177,7 +182,7 @@ class cronjob_backup extends cronjob { rsort($files); - for ($n = $backup_copies; $n <= 10; $n++) { + for ($n = $backup_copies; $n <= self::max_backups; $n++) { if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) { $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $web_id, $files[$n]); @@ -306,7 +311,7 @@ class cronjob_backup extends cronjob { reset($files); foreach($files as $db_name => $filelist) { rsort($filelist); - for ($n = $backup_copies; $n <= 10; $n++) { + for ($n = $backup_copies; $n <= self::max_backups; $n++) { if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) { $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; $app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]); 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 234f02771d..2b1fd58177 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -33,6 +33,11 @@ class cronjob_backup_mail extends cronjob { protected $_schedule = '0 0 * * *'; private $tmp_backup_dir = ''; + /** + * The maximum number of backups that ISPConfig can store. + */ + const max_backups = 30; + /* this function is optional if it contains no custom code */ public function onPrepare() { global $app; @@ -204,7 +209,7 @@ class cronjob_backup_mail extends cronjob { } $dir_handle->close(); rsort($files); - for ($n = $backup_copies; $n <= 10; $n++) { + for ($n = $backup_copies; $n <= self::max_backups; $n++) { if(isset($files[$n]) && is_file($mail_backup_dir.'/'.$files[$n])) { unlink($mail_backup_dir.'/'.$files[$n]); $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; -- GitLab From f4393490ffb793c91b0d060ff591848fe5f245cc Mon Sep 17 00:00:00 2001 From: Webslice <4052-webslice@users.noreply.git.ispconfig.org> Date: Mon, 30 Mar 2020 12:43:40 +0200 Subject: [PATCH 254/571] Exclude IP's from maintenance --- CONTRIBUTING.md | 2 +- install/tpl/system.ini.master | 1 + interface/lib/app.inc.php | 16 ++++++++++++++++ interface/lib/classes/remoting.inc.php | 4 +--- interface/web/admin/form/system_config.tform.php | 14 ++++++++++++++ .../web/admin/lib/lang/ar_system_config.lng | 2 ++ .../web/admin/lib/lang/bg_system_config.lng | 2 ++ .../web/admin/lib/lang/br_system_config.lng | 2 ++ .../web/admin/lib/lang/ca_system_config.lng | 2 ++ .../web/admin/lib/lang/cz_system_config.lng | 2 ++ .../web/admin/lib/lang/de_system_config.lng | 2 ++ .../web/admin/lib/lang/dk_system_config.lng | 2 ++ .../web/admin/lib/lang/el_system_config.lng | 2 ++ .../web/admin/lib/lang/en_system_config.lng | 2 ++ .../web/admin/lib/lang/es_system_config.lng | 2 ++ .../web/admin/lib/lang/fi_system_config.lng | 2 ++ .../web/admin/lib/lang/fr_system_config.lng | 2 ++ .../web/admin/lib/lang/hr_system_config.lng | 2 ++ .../web/admin/lib/lang/hu_system_config.lng | 2 ++ .../web/admin/lib/lang/id_system_config.lng | 2 ++ .../web/admin/lib/lang/it_system_config.lng | 2 ++ .../web/admin/lib/lang/ja_system_config.lng | 2 ++ .../web/admin/lib/lang/nl_system_config.lng | 2 ++ .../web/admin/lib/lang/pl_system_config.lng | 2 ++ .../web/admin/lib/lang/pt_system_config.lng | 2 ++ .../web/admin/lib/lang/ro_system_config.lng | 2 ++ .../web/admin/lib/lang/ru_system_config.lng | 2 ++ .../web/admin/lib/lang/se_system_config.lng | 2 ++ .../web/admin/lib/lang/sk_system_config.lng | 2 ++ .../web/admin/lib/lang/tr_system_config.lng | 2 ++ .../admin/templates/system_config_misc_edit.htm | 6 ++++++ interface/web/login/index.php | 5 ++--- 32 files changed, 91 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f6c528479a..d8eac80ebd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -123,4 +123,4 @@ $web_config = $app->getconf->get_server_config($server_id,'web'); # Learn about the form validators There are form validators in interface/lib/classes/tform.inc.php to make validating forms easier. -Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,CUSTOM +Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,ISIPV6,ISIP,CUSTOM diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index c916a62547..4df1a877dc 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -55,6 +55,7 @@ tab_change_warning=n use_loadindicator=y use_combobox=y maintenance_mode=n +maintenance_mode_exclude_ips= admin_dashlets_left= admin_dashlets_right= reseller_dashlets_left= diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index e817fcbd44..be6c15666c 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -333,6 +333,22 @@ class app { $this->tpl->setVar('globalsearch_noresults_limit_txt', $this->lng('globalsearch_noresults_limit_txt')); $this->tpl->setVar('globalsearch_searchfield_watermark_txt', $this->lng('globalsearch_searchfield_watermark_txt')); } + + public function is_under_maintenance() { + $system_config_misc = $this->getconf->get_global_config('misc'); + $maintenance_mode = 'n'; + $maintenance_mode_exclude_ips = []; + + if (!empty($system_config_misc['maintenance_mode'])) { + $maintenance_mode = $system_config_misc['maintenance_mode']; + } + + if (!empty($system_config_misc['maintenance_mode_exclude_ips'])) { + $maintenance_mode_exclude_ips = array_map('trim', explode(',', $system_config_misc['maintenance_mode_exclude_ips'])); + } + + return 'y' === $maintenance_mode && !in_array($_SERVER['REMOTE_ADDR'], $maintenance_mode_exclude_ips); + } private function get_cookie_domain() { $sec_config = $this->getconf->get_security_config('permissions'); diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index e1fc1ada86..47aa517de8 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -72,9 +72,7 @@ class remoting { global $app, $conf; // Maintenance mode - $app->uses('ini_parser,getconf'); - $server_config_array = $app->getconf->get_global_config('misc'); - if($server_config_array['maintenance_mode'] == 'y'){ + if($app->is_under_maintenance()){ throw new SoapFault('maintenance_mode', 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.'); return false; } diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index cb37cbefdd..d1b0a793e7 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -606,6 +606,20 @@ $form["tabs"]['misc'] = array ( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'maintenance_mode_exclude_ips' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( + 0 => array ( + 'type' => 'ISIP', + 'allowempty' => true, + 'separator' => ',', + 'errmsg'=> 'maintenance_mode_exclude_ips_error_isip' + ), + ), + 'default' => '', + 'value' => '' + ), 'admin_dashlets_left' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 0a830014d8..4ea9a68919 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 130cb596aa..1ea00be94f 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'ÐдминиÑтраторÑки емаил'; $wb['admin_name_txt'] = 'ÐдминиÑтраторÑки имена'; $wb['system_config_desc_txt'] = ''; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 98bd4c9614..f1feae4768 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrador(es) de e-mails'; $wb['monitor_key_txt'] = 'Palavras reservadas a monitorar'; $wb['admin_name_txt'] = 'Nome do administrador'; $wb['maintenance_mode_txt'] = 'Modo manutenção'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema'; $wb['smtp_host_txt'] = 'Host SMTP'; $wb['smtp_port_txt'] = 'Porta SMTP'; diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index cc3c11c6c5..d9dfcfaa66 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrator\'s name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 3660e1b689..e85b8ab9a5 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -29,6 +29,8 @@ $wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konfe $wb['mailmailinglist_url_txt'] = 'E-mailové konference URL'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['maintenance_mode_txt'] = 'Režim údržby'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'PoužÃt (zvolit) SMTP server pro zasÃlánà systémových mailů'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 76910e1db3..21169ddf08 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -37,6 +37,8 @@ $wb['admin_mail_txt'] = 'Administrator E-Mail'; $wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort'; $wb['admin_name_txt'] = 'Name des Administrators'; $wb['maintenance_mode_txt'] = 'Wartungsmodus'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen'; $wb['smtp_host_txt'] = 'SMTP Server'; $wb['smtp_port_txt'] = 'SMTP Port'; diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 26b0fe7e78..eb725ac519 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -35,6 +35,8 @@ $wb['admin_mail_txt'] = 'Administratorer e-mail'; $wb['monitor_key_txt'] = 'Monitor nøgleord'; $wb['admin_name_txt'] = 'Administratorer navn'; $wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 640d6f00a9..583bef7d39 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'e-mail ΔιαχειÏιστών'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Όνομα Administrator'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP θÏÏα'; diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index ef34493c9d..f43603f6b6 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Administrator\'s e-mail'; $wb["monitor_key_txt"] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrator\'s name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 043c52cfdd..f788117fd4 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -40,6 +40,8 @@ $wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzon $wb['mailmailinglist_link_txt'] = 'VÃnculo a la lista de correos en la lista de la Lista de correos'; $wb['mailmailinglist_url_txt'] = 'URL a la lista de correos'; $wb['maintenance_mode_txt'] = 'Modo de mantenimiento'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['min_password_length_txt'] = 'Longitud mÃnima de la contraseña'; $wb['min_password_strength_txt'] = 'Fortaleza mÃnima de la contraseña'; $wb['monitor_key_txt'] = 'Palabra clave del Monitor'; diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index c0972c49d8..9def05e14a 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 18f0dbbed4..7150804aaf 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'E-mail de l’administrateur'; $wb['monitor_key_txt'] = 'Mot-clé du moniteur'; $wb['admin_name_txt'] = 'Nom des administrateurs'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index a7735647b1..21b7953035 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL mailing liste'; $wb['admin_mail_txt'] = 'e-mail administratora'; $wb['admin_name_txt'] = 'Ime administratora'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index cee497fe19..8ef0acdeae 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_name_txt'] = 'Administrators name'; $wb['enable_custom_login_txt'] = 'Allow custom login name'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 344185b84d..5e76d45bf7 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 311b7c957c..85464c3739 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'Mailing list URL'; $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index aa5cc6a7a3..744db787b8 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 44a58b7646..f4b778d337 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -32,6 +32,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index a809251ec1..95bf2f6ffc 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -37,6 +37,8 @@ $wb['vhost_subdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak $wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web'; $wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak istniejÄ… w systemie vhosty aliasdomen.'; $wb['maintenance_mode_txt'] = 'Tryb serwisowy'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyÅ‚ania powiadomieÅ„ systemowych'; $wb['smtp_host_txt'] = 'Host SMTP'; $wb['smtp_port_txt'] = 'Port SMTP'; diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 6fc26344c0..faaebeca2a 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 2a39a454e8..e6ed186de7 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index baed497b0e..792628d492 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -29,6 +29,8 @@ $wb['mailmailinglist_url_txt'] = 'URL почтовой раÑÑылки'; $wb['admin_mail_txt'] = 'E-mail админиÑтратора'; $wb['admin_name_txt'] = 'Ð˜Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора'; $wb['maintenance_mode_txt'] = 'Режим техничеÑкого бÑлуживаниÑ'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'ИÑпользовать SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÑиÑтемных Ñообщений'; $wb['smtp_host_txt'] = 'ХоÑÑ‚ SMTP'; $wb['smtp_port_txt'] = 'Порт SMTP'; diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 74ae16734f..8f6c9a63f0 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administratörens epostadress'; $wb['monitor_key_txt'] = 'Bevakning nyckelord'; $wb['admin_name_txt'] = 'Administratörens namn'; $wb['maintenance_mode_txt'] = 'UnderhÃ¥llsläge'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail'; $wb['smtp_host_txt'] = 'SMTP-värd'; $wb['smtp_port_txt'] = 'SMTP-port'; diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 90418e87d5..2ea9666db5 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -29,6 +29,8 @@ $wb['admin_mail_txt'] = 'Administrators e-mail'; $wb['monitor_key_txt'] = 'Monitor keyword'; $wb['admin_name_txt'] = 'Administrators name'; $wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; $wb['smtp_host_txt'] = 'SMTP host'; $wb['smtp_port_txt'] = 'SMTP port'; diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 3ef8e26875..0ccf846c1c 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -40,6 +40,8 @@ $wb['admin_mail_txt'] = 'Yönetici E-posta Adresi'; $wb['monitor_key_txt'] = 'Ä°zlenecek Kelime'; $wb['admin_name_txt'] = 'Yönetici Adı'; $wb['maintenance_mode_txt'] = 'Bakım Kipi'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; $wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin'; $wb['smtp_host_txt'] = 'SMTP Sunucusu'; $wb['smtp_port_txt'] = 'SMTP Kapısı'; diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 45bdfcd275..00debd66dc 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -113,6 +113,12 @@ {tmpl_var name='maintenance_mode'} </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='maintenance_mode_exclude_ips_txt'}</label> + <div class="col-sm-9"> + <input type="text" name="maintenance_mode_exclude_ips" id="maintenance_mode_exclude_ips" value="{tmpl_var name='maintenance_mode_exclude_ips'}" class="form-control" /> + </div> + </div> <tmpl_if name="msg"> <div id="OKMsg"><p><tmpl_var name="msg"></p></div> diff --git a/interface/web/login/index.php b/interface/web/login/index.php index 47030e438d..b5d5abc27b 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -48,9 +48,8 @@ $app->load_language_file('web/login/lib/lang/'.$conf["language"].'.lng'); // Maintenance mode $maintenance_mode = false; $maintenance_mode_error = ''; -$app->uses('ini_parser,getconf'); $server_config_array = $app->getconf->get_global_config('misc'); -if($server_config_array['maintenance_mode'] == 'y'){ +if($app->is_under_maintenance()) { $maintenance_mode = true; $maintenance_mode_error = $app->lng('error_maintenance_mode'); } @@ -208,7 +207,7 @@ if(count($_POST) > 0) { if($user) { if($user['active'] == 1) { // Maintenance mode - allow logins only when maintenance mode is off or if the user is admin - if(!$maintenance_mode || $user['typ'] == 'admin'){ + if(!$app->is_under_maintenance() || $user['typ'] == 'admin'){ // User login right, so attempts can be deleted $sql = "DELETE FROM `attempts_login` WHERE `ip`=?"; -- GitLab From 5f969095a6e47b63f26a24de18878d65b7783a01 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 30 Mar 2020 13:12:03 +0200 Subject: [PATCH 255/571] - manually ported merge request !963 --- .../plugins-available/apache2_plugin.inc.php | 103 ++++++++++-------- server/plugins-available/nginx_plugin.inc.php | 95 ++++++++-------- 2 files changed, 108 insertions(+), 90 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index a40e902e2d..06b2afce9a 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -73,7 +73,7 @@ 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'); @@ -97,14 +97,14 @@ class apache2_plugin { private function get_master_php_ini_content($web_data) { global $app, $conf; - + $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi'); - + $php_ini_content = ''; $master_php_ini_path = ''; - + if($web_data['php'] == 'mod') { $master_php_ini_path = $web_config['php_ini_path_apache']; } else { @@ -135,7 +135,7 @@ class apache2_plugin { } } } - + // Resolve inconsistant path settings if($master_php_ini_path != '' && is_dir($master_php_ini_path) && is_file($master_php_ini_path.'/php.ini')) { $master_php_ini_path .= '/php.ini'; @@ -145,7 +145,7 @@ class apache2_plugin { if($master_php_ini_path != '' && substr($master_php_ini_path, -7) == 'php.ini' && is_file($master_php_ini_path)) { $php_ini_content .= $app->system->file_get_contents($master_php_ini_path)."\n"; } - + return $php_ini_content; } @@ -200,11 +200,11 @@ class apache2_plugin { $custom_php_ini_dir .= '_' . $web_folder; } if(!is_dir($web_config['website_basedir'].'/conf')) $app->system->mkdir($web_config['website_basedir'].'/conf'); - + if(!is_dir($custom_php_ini_dir)) $app->system->mkdir($custom_php_ini_dir); - + $php_ini_content = $this->get_master_php_ini_content($web_data); - + if(intval($web_data['directive_snippets_id']) > 0){ $snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($web_data['directive_snippets_id'])); if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){ @@ -223,7 +223,7 @@ class apache2_plugin { } } } - + $php_ini_content .= str_replace("\r", '', trim($web_data['custom_php_ini'])); $app->system->file_put_contents($custom_php_ini_dir.'/php.ini', $php_ini_content); $app->log('Info: rewrote custom php.ini for web ' . $web_data['domain_id'] . ' (' . $web_data['domain'] . ').', LOGLEVEL_DEBUG); @@ -329,8 +329,16 @@ class apache2_plugin { [ req_attributes ] ";//challengePassword = A challenge password"; + $ext_cnf = " + subjectAltName = @alt_names + + [alt_names] + DNS.1 = .$domain"; + $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); + $ssl_ext_file = $ssl_dir.'/v3.ext'; + $app->system->file_put_contents($ssl_ext_file, $ext_cnf); $rand_file = $rand_file; $key_file2 = $key_file2; @@ -356,10 +364,10 @@ class apache2_plugin { if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ? -extfile ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file, $ssl_ext_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); if(filesize($crt_file) == 0 || !file_exists($crt_file)) { - $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config " . $web_config['CA_path'] . "/openssl.cnf -passin pass:" . $web_config['CA_pass'] . " -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR); } }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ @@ -373,6 +381,7 @@ class apache2_plugin { $app->system->chmod($key_file, 0400); @$app->system->unlink($config_file); @$app->system->unlink($rand_file); + @$app->system->unlink($ssl_ext_file); $ssl_request = $app->system->file_get_contents($csr_file); $ssl_cert = $app->system->file_get_contents($crt_file); $ssl_key = $app->system->file_get_contents($key_file); @@ -383,15 +392,15 @@ class apache2_plugin { $app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key, $data['new']['domain']); $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } - + //* Check that the SSL key is not password protected if($data["new"]["ssl_action"] == 'save') { if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) { $data["new"]["ssl_action"] = ''; - + $app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN); $app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.'); - + /* Update the DB of the (local) Server */ $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); @@ -399,7 +408,7 @@ 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(); @@ -409,10 +418,10 @@ class apache2_plugin { $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']); @@ -570,7 +579,7 @@ class apache2_plugin { $web_folder = $data['new']['web_folder']; $log_folder .= '/' . $subdomain_host; unset($tmp); - + if(isset($data['old']['parent_domain_id'])) { // old one $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']); @@ -666,7 +675,7 @@ class apache2_plugin { $app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s')); $app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG); } - + //* Unmount the old log directory bfore we move the log dir $app->system->exec_safe('umount ?', $data['old']['document_root'].'/log'); @@ -702,9 +711,9 @@ class apache2_plugin { $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; $app->system->removeLine('/etc/fstab', $fstab_line); */ - + $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,nofail,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); @@ -712,9 +721,9 @@ class apache2_plugin { $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); } - + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); - + } //print_r($data); @@ -729,7 +738,7 @@ class apache2_plugin { if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); if(!is_dir($data['new']['document_root'].'/webdav')) $app->system->mkdirpath($data['new']['document_root'].'/webdav'); - + if(!is_dir($data['new']['document_root'].'/.ssh')) { $app->system->mkdirpath($data['new']['document_root'].'/.ssh'); $app->system->chmod($data['new']['document_root'].'/.ssh', 0700); @@ -1115,10 +1124,10 @@ class apache2_plugin { if(trim($data['new']['custom_php_ini']) != '') { $has_custom_php_ini = true; if(!is_dir($custom_php_ini_dir)) $app->system->mkdirpath($custom_php_ini_dir); - + $php_ini_content = $this->get_master_php_ini_content($data['new']); $php_ini_content .= str_replace("\r", '', trim($data['new']['custom_php_ini'])); - + if(intval($data['new']['directive_snippets_id']) > 0){ $snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($data['new']['directive_snippets_id'])); if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){ @@ -1137,7 +1146,7 @@ class apache2_plugin { } } } - + $app->system->file_put_contents($custom_php_ini_dir.'/php.ini', $php_ini_content); } else { $has_custom_php_ini = false; @@ -1179,7 +1188,7 @@ class apache2_plugin { '{DOCROOT_CLIENT}' => $vhost_data['web_document_root'] ); $vhost_data['apache_directives'] = strtr($vhost_data['apache_directives'], $trans); - + $app->uses('letsencrypt'); // Check if a SSL cert exists $tmp = $app->letsencrypt->get_website_certificate_paths($data); @@ -1190,7 +1199,7 @@ class apache2_plugin { $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; unset($tmp); - + $data['new']['ssl_domain'] = $domain; $vhost_data['ssl_domain'] = $domain; $vhost_data['ssl_crt_file'] = $crt_file; @@ -1222,7 +1231,7 @@ class apache2_plugin { $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ? AND `server_id` = ?", $data['new']['ssl'], 'n', $data['new']['domain'], $conf['server_id']); } } - + // Use separate bundle file only for apache versions < 2.4.8 if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; @@ -1425,7 +1434,7 @@ class apache2_plugin { } else { $tpl->setVar('alias', ''); } - + if (count($rewrite_wildcard_rules) > 0) $rewrite_rules = array_merge($rewrite_rules, $rewrite_wildcard_rules); // Append wildcard rules to the end of rules if(count($rewrite_rules) > 0 || $vhost_data['seo_redirect_enabled'] > 0 || count($alias_seo_redirects) > 0 || $data['new']['rewrite_to_https'] == 'y') { @@ -1568,7 +1577,7 @@ class apache2_plugin { $pool_name = 'web'.$data['new']['domain_id']; $socket_dir = $web_config['php_fpm_socket_dir']; if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; - + if($data['new']['php_fpm_use_socket'] == 'y'){ $use_tcp = 0; $use_socket = 1; @@ -2051,9 +2060,9 @@ class apache2_plugin { } else { $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } - + // remove letsencrypt if it exists (renew will always fail otherwise) - + $old_domain = $data['old']['domain']; if(substr($old_domain, 0, 2) === '*.') { // wildcard domain not yet supported by letsencrypt! @@ -2588,7 +2597,7 @@ class apache2_plugin { $app->system->chown($new_folder_path.'.htaccess', $website['system_user']); $app->system->chgrp($new_folder_path.'.htaccess', $website['system_group']); $app->log('Created/modified file '.$new_folder_path.'.htaccess', LOGLEVEL_DEBUG); - + //* Create empty .htpasswd file, if it does not exist if(!is_file($folder_path.'.htpasswd')) { $app->system->touch($new_folder_path.'.htpasswd'); @@ -2964,7 +2973,7 @@ class apache2_plugin { private function hhvm_update($data, $web_config) { global $app, $conf; - + if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) { $content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master'); } else { @@ -2975,7 +2984,7 @@ class apache2_plugin { } else { $monit_content = file_get_contents($conf['rootpath'] . '/conf/hhvm_monit.master'); } - + if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm' || ($data['new']['php'] == 'hhvm' && isset($data['old']['custom_php_ini']) && $data['new']['custom_php_ini'] != $data['old']['custom_php_ini'])) { // Custom php.ini settings @@ -3012,14 +3021,14 @@ class apache2_plugin { $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); $app->system->exec_safe('? restart >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); - + if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); file_put_contents('/etc/monit/conf.d/00-hhvm_' . $data['new']['system_user'], $monit_content); if(is_file('/etc/monit/conf.d/hhvm_' . $data['new']['system_user'])) unlink('/etc/monit/conf.d/hhvm_' . $data['new']['system_user']); exec('/etc/init.d/monit restart >/dev/null 2>&1'); } - + } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ $app->system->exec_safe('? stop >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['old']['system_user']); @@ -3027,7 +3036,7 @@ class apache2_plugin { unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } - + if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']) || is_file('/etc/monit/conf.d/00-hhvm_' . $data['old']['system_user'])){ if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user'])){ unlink('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']); @@ -3066,7 +3075,7 @@ class apache2_plugin { $app->uses("getconf"); $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); - + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if($data['new']['php'] != 'php-fpm'){ @@ -3089,7 +3098,7 @@ class apache2_plugin { $tpl = new tpl(); $tpl->newTemplate('php_fpm_pool.conf.master'); $tpl->setVar('apache_version', $app->system->getapacheversion()); - + if($data['new']['php_fpm_use_socket'] == 'y'){ $use_tcp = 0; $use_socket = 1; @@ -3142,7 +3151,7 @@ class apache2_plugin { // Custom php.ini settings $final_php_ini_settings = array(); $custom_php_ini_settings = trim($data['new']['custom_php_ini']); - + if(intval($data['new']['directive_snippets_id']) > 0){ $snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'apache' AND active = 'y' AND customer_viewable = 'y'", intval($data['new']['directive_snippets_id'])); if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){ @@ -3161,7 +3170,7 @@ class apache2_plugin { } } } - + $custom_session_save_path = false; if($custom_php_ini_settings != ''){ // Make sure we only have Unix linebreaks @@ -3249,10 +3258,10 @@ class apache2_plugin { //* Delete the PHP-FPM pool configuration file private function php_fpm_pool_delete ($data, $web_config) { global $app, $conf; - + $app->uses("getconf"); $web_config = $app->getconf->get_server_config($conf["server_id"], 'web'); - + $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){ diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index cd4b736fa4..c1262f69eb 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -166,8 +166,16 @@ class nginx_plugin { [ req_attributes ] ";//challengePassword = A challenge password"; + $ext_cnf = " + subjectAltName = @alt_names + + [alt_names] + DNS.1 = .$domain"; + $ssl_cnf_file = $ssl_dir.'/openssl.conf'; $app->system->file_put_contents($ssl_cnf_file, $ssl_cnf); + $ssl_ext_file = $ssl_dir.'/v3.ext'; + $app->system->file_put_contents($ssl_ext_file, $ext_cnf); $rand_file = $rand_file; $key_file2 = $key_file2; @@ -193,9 +201,9 @@ class nginx_plugin { if(file_exists($web_config['CA_path'].'/openssl.cnf')) { - $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file); + $app->system->exec_safe("openssl ca -batch -out ? -config ? -passin pass:? -in ? -extfile ?", $openssl_cmd_crt_file, $web_config['CA_path']."/openssl.cnf", $web_config['CA_pass'], $openssl_cmd_csr_file, $ssl_ext_file); $app->log("Creating CA-signed SSL Cert for: $domain", LOGLEVEL_DEBUG); - if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file", LOGLEVEL_ERROR); + if (filesize($crt_file)==0 || !file_exists($crt_file)) $app->log("CA-Certificate signing failed. openssl ca -out $openssl_cmd_crt_file -config ".$web_config['CA_path']."/openssl.cnf -passin pass:".$web_config['CA_pass']." -in $openssl_cmd_csr_file -extfile $ssl_ext_file", LOGLEVEL_ERROR); }; if (@filesize($crt_file)==0 || !file_exists($crt_file)){ $app->system->exec_safe("openssl req -x509 -passin pass:? -passout pass:? -key ? -in ? -out ? -days ? -config ?", $ssl_password, $ssl_password, $openssl_cmd_key_file2, $openssl_cmd_csr_file, $openssl_cmd_crt_file, $ssl_days, $config_file); @@ -208,6 +216,7 @@ class nginx_plugin { $app->system->chmod($key_file, 0400); @$app->system->unlink($config_file); @$app->system->unlink($rand_file); + @$app->system->unlink($ssl_ext_file); $ssl_request = $app->system->file_get_contents($csr_file); $ssl_cert = $app->system->file_get_contents($crt_file); $ssl_key = $app->system->file_get_contents($key_file); @@ -218,15 +227,15 @@ class nginx_plugin { $app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key, $data['new']['domain']); $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); } - + //* Check that the SSL key is not password protected if($data["new"]["ssl_action"] == 'save') { if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) { $data["new"]["ssl_action"] = ''; - + $app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN); $app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.'); - + /* Update the DB of the (local) Server */ $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']); @@ -234,7 +243,7 @@ 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(); @@ -244,10 +253,10 @@ class nginx_plugin { $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']); @@ -400,7 +409,7 @@ class nginx_plugin { if(substr($data['new']['web_folder'],-1) == '/') $data['new']['web_folder'] = substr($data['new']['web_folder'],0,-1); } $web_folder .= '/'.$data['new']['web_folder']; - + if($data['old']['web_folder'] != ''){ if(substr($data['old']['web_folder'],0,1) == '/') $data['old']['web_folder'] = substr($data['old']['web_folder'],1); if(substr($data['old']['web_folder'],-1) == '/') $data['old']['web_folder'] = substr($data['old']['web_folder'],0,-1); @@ -415,7 +424,7 @@ class nginx_plugin { $web_folder = $data['new']['web_folder']; $log_folder .= '/' . $subdomain_host; unset($tmp); - + if(isset($data['old']['parent_domain_id'])) { // old one $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']); @@ -508,7 +517,7 @@ class nginx_plugin { $app->system->rename($data['new']['document_root'], $data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s')); $app->log('Renaming existing directory in new docroot location. mv '.$data['new']['document_root'].' '.$data['new']['document_root'].'_bak_'.date('Y_m_d_H_i_s'), LOGLEVEL_DEBUG); } - + //* Unmount the old log directory bfore we move the log dir $app->system->exec_safe('umount ?', $old_dir.'/log'); @@ -544,9 +553,9 @@ class nginx_plugin { $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait'; $app->system->removeLine('/etc/fstab', $fstab_line); */ - + $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,nofail,_netdev 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line_old, $fstab_line, 0, 1); @@ -554,7 +563,7 @@ class nginx_plugin { $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); } - + $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); } @@ -570,14 +579,14 @@ class nginx_plugin { if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin'); if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp'); - + if(!is_dir($data['new']['document_root'].'/.ssh')) { $app->system->mkdirpath($data['new']['document_root'].'/.ssh'); $app->system->chmod($data['new']['document_root'].'/.ssh', 0700); $app->system->chown($data['new']['document_root'].'/.ssh', $username); $app->system->chgrp($data['new']['document_root'].'/.ssh', $groupname); } - + //* Create the new private directory if(!is_dir($data['new']['document_root'].'/private')) { $app->system->mkdirpath($data['new']['document_root'].'/private'); @@ -691,7 +700,7 @@ class nginx_plugin { } $app->system->exec_safe('chmod -R a+r ?', $error_page_path); } - + //* Copy the web skeleton files only when there is no index.ph or index.html file yet if(!file_exists($data['new']['document_root'].'/'.$web_folder.'/index.html') && !file_exists($data['new']['document_root'].'/'.$web_folder.'/index.php')) { if (file_exists($conf['rootpath'] . '/conf-custom/index/standard_index.html_'.substr($conf['language'], 0, 2))) { @@ -853,7 +862,7 @@ class nginx_plugin { //$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname); $app->system->chown($data['new']['document_root'].'/private', $username); $app->system->chgrp($data['new']['document_root'].'/private', $groupname); - + if($web_folder != 'web'){ $app->system->chown($data['new']['document_root'].'/'.$web_folder, $username); $app->system->chgrp($data['new']['document_root'].'/'.$web_folder, $groupname); @@ -900,7 +909,7 @@ class nginx_plugin { } //$app->system->chown($data['new']['document_root'].'/webdav',$username); //$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname); - + if($web_folder != 'web'){ $app->system->chown($data['new']['document_root'].'/'.$web_folder, $username); $app->system->chgrp($data['new']['document_root'].'/'.$web_folder, $groupname); @@ -941,7 +950,7 @@ class nginx_plugin { $app->system->chown('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); $app->system->chgrp('/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log', 'root'); } - + //* Create the vhost config file $app->load('tpl'); @@ -1185,31 +1194,31 @@ class nginx_plugin { $nginx_directives = $data['new']['nginx_directives']; // $vhost_data['enable_pagespeed'] = false; } - + // folder_directive_snippets if(trim($data['new']['folder_directive_snippets']) != ''){ $data['new']['folder_directive_snippets'] = trim($data['new']['folder_directive_snippets']); $data['new']['folder_directive_snippets'] = str_replace("\r\n", "\n", $data['new']['folder_directive_snippets']); $data['new']['folder_directive_snippets'] = str_replace("\r", "\n", $data['new']['folder_directive_snippets']); $folder_directive_snippets_lines = explode("\n", $data['new']['folder_directive_snippets']); - + if(is_array($folder_directive_snippets_lines) && !empty($folder_directive_snippets_lines)){ foreach($folder_directive_snippets_lines as $folder_directive_snippets_line){ list($folder_directive_snippets_folder, $folder_directive_snippets_snippets_id) = explode(':', $folder_directive_snippets_line); - + $folder_directive_snippets_folder = trim($folder_directive_snippets_folder); $folder_directive_snippets_snippets_id = trim($folder_directive_snippets_snippets_id); - + if($folder_directive_snippets_folder != '' && intval($folder_directive_snippets_snippets_id) > 0 && preg_match('@^((?!(.*\.\.)|(.*\./)|(.*//))[^/][\w/_\.\-]{1,100})?$@', $folder_directive_snippets_folder)){ if(substr($folder_directive_snippets_folder, -1) != '/') $folder_directive_snippets_folder .= '/'; if(substr($folder_directive_snippets_folder, 0, 1) == '/') $folder_directive_snippets_folder = substr($folder_directive_snippets_folder, 1); - + $master_snippet = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ? AND type = 'nginx' AND active = 'y' AND customer_viewable = 'y'", intval($folder_directive_snippets_snippets_id)); if(isset($master_snippet['snippet'])){ $folder_directive_snippets_trans = array('{FOLDER}' => $folder_directive_snippets_folder, '{FOLDERMD5}' => md5($folder_directive_snippets_folder)); $master_snippet['snippet'] = strtr($master_snippet['snippet'], $folder_directive_snippets_trans); $nginx_directives .= "\n\n".$master_snippet['snippet']; - + // create folder it it does not exist if(!is_dir($data['new']['document_root'].'/' . $web_folder.$folder_directive_snippets_folder)){ $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder.$folder_directive_snippets_folder); @@ -1221,7 +1230,7 @@ class nginx_plugin { } } } - + // use vLib for template logic if(trim($nginx_directives) != '') { $nginx_directives_new = ''; @@ -1238,7 +1247,7 @@ class nginx_plugin { if($nginx_directives_new != '') $nginx_directives = $nginx_directives_new; unset($nginx_directives_new); } - + // Make sure we only have Unix linebreaks $nginx_directives = str_replace("\r\n", "\n", $nginx_directives); $nginx_directives = str_replace("\r", "\n", $nginx_directives); @@ -1507,7 +1516,7 @@ class nginx_plugin { 'use_proxy' => ($data['new']['redirect_type'] == 'proxy' ? true:false)); } } - + // http2 or spdy? $vhost_data['enable_http2'] = 'n'; if($vhost_data['enable_spdy'] == 'y'){ @@ -1532,7 +1541,7 @@ class nginx_plugin { }else{ $vhost_data['use_proxy_protocol'] = "n"; } - + // set logging variable $vhost_data['logging'] = $web_config['logging']; @@ -1811,7 +1820,7 @@ class nginx_plugin { } 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']."/" . $stats_web_folder . "/stats/.htpasswd_stats"); @@ -2072,9 +2081,9 @@ class nginx_plugin { } else { $app->system->exec_safe('umount ? 2>/dev/null', $data['old']['document_root'].'/'.$log_folder); } - + // remove letsencrypt if it exists (renew will always fail otherwise) - + $old_domain = $data['old']['domain']; if(substr($old_domain, 0, 2) === '*.') { // wildcard domain not yet supported by letsencrypt! @@ -2572,7 +2581,7 @@ class nginx_plugin { private function hhvm_update($data, $web_config) { global $app, $conf; - + if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) { $content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master'); } else { @@ -2583,7 +2592,7 @@ class nginx_plugin { } else { $monit_content = file_get_contents($conf['rootpath'] . '/conf/hhvm_monit.master'); } - + if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm' || ($data['new']['php'] == 'hhvm' && isset($data['old']['custom_php_ini']) && isset($data['new']['custom_php_ini']) && $data['new']['custom_php_ini'] != $data['old']['custom_php_ini'])) { // Custom php.ini settings @@ -2620,14 +2629,14 @@ class nginx_plugin { $app->system->exec_safe('chmod +x ? >/dev/null 2>&1', '/etc/init.d/hhvm_' . $data['new']['system_user']); $app->system->exec_safe('/usr/sbin/update-rc.d ? defaults >/dev/null 2>&1', 'hhvm_' . $data['new']['system_user']); $app->system->exec_safe('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' restart >/dev/null 2>&1'); - + if(is_dir('/etc/monit/conf.d')){ $monit_content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $monit_content); file_put_contents('/etc/monit/conf.d/00-hhvm_' . $data['new']['system_user'], $monit_content); if(is_file('/etc/monit/conf.d/hhvm_' . $data['new']['system_user'])) unlink('/etc/monit/conf.d/hhvm_' . $data['new']['system_user']); exec('/etc/init.d/monit restart >/dev/null 2>&1'); } - + } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') { if($data['old']['system_user'] != ''){ exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1'); @@ -2635,7 +2644,7 @@ class nginx_plugin { unlink('/etc/init.d/hhvm_' . $data['old']['system_user']); if(is_file('/etc/hhvm/'.$data['old']['system_user'].'.ini')) unlink('/etc/hhvm/'.$data['old']['system_user'].'.ini'); } - + if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']) || is_file('/etc/monit/conf.d/00-hhvm_' . $data['old']['system_user'])){ if(is_file('/etc/monit/conf.d/hhvm_' . $data['old']['system_user'])){ unlink('/etc/monit/conf.d/hhvm_' . $data['old']['system_user']); @@ -2653,7 +2662,7 @@ class nginx_plugin { global $app, $conf; $pool_dir = trim($pool_dir); $rh_releasefiles = array('/etc/centos-release', '/etc/redhat-release'); - + // HHVM => PHP-FPM-Fallback if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){ if(trim($data['new']['fastcgi_php_version']) != ''){ @@ -2714,7 +2723,7 @@ class nginx_plugin { $tpl->setVar('fpm_pool', $pool_name); $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1); $tpl->setVar('fpm_user', $data['new']['system_user']); - + //Red Hat workaround for group ownership of socket files foreach($rh_releasefiles as $rh_file) { if(file_exists($rh_file) && (filesize($rh_file) > 0)) { @@ -2731,7 +2740,7 @@ class nginx_plugin { } break; } - + $tpl->setVar('fpm_listen_user', $data['new']['system_user']); $tpl->setVar('fpm_domain', $data['new']['domain']); $tpl->setVar('pm', $data['new']['pm']); @@ -2764,7 +2773,7 @@ class nginx_plugin { // Custom php.ini settings $final_php_ini_settings = array(); $custom_php_ini_settings = trim($data['new']['custom_php_ini']); - + 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'", intval($data['new']['directive_snippets_id'])); if(isset($snippet['required_php_snippets']) && trim($snippet['required_php_snippets']) != ''){ @@ -2783,7 +2792,7 @@ class nginx_plugin { } } } - + $custom_session_save_path = false; if($custom_php_ini_settings != ''){ // Make sure we only have Unix linebreaks -- GitLab From c7053681c50cbd636e26fe6d7148f0eeceffeca4 Mon Sep 17 00:00:00 2001 From: Brian <brano@mxhosting.eu> Date: Thu, 2 Apr 2020 13:05:42 +0200 Subject: [PATCH 256/571] Update php_fpm_pool.conf.master - removed php_admin_value[cgi.fix_pathinfo] = 0 which cause in fpm chroot errors: Access to the script has been denied (see security.limit_extensions). This settings is obsolete for newer PHP version. More info: https://www.howtoforge.com/community/threads/php-fpm-chroot-with-cgi-fix_pathinfo-0-causes-access-to-the-script-has-been-denied.84071/ --- server/conf/php_fpm_pool.conf.master | 1 - 1 file changed, 1 deletion(-) diff --git a/server/conf/php_fpm_pool.conf.master b/server/conf/php_fpm_pool.conf.master index fb5c4b44d9..88b9e2b639 100644 --- a/server/conf/php_fpm_pool.conf.master +++ b/server/conf/php_fpm_pool.conf.master @@ -30,7 +30,6 @@ chdir = / <tmpl_if name='php_fpm_chroot'> chroot = <tmpl_var name='php_fpm_chroot_dir'> php_admin_value[doc_root] = <tmpl_var name='php_fpm_chroot_web_folder'> -php_admin_value[cgi.fix_pathinfo] = 0 </tmpl_if> env[HOSTNAME] = $HOSTNAME -- GitLab From d617e5cc75661c645a123b5415dbdc4ba1052874 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Tue, 7 Apr 2020 07:29:17 +0200 Subject: [PATCH 257/571] Don't use short array syntax --- interface/web/dns/dns_spf_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php index 1c632d2d12..20626ba159 100644 --- a/interface/web/dns/dns_spf_edit.php +++ b/interface/web/dns/dns_spf_edit.php @@ -181,7 +181,7 @@ class page_action extends tform_actions { } // Create spf-record - $spf_record = []; + $spf_record = array(); if (!empty($this->dataRecord['spf_mx'])) { $spf_record[] = 'mx'; -- GitLab From c9145d36689d4d79203819835d8630bd89560c00 Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Tue, 7 Apr 2020 13:06:23 +0200 Subject: [PATCH 258/571] Reconfigure incron if the PHP version changes --- .../z_php_fpm_incron_reload_plugin.inc.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php index f88cbe9c0b..5a643a660a 100644 --- a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php +++ b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php @@ -45,8 +45,8 @@ class z_php_fpm_incron_reload_plugin { function incronUpdate($eventName, $data) { global $app; - if ($data['new']['document_root'] === $data['old']['document_root']) { - $app->log('Document root unchanged. Not updating incron configuration.', LOGLEVEL_DEBUG); + if ($this->documentRootUnchanged($data) && $this->phpVersionUnchanged($data)) { + $app->log('Document root and PHP version unchanged. Not updating incron configuration.', LOGLEVEL_DEBUG); return; } @@ -59,6 +59,16 @@ class z_php_fpm_incron_reload_plugin { $this->teardown($data['old']); } + private function documentRootUnchanged($data) + { + return $data['new']['document_root'] === $data['old']['document_root']; + } + + private function phpVersionUnchanged($data) + { + return $data['new']['fastcgi_php_version'] === $data['old']['fastcgi_php_version']; + } + private function setup($data) { $triggerFile = $this->getTriggerFilePath($data['document_root']); -- GitLab From b9cd2f66469144c7581a79e400c6c07d3d5c900c Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Thu, 9 Apr 2020 20:00:37 +0200 Subject: [PATCH 259/571] Allow updating sys_user.modules through remoting --- interface/lib/classes/remoting_lib.inc.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index 62ccd506c8..6f310284dc 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -309,6 +309,7 @@ class remoting_lib extends tform_base { $username = $params["username"]; $clear_password = $params["password"]; $language = $params['language']; + $modules = $params['modules']; $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)); @@ -327,8 +328,14 @@ class remoting_lib extends tform_base { $params[] = $language; } + $modulesstring = ''; + if (!empty($modules)) { + $modulesstring = ', modules = ?'; + $params[] = $modules; + } + $params[] = $client_id; - $sql = "UPDATE sys_user set username = ? $pwstring $langstring WHERE client_id = ?"; + $sql = "UPDATE sys_user set username = ? $pwstring $langstring $modulesstring WHERE client_id = ?"; $app->db->query($sql, true, $params); } -- GitLab From 4e7be391c8db3b1489565163e6c38d2c3b0dc01d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 5 Feb 2020 10:58:16 +0100 Subject: [PATCH 260/571] Remove duplicate example, see remoting_client/examples/sites_database_add.php --- .../examples/soap-database-add.php | 47 ------------------- 1 file changed, 47 deletions(-) delete mode 100644 remoting_client/examples/soap-database-add.php diff --git a/remoting_client/examples/soap-database-add.php b/remoting_client/examples/soap-database-add.php deleted file mode 100644 index 5ff7e4b79d..0000000000 --- a/remoting_client/examples/soap-database-add.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -$username = 'admin'; -$password = 'admin'; - -$soap_location = 'http://localhost:8080/remote/index.php'; -$soap_uri = 'http://localhost:8080/remote/'; - -$client = new SoapClient(null, array('location' => $soap_location, - 'uri' => $soap_uri)); -try { - if($session_id = $client->login($username, $password)) { - echo "Logged:".$session_id."<br />\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.<br />\n"; - } - - -} catch (SoapFault $e) { - die('Error: '.$e->getMessage()); -} - -?> -- GitLab From 3639beb862626007b23faf58f83ae4ad82979eb4 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 7 Feb 2020 21:31:51 +0100 Subject: [PATCH 261/571] Add a space for log readablilty In the example belog failed and PHP were joined without a space ... "Database connection failedPHP Warning: mysqli_real_connect()" --- server/lib/classes/db_mysql.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 9c7269e568..4bbc84e3f9 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -559,7 +559,7 @@ class db } 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; + echo $sErrormsg . ' ' . $sAddMsg; } } -- GitLab From f36aaf2b8e715efccb621e7dd2bc05b5f03b914a Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 28 Feb 2020 22:46:06 +0100 Subject: [PATCH 262/571] typo --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8eac80ebd..b515c5348d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ The master branch is used for code (mostly new features) that shall go into the * Magic quotes is gone, get used to it now. config = magic_quotes_gpc() Everything must be quoted * Don't use ereg, split and other old function -> gone in PHP 5.4 * Don't use features that are not supported in PHP 5.3, for compatibility with LTS OS releases, ISPConfig must support PHP 5.3+ -* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always usw <?php +* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always use <?php * Don't use namespaces * Column names in database tables and database table names are in lowercase * Classes for the interface are located in interface/lib/classes/ and loaded with $app->uses() or $app->load() functions. -- GitLab From dc97fec3865f8a4b70ff2d38420e77dbd12e2c4e Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 12 Mar 2020 16:26:55 +0100 Subject: [PATCH 263/571] Rename command to cron_line, as it's not a command --- server/plugins-available/cron_plugin.inc.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index af4e24d974..e6c197ea20 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -219,9 +219,9 @@ class cron_plugin { if($cron_jobs && count($cron_jobs) > 0) { foreach($cron_jobs as $job) { if($job['run_month'] == '@reboot') { - $command = "@reboot"; + $cron_line = "@reboot"; } else { - $command = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']); + $cron_line = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']); } $log_target = ">/dev/null 2>&1"; @@ -235,9 +235,9 @@ class cron_plugin { $log_wget_target = $log_root . '/cron_wget.log'; } - $command .= "\t{$this->parent_domain['system_user']}"; //* running as user + $cron_line .= "\t{$this->parent_domain['system_user']}"; //* running as user if($job['type'] == 'url') { - $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; + $cron_line .= "\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); @@ -257,16 +257,16 @@ class cron_plugin { $web_root .= '/web'; $job['command'] = str_replace('[web_root]', $web_root, $job['command']); - $command .= "\t"; - //if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $command .= $this->parent_domain['document_root'].'/'; - $command .= $job['command'] . " " . $log_target; + $cron_line .= "\t"; + //if($job['type'] != 'chrooted' && substr($job['command'], 0, 1) != "/") $cron_line .= $this->parent_domain['document_root'].'/'; + $cron_line .= $job['command'] . " " . $log_target; } if($job['type'] == 'chrooted') { - $chr_cron_content .= $command . " #{$job['domain']}\n"; + $chr_cron_content .= $cron_line . " #{$job['domain']}\n"; $chr_cmd_count++; } else { - $cron_content .= $command . " #{$job['domain']}\n"; + $cron_content .= $cron_line . " #{$job['domain']}\n"; $cmd_count++; } } -- GitLab From 5d8daf272fea34554a9cac40dfa69b7d6aadd690 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sun, 26 Apr 2020 16:29:25 +0200 Subject: [PATCH 264/571] Document _ispconfig_pw_crypted parameter --- remoting_client/API-docs/client_update.html | 1 + 1 file changed, 1 insertion(+) diff --git a/remoting_client/API-docs/client_update.html b/remoting_client/API-docs/client_update.html index 80a689b596..9cbdcd2f33 100644 --- a/remoting_client/API-docs/client_update.html +++ b/remoting_client/API-docs/client_update.html @@ -74,6 +74,7 @@ <p class="margin"> parent_client_id (<span class="paratype">int(11)</span>)</p> <p class="margin"> username (<span class="paratype">varchar(64)</span>)</p> <p class="margin"> password (<span class="paratype">varchar(64)</span>)</p> +<p class="margin"> _ispconfig_pw_crypted (<span class="paratype">int(11)</span>) Set to 1 to indicate that the password is already crypted.</p> <p class="margin"> language (<span class="paratype">char(2)</span>)</p> <p class="margin"> usertheme (<span class="paratype">varchar(32)</span>)</p> <p class="margin"> template_master (<span class="paratype">int(11)</span>)</p> -- GitLab From 211b496acbba8bf3e7d2113c9dc5ce23eb9de5e1 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 28 Apr 2020 09:10:30 +0200 Subject: [PATCH 265/571] Add API docs for mail_relay_recipient functions, #3200 --- .../API-docs/mail_relay_recipient_add.html | 31 +++++++++++++++++++ .../API-docs/mail_relay_recipient_delete.html | 29 +++++++++++++++++ .../API-docs/mail_relay_recipient_get.html | 29 +++++++++++++++++ .../API-docs/mail_relay_recipient_update.html | 31 +++++++++++++++++++ remoting_client/API-docs/navigation.html | 4 +++ 5 files changed, 124 insertions(+) create mode 100644 remoting_client/API-docs/mail_relay_recipient_add.html create mode 100644 remoting_client/API-docs/mail_relay_recipient_delete.html create mode 100644 remoting_client/API-docs/mail_relay_recipient_get.html create mode 100644 remoting_client/API-docs/mail_relay_recipient_update.html diff --git a/remoting_client/API-docs/mail_relay_recipient_add.html b/remoting_client/API-docs/mail_relay_recipient_add.html new file mode 100644 index 0000000000..5e4c2cdfd5 --- /dev/null +++ b/remoting_client/API-docs/mail_relay_recipient_add.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>mail_relay_recipient_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Adds a new relay recipient.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> +<p class="margin"> source Recipient address (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns the ID of the newly added recordd</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/mail_relay_recipient_delete.html b/remoting_client/API-docs/mail_relay_recipient_delete.html new file mode 100644 index 0000000000..ea765a9e12 --- /dev/null +++ b/remoting_client/API-docs/mail_relay_recipient_delete.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>mail_relay_recipient_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Deletes a relay recipient.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin">None</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns the number of deleted records.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/mail_relay_recipient_get.html b/remoting_client/API-docs/mail_relay_recipient_get.html new file mode 100644 index 0000000000..a1540e24d9 --- /dev/null +++ b/remoting_client/API-docs/mail_relay_recipient_get.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>mail_relay_recipient_get(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Retrieves information about a relay recipient.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> None</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns all fields and values of the chosen relay recipient.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/mail_relay_recipient_update.html b/remoting_client/API-docs/mail_relay_recipient_update.html new file mode 100644 index 0000000000..417ef40eeb --- /dev/null +++ b/remoting_client/API-docs/mail_relay_recipient_update.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>mail_relay_recipient_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1> +<br> +<b>Description: </b> +<p class="margin"> Updates a relay recipient.</p><br> +<b>Input Variables: </b> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span></p> +<b>Parameters (in <span class="var">$params</span>): </b> +<p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> +<p class="margin"> source Recipient address (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<b>Output: </b> +<p class="margin"> Returns the number of affected rows.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html index d8c296801b..02b5876b3d 100644 --- a/remoting_client/API-docs/navigation.html +++ b/remoting_client/API-docs/navigation.html @@ -161,6 +161,10 @@ <p><a href="mail_transport_delete.html" target="content">mail_transport_delete</a></p> <p><a href="mail_transport_get.html" target="content">mail_transport_get</a></p> <p><a href="mail_transport_update.html" target="content">mail_transport_update</a></p> +<p><a href="mail_relay_recipient_add.html" target="content">mail_relay_recipient_add</a></p> +<p><a href="mail_relay_recipient_delete.html" target="content">mail_relay_recipient_delete</a></p> +<p><a href="mail_relay_recipient_get.html" target="content">mail_relay_recipient_get</a></p> +<p><a href="mail_relay_recipient_update.html" target="content">mail_relay_recipient_update</a></p> <p><a href="mail_user_add.html" target="content">mail_user_add</a></p> <p><a href="mail_user_delete.html" target="content">mail_user_delete</a></p> <p><a href="mail_user_get.html" target="content">mail_user_get</a></p> -- GitLab From 39710604eeede260eba7862727c60ceca183a3d8 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 14 Aug 2019 23:22:00 +0200 Subject: [PATCH 266/571] Example csv import email script. --- .../examples/ispc-import-csv-email.php | 305 ++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 remoting_client/examples/ispc-import-csv-email.php diff --git a/remoting_client/examples/ispc-import-csv-email.php b/remoting_client/examples/ispc-import-csv-email.php new file mode 100644 index 0000000000..407ba1635c --- /dev/null +++ b/remoting_client/examples/ispc-import-csv-email.php @@ -0,0 +1,305 @@ +#!/usr/bin/php +<?php +# +# ispc-import-csv-email.php: import email accounts from csv into ispconfig +# + +# ISPConfig remote api params +$remote_user = 'importer'; +$remote_pass = 'apipassword'; +$remote_url = 'https://yourserver.com:8080/remote/json.php'; + +# CSV file +$csv_file="/home/migrations/test.csv"; + + +# csv file format (first line is header names, column order does not matter): +# +# "email","password","quota","name","cc","bcc","move_junk","autoresponder","autoresponder_text","virus_lover","spam_lover" +# "api_standard@apitest.com","insecure","150","API User Insert: Standard Mailbox","","","yes","no","this is vacation text, although vacation is not enabled","N","N" +# "api_no_spambox@apitest.com","insecure","150","API User Insert: Mailbox with move_junk off","","","no","no","this is vacation text, although vacation is not enabled","N","N" +# "api_vacation@apitest.com","insecure","150","API User Insert: Mailbox with vacation","","","yes","yes","this is vacation text, with vacation enabled","N","N" +# "api_forward@apitest.com","insecure","150","API User Insert: Mail Forward","your-test-addr@test.com","","no","no","this is vacation text, although vacation is not enabled","N","N" +# "api_both1@apitest.com","insecure","150","API User Insert: Mailbox with forward via cc","your-test-addr@test.com","","yes","no","this is vacation text, although vacation is not enabled","N","N" +# "api_both2@apitest.com","insecure","150","API User Insert: Mailbox with forward via bcc","","your-test-addr@test.com","yes","no","this is vacation text, although vacation is not enabled","N","N" +# "api_virus_lover@apitest.com","insecure","150","API User Insert: Mailbox with virus_lover","","","yes","no","","Y","N" +# "api_spam_lover@apitest.com","insecure","150","API User Insert: Mailbox with spam_lover","","","yes","no","","N","Y" +# "api_both_lover@apitest.com","insecure","150","API User Insert: Mailbox with virus_lover and spam_lover","","","yes","no","","Y","Y" + + +/** + * Call REST endpoint. + */ +function restCall( $method, $data ) { + global $remote_url; + + if(!is_array($data)) return false; + $json = json_encode($data); + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_POST, 1); + + if($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $json); + + // needed for self-signed cert + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + // end of needed for self-signed cert + + curl_setopt($curl, CURLOPT_URL, $remote_url . '?' . $method); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + + $result = curl_exec($curl); + curl_close($curl); + + return $result; +} + +$session_id = ''; + +/** + * Logout of active session and die with message. + */ +function session_die( $msg ) { + global $session_id; + + if ( isset( $session_id ) && $session_id ) { + $result = restCall( 'logout', [ 'session_id' => $session_id ] ); + $result || die( "$msg\nAdditionally, could not get logout result, session id $session_id may now be abandoned.\n" ); + } + + die( "$msg\n" ); +} + +/** + * Make api call, checking for errors and return 'response' from the decoded data. Opens session if required. + */ +function apiCall( ...$args ) { + global $remote_user, $remote_pass, $session_id; + + // login to remote api and obtain session id if needed + if ( ! ( isset( $session_id ) && $session_id ) ) { + $result = restCall( 'login', [ 'username' => $remote_user, 'password' => $remote_pass, 'client_login' => false, ] ); + + if ( $result ) { + $result = json_decode( $result, true ); + if ( ! $result ) { + die( "Error: unable to login to remote api (json_decode failed)\n" ); + } + + if ( isset( $result['response'] ) ) { + $session_id = $result['response']; + } else { + die( "Error: failed to obtain session id from remote api login\n" ); + } + } + } + + $rest_args = func_get_args(); + $method = array_shift( $rest_args ); + + $result = restCall( $method, array_merge( [ 'session_id' => $session_id, ], ...$rest_args ) ); + + if ( $result ) $data = json_decode( $result, true ); + else session_die( "Could not get $method result" ); + + if ( isset( $data['code'] ) && 'ok' != $data['code'] ) { + $msg = "$method returned " . $data['code'] + . ( isset( $data['message'] ) ? ": " . $data['message'] . "\n" : "\n" ); + session_die( $msg ); + } + + return ( isset( $data['response'] ) ? $data['response'] : $data ); +} + +if ( ! file_exists( "$csv_file" ) ) { + die( "CSV file ($csv_file) not found.\n" ); +} + +// get all mail policies +$mail_policies = apiCall( 'mail_policy_get', [ 'primary_id' => [] ] ); +if ( ! $mail_policies ) { + session_die( "Error: could not look up mail policies\n" ); +} + +// get all spamfilter_user settings +$mail_spamfilter_users = apiCall( 'mail_spamfilter_user_get', [ 'primary_id' => [] ] ); +if ( ! $mail_spamfilter_users ) { + session_die( "Error: could not look up mail spamfilter users\n" ); +} + +$mail_domains = []; + +// Read csv file, map rows and loop through them +$rows = array_map( 'str_getcsv', file( $csv_file ) ); +$header = array_shift( $rows ); +$email_idx = array_search( 'email', $header ); +if ( $email_idx === FALSE ) { + session_die( "Error in csv file: 'email' field not found.\n" ); +} +$csv = []; +foreach( $rows as $row ) { + $email = $row[$email_idx]; + $domain = substr( $email, strpos( $email, '@' ) + 1 ); + + if ( is_array( $row ) && count( $header ) == count( $row ) ) { + $csv[$email] = array_combine( $header, $row ); + } else { + print "Error in csv file: problem parsing email '$email'\n"; + continue; + } + + // look up mail_domain record for this domain + if ( ! isset( $mail_domains[$domain] ) ) { + $data = apiCall( 'mail_domain_get_by_domain', [ 'domain' => $domain ] ); + + if ( is_array( $data ) && isset( $data[0] ) ) { + + // unset these (large and don't need them) + unset( $data[0]['dkim'] ); + unset( $data[0]['dkim_selector'] ); + unset( $data[0]['dkim_public'] ); + unset( $data[0]['dkim_private'] ); + + $mail_domains[$domain] = $data[0]; + + foreach ( $mail_spamfilter_users as $msu ) { + if ( $msu['email'] == "@$domain" && $msu['server_id'] == $mail_domains[$domain]['server_id'] ) { + $mail_domains[$domain]['spamfilter_policy_id'] = $msu['policy_id']; + } + } + } else { + $mail_domains[$domain] = [ 'domain_id' => -1, 'domain' => $domain, ]; + print( "Error: mail_domain $domain does not exist, you must create it first.\n" ); + } + } +} + +// dump manually created account to compare values +//$data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => 'manual@apitest.com' ] ] ); +//var_dump( $data, true ); + +foreach ( $csv as $record ) { + $email = $record['email']; + $addr = substr( $email, 0, strpos( $email, '@' ) ); + $domain = substr( $email, strpos( $email, '@' ) + 1 ); + + // ensure we have mail_domain info + if ( ! isset( $mail_domains[$domain] ) || -1 == $mail_domains[$domain]['domain_id'] ) { + print "Config for domain $domain not available, cannot add email $email.\n"; + continue; + } + + // skip if email already exists + $data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => $email ] ] ); + if ( is_array( $data ) && isset( $data[0] ) && isset( $data[0]['mailuser_id'] ) ) { + print "Email $email already exists, skipping.\n"; + continue; + } + + // get client_id for this sys_userid + if ( isset( $mail_domains[$domain]['client_id'] ) ) { + $client_id = $mail_domains[$domain]['client_id']; + } else { + $client_id = apiCall( 'client_get_id', [ 'sys_userid' => $mail_domains[$domain]['sys_userid'] ] ); + if ( ! $client_id ) { + print "Error: unable to determine client_id for $domain (sys_userid is " . $mail_domains[$domain]['sys_userid'] . "),\n"; + print "cannot create mailbox for Email $email\n"; + continue; + } + $mail_domains[$domain]['client_id'] = $client_id; + } + + // mail_user_add parameters for this email + $params = [ 'params' => [ + 'server_id' => $mail_domains[$domain]['server_id'], + 'email' => $email, + 'login' => $email, + 'password' => $record['password'], + 'name' => $record['name'], + 'uid' => 5000, + 'gid' => 5000, + 'maildir' => "/var/vmail/$domain/$addr", + 'quota' => $record['quota'] * 1024 * 1024, + 'cc' => implode( ',', array_filter( [ $record['cc'], $record['bcc'] ] ) ), + 'homedir' => "/var/vmail/", + 'autoresponder' => ( preg_match( '/^y/i', $record['autoresponder'] ) ? 'y' : 'n' ), + 'autoresponder_start_date' => date( 'Y-m-d H:i:s' ), + 'autoresponder_end_date' => date( '2024-m-d H:i:s' ), + 'autoresponder_text' => $record['autoresponder_text'], + 'move_junk' => ( preg_match( '/^y/i', $record['move_junk'] ) ? 'y' : 'n' ), + 'custom_mailfilter' => "", + 'postfix' => 'y', + 'access' => 'y', + // 'disableimap' => 'n', + // 'disablepop3' => 'n', + // 'disabledeliver' => 'n', + // 'disablesmtp' => 'n', + ], + ]; + + // add mail user + $data = apiCall( 'mail_user_add', [ 'client_id' => $client_id ], $params ); + + if ( ! $data ) { + print "mail_user_add may have a problem inserting $email\n"; + continue; + } + + //$data = apiCall( 'mail_user_get', [ 'primary_id' => [ 'email' => $email ] ] ); + //var_dump( $data, true ); + + // determine mail policy + $spam_lover = ( preg_match( '/^y/i', $record['move_junk'] ) ? $record['spam_lover'] : 'N' ); + $virus_lover = $record['virus_lover']; + $spamfilter_policy_id = null; + + // check domain's policy settings for bypass_spam_checks == 'N' and matching spam_lover/virus_lover, + // if a match, we're done + if ( isset( $mail_domains[$domain]['spamfilter_policy_id'] ) ) { + foreach ( $mail_policies as $policy ) { + if ( $policy['id'] == $mail_domains[$domain]['spamfilter_policy_id'] ) { + if ( 'N' == $policy['bypass_spam_checks'] && $policy['spam_lover'] == $spam_lover && $policy['virus_lover'] == $virus_lover ) { + $spamfilter_policy_id = $policy['id']; + } + } + } + } + // if domain's policy doesn't match, loop through all policies to find a match and insert it + if ( null === $spamfilter_policy_id ) { + foreach ( $mail_policies as $policy ) { + if ( 'Y' == $policy['bypass_spam_checks'] ) { + continue; + } + if ( $policy['spam_lover'] == $spam_lover && $policy['virus_lover'] == $virus_lover ) { + $spamfilter_policy_id = $policy['id']; + + // mail_spamfilter_user entry for this user / policy_id + $params = [ 'params' => [ + 'server_id' => $mail_domains[$domain]['server_id'], + 'priority' => "10", + 'policy_id' => $policy['id'], + 'email' => $email, + 'fullname' => $email, + 'local' => "Y", + ], + ]; + + $data = apiCall( 'mail_spamfilter_user_add', [ 'client_id' => $client_id ], $params ); + + // either we inserted a spamfilter_user or it failed, + // either way, on to the next email + continue 2; + } + } + } +} + + +// logout so session id is cleaned up +if ( isset( $session_id ) && $session_id ) { + $result = restCall( 'logout', [ 'session_id' => $session_id ] ); + $result || die( "Could not get logout result, session id $session_id may now be abandoned.\n" ); +} + +exit(); -- GitLab From 6c638517508cf2e0ee1f4245e85c4c7633dd3782 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Mon, 4 May 2020 17:30:42 +0200 Subject: [PATCH 267/571] - fix wrong certbot command, fixes #5610 --- server/lib/classes/letsencrypt.inc.php | 137 +++++++++++++------------ 1 file changed, 72 insertions(+), 65 deletions(-) diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index f60ad040e7..4e9bb74e13 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -42,7 +42,7 @@ class letsencrypt { public function __construct(){ } - + public function get_acme_script() { $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); $acme = reset($acme); @@ -52,18 +52,18 @@ class letsencrypt { return false; } } - + public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') { global $app; - + $letsencrypt = $this->get_acme_script(); - + $cmd = ''; // generate cli format foreach($domains as $domain) { $cmd .= (string) " -d " . $domain; } - + if($cmd == '') { return false; } @@ -73,12 +73,12 @@ class letsencrypt { } else { $cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file); } - + $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; - + return $cmd; } - + public function get_certbot_script() { $letsencrypt = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); $letsencrypt = reset($letsencrypt); @@ -94,13 +94,13 @@ class letsencrypt { $ret = null; $val = 0; exec($install_cmd . ' 2>&1', $ret, $val); - + return ($val == 0 ? true : false); } - + private function get_reload_command() { global $app, $conf; - + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); $daemon = ''; @@ -121,26 +121,26 @@ class letsencrypt { $cmd = $app->system->getinitcommand($daemon, 'force-reload'); return $cmd; } - + public function get_certbot_command($domains) { global $app; - + $letsencrypt = $this->get_certbot_script(); - + $cmd = ''; // generate cli format foreach($domains as $domain) { $cmd .= (string) " --domains " . $domain; } - + if($cmd == '') { return false; } - + $matches = array(); $ret = null; $val = 0; - + $letsencrypt_version = exec($letsencrypt . ' --version 2>&1', $ret, $val); if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $letsencrypt_version, $matches)) { $letsencrypt_version = $matches[2]; @@ -161,39 +161,39 @@ class letsencrypt { } else { $webroot_args = "$cmd --webroot-path /usr/local/ispconfig/interface/acme"; } - + $cmd = $letsencrypt . " certonly -n --text --agree-tos --expand --authenticator webroot --server $acme_version --rsa-key-size 4096 --email postmaster@$domain $cmd --webroot-path /usr/local/ispconfig/interface/acme"; - + return $cmd; } - + public function get_letsencrypt_certificate_paths($domains = array()) { global $app; - + if($this->get_acme_script()) { return false; } - + if(empty($domains)) return false; if(!is_dir($this->renew_config_path)) return false; - + $dir = opendir($this->renew_config_path); if(!$dir) return false; - + $path_scores = array(); - + $main_domain = reset($domains); sort($domains); $min_diff = false; - + while($file = readdir($dir)) { if($file === '.' || $file === '..' || substr($file, -5) !== '.conf') continue; $file_path = $this->renew_config_path . '/' . $file; if(!is_file($file_path) || !is_readable($file_path)) continue; - + $fp = fopen($file_path, 'r'); if(!$fp) continue; - + $path_scores[$file_path] = array( 'domains' => array(), 'diff' => 0, @@ -211,26 +211,26 @@ class letsencrypt { if($line === '') continue; elseif(!$in_list) { if($line == '[[webroot_map]]') $in_list = true; - + $tmp = explode('=', $line, 2); if(count($tmp) != 2) continue; $key = trim($tmp[0]); if($key == 'cert' || $key == 'privkey' || $key == 'chain' || $key == 'fullchain') { $path_scores[$file_path]['cert_paths'][$key] = trim($tmp[1]); } - + continue; } - + $tmp = explode('=', $line, 2); if(count($tmp) != 2) continue; - + $domain = trim($tmp[0]); if($domain == $main_domain) $path_scores[$file_path]['has_main_domain'] = true; $path_scores[$file_path]['domains'][] = $domain; } fclose($fp); - + sort($path_scores[$file_path]['domains']); if(count(array_intersect($domains, $path_scores[$file_path]['domains'])) < 1) { $path_scores[$file_path]['diff'] = false; @@ -238,13 +238,13 @@ class letsencrypt { // give higher diff value to missing domains than to those that are too much in there $path_scores[$file_path]['diff'] = (count(array_diff($domains, $path_scores[$file_path]['domains'])) * 1.5) + count(array_diff($path_scores[$file_path]['domains'], $domains)); } - + if($min_diff === false || $path_scores[$file_path]['diff'] < $min_diff) $min_diff = $path_scores[$file_path]['diff']; } closedir($dir); if($min_diff === false) return false; - + $cert_paths = false; $used_path = false; foreach($path_scores as $path => $data) { @@ -254,15 +254,15 @@ class letsencrypt { if($data['has_main_domain'] == true) break; } } - + $app->log("Let's Encrypt Cert config path is: " . ($used_path ? $used_path : "not found") . ".", LOGLEVEL_DEBUG); - + return $cert_paths; } - + private function get_ssl_domain($data) { global $app; - + $domain = $data['new']['ssl_domain']; if(!$domain) { $domain = $data['new']['domain']; @@ -276,14 +276,14 @@ class letsencrypt { $domain = substr($domain, 2); } } - + return $domain; } - + public function get_website_certificate_paths($data) { $ssl_dir = $data['new']['document_root'].'/ssl'; $domain = $this->get_ssl_domain($data); - + $cert_paths = array( 'domain' => $domain, 'key' => $ssl_dir.'/'.$domain.'.key', @@ -292,7 +292,7 @@ class letsencrypt { 'crt' => $ssl_dir.'/'.$domain.'.crt', 'bundle' => $ssl_dir.'/'.$domain.'.bundle' ); - + if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') { $cert_paths = array( 'domain' => $domain, @@ -302,17 +302,17 @@ class letsencrypt { 'bundle' => $ssl_dir.'/'.$domain.'-le.bundle' ); } - + return $cert_paths; } - + public function request_certificates($data, $server_type = 'apache') { global $app, $conf; - + $app->uses('getconf'); $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - + $use_acme = false; if($this->get_acme_script()) { $use_acme = true; @@ -320,13 +320,13 @@ class letsencrypt { // acme and le missing $this->install_acme(); } - + $tmp = $app->letsencrypt->get_website_certificate_paths($data); $domain = $tmp['domain']; $key_file = $tmp['key']; $crt_file = $tmp['crt']; $bundle_file = $tmp['bundle']; - + // default values $temp_domains = array($domain); $cli_domain_arg = ''; @@ -345,7 +345,7 @@ class letsencrypt { $temp_domains[] = $subdomain['domain']; } } - + //* then, add alias domain if we have $aliasdomains = $app->db->queryAllRecords('SELECT domain,subdomain FROM web_domain WHERE parent_domain_id = '.intval($data['new']['domain_id'])." AND active = 'y' AND type = 'alias' AND ssl_letsencrypt_exclude != 'y'"); if(is_array($aliasdomains)) { @@ -395,7 +395,7 @@ class letsencrypt { // unset useless data unset($subdomains); unset($aliasdomains); - + $this->certbot_use_certcommand = false; $letsencrypt_cmd = ''; $allow_return_codes = null; @@ -405,7 +405,7 @@ class letsencrypt { } else { $letsencrypt_cmd = $this->get_certbot_command($temp_domains); } - + $success = false; if($letsencrypt_cmd) { if(!isset($server_config['migration_mode']) || $server_config['migration_mode'] != 'y') { @@ -428,10 +428,17 @@ class letsencrypt { return true; } } - + $le_files = array(); if($this->certbot_use_certcommand === true && $letsencrypt_cmd) { - $letsencrypt_cmd = $letsencrypt_cmd . " certificates " . $cli_domain_arg; + $cli_domain_arg = ''; + // generate cli format + foreach($temp_domains as $temp_domain) { + $cli_domain_arg .= (string) " --domains " . $temp_domain; + } + + + $letsencrypt_cmd = $this->get_certbot_script() . " certificates " . $cli_domain_arg; $output = explode("\n", shell_exec($letsencrypt_cmd . " 2>/dev/null | grep -v '^\$'")); $le_path = ''; $skip_to_next = true; @@ -439,18 +446,18 @@ class letsencrypt { foreach($output as $outline) { $outline = trim($outline); $app->log("LE CERT OUTPUT: " . $outline, LOGLEVEL_DEBUG); - + if($skip_to_next === true && !preg_match('/^\s*Certificate Name/', $outline)) { continue; } $skip_to_next = false; - + if(preg_match('/^\s*Expiry.*?VALID:\s+\D/', $outline)) { $app->log("Found LE path is expired or invalid: " . $matches[1], LOGLEVEL_DEBUG); $skip_to_next = true; continue; } - + if(preg_match('/^\s*Certificate Path:\s*(\/.*?)\s*$/', $outline, $matches)) { $app->log("Found LE path: " . $matches[1], LOGLEVEL_DEBUG); $le_path = dirname($matches[1]); @@ -461,7 +468,7 @@ class letsencrypt { } } } - + if($le_path) { $le_files = array( 'privkey' => $le_path . '/privkey.pem', @@ -475,32 +482,32 @@ class letsencrypt { $le_files = $this->get_letsencrypt_certificate_paths($temp_domains); } unset($temp_domains); - + if($server_type != 'apache' || version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) { $crt_tmp_file = $le_files['fullchain']; } else { $crt_tmp_file = $le_files['cert']; } - + $key_tmp_file = $le_files['privkey']; $bundle_tmp_file = $le_files['chain']; - + if(!$success) { // error issuing cert $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN); $app->log($letsencrypt_cmd, LOGLEVEL_WARN); - + // if cert already exists, dont remove it. Ex. expired/misstyped/noDnsYet alias domain, api down... if(!file_exists($crt_tmp_file)) { return false; } } - + //* check is been correctly created if(file_exists($crt_tmp_file)) { $app->log("Let's Encrypt Cert file: $crt_tmp_file exists.", LOGLEVEL_DEBUG); $date = date("YmdHis"); - + //* TODO: check if is a symlink, if target same keep it, either remove it if(is_file($key_file)) { $app->system->copy($key_file, $key_file.'.old.'.$date); @@ -528,7 +535,7 @@ class letsencrypt { if(@is_link($bundle_file)) $app->system->unlink($bundle_file); if(@file_exists($bundle_tmp_file)) $app->system->exec_safe("ln -s ? ?", $bundle_tmp_file, $bundle_file); - + return true; } else { $app->log("Let's Encrypt Cert file: $crt_tmp_file does not exist.", LOGLEVEL_DEBUG); -- GitLab From 5c33920813b14afc30efd0a1ff26302e036097cc Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 5 May 2020 21:29:07 +0200 Subject: [PATCH 268/571] typo --- interface/lib/classes/listform_actions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 097b41fc0d..e0ffb628ee 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -192,7 +192,7 @@ class listform_actions { $key = $field['field']; if(isset($field['formtype']) && $field['formtype'] == 'SELECT') { if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') { - // Set a additional image variable for bolean fields + // Set a additional image variable for boolean fields $rec['_'.$key.'_'] = (strtolower($rec[$key]) == 'y')?'x16/tick_circle.png':'x16/cross_circle.png'; } //* substitute value for select field -- GitLab From 955a242135ef8b896bd1ec2df63062114f19b56d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Mon, 11 May 2020 08:46:46 +0200 Subject: [PATCH 269/571] Include CA certs in jailkit chroot, fixes #4878 --- install/dist/tpl/gentoo/jk_init.ini.master | 2 ++ install/tpl/jk_init.ini.master | 2 ++ 2 files changed, 4 insertions(+) diff --git a/install/dist/tpl/gentoo/jk_init.ini.master b/install/dist/tpl/gentoo/jk_init.ini.master index a2ff3a1951..6e11d05fd5 100644 --- a/install/dist/tpl/gentoo/jk_init.ini.master +++ b/install/dist/tpl/gentoo/jk_init.ini.master @@ -99,6 +99,8 @@ directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /usr comment = several internet utilities like wget, ftp, rsync, scp, ssh executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient includesections = netbasics, ssh, sftp, scp +directories = /etc/ssl/certs/ +regularfiles = /usr/lib/ssl/certs [apacheutils] comment = htpasswd utility diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master index d34332b72e..469e655a31 100644 --- a/install/tpl/jk_init.ini.master +++ b/install/tpl/jk_init.ini.master @@ -96,6 +96,8 @@ directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /lib comment = several internet utilities like wget, ftp, rsync, scp, ssh executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient includesections = netbasics, ssh, sftp, scp +directories = /etc/ssl/certs/ +regularfiles = /usr/lib/ssl/certs [apacheutils] comment = htpasswd utility -- GitLab From 1811e6496b1253332959dfd9d52624aed11f1e31 Mon Sep 17 00:00:00 2001 From: Branislav Viest <info@branoviest.com> Date: Fri, 15 May 2020 17:32:02 +0200 Subject: [PATCH 270/571] Fixed error 404 when PHP-FPM is used and PHP script is not exists. --- server/conf/vhost.conf.master | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index bec2cedef2..f6ad4b830f 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -372,12 +372,16 @@ </Directory> <Directory {tmpl_var name='web_document_root_www'}> <FilesMatch "\.php[345]?$"> - SetHandler php-fcgi + <If "-f '%{REQUEST_FILENAME}'"> + SetHandler php-fcgi + </If> </FilesMatch> </Directory> <Directory {tmpl_var name='web_document_root'}> <FilesMatch "\.php[345]?$"> - SetHandler php-fcgi + <If "-f '%{REQUEST_FILENAME}'"> + SetHandler php-fcgi + </If> </FilesMatch> </Directory> Action php-fcgi /php-fcgi virtual @@ -402,7 +406,9 @@ #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ fcgi://127.0.0.1:<tmpl_var name='fpm_port'><tmpl_var name='web_document_root'>/$1 <Directory {tmpl_var name='web_document_root'}> <FilesMatch "\.php[345]?$"> + <If "-f '%{REQUEST_FILENAME}'"> SetHandler "proxy:fcgi://127.0.0.1:<tmpl_var name='fpm_port'>" + </If> </FilesMatch> </Directory> </tmpl_if> @@ -410,7 +416,9 @@ #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ unix://<tmpl_var name='fpm_socket'>|fcgi://localhost/<tmpl_var name='web_document_root'>/$1 <Directory {tmpl_var name='web_document_root'}> <FilesMatch "\.php[345]?$"> + <If "-f '%{REQUEST_FILENAME}'"> SetHandler "proxy:unix:<tmpl_var name='fpm_socket'>|fcgi://localhost" + </If> </FilesMatch> </Directory> </tmpl_if> -- GitLab From 57acfd0d27d2e3399c7c377cd1221e2ece13d5bb Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 15 May 2020 20:29:09 +0200 Subject: [PATCH 271/571] Translation files should not have exec permission --- interface/lib/lang/fi.lng | 0 interface/web/admin/lib/lang/es.lng | 0 interface/web/admin/lib/lang/es_directive_snippets.lng | 0 interface/web/admin/lib/lang/es_directive_snippets_list.lng | 0 interface/web/admin/lib/lang/es_firewall.lng | 0 interface/web/admin/lib/lang/es_firewall_list.lng | 0 interface/web/admin/lib/lang/es_groups.lng | 0 interface/web/admin/lib/lang/es_groups_list.lng | 0 interface/web/admin/lib/lang/es_iptables.lng | 0 interface/web/admin/lib/lang/es_iptables_list.lng | 0 interface/web/admin/lib/lang/es_language_add.lng | 0 interface/web/admin/lib/lang/es_language_complete.lng | 0 interface/web/admin/lib/lang/es_language_edit.lng | 0 interface/web/admin/lib/lang/es_language_export.lng | 0 interface/web/admin/lib/lang/es_language_import.lng | 0 interface/web/admin/lib/lang/es_language_list.lng | 0 interface/web/admin/lib/lang/es_package_install.lng | 0 interface/web/admin/lib/lang/es_remote_action.lng | 0 interface/web/admin/lib/lang/es_remote_user.lng | 0 interface/web/admin/lib/lang/es_remote_user_list.lng | 0 interface/web/admin/lib/lang/es_server.lng | 0 interface/web/admin/lib/lang/es_server_config.lng | 0 interface/web/admin/lib/lang/es_server_config_list.lng | 0 interface/web/admin/lib/lang/es_server_ip.lng | 0 interface/web/admin/lib/lang/es_server_ip_list.lng | 0 interface/web/admin/lib/lang/es_server_ip_map.lng | 0 interface/web/admin/lib/lang/es_server_ip_map_list.lng | 0 interface/web/admin/lib/lang/es_server_list.lng | 0 interface/web/admin/lib/lang/es_server_php.lng | 0 interface/web/admin/lib/lang/es_server_php_list.lng | 0 interface/web/admin/lib/lang/es_software_package.lng | 0 interface/web/admin/lib/lang/es_software_package_install.lng | 0 interface/web/admin/lib/lang/es_software_package_list.lng | 0 interface/web/admin/lib/lang/es_software_repo.lng | 0 interface/web/admin/lib/lang/es_software_repo_list.lng | 0 interface/web/admin/lib/lang/es_software_update_list.lng | 0 interface/web/admin/lib/lang/es_system_config.lng | 0 interface/web/admin/lib/lang/es_tpl_default_admin.lng | 0 interface/web/admin/lib/lang/es_users.lng | 0 interface/web/admin/lib/lang/es_users_list.lng | 0 interface/web/admin/lib/lang/fi.lng | 0 interface/web/admin/lib/lang/fi_firewall.lng | 0 interface/web/admin/lib/lang/fi_firewall_list.lng | 0 interface/web/admin/lib/lang/fi_groups.lng | 0 interface/web/admin/lib/lang/fi_groups_list.lng | 0 interface/web/admin/lib/lang/fi_language_add.lng | 0 interface/web/admin/lib/lang/fi_language_complete.lng | 0 interface/web/admin/lib/lang/fi_language_edit.lng | 0 interface/web/admin/lib/lang/fi_language_export.lng | 0 interface/web/admin/lib/lang/fi_language_import.lng | 0 interface/web/admin/lib/lang/fi_language_list.lng | 0 interface/web/admin/lib/lang/fi_server.lng | 0 interface/web/admin/lib/lang/fi_server_config.lng | 0 interface/web/admin/lib/lang/fi_server_config_list.lng | 0 interface/web/admin/lib/lang/fi_server_ip.lng | 0 interface/web/admin/lib/lang/fi_server_ip_list.lng | 0 interface/web/admin/lib/lang/fi_server_list.lng | 0 interface/web/admin/lib/lang/fi_software_package_list.lng | 0 interface/web/admin/lib/lang/fi_software_repo.lng | 0 interface/web/admin/lib/lang/fi_software_repo_list.lng | 0 interface/web/admin/lib/lang/fi_software_update_list.lng | 0 interface/web/admin/lib/lang/fi_users.lng | 0 interface/web/admin/lib/lang/fi_users_list.lng | 0 interface/web/client/lib/lang/en_resellers_list.lng | 0 interface/web/client/lib/lang/es.lng | 0 interface/web/client/lib/lang/es_client.lng | 0 interface/web/client/lib/lang/es_client_circle.lng | 0 interface/web/client/lib/lang/es_client_circle_list.lng | 0 interface/web/client/lib/lang/es_client_del.lng | 0 interface/web/client/lib/lang/es_client_message.lng | 0 interface/web/client/lib/lang/es_client_message_template.lng | 0 interface/web/client/lib/lang/es_client_message_template_list.lng | 0 interface/web/client/lib/lang/es_client_template.lng | 0 interface/web/client/lib/lang/es_client_template_list.lng | 0 interface/web/client/lib/lang/es_clients_list.lng | 0 interface/web/client/lib/lang/es_domain.lng | 0 interface/web/client/lib/lang/es_domain_list.lng | 0 interface/web/client/lib/lang/es_reseller.lng | 0 interface/web/client/lib/lang/fi.lng | 0 interface/web/client/lib/lang/fi_client.lng | 0 interface/web/client/lib/lang/fi_client_template.lng | 0 interface/web/client/lib/lang/fi_client_template_list.lng | 0 interface/web/client/lib/lang/fi_clients_list.lng | 0 interface/web/dashboard/lib/lang/es.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_customer.lng | 0 .../web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_invoices.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_limits.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_modules.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_products.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_quota.lng | 0 interface/web/dashboard/lib/lang/es_dashlet_shop.lng | 0 interface/web/dns/lib/lang/es.lng | 0 interface/web/dns/lib/lang/es_dns_a.lng | 0 interface/web/dns/lib/lang/es_dns_a_list.lng | 0 interface/web/dns/lib/lang/es_dns_aaaa.lng | 0 interface/web/dns/lib/lang/es_dns_alias.lng | 0 interface/web/dns/lib/lang/es_dns_cname.lng | 0 interface/web/dns/lib/lang/es_dns_dkim.lng | 0 interface/web/dns/lib/lang/es_dns_dmarc.lng | 0 interface/web/dns/lib/lang/es_dns_ds.lng | 0 interface/web/dns/lib/lang/es_dns_hinfo.lng | 0 interface/web/dns/lib/lang/es_dns_import.lng | 0 interface/web/dns/lib/lang/es_dns_loc.lng | 0 interface/web/dns/lib/lang/es_dns_mx.lng | 0 interface/web/dns/lib/lang/es_dns_ns.lng | 0 interface/web/dns/lib/lang/es_dns_ptr.lng | 0 interface/web/dns/lib/lang/es_dns_rp.lng | 0 interface/web/dns/lib/lang/es_dns_slave_admin_list.lng | 0 interface/web/dns/lib/lang/es_dns_slave_list.lng | 0 interface/web/dns/lib/lang/es_dns_soa.lng | 0 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng | 0 interface/web/dns/lib/lang/es_dns_soa_list.lng | 0 interface/web/dns/lib/lang/es_dns_spf.lng | 0 interface/web/dns/lib/lang/es_dns_srv.lng | 0 interface/web/dns/lib/lang/es_dns_template.lng | 0 interface/web/dns/lib/lang/es_dns_template_list.lng | 0 interface/web/dns/lib/lang/es_dns_tlsa.lng | 0 interface/web/dns/lib/lang/es_dns_txt.lng | 0 interface/web/dns/lib/lang/es_dns_wizard.lng | 0 interface/web/dns/lib/lang/fi.lng | 0 interface/web/dns/lib/lang/fi_dns_a.lng | 0 interface/web/dns/lib/lang/fi_dns_a_list.lng | 0 interface/web/dns/lib/lang/fi_dns_alias.lng | 0 interface/web/dns/lib/lang/fi_dns_cname.lng | 0 interface/web/dns/lib/lang/fi_dns_hinfo.lng | 0 interface/web/dns/lib/lang/fi_dns_mx.lng | 0 interface/web/dns/lib/lang/fi_dns_ns.lng | 0 interface/web/dns/lib/lang/fi_dns_ptr.lng | 0 interface/web/dns/lib/lang/fi_dns_rp.lng | 0 interface/web/dns/lib/lang/fi_dns_soa.lng | 0 interface/web/dns/lib/lang/fi_dns_soa_list.lng | 0 interface/web/dns/lib/lang/fi_dns_srv.lng | 0 interface/web/dns/lib/lang/fi_dns_template.lng | 0 interface/web/dns/lib/lang/fi_dns_template_list.lng | 0 interface/web/dns/lib/lang/fi_dns_txt.lng | 0 interface/web/dns/lib/lang/fi_dns_wizard.lng | 0 interface/web/help/lib/lang/es.lng | 0 interface/web/help/lib/lang/es_faq_form.lng | 0 interface/web/help/lib/lang/es_faq_manage_questions_list.lng | 0 interface/web/help/lib/lang/es_faq_sections_form.lng | 0 interface/web/help/lib/lang/es_help_faq_list.lng | 0 interface/web/help/lib/lang/es_help_faq_sections_list.lng | 0 interface/web/help/lib/lang/es_support_message.lng | 0 interface/web/help/lib/lang/es_support_message_list.lng | 0 interface/web/help/lib/lang/fi.lng | 0 interface/web/help/lib/lang/fi_support_message.lng | 0 interface/web/help/lib/lang/fi_support_message_list.lng | 0 interface/web/login/lib/lang/es.lng | 0 interface/web/login/lib/lang/es_login_as.lng | 0 interface/web/login/lib/lang/fi.lng | 0 interface/web/mail/lib/lang/ar_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/bg_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/br_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/de_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/el_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/en_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/es.lng | 0 interface/web/mail/lib/lang/es_backup_stats_list.lng | 0 interface/web/mail/lib/lang/es_mail_alias.lng | 0 interface/web/mail/lib/lang/es_mail_alias_list.lng | 0 interface/web/mail/lib/lang/es_mail_aliasdomain.lng | 0 interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng | 0 interface/web/mail/lib/lang/es_mail_backup_list.lng | 0 interface/web/mail/lib/lang/es_mail_blacklist.lng | 0 interface/web/mail/lib/lang/es_mail_blacklist_list.lng | 0 interface/web/mail/lib/lang/es_mail_content_filter.lng | 0 interface/web/mail/lib/lang/es_mail_content_filter_list.lng | 0 interface/web/mail/lib/lang/es_mail_domain.lng | 0 interface/web/mail/lib/lang/es_mail_domain_admin_list.lng | 0 interface/web/mail/lib/lang/es_mail_domain_catchall.lng | 0 interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng | 0 interface/web/mail/lib/lang/es_mail_domain_list.lng | 0 interface/web/mail/lib/lang/es_mail_forward.lng | 0 interface/web/mail/lib/lang/es_mail_forward_list.lng | 0 interface/web/mail/lib/lang/es_mail_get.lng | 0 interface/web/mail/lib/lang/es_mail_get_list.lng | 0 interface/web/mail/lib/lang/es_mail_mailinglist.lng | 0 interface/web/mail/lib/lang/es_mail_mailinglist_list.lng | 0 interface/web/mail/lib/lang/es_mail_relay_recipient.lng | 0 interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng | 0 interface/web/mail/lib/lang/es_mail_spamfilter.lng | 0 interface/web/mail/lib/lang/es_mail_spamfilter_list.lng | 0 interface/web/mail/lib/lang/es_mail_transport.lng | 0 interface/web/mail/lib/lang/es_mail_transport_list.lng | 0 interface/web/mail/lib/lang/es_mail_user.lng | 0 interface/web/mail/lib/lang/es_mail_user_filter.lng | 0 interface/web/mail/lib/lang/es_mail_user_filter_list.lng | 0 interface/web/mail/lib/lang/es_mail_user_list.lng | 0 interface/web/mail/lib/lang/es_mail_user_stats_list.lng | 0 interface/web/mail/lib/lang/es_mail_whitelist_list.lng | 0 interface/web/mail/lib/lang/es_spamfilter_blacklist.lng | 0 interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng | 0 interface/web/mail/lib/lang/es_spamfilter_config.lng | 0 interface/web/mail/lib/lang/es_spamfilter_config_list.lng | 0 interface/web/mail/lib/lang/es_spamfilter_policy.lng | 0 interface/web/mail/lib/lang/es_spamfilter_policy_list.lng | 0 interface/web/mail/lib/lang/es_spamfilter_users.lng | 0 interface/web/mail/lib/lang/es_spamfilter_users_list.lng | 0 interface/web/mail/lib/lang/es_spamfilter_whitelist.lng | 0 interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng | 0 interface/web/mail/lib/lang/es_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/es_xmpp_domain.lng | 0 interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng | 0 interface/web/mail/lib/lang/es_xmpp_domain_list.lng | 0 interface/web/mail/lib/lang/es_xmpp_user.lng | 0 interface/web/mail/lib/lang/es_xmpp_user_list.lng | 0 interface/web/mail/lib/lang/fi.lng | 0 interface/web/mail/lib/lang/fi_mail_alias.lng | 0 interface/web/mail/lib/lang/fi_mail_alias_list.lng | 0 interface/web/mail/lib/lang/fi_mail_blacklist.lng | 0 interface/web/mail/lib/lang/fi_mail_blacklist_list.lng | 0 interface/web/mail/lib/lang/fi_mail_content_filter.lng | 0 interface/web/mail/lib/lang/fi_mail_content_filter_list.lng | 0 interface/web/mail/lib/lang/fi_mail_domain.lng | 0 interface/web/mail/lib/lang/fi_mail_domain_catchall.lng | 0 interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng | 0 interface/web/mail/lib/lang/fi_mail_domain_list.lng | 0 interface/web/mail/lib/lang/fi_mail_forward.lng | 0 interface/web/mail/lib/lang/fi_mail_forward_list.lng | 0 interface/web/mail/lib/lang/fi_mail_get.lng | 0 interface/web/mail/lib/lang/fi_mail_get_list.lng | 0 interface/web/mail/lib/lang/fi_mail_spamfilter.lng | 0 interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng | 0 interface/web/mail/lib/lang/fi_mail_transport.lng | 0 interface/web/mail/lib/lang/fi_mail_transport_list.lng | 0 interface/web/mail/lib/lang/fi_mail_user.lng | 0 interface/web/mail/lib/lang/fi_mail_user_filter.lng | 0 interface/web/mail/lib/lang/fi_mail_user_filter_list.lng | 0 interface/web/mail/lib/lang/fi_mail_user_list.lng | 0 interface/web/mail/lib/lang/fi_mail_user_stats_list.lng | 0 interface/web/mail/lib/lang/fi_mail_whitelist.lng | 0 interface/web/mail/lib/lang/fi_mail_whitelist_list.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_config.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_config_list.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_policy.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_users.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_users_list.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng | 0 interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng | 0 interface/web/mail/lib/lang/fi_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/fr_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/hu_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/id_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/it_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/ja_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/nl_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/pl_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/pt_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/ro_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/ru_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/se_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/sk_user_quota_stats_list.lng | 0 interface/web/mail/lib/lang/tr_user_quota_stats_list.lng | 0 interface/web/mailuser/lib/lang/es.lng | 0 interface/web/mailuser/lib/lang/es_index.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_cc.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_filter.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_password.lng | 0 interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng | 0 interface/web/monitor/lib/lang/es.lng | 0 interface/web/monitor/lib/lang/es_datalog_list.lng | 0 interface/web/monitor/lib/lang/es_syslog_list.lng | 0 interface/web/monitor/lib/lang/fi.lng | 0 interface/web/monitor/lib/lang/fi_datalog_list.lng | 0 interface/web/monitor/lib/lang/fi_syslog_list.lng | 0 interface/web/sites/lib/lang/es.lng | 0 interface/web/sites/lib/lang/es_aps.lng | 0 interface/web/sites/lib/lang/es_aps_instances_list.lng | 0 interface/web/sites/lib/lang/es_aps_packages_list.lng | 0 interface/web/sites/lib/lang/es_aps_update_packagelist.lng | 0 interface/web/sites/lib/lang/es_backup_stats_list.lng | 0 interface/web/sites/lib/lang/es_cron.lng | 0 interface/web/sites/lib/lang/es_cron_list.lng | 0 interface/web/sites/lib/lang/es_database.lng | 0 interface/web/sites/lib/lang/fi.lng | 0 interface/web/sites/lib/lang/fi_database.lng | 0 interface/web/sites/lib/lang/fi_database_list.lng | 0 interface/web/sites/lib/lang/fi_ftp_user.lng | 0 interface/web/sites/lib/lang/fi_ftp_user_list.lng | 0 interface/web/sites/lib/lang/fi_shell_user.lng | 0 interface/web/sites/lib/lang/fi_shell_user_list.lng | 0 interface/web/sites/lib/lang/fi_web_childdomain.lng | 0 interface/web/sites/lib/lang/fi_web_childdomain_list.lng | 0 interface/web/sites/lib/lang/fi_web_sites_stats_list.lng | 0 interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng | 0 interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng | 0 interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng | 0 interface/web/tools/lib/lang/fi.lng | 0 interface/web/tools/lib/lang/fi_usersettings.lng | 0 297 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 interface/lib/lang/fi.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_directive_snippets.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_directive_snippets_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_firewall.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_firewall_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_groups.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_groups_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_iptables.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_iptables_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_add.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_complete.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_edit.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_export.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_import.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_language_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_package_install.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_action.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_user.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_remote_user_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_config.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_config_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_map.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_ip_map_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_php.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_server_php_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package_install.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_package_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_repo.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_repo_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_software_update_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_system_config.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_tpl_default_admin.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_users.lng mode change 100755 => 100644 interface/web/admin/lib/lang/es_users_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_firewall.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_firewall_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_groups.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_groups_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_add.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_complete.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_edit.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_export.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_import.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_language_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_config.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_config_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_ip.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_ip_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_server_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_package_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_repo.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_repo_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_software_update_list.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_users.lng mode change 100755 => 100644 interface/web/admin/lib/lang/fi_users_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/en_resellers_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_circle.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_circle_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_del.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message_template.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_message_template_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_template.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_client_template_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_clients_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_domain.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_domain_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/es_reseller.lng mode change 100755 => 100644 interface/web/client/lib/lang/fi.lng mode change 100755 => 100644 interface/web/client/lib/lang/fi_client.lng mode change 100755 => 100644 interface/web/client/lib/lang/fi_client_template.lng mode change 100755 => 100644 interface/web/client/lib/lang/fi_client_template_list.lng mode change 100755 => 100644 interface/web/client/lib/lang/fi_clients_list.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_customer.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_invoices.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_limits.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_modules.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_products.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_quota.lng mode change 100755 => 100644 interface/web/dashboard/lib/lang/es_dashlet_shop.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_a.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_a_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_aaaa.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_alias.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_cname.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_dkim.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_dmarc.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ds.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_hinfo.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_import.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_loc.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_mx.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ns.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_ptr.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_rp.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_slave_admin_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_slave_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa_admin_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_soa_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_spf.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_srv.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_template.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_template_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_tlsa.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_txt.lng mode change 100755 => 100644 interface/web/dns/lib/lang/es_dns_wizard.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_a.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_a_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_alias.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_cname.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_hinfo.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_mx.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_ns.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_ptr.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_rp.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_soa.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_soa_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_srv.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_template.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_template_list.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_txt.lng mode change 100755 => 100644 interface/web/dns/lib/lang/fi_dns_wizard.lng mode change 100755 => 100644 interface/web/help/lib/lang/es.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_form.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_manage_questions_list.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_faq_sections_form.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_help_faq_list.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_help_faq_sections_list.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_support_message.lng mode change 100755 => 100644 interface/web/help/lib/lang/es_support_message_list.lng mode change 100755 => 100644 interface/web/help/lib/lang/fi.lng mode change 100755 => 100644 interface/web/help/lib/lang/fi_support_message.lng mode change 100755 => 100644 interface/web/help/lib/lang/fi_support_message_list.lng mode change 100755 => 100644 interface/web/login/lib/lang/es.lng mode change 100755 => 100644 interface/web/login/lib/lang/es_login_as.lng mode change 100755 => 100644 interface/web/login/lib/lang/fi.lng mode change 100755 => 100644 interface/web/mail/lib/lang/ar_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/bg_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/br_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/de_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/el_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/en_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_backup_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_alias.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_alias_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_aliasdomain.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_backup_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_blacklist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_blacklist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_content_filter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_content_filter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_admin_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_catchall.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_domain_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_forward.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_forward_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_get.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_get_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_mailinglist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_mailinglist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_relay_recipient.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_spamfilter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_spamfilter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_transport.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_transport_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_filter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_filter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_user_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_mail_whitelist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_blacklist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_config.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_config_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_policy.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_policy_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_users.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_users_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_whitelist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_domain_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_user.lng mode change 100755 => 100644 interface/web/mail/lib/lang/es_xmpp_user_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_alias.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_alias_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_blacklist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_blacklist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_content_filter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_content_filter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_catchall.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_domain_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_forward.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_forward_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_get.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_get_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_spamfilter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_transport.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_transport_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_filter.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_filter_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_user_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_whitelist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_mail_whitelist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_config.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_config_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_policy.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_users.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_users_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fi_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/fr_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/hu_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/id_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/it_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/ja_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/nl_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/pl_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/pt_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/ro_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/ru_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/se_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/sk_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mail/lib/lang/tr_user_quota_stats_list.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_index.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_cc.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_filter.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_password.lng mode change 100755 => 100644 interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/es.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/es_datalog_list.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/es_syslog_list.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/fi.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/fi_datalog_list.lng mode change 100755 => 100644 interface/web/monitor/lib/lang/fi_syslog_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_instances_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_packages_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_aps_update_packagelist.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_backup_stats_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_cron.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_cron_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/es_database.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_database.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_database_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_ftp_user.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_ftp_user_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_shell_user.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_shell_user_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_childdomain.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_childdomain_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_sites_stats_list.lng mode change 100755 => 100644 interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng mode change 100755 => 100644 interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng mode change 100755 => 100644 interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng mode change 100755 => 100644 interface/web/tools/lib/lang/fi.lng mode change 100755 => 100644 interface/web/tools/lib/lang/fi_usersettings.lng diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es.lng b/interface/web/admin/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_directive_snippets_list.lng b/interface/web/admin/lib/lang/es_directive_snippets_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_firewall.lng b/interface/web/admin/lib/lang/es_firewall.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_firewall_list.lng b/interface/web/admin/lib/lang/es_firewall_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_groups.lng b/interface/web/admin/lib/lang/es_groups.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_groups_list.lng b/interface/web/admin/lib/lang/es_groups_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_iptables.lng b/interface/web/admin/lib/lang/es_iptables.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_iptables_list.lng b/interface/web/admin/lib/lang/es_iptables_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_add.lng b/interface/web/admin/lib/lang/es_language_add.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_complete.lng b/interface/web/admin/lib/lang/es_language_complete.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_edit.lng b/interface/web/admin/lib/lang/es_language_edit.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_export.lng b/interface/web/admin/lib/lang/es_language_export.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_import.lng b/interface/web/admin/lib/lang/es_language_import.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_language_list.lng b/interface/web/admin/lib/lang/es_language_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_package_install.lng b/interface/web/admin/lib/lang/es_package_install.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_remote_action.lng b/interface/web/admin/lib/lang/es_remote_action.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_remote_user_list.lng b/interface/web/admin/lib/lang/es_remote_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server.lng b/interface/web/admin/lib/lang/es_server.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_config_list.lng b/interface/web/admin/lib/lang/es_server_config_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_ip.lng b/interface/web/admin/lib/lang/es_server_ip.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_ip_list.lng b/interface/web/admin/lib/lang/es_server_ip_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_ip_map.lng b/interface/web/admin/lib/lang/es_server_ip_map.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_ip_map_list.lng b/interface/web/admin/lib/lang/es_server_ip_map_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_list.lng b/interface/web/admin/lib/lang/es_server_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_php.lng b/interface/web/admin/lib/lang/es_server_php.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_package.lng b/interface/web/admin/lib/lang/es_software_package.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_package_install.lng b/interface/web/admin/lib/lang/es_software_package_install.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_package_list.lng b/interface/web/admin/lib/lang/es_software_package_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_repo.lng b/interface/web/admin/lib/lang/es_software_repo.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_repo_list.lng b/interface/web/admin/lib/lang/es_software_repo_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_software_update_list.lng b/interface/web/admin/lib/lang/es_software_update_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_tpl_default_admin.lng b/interface/web/admin/lib/lang/es_tpl_default_admin.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/es_users_list.lng b/interface/web/admin/lib/lang/es_users_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi.lng b/interface/web/admin/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_firewall.lng b/interface/web/admin/lib/lang/fi_firewall.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_firewall_list.lng b/interface/web/admin/lib/lang/fi_firewall_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_groups.lng b/interface/web/admin/lib/lang/fi_groups.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_groups_list.lng b/interface/web/admin/lib/lang/fi_groups_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_add.lng b/interface/web/admin/lib/lang/fi_language_add.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_complete.lng b/interface/web/admin/lib/lang/fi_language_complete.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_edit.lng b/interface/web/admin/lib/lang/fi_language_edit.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_export.lng b/interface/web/admin/lib/lang/fi_language_export.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_import.lng b/interface/web/admin/lib/lang/fi_language_import.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_language_list.lng b/interface/web/admin/lib/lang/fi_language_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server.lng b/interface/web/admin/lib/lang/fi_server.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server_config_list.lng b/interface/web/admin/lib/lang/fi_server_config_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server_ip.lng b/interface/web/admin/lib/lang/fi_server_ip.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server_ip_list.lng b/interface/web/admin/lib/lang/fi_server_ip_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_server_list.lng b/interface/web/admin/lib/lang/fi_server_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_software_package_list.lng b/interface/web/admin/lib/lang/fi_software_package_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_software_repo.lng b/interface/web/admin/lib/lang/fi_software_repo.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_software_repo_list.lng b/interface/web/admin/lib/lang/fi_software_repo_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_software_update_list.lng b/interface/web/admin/lib/lang/fi_software_update_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng old mode 100755 new mode 100644 diff --git a/interface/web/admin/lib/lang/fi_users_list.lng b/interface/web/admin/lib/lang/fi_users_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/en_resellers_list.lng b/interface/web/client/lib/lang/en_resellers_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_circle.lng b/interface/web/client/lib/lang/es_client_circle.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_circle_list.lng b/interface/web/client/lib/lang/es_client_circle_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_del.lng b/interface/web/client/lib/lang/es_client_del.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_message.lng b/interface/web/client/lib/lang/es_client_message.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_message_template.lng b/interface/web/client/lib/lang/es_client_message_template.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_message_template_list.lng b/interface/web/client/lib/lang/es_client_message_template_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_client_template_list.lng b/interface/web/client/lib/lang/es_client_template_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_clients_list.lng b/interface/web/client/lib/lang/es_clients_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_domain.lng b/interface/web/client/lib/lang/es_domain.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_domain_list.lng b/interface/web/client/lib/lang/es_domain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/fi.lng b/interface/web/client/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/fi_client_template.lng b/interface/web/client/lib/lang/fi_client_template.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/fi_client_template_list.lng b/interface/web/client/lib/lang/fi_client_template_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/client/lib/lang/fi_clients_list.lng b/interface/web/client/lib/lang/fi_clients_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es.lng b/interface/web/dashboard/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_customer.lng b/interface/web/dashboard/lib/lang/es_dashlet_customer.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng b/interface/web/dashboard/lib/lang/es_dashlet_invoice_client_settings.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_invoices.lng b/interface/web/dashboard/lib/lang/es_dashlet_invoices.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_modules.lng b/interface/web/dashboard/lib/lang/es_dashlet_modules.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_products.lng b/interface/web/dashboard/lib/lang/es_dashlet_products.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng old mode 100755 new mode 100644 diff --git a/interface/web/dashboard/lib/lang/es_dashlet_shop.lng b/interface/web/dashboard/lib/lang/es_dashlet_shop.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es.lng b/interface/web/dns/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_a_list.lng b/interface/web/dns/lib/lang/es_dns_a_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_alias.lng b/interface/web/dns/lib/lang/es_dns_alias.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_dkim.lng b/interface/web/dns/lib/lang/es_dns_dkim.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_dmarc.lng b/interface/web/dns/lib/lang/es_dns_dmarc.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_ds.lng b/interface/web/dns/lib/lang/es_dns_ds.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_hinfo.lng b/interface/web/dns/lib/lang/es_dns_hinfo.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_loc.lng b/interface/web/dns/lib/lang/es_dns_loc.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_mx.lng b/interface/web/dns/lib/lang/es_dns_mx.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_ns.lng b/interface/web/dns/lib/lang/es_dns_ns.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_ptr.lng b/interface/web/dns/lib/lang/es_dns_ptr.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_rp.lng b/interface/web/dns/lib/lang/es_dns_rp.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng b/interface/web/dns/lib/lang/es_dns_slave_admin_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_slave_list.lng b/interface/web/dns/lib/lang/es_dns_slave_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_soa.lng b/interface/web/dns/lib/lang/es_dns_soa.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_soa_list.lng b/interface/web/dns/lib/lang/es_dns_soa_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_srv.lng b/interface/web/dns/lib/lang/es_dns_srv.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_template.lng b/interface/web/dns/lib/lang/es_dns_template.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_template_list.lng b/interface/web/dns/lib/lang/es_dns_template_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_tlsa.lng b/interface/web/dns/lib/lang/es_dns_tlsa.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_txt.lng b/interface/web/dns/lib/lang/es_dns_txt.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/es_dns_wizard.lng b/interface/web/dns/lib/lang/es_dns_wizard.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi.lng b/interface/web/dns/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_a.lng b/interface/web/dns/lib/lang/fi_dns_a.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_a_list.lng b/interface/web/dns/lib/lang/fi_dns_a_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_alias.lng b/interface/web/dns/lib/lang/fi_dns_alias.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_cname.lng b/interface/web/dns/lib/lang/fi_dns_cname.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_hinfo.lng b/interface/web/dns/lib/lang/fi_dns_hinfo.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_mx.lng b/interface/web/dns/lib/lang/fi_dns_mx.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_ns.lng b/interface/web/dns/lib/lang/fi_dns_ns.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_ptr.lng b/interface/web/dns/lib/lang/fi_dns_ptr.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_rp.lng b/interface/web/dns/lib/lang/fi_dns_rp.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_soa.lng b/interface/web/dns/lib/lang/fi_dns_soa.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_soa_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_srv.lng b/interface/web/dns/lib/lang/fi_dns_srv.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_template.lng b/interface/web/dns/lib/lang/fi_dns_template.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_template_list.lng b/interface/web/dns/lib/lang/fi_dns_template_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_txt.lng b/interface/web/dns/lib/lang/fi_dns_txt.lng old mode 100755 new mode 100644 diff --git a/interface/web/dns/lib/lang/fi_dns_wizard.lng b/interface/web/dns/lib/lang/fi_dns_wizard.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es.lng b/interface/web/help/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_faq_form.lng b/interface/web/help/lib/lang/es_faq_form.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_faq_manage_questions_list.lng b/interface/web/help/lib/lang/es_faq_manage_questions_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_faq_sections_form.lng b/interface/web/help/lib/lang/es_faq_sections_form.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_help_faq_list.lng b/interface/web/help/lib/lang/es_help_faq_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_help_faq_sections_list.lng b/interface/web/help/lib/lang/es_help_faq_sections_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_support_message.lng b/interface/web/help/lib/lang/es_support_message.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/es_support_message_list.lng b/interface/web/help/lib/lang/es_support_message_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/fi.lng b/interface/web/help/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/fi_support_message.lng b/interface/web/help/lib/lang/fi_support_message.lng old mode 100755 new mode 100644 diff --git a/interface/web/help/lib/lang/fi_support_message_list.lng b/interface/web/help/lib/lang/fi_support_message_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng old mode 100755 new mode 100644 diff --git a/interface/web/login/lib/lang/fi.lng b/interface/web/login/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng b/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/en_user_quota_stats_list.lng b/interface/web/mail/lib/lang/en_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_backup_stats_list.lng b/interface/web/mail/lib/lang/es_backup_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_alias.lng b/interface/web/mail/lib/lang/es_mail_alias.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_alias_list.lng b/interface/web/mail/lib/lang/es_mail_alias_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_backup_list.lng b/interface/web/mail/lib/lang/es_mail_backup_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_blacklist.lng b/interface/web/mail/lib/lang/es_mail_blacklist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_blacklist_list.lng b/interface/web/mail/lib/lang/es_mail_blacklist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_content_filter.lng b/interface/web/mail/lib/lang/es_mail_content_filter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_content_filter_list.lng b/interface/web/mail/lib/lang/es_mail_content_filter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_domain.lng b/interface/web/mail/lib/lang/es_mail_domain.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/es_mail_domain_admin_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_domain_list.lng b/interface/web/mail/lib/lang/es_mail_domain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_forward.lng b/interface/web/mail/lib/lang/es_mail_forward.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_forward_list.lng b/interface/web/mail/lib/lang/es_mail_forward_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_get_list.lng b/interface/web/mail/lib/lang/es_mail_get_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist.lng b/interface/web/mail/lib/lang/es_mail_mailinglist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_spamfilter.lng b/interface/web/mail/lib/lang/es_mail_spamfilter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_transport.lng b/interface/web/mail/lib/lang/es_mail_transport.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_transport_list.lng b/interface/web/mail/lib/lang/es_mail_transport_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_user_filter_list.lng b/interface/web/mail/lib/lang/es_mail_user_filter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_user_list.lng b/interface/web/mail/lib/lang/es_mail_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_user_stats_list.lng b/interface/web/mail/lib/lang/es_mail_user_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_mail_whitelist_list.lng b/interface/web/mail/lib/lang/es_mail_whitelist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_config.lng b/interface/web/mail/lib/lang/es_spamfilter_config.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_config_list.lng b/interface/web/mail/lib/lang/es_spamfilter_config_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_users.lng b/interface/web/mail/lib/lang/es_spamfilter_users.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_users_list.lng b/interface/web/mail/lib/lang/es_spamfilter_users_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_xmpp_domain.lng b/interface/web/mail/lib/lang/es_xmpp_domain.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/es_xmpp_domain_admin_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_xmpp_domain_list.lng b/interface/web/mail/lib/lang/es_xmpp_domain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_xmpp_user.lng b/interface/web/mail/lib/lang/es_xmpp_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/es_xmpp_user_list.lng b/interface/web/mail/lib/lang/es_xmpp_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi.lng b/interface/web/mail/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_alias.lng b/interface/web/mail/lib/lang/fi_mail_alias.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_alias_list.lng b/interface/web/mail/lib/lang/fi_mail_alias_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_blacklist.lng b/interface/web/mail/lib/lang/fi_mail_blacklist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_blacklist_list.lng b/interface/web/mail/lib/lang/fi_mail_blacklist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_content_filter.lng b/interface/web/mail/lib/lang/fi_mail_content_filter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_content_filter_list.lng b/interface/web/mail/lib/lang/fi_mail_content_filter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_domain.lng b/interface/web/mail/lib/lang/fi_mail_domain.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/fi_mail_domain_catchall_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_domain_list.lng b/interface/web/mail/lib/lang/fi_mail_domain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_forward.lng b/interface/web/mail/lib/lang/fi_mail_forward.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_forward_list.lng b/interface/web/mail/lib/lang/fi_mail_forward_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_get.lng b/interface/web/mail/lib/lang/fi_mail_get.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_get_list.lng b/interface/web/mail/lib/lang/fi_mail_get_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_spamfilter.lng b/interface/web/mail/lib/lang/fi_mail_spamfilter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/fi_mail_spamfilter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_transport.lng b/interface/web/mail/lib/lang/fi_mail_transport.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_transport_list.lng b/interface/web/mail/lib/lang/fi_mail_transport_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter.lng b/interface/web/mail/lib/lang/fi_mail_user_filter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_user_filter_list.lng b/interface/web/mail/lib/lang/fi_mail_user_filter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_user_list.lng b/interface/web/mail/lib/lang/fi_mail_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_user_stats_list.lng b/interface/web/mail/lib/lang/fi_mail_user_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_whitelist.lng b/interface/web/mail/lib/lang/fi_mail_whitelist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_mail_whitelist_list.lng b/interface/web/mail/lib/lang/fi_mail_whitelist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/fi_spamfilter_blacklist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_blacklist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_config.lng b/interface/web/mail/lib/lang/fi_spamfilter_config.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_config_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_config_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_policy_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users.lng b/interface/web/mail/lib/lang/fi_spamfilter_users.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_users_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/fi_spamfilter_whitelist.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/fi_spamfilter_whitelist_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng b/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/id_user_quota_stats_list.lng b/interface/web/mail/lib/lang/id_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/it_user_quota_stats_list.lng b/interface/web/mail/lib/lang/it_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng b/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es.lng b/interface/web/mailuser/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_index.lng b/interface/web/mailuser/lib/lang/es_index.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_password.lng b/interface/web/mailuser/lib/lang/es_mail_user_password.lng old mode 100755 new mode 100644 diff --git a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/es_datalog_list.lng b/interface/web/monitor/lib/lang/es_datalog_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/es_syslog_list.lng b/interface/web/monitor/lib/lang/es_syslog_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/fi_datalog_list.lng b/interface/web/monitor/lib/lang/fi_datalog_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/monitor/lib/lang/fi_syslog_list.lng b/interface/web/monitor/lib/lang/fi_syslog_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_aps_instances_list.lng b/interface/web/sites/lib/lang/es_aps_instances_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_aps_packages_list.lng b/interface/web/sites/lib/lang/es_aps_packages_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_aps_update_packagelist.lng b/interface/web/sites/lib/lang/es_aps_update_packagelist.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_backup_stats_list.lng b/interface/web/sites/lib/lang/es_backup_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_cron.lng b/interface/web/sites/lib/lang/es_cron.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_cron_list.lng b/interface/web/sites/lib/lang/es_cron_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/es_database.lng b/interface/web/sites/lib/lang/es_database.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi.lng b/interface/web/sites/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_database.lng b/interface/web/sites/lib/lang/fi_database.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_database_list.lng b/interface/web/sites/lib/lang/fi_database_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_ftp_user.lng b/interface/web/sites/lib/lang/fi_ftp_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_ftp_user_list.lng b/interface/web/sites/lib/lang/fi_ftp_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_shell_user.lng b/interface/web/sites/lib/lang/fi_shell_user.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_shell_user_list.lng b/interface/web/sites/lib/lang/fi_shell_user_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_web_childdomain_list.lng b/interface/web/sites/lib/lang/fi_web_childdomain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_web_sites_stats_list.lng b/interface/web/sites/lib/lang/fi_web_sites_stats_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain_list.lng old mode 100755 new mode 100644 diff --git a/interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/bg_strengthmeter.lng old mode 100755 new mode 100644 diff --git a/interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/fi_strengthmeter.lng old mode 100755 new mode 100644 diff --git a/interface/web/tools/lib/lang/fi.lng b/interface/web/tools/lib/lang/fi.lng old mode 100755 new mode 100644 diff --git a/interface/web/tools/lib/lang/fi_usersettings.lng b/interface/web/tools/lib/lang/fi_usersettings.lng old mode 100755 new mode 100644 -- GitLab From 1bf3595a847922576904a255341943819735ff6f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 5 May 2020 16:10:42 +0200 Subject: [PATCH 272/571] Show how many sites use an additional php version --- interface/web/admin/lib/lang/ar_server_php_list.lng | 1 + interface/web/admin/lib/lang/bg_server_php_list.lng | 1 + interface/web/admin/lib/lang/br_server_php_list.lng | 1 + interface/web/admin/lib/lang/ca_server_php_list.lng | 1 + interface/web/admin/lib/lang/cz_server_php_list.lng | 1 + interface/web/admin/lib/lang/de_server_php_list.lng | 1 + interface/web/admin/lib/lang/dk_server_php_list.lng | 1 + interface/web/admin/lib/lang/el_server_php_list.lng | 1 + interface/web/admin/lib/lang/en_server_php_list.lng | 1 + interface/web/admin/lib/lang/es_server_php_list.lng | 1 + interface/web/admin/lib/lang/fi_server_php_list.lng | 1 + interface/web/admin/lib/lang/fr_server_php_list.lng | 1 + interface/web/admin/lib/lang/hr_server_php_list.lng | 1 + interface/web/admin/lib/lang/hu_server_php_list.lng | 1 + interface/web/admin/lib/lang/id_server_php_list.lng | 1 + interface/web/admin/lib/lang/it_server_php_list.lng | 1 + interface/web/admin/lib/lang/ja_server_php_list.lng | 1 + interface/web/admin/lib/lang/nl_server_php_list.lng | 1 + interface/web/admin/lib/lang/pl_server_php_list.lng | 1 + interface/web/admin/lib/lang/pt_server_php_list.lng | 1 + interface/web/admin/lib/lang/ro_server_php_list.lng | 1 + interface/web/admin/lib/lang/ru_server_php_list.lng | 1 + interface/web/admin/lib/lang/se_server_php_list.lng | 1 + interface/web/admin/lib/lang/sk_server_php_list.lng | 1 + interface/web/admin/lib/lang/tr_server_php_list.lng | 1 + interface/web/admin/server_php_list.php | 10 ++++++++++ interface/web/admin/templates/server_php_list.htm | 3 +++ 27 files changed, 38 insertions(+) diff --git a/interface/web/admin/lib/lang/ar_server_php_list.lng b/interface/web/admin/lib/lang/ar_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/ar_server_php_list.lng +++ b/interface/web/admin/lib/lang/ar_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_php_list.lng b/interface/web/admin/lib/lang/bg_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/bg_server_php_list.lng +++ b/interface/web/admin/lib/lang/bg_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/br_server_php_list.lng b/interface/web/admin/lib/lang/br_server_php_list.lng index 38ebdd3568..ce558e9054 100644 --- a/interface/web/admin/lib/lang/br_server_php_list.lng +++ b/interface/web/admin/lib/lang/br_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Adicionar nova versão do php'; $wb['client_id_txt'] = 'Cliente'; $wb['name_txt'] = 'Nome da versão'; $wb['active_txt'] = 'Ativo'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/ca_server_php_list.lng b/interface/web/admin/lib/lang/ca_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/ca_server_php_list.lng +++ b/interface/web/admin/lib/lang/ca_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng index abe4f750ff..70bb2af8aa 100644 --- a/interface/web/admin/lib/lang/cz_server_php_list.lng +++ b/interface/web/admin/lib/lang/cz_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'PÅ™idat verzi PHP'; $wb['client_id_txt'] = 'Klient'; $wb['name_txt'] = 'Verze PHP'; $wb['active_txt'] = 'AktivnÃ'; +$wb['usage_txt'] = 'Usage count'; ?> 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 fe9a72ea15..f9da54d84c 100644 --- a/interface/web/admin/lib/lang/de_server_php_list.lng +++ b/interface/web/admin/lib/lang/de_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Neue PHP Version hinzufügen'; $wb['client_id_txt'] = 'Kunde'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Aktiv'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/dk_server_php_list.lng b/interface/web/admin/lib/lang/dk_server_php_list.lng index 43fb5fe211..65869ce2ed 100644 --- a/interface/web/admin/lib/lang/dk_server_php_list.lng +++ b/interface/web/admin/lib/lang/dk_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Tilføj ny PHP version'; $wb['client_id_txt'] = 'Kunde'; $wb['name_txt'] = 'PHP Navn'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/el_server_php_list.lng b/interface/web/admin/lib/lang/el_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/el_server_php_list.lng +++ b/interface/web/admin/lib/lang/el_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> 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 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/en_server_php_list.lng +++ b/interface/web/admin/lib/lang/en_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng index 111628b720..8d62ee8919 100755 --- a/interface/web/admin/lib/lang/es_server_php_list.lng +++ b/interface/web/admin/lib/lang/es_server_php_list.lng @@ -5,4 +5,5 @@ $wb['list_head_txt'] = 'Versiones adicionales de PHP'; $wb['name_txt'] = 'Versión de PHP'; $wb['server_id_txt'] = 'Servidor'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_php_list.lng b/interface/web/admin/lib/lang/fi_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/fi_server_php_list.lng +++ b/interface/web/admin/lib/lang/fi_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_php_list.lng b/interface/web/admin/lib/lang/fr_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/fr_server_php_list.lng +++ b/interface/web/admin/lib/lang/fr_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_php_list.lng b/interface/web/admin/lib/lang/hr_server_php_list.lng index 9e9c0de986..1851ac8395 100644 --- a/interface/web/admin/lib/lang/hr_server_php_list.lng +++ b/interface/web/admin/lib/lang/hr_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Klijent'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_php_list.lng b/interface/web/admin/lib/lang/hu_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/hu_server_php_list.lng +++ b/interface/web/admin/lib/lang/hu_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/id_server_php_list.lng b/interface/web/admin/lib/lang/id_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/id_server_php_list.lng +++ b/interface/web/admin/lib/lang/id_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/it_server_php_list.lng b/interface/web/admin/lib/lang/it_server_php_list.lng index 296de9d0a5..5ff1ebe314 100644 --- a/interface/web/admin/lib/lang/it_server_php_list.lng +++ b/interface/web/admin/lib/lang/it_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Aggiungi una nuova versione PHP'; $wb['client_id_txt'] = 'Cliente'; $wb['name_txt'] = 'Nome PHP'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_php_list.lng b/interface/web/admin/lib/lang/ja_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/ja_server_php_list.lng +++ b/interface/web/admin/lib/lang/ja_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_php_list.lng b/interface/web/admin/lib/lang/nl_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/nl_server_php_list.lng +++ b/interface/web/admin/lib/lang/nl_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_php_list.lng b/interface/web/admin/lib/lang/pl_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/pl_server_php_list.lng +++ b/interface/web/admin/lib/lang/pl_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_php_list.lng b/interface/web/admin/lib/lang/pt_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/pt_server_php_list.lng +++ b/interface/web/admin/lib/lang/pt_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_php_list.lng b/interface/web/admin/lib/lang/ro_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/ro_server_php_list.lng +++ b/interface/web/admin/lib/lang/ro_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_php_list.lng b/interface/web/admin/lib/lang/ru_server_php_list.lng index 5c84917f15..5be582f23d 100644 --- a/interface/web/admin/lib/lang/ru_server_php_list.lng +++ b/interface/web/admin/lib/lang/ru_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Добавить новую верÑию PHP'; $wb['client_id_txt'] = 'ID Клиента'; $wb['name_txt'] = 'Ð˜Ð¼Ñ PHP'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/se_server_php_list.lng b/interface/web/admin/lib/lang/se_server_php_list.lng index 451236d1ca..b2f8b55112 100644 --- a/interface/web/admin/lib/lang/se_server_php_list.lng +++ b/interface/web/admin/lib/lang/se_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Lägg till ny PHP-version'; $wb['client_id_txt'] = 'Kund'; $wb['name_txt'] = 'PHP-namn'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_php_list.lng b/interface/web/admin/lib/lang/sk_server_php_list.lng index 62cbe61687..291302cbb7 100644 --- a/interface/web/admin/lib/lang/sk_server_php_list.lng +++ b/interface/web/admin/lib/lang/sk_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'Add new PHP version'; $wb['client_id_txt'] = 'Client'; $wb['name_txt'] = 'PHP Name'; $wb['active_txt'] = 'Active'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_php_list.lng b/interface/web/admin/lib/lang/tr_server_php_list.lng index 06319e9855..4468e7ead9 100644 --- a/interface/web/admin/lib/lang/tr_server_php_list.lng +++ b/interface/web/admin/lib/lang/tr_server_php_list.lng @@ -5,4 +5,5 @@ $wb['add_new_record_txt'] = 'PHP Sürümü Ekle'; $wb['client_id_txt'] = 'Müşteri'; $wb['name_txt'] = 'PHP Adı'; $wb['active_txt'] = 'Etkin'; +$wb['usage_txt'] = 'Usage count'; ?> diff --git a/interface/web/admin/server_php_list.php b/interface/web/admin/server_php_list.php index 7d69ab7d25..a3c4d6354f 100644 --- a/interface/web/admin/server_php_list.php +++ b/interface/web/admin/server_php_list.php @@ -48,6 +48,16 @@ $app->uses('listform_actions'); $app->listform_actions->SQLOrderBy = "ORDER BY server_php.server_id, server_php.name"; +$app->listform_actions->SQLExtSelect = "(SELECT + COUNT(w.server_id) + FROM + server_php s LEFT JOIN web_domain w ON (w.fastcgi_php_version LIKE CONCAT(s.name, '%') AND s.server_id=w.server_id) + WHERE + server_php.server_php_id=s.server_php_id + GROUP BY + server_php.server_php_id +) AS 'usage'"; + $app->listform_actions->onLoad(); diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm index 9833eb1e7e..dd6547ba56 100644 --- a/interface/web/admin/templates/server_php_list.htm +++ b/interface/web/admin/templates/server_php_list.htm @@ -19,6 +19,7 @@ <th data-column="server_id"><tmpl_var name="server_id_txt"></th> <th class="small-col" data-column="client_id"><tmpl_var name="client_id_txt"></th> <th data-column="name"><tmpl_var name="name_txt"></th> + <th data-column="usage"><tmpl_var name="usage_txt"></th> <th class="text-right">{tmpl_var name='search_limit'}</th> </tr> <tr> @@ -26,6 +27,7 @@ <td><select class="form-control" name="search_server_id">{tmpl_var name='search_server_id'}</select></td> <td><select class="form-control" name="search_client_id">{tmpl_var name='search_client_id'}</select></td> <td><input class="form-control" type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td> + <td></td> <td class="text-right"> <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="admin/server_php_list.php"><span class="icon icon-filter"></span></button> </td> @@ -38,6 +40,7 @@ <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="server_id"}</a></td> <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="client_id"}</a></td> <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td> + <td><a href="#" data-load-content="admin/server_php_edit.php?id={tmpl_var name='id'}">{tmpl_var name="usage"}</a></td> <td class="text-right"> <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/server_php_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </td> -- GitLab From f15676b55ed4d769aa105e555511e2bcd32dc2df Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Tue, 19 May 2020 10:58:41 +0200 Subject: [PATCH 273/571] UseFtpUsers is deprecated --- install/tpl/fedora_pureftpd_conf.master | 7 ------- 1 file changed, 7 deletions(-) diff --git a/install/tpl/fedora_pureftpd_conf.master b/install/tpl/fedora_pureftpd_conf.master index 5b9d6a2deb..c22646322f 100644 --- a/install/tpl/fedora_pureftpd_conf.master +++ b/install/tpl/fedora_pureftpd_conf.master @@ -241,13 +241,6 @@ MinUID 500 -# Do not use the /etc/ftpusers file to disable accounts. We're already -# using MinUID to block users with uid < 500 - -UseFtpUsers no - - - # Allow FXP transfers for authenticated users. AllowUserFXP no -- GitLab From f518b8520d49c2ef08b46067b9108d77fa4236c2 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Tue, 19 May 2020 13:43:39 +0200 Subject: [PATCH 274/571] include EL8 also in the fpm workaround in the nginx module --- server/plugins-available/nginx_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index c1262f69eb..68e295a97a 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2728,7 +2728,7 @@ class nginx_plugin { foreach($rh_releasefiles as $rh_file) { if(file_exists($rh_file) && (filesize($rh_file) > 0)) { $tmp = file_get_contents($rh_file); - if(preg_match('/[67]+\.[0-9]+/m', $tmp)) { + if(preg_match('/[678]+\.[0-9]+/m', $tmp)) { $tpl->setVar('fpm_group', $data['new']['system_group']); $tpl->setVar('fpm_listen_group', $data['new']['system_group']); } -- GitLab From fe4fd73f314dda7d0581b06ef4a00b1c99cf9d24 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Tue, 19 May 2020 17:00:48 +0200 Subject: [PATCH 275/571] fixed package manager detection in monitor_system_update.inc.php --- .../lib/classes/cron.d/100-monitor_system_update.inc.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_system_update.inc.php b/server/lib/classes/cron.d/100-monitor_system_update.inc.php index 34f944fa67..cab5f68edb 100644 --- a/server/lib/classes/cron.d/100-monitor_system_update.inc.php +++ b/server/lib/classes/cron.d/100-monitor_system_update.inc.php @@ -159,6 +159,7 @@ class cronjob_monitor_system_update extends cronjob { * Fetch the output */ $data['output'] = shell_exec('zypper lu'); + } elseif(file_exists('/etc/redhat-release')) { /* * update and find the upgrade. @@ -168,13 +169,14 @@ class cronjob_monitor_system_update extends cronjob { /* try to figure out the default package manager first */ if(file_exists('/usr/bin/dnf') && (is_link('/usr/bin/yum'))) { $rhPkgMgr = 'dnf'; - } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum')) || (!is_link('/usr/bin/yum'))) { + } elseif(file_exists('/usr/bin/dnf') && (!file_exists('/usr/bin/yum'))) { $rhPkgMgr = 'dnf'; } else { $rhPkgMgr = 'yum'; } - $aptData = shell_exec($rhPkgMgr. ' -q list updates'); + $aptData = shell_exec($rhPkgMgr. ' -q list updates'); + if ($aptData == '') { /* There is nothing to update! */ $state = 'ok'; @@ -188,7 +190,8 @@ class cronjob_monitor_system_update extends cronjob { /* * Fetch the output - */ + */ + $data['output'] = shell_exec($rhPkgMgr. ' -q list updates'); } else { -- GitLab From dbfab6b6cd0cfb67c5dfdd84b164bb5466292d78 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 21 May 2020 16:07:12 -0600 Subject: [PATCH 276/571] fix various ispcmail issues. fixes #5620 --- interface/lib/classes/ispcmail.inc.php | 9 ++++++--- interface/web/login/lib/lang/ar.lng | 1 + interface/web/login/lib/lang/bg.lng | 1 + interface/web/login/lib/lang/br.lng | 1 + interface/web/login/lib/lang/ca.lng | 1 + interface/web/login/lib/lang/cz.lng | 1 + interface/web/login/lib/lang/de.lng | 1 + interface/web/login/lib/lang/dk.lng | 1 + interface/web/login/lib/lang/el.lng | 1 + interface/web/login/lib/lang/en.lng | 13 +++++++------ interface/web/login/lib/lang/es.lng | 1 + interface/web/login/lib/lang/fi.lng | 1 + interface/web/login/lib/lang/fr.lng | 1 + interface/web/login/lib/lang/hr.lng | 1 + interface/web/login/lib/lang/hu.lng | 1 + interface/web/login/lib/lang/id.lng | 1 + interface/web/login/lib/lang/it.lng | 1 + interface/web/login/lib/lang/ja.lng | 1 + interface/web/login/lib/lang/nl.lng | 1 + interface/web/login/lib/lang/pl.lng | 1 + interface/web/login/lib/lang/pt.lng | 1 + interface/web/login/lib/lang/ro.lng | 1 + interface/web/login/lib/lang/ru.lng | 1 + interface/web/login/lib/lang/se.lng | 1 + interface/web/login/lib/lang/sk.lng | 1 + interface/web/login/lib/lang/tr.lng | 1 + interface/web/login/password_reset.php | 26 +++++++++++++++++--------- 27 files changed, 54 insertions(+), 18 deletions(-) diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php index 522fd1a71b..fbf5f84dca 100644 --- a/interface/lib/classes/ispcmail.inc.php +++ b/interface/lib/classes/ispcmail.inc.php @@ -169,7 +169,7 @@ class ispcmail { $this->smtp_host = $value; break; case 'smtp_port': - $this->smtp_port = $value; + if(intval($value) > 0) $this->smtp_port = $value; break; case 'smtp_user': $this->smtp_user = $value; @@ -586,8 +586,8 @@ class ispcmail { */ private function _smtp_login() { $this->_smtp_conn = fsockopen(($this->smtp_crypt == 'ssl' ? 'tls://' : '') . $this->smtp_host, $this->smtp_port, $errno, $errstr, 30); - $response = fgets($this->_smtp_conn, 515); if(empty($this->_smtp_conn)) return false; + $response = fgets($this->_smtp_conn, 515); //Say Hello to SMTP if($this->smtp_helo == '') $this->detectHelo(); @@ -607,8 +607,11 @@ class ispcmail { } stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false); + stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer_name', false); stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true); - stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); + if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) { + return false; + } } //AUTH LOGIN diff --git a/interface/web/login/lib/lang/ar.lng b/interface/web/login/lib/lang/ar.lng index 6d2e8b3b31..a50df19db4 100644 --- a/interface/web/login/lib/lang/ar.lng +++ b/interface/web/login/lib/lang/ar.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'A new password will be generated and send to your email $wb['pw_reset'] = 'The password has been reset and send to your email address.'; $wb['pw_error'] = 'Username or email address does not match.'; $wb['pw_error_noinput'] = 'Please enter email address and username.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.'; $wb['user_regex_error'] = 'Username contains unallowed characters or is longer then 64 characters.'; diff --git a/interface/web/login/lib/lang/bg.lng b/interface/web/login/lib/lang/bg.lng index 3d1aaae5e8..8081ec8097 100644 --- a/interface/web/login/lib/lang/bg.lng +++ b/interface/web/login/lib/lang/bg.lng @@ -3,6 +3,7 @@ $wb['pass_reset_txt'] = 'Ðова парола ще бъде генериран $wb['pw_reset'] = 'Ðовата ви парола беше изпратена на електронната ви поща.'; $wb['pw_error'] = 'ГреÑно потребителÑкото име или електронна поща.'; $wb['pw_error_noinput'] = 'ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ потребителÑко име и електронна поща.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Ðовата парола за Ð²Ð°ÑˆÐ¸Ñ ISPConfig 3 контролен панел е:'; $wb['pw_reset_mail_title'] = 'Ðова парола за Ð²Ð°ÑˆÐ¸Ñ ISPConfig 3 контролен панел'; $wb['user_regex_error'] = 'ПотребителÑко име contains unallowed characters or is longer then 64 characters.'; diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng index 9baaf55212..33cddc8fb3 100644 --- a/interface/web/login/lib/lang/br.lng +++ b/interface/web/login/lib/lang/br.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uma nova senha foi gerada e será enviada para você no $wb['pw_reset'] = 'Senha redefinida! Ela será enviada para você no e-mail cadastrado no sistema.'; $wb['pw_error'] = 'Nome do usuário ou e-mail não coincidem.'; $wb['pw_error_noinput'] = 'Favor informar nome do usuário e e-mail válidos.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'A senha para esta conta no ISPConfig foi redefinida. A nova senha é: '; $wb['pw_reset_mail_title'] = 'A senha para esta conta no ISPConfig foi redefinida.'; $wb['user_regex_error'] = 'O nome do usuário contém menos de 1 ou mais de 64 caracteres ou contém caracteres inválidos.'; diff --git a/interface/web/login/lib/lang/ca.lng b/interface/web/login/lib/lang/ca.lng index 17c427714b..8c672b59c5 100644 --- a/interface/web/login/lib/lang/ca.lng +++ b/interface/web/login/lib/lang/ca.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Un nouveau mot de passe vous sera envoyé à votre adre $wb['pw_reset'] = 'Le mot de passe a été réinitialisé, et vous a été envoyé à votre adresse e-mail.'; $wb['pw_error'] = 'Le nom d\'utilisateur et/ou L\'adresse e-mail ne correspondent pas.'; $wb['pw_error_noinput'] = 'Entrez votre nom d\'utilisateur et votre adresse e-mail.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Le mot de passe d\'accès à votre panel a été réinitialisé. Le nouveau mot de passe est : '; $wb['pw_reset_mail_title'] = 'Le mot de passe d\'accès à votre panel a été réinitialisé.'; $wb['user_regex_error'] = 'Le nom d\'utilisateur contient des caractères incorrects ou contient plus de 64 caractères.'; diff --git a/interface/web/login/lib/lang/cz.lng b/interface/web/login/lib/lang/cz.lng index 065f6fc865..9b22d7d3c7 100644 --- a/interface/web/login/lib/lang/cz.lng +++ b/interface/web/login/lib/lang/cz.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Bude Vám vygenerováno a zasláno nové heslo na e-mai $wb['pw_reset'] = 'Heslo bylo resetováno a zasláno na Váš e-mail.'; $wb['pw_error'] = 'Uživatelské jméno nebo e-mail nesouhlasÃ.'; $wb['pw_error_noinput'] = 'ProsÃm zadejte uživatelské jméno a e-mail.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'VaÅ¡e heslo do ISPConfigu bylo resetováno. Nové heslo je: '; $wb['pw_reset_mail_title'] = 'Heslo do ISPConfigu bylo resetováno.'; $wb['user_regex_error'] = 'Uživatelské jméno obsahuje nepovolené znaky nebo je delÅ¡Ã než 64 znaků.'; diff --git a/interface/web/login/lib/lang/de.lng b/interface/web/login/lib/lang/de.lng index 217e5c51b0..446f04edc8 100644 --- a/interface/web/login/lib/lang/de.lng +++ b/interface/web/login/lib/lang/de.lng @@ -8,6 +8,7 @@ $wb['pw_reset'] = 'Das Passwort wurde zurückgesetzt und wird per E-Mail an Sie $wb['pw_reset_act'] = 'Ein Aktivierungslink wurde per E-Mail an Sie geschickt. Bitte bestätigen Sie die Anforderung eines neuen Passwortes.'; $wb['pw_error'] = 'Benutzername oder E-Mail Adresse stimmen nicht überein.'; $wb['pw_error_noinput'] = 'Bitte geben Sie Ihre E-Mail Adresse und Ihren Benutzernamen ein.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Das Passwort wurde zurückgesetzt. Das neue Passwort lautet: '; $wb['pw_reset_mail_title'] = 'Ihr Passwort wurde zurückgesetzt'; $wb['pw_reset_act_mail_msg'] = 'Bitte bestätigen Sie die Anforderung eines neuen Passworts, indem Sie folgenden Link besuchen: '; diff --git a/interface/web/login/lib/lang/dk.lng b/interface/web/login/lib/lang/dk.lng index 48e7885ec5..8a104c45be 100644 --- a/interface/web/login/lib/lang/dk.lng +++ b/interface/web/login/lib/lang/dk.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'En ny adgangskode vil blive genereret og sendt til din $wb['pw_reset'] = 'Adgangskoden er blevet nulstillet og sendt til din e-mail adresse.'; $wb['pw_error'] = 'Brugernavn eller e-mail adresse matcher ikke.'; $wb['pw_error_noinput'] = 'Indtast e-mail adresse og brugernavn.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Adgangskoden til din ISPConfig 3 kontrol panel konto er blevet nulstillet. Den nye adgangskode er: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol panel adgangskode er blevet nulstillet.'; $wb['user_regex_error'] = 'Brugernavn indeholder Ikke-tilladte karakterer eller er længer end 64 karaktere.'; diff --git a/interface/web/login/lib/lang/el.lng b/interface/web/login/lib/lang/el.lng index c4e7518904..8a6ed3387f 100644 --- a/interface/web/login/lib/lang/el.lng +++ b/interface/web/login/lib/lang/el.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Ένα νÎο συνθηματικό θα δημιου $wb['pw_reset'] = 'Το νÎο συνθηματικό δημιουÏγηθήκε και στάλθηκε στο e-mail που δηλώσατε'; $wb['pw_error'] = 'Το όνομα χÏήστη ή το email δεν ταιÏιάζουν'; $wb['pw_error_noinput'] = 'ΠαÏακαλοÏμε εισάγετε διεÏθυνση email και όνομα χÏήστη'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Ο κωδικός σας για το εÏγαλείο διαχείÏισης ISPConfig 3 Îχει αÏχικοποιηθεί. Το νÎο συνθηματικό είναι: '; $wb['pw_reset_mail_title'] = 'το συνθηματικό σας για το εÏγαλείο διαχείÏισης ISPConfig 3 Îχει αÏχικοποιηθεί.'; $wb['user_regex_error'] = 'Το όνομα χÏήστη πεÏιÎχει μη επιτÏεπόμενους χαÏακτήÏες ή το μÎγεθος του ξεπεÏνά του 64 χαÏακτήÏες.'; diff --git a/interface/web/login/lib/lang/en.lng b/interface/web/login/lib/lang/en.lng index 2db2d49f94..44844f089b 100644 --- a/interface/web/login/lib/lang/en.lng +++ b/interface/web/login/lib/lang/en.lng @@ -2,19 +2,20 @@ $wb['error_user_password_empty'] = "Username or Password empty."; $wb['error_user_password_incorrect'] = "Username or Password wrong."; $wb['error_user_blocked'] = "User is blocked."; -$wb['error_user_too_many_logins'] = "To many wrong login's, Please retry it after 15 minutes"; -$wb['pass_reset_txt'] = 'A new password will be generated and send to your email address if the email address entered below matches the email address in your client settings.'; -$wb['pw_reset'] = 'The password has been reset and send to your email address.'; -$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.'; +$wb['error_user_too_many_logins'] = "Too many failed login attempts. Please retry after 15 minutes"; +$wb['pass_reset_txt'] = 'A new password will be generated and sent to your email address if the email address entered below matches the email address in your client settings.'; +$wb['pw_reset'] = 'The password has been reset and sent to your email address.'; +$wb['pw_reset_act'] = 'You have been sent a password reset link. Please visit the link to confirm your password reset request.'; $wb['pw_error'] = 'Username or email address does not match.'; $wb['pw_error_noinput'] = 'Please enter email address and username.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset'; $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['user_regex_error'] = 'Username contains unallowed characters or is longer than 64 characters.'; $wb['pw_error_length'] = 'The password length is < 1 or > 256 characters.'; -$wb['email_error'] = 'Email contains unallowed characters or has a invalid format.'; +$wb['email_error'] = 'Email contains unallowed characters or has an invalid format.'; $wb['login_txt'] = "Login"; $wb['username_txt'] = "Username"; $wb['password_txt'] = "Password"; @@ -28,7 +29,7 @@ $wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.<br />The default theme as been activated automatically.'; $wb['stay_logged_in_txt'] = 'Keep me logged in'; $wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.'; -$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.'; +$wb['lost_password_function_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.'; ?> diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng index c7576d509d..98c94443c5 100755 --- a/interface/web/login/lib/lang/es.lng +++ b/interface/web/login/lib/lang/es.lng @@ -16,6 +16,7 @@ $wb['pw_button_txt'] = 'Reenviar contraseña'; $wb['pw_error'] = 'El usuario o la cuenta de correo no coinciden.'; $wb['pw_error_length'] = 'La longitud de la contraseña es superior a 64 caracteres.'; $wb['pw_error_noinput'] = 'Por favor, introduzca la dirección de correo y el nombre de usuario.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_lost_txt'] = 'Olvidé la contraseña'; $wb['pw_reset'] = 'La nueva contraseña ha sido generada y enviada a su cuenta de correo.'; $wb['pw_reset_mail_msg'] = 'La contraseña de su cuenta de panel de control ISPConfig 3 ha sido regenerada. La nueva contraseña es: '; diff --git a/interface/web/login/lib/lang/fi.lng b/interface/web/login/lib/lang/fi.lng index e2cc04da8a..8198dd4822 100755 --- a/interface/web/login/lib/lang/fi.lng +++ b/interface/web/login/lib/lang/fi.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uusi salasana luodaan ja lähetetään asiakastiedoissa $wb['pw_reset'] = 'Salasana on vaihdettu ja lähetetty sähköpostiisi.'; $wb['pw_error'] = 'Käyttäjätunnusta tai sähköpostiosoitetta ei löydy.'; $wb['pw_error_noinput'] = 'Anna sähköpostiosoite ja käyttäjätunnus.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Käyttäjätunnuksesi salasana ISPConfi3 Hallintapaneeliin on vaihdettu. Uusi salasanasi: '; $wb['pw_reset_mail_title'] = 'ISPConfi3 Hallintapaneelin salasana on vaihdettu.'; $wb['user_regex_error'] = 'Käyttäjänimi sisältää kiellettyjä merkkejä tai on yli 64 merkkiä pitkä.'; diff --git a/interface/web/login/lib/lang/fr.lng b/interface/web/login/lib/lang/fr.lng index ac4f3c2d78..f067751aa9 100644 --- a/interface/web/login/lib/lang/fr.lng +++ b/interface/web/login/lib/lang/fr.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Un nouveau mot de passe vous sera envoyé à votre adre $wb['pw_reset'] = 'Le mot de passe a été réinitialisé, et vous a été envoyé à votre adresse e-mail.'; $wb['pw_error'] = 'Le nom d’utilisateur ou l’adresse e-mail ne correspondent pas.'; $wb['pw_error_noinput'] = 'Saisissez votre nom d’utilisateur et votre adresse e-mail.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Le mot de passe d’accès à votre Panel a été réinitialisé. Le nouveau mot de passe est : '; $wb['pw_reset_mail_title'] = 'Le mot de passe d’accès à votre Panel a été réinitialisé.'; $wb['user_regex_error'] = 'Le nom d’utilisateur contient des caractères incorrects ou contient plus de 64 caractères.'; diff --git a/interface/web/login/lib/lang/hr.lng b/interface/web/login/lib/lang/hr.lng index a2920e6178..193123557a 100644 --- a/interface/web/login/lib/lang/hr.lng +++ b/interface/web/login/lib/lang/hr.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Nova Å¡ifra će biti generirana i poslana na email ako $wb['pw_reset'] = 'Å ifra je resetirana i poslana na vaÅ¡u email adresu.'; $wb['pw_error'] = 'KorisniÄko ime ili Å¡ifra nisu ispravni.'; $wb['pw_error_noinput'] = 'Unesite email adresu i korisniÄko ime.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Å ifra za ISPConfig 3 control panel raÄun je resetirana. VaÅ¡a nova Å¡ifra je: '; $wb['pw_reset_mail_title'] = 'Resetirana ISPConfig 3 control panel Å¡ifra.'; $wb['user_regex_error'] = 'KorisniÄko ime sadrži nedozvoljene znakove ili je dulje od 64 znaka.'; diff --git a/interface/web/login/lib/lang/hu.lng b/interface/web/login/lib/lang/hu.lng index 7548c01de3..b6adb6b19d 100644 --- a/interface/web/login/lib/lang/hu.lng +++ b/interface/web/login/lib/lang/hu.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Új jelszót generáltunk és email cÃmére elküldjü $wb['pw_reset'] = 'Jelszavát reseteltük és elküldtük email cÃmére.'; $wb['pw_error'] = 'Felhasználónév vagy email cÃm nem egyezik.'; $wb['pw_error_noinput'] = 'Kérem üsse be email cÃmét és felahsználónevét.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel hozzáfárás módosÃtva. Az új jelszó: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel jelszó módosÃtva.'; $wb['user_regex_error'] = 'Felhasználónév érvénytelen karaktereket tartalmaz, vagy több mint 64 karakter'; diff --git a/interface/web/login/lib/lang/id.lng b/interface/web/login/lib/lang/id.lng index accdcbc3c4..35e3675a9d 100644 --- a/interface/web/login/lib/lang/id.lng +++ b/interface/web/login/lib/lang/id.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Kata sandi baru telah dibuat dan dikirim ke alamat emai $wb['pw_reset'] = 'Kata sandi telah direset dan telah dikirim ke alamat email Anda.'; $wb['pw_error'] = 'Nama pengguna atau alamat email tidak cocok.'; $wb['pw_error_noinput'] = 'Masukkan alamat email dan nama pengguna.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Kata sandi untuk control panel ISPConfig 3 Anda telah direset. Kata sandi yang baru adalah: '; $wb['pw_reset_mail_title'] = 'Kata sandi Control Panel ISPConfig 3 telah direset.'; $wb['user_regex_error'] = 'Nama Pengguna mengandung karakter yang tidak diperbolehkan atau lebih dari 64 karakter.'; diff --git a/interface/web/login/lib/lang/it.lng b/interface/web/login/lib/lang/it.lng index 6d23aa0ccb..0d3ec93c9b 100644 --- a/interface/web/login/lib/lang/it.lng +++ b/interface/web/login/lib/lang/it.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Una nuova password sarà generata e spedita alla tua e $wb['pw_reset'] = 'La password è stata reimpostata e spedita al tuo indirizzo mail.'; $wb['pw_error'] = 'Nome utente o e-mail non corrispondenti.'; $wb['pw_error_noinput'] = 'Inserisci nome utente e indirizzo e-mail.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'La password nel tuo pannello di controllo è stata reimpostata. La nuova password è: '; $wb['pw_reset_mail_title'] = 'Password del pannello di controllo reimpostata.'; $wb['user_regex_error'] = 'Nome utente contenente caratteri non permessi oppure più lungo di 64 caratteri.'; diff --git a/interface/web/login/lib/lang/ja.lng b/interface/web/login/lib/lang/ja.lng index 8318ef9263..4b9e2c6236 100644 --- a/interface/web/login/lib/lang/ja.lng +++ b/interface/web/login/lib/lang/ja.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'æ–°ã—ã„パスワードをメールã§é€ã‚Šã¾ã—㟠$wb['pw_reset'] = 'パスワードをリセットã—ã¾ã—ãŸã€‚æ–°ã—ã„パスワードをメールã§é€ä¿¡ã—ãŸã®ã§ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã‚’確èªã—ã¦ãã ã•ã„。'; $wb['pw_error'] = 'ユーザーåã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒä¸€è‡´ã—ã¾ã›ã‚“。'; $wb['pw_error_noinput'] = 'メールアドレスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼åを入力ã—ã¦ãã ã•ã„。'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'ISPConfig 3 ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«ã®ãƒ‘スワードをリセットã—ã¾ã—ãŸã€‚æ–°ã—ã„パスワードã¯æ¬¡ã®é€šã‚Šã§ã™ï¼š'; $wb['pw_reset_mail_title'] = 'ISPConfig3 ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«ã®ãƒ‘スワードをリセットã—ã¾ã—ãŸã€‚'; $wb['user_regex_error'] = 'ユーザーåã«ä¸æ£ãªæ–‡å—ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯64æ–‡å—を超ãˆã¦ã„ã¾ã™ã€‚'; diff --git a/interface/web/login/lib/lang/nl.lng b/interface/web/login/lib/lang/nl.lng index ca641e3b02..2c98275fd4 100644 --- a/interface/web/login/lib/lang/nl.lng +++ b/interface/web/login/lib/lang/nl.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Een nieuw wachtwoord zal worden gegenereerd en per e-ma $wb['pw_reset'] = 'Het wachtwoord is gereset en is verzonden naar uw e-mailadres.'; $wb['pw_error'] = 'Gebruikersnaam of e-mailadres komt niet overeen.'; $wb['pw_error_noinput'] = 'Voer a.u.b. een e-mailadres en gebruikersnaam in.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Het wachtwoord dat toegang biedt tot uw ISPConfig 3 control panel account is gereset. Het nieuwe wachtwoord is: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel wachtwoord is gereset.'; $wb['user_regex_error'] = 'Gebruikersnaam bevat karakters die niet zijn toegestaan of is langer dan 64 karakters.'; diff --git a/interface/web/login/lib/lang/pl.lng b/interface/web/login/lib/lang/pl.lng index 702b50117f..2367ede54d 100644 --- a/interface/web/login/lib/lang/pl.lng +++ b/interface/web/login/lib/lang/pl.lng @@ -3,6 +3,7 @@ $wb['pass_reset_txt'] = 'Nowe hasÅ‚o zostanie wygenerowane i wysÅ‚ane na Twój a $wb['pw_reset'] = 'Nowe hasÅ‚o zostaÅ‚o wygenerowane i wysÅ‚ane na Twój adres e-mail.'; $wb['pw_error'] = 'Nazwa użytkownika lub e-mail nie pasujÄ… do siebie.'; $wb['pw_error_noinput'] = 'Podaj nazwÄ™ użytkownika i adres e-mail.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'HasÅ‚o do Twojego panelu w ISPConfig 3 zostaÅ‚o zresetowane. Twoje nowe hasÅ‚o to: '; $wb['pw_reset_mail_title'] = 'HasÅ‚o do panelu w ISPConfig 3 zostaÅ‚o zresetowane.'; $wb['user_regex_error'] = 'Nazwa użytkownika zawiera niedozwolone znaki lub jest dÅ‚uższa niż 64 znaki.'; diff --git a/interface/web/login/lib/lang/pt.lng b/interface/web/login/lib/lang/pt.lng index 576d7ca44c..4be018a50c 100644 --- a/interface/web/login/lib/lang/pt.lng +++ b/interface/web/login/lib/lang/pt.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Uma nova senha foi gerada e ser-lhe-á enviada para o c $wb['pw_reset'] = 'Senha restabelecida! Ser-lhe-á enviada para o correio eletrônico registado no sistema.'; $wb['pw_error'] = 'Nome de utilizador ou correio eletrônico não coincidem.'; $wb['pw_error_noinput'] = 'Favor informar nome de utilizador e endereço de correio válidos.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'A senha do painel de controle foi restabelecida. A nova senha é: '; $wb['pw_reset_mail_title'] = 'A senha do painel de controle foi restabelecida.'; $wb['user_regex_error'] = 'O nome de utilizador contém mais de 64 caracteres ou contém caracteres inválidos.'; diff --git a/interface/web/login/lib/lang/ro.lng b/interface/web/login/lib/lang/ro.lng index 3eb550194a..7676d928d5 100644 --- a/interface/web/login/lib/lang/ro.lng +++ b/interface/web/login/lib/lang/ro.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'O noua parola va fi generata si trimisa catre mail-ul t $wb['pw_reset'] = 'Parola a fost schimbata si trimisa la mail-ul tau.'; $wb['pw_error'] = 'Username sau email nu s epotrivesc'; $wb['pw_error_noinput'] = 'introduceti email address si username.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Parola la panoul de control a fost resetata . Noua parola este : '; $wb['pw_reset_mail_title'] = 'parola panoului de control a fost schimbata'; $wb['user_regex_error'] = 'Username contine caractere nepermise sau are mai mult de 64 caractere'; diff --git a/interface/web/login/lib/lang/ru.lng b/interface/web/login/lib/lang/ru.lng index ab19c92b13..4f1b4e86fc 100644 --- a/interface/web/login/lib/lang/ru.lng +++ b/interface/web/login/lib/lang/ru.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Ðовый пароль будет Ñгенериров $wb['pw_reset'] = 'Пароль был Ñброшен и и отправлен вам на почту.'; $wb['pw_error'] = 'Логин или E-mail Ð°Ð´Ñ€ÐµÑ Ð½Ðµ Ñовпадают.'; $wb['pw_error_noinput'] = 'Введите E-mail Ð°Ð´Ñ€ÐµÑ Ð¸ логин.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Пароль в панель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ISPConfig 3Был Ñброшен. Ðовый пароль: '; $wb['pw_reset_mail_title'] = 'Пароль Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ панели ISPConfig 3 был Ñброшен.'; $wb['user_regex_error'] = 'Логин Ñодержит неправильные Ñимволы, или длиннее 64 Ñимволов.'; diff --git a/interface/web/login/lib/lang/se.lng b/interface/web/login/lib/lang/se.lng index 280332789b..4f8a8a4443 100644 --- a/interface/web/login/lib/lang/se.lng +++ b/interface/web/login/lib/lang/se.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'A new password will be generated and send to your email $wb['pw_reset'] = 'Lösenordet har Ã¥terställts och skickats till din epostadress.'; $wb['pw_error'] = 'Användarenmn eller lösenord matchar inte.'; $wb['pw_error_noinput'] = 'Vänligen fyll i epostadress och användarnamn.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.'; $wb['user_regex_error'] = 'Username contains unallowed characters or is longer then 64 characters.'; diff --git a/interface/web/login/lib/lang/sk.lng b/interface/web/login/lib/lang/sk.lng index b03a645564..8c211b19be 100644 --- a/interface/web/login/lib/lang/sk.lng +++ b/interface/web/login/lib/lang/sk.lng @@ -7,6 +7,7 @@ $wb['pass_reset_txt'] = 'Nové heslo bude vytvorené a poslané na e-mailovú ad $wb['pw_reset'] = 'Heslo bolo resetnuté a posielané na e-mailovú adresu.'; $wb['pw_error'] = 'UžÃvateľské meno alebo e-mailová adresa nezodpovedá.'; $wb['pw_error_noinput'] = 'ProsÃm, zadajte e-mailovú adresu a UžÃvateľské meno.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'Heslo k svojmu úÄtu na ovládacom paneli bol resetnuté. Nové heslo je:'; $wb['pw_reset_mail_title'] = 'Heslo ovládacieho panelu bolo resetnuté.'; $wb['user_regex_error'] = 'UžÃvateľské meno obsahuje neplatné znaky, alebo je dlhÅ¡ia ako 64 znakov.'; diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng index 863a6310d5..7bcc75f694 100644 --- a/interface/web/login/lib/lang/tr.lng +++ b/interface/web/login/lib/lang/tr.lng @@ -8,6 +8,7 @@ $wb['pw_reset'] = 'Parolanız sıfırlandı ve e-posta adresinize gönderildi.'; $wb['pw_reset_act'] = 'Size bir etkinleÅŸtirme baÄŸlantısı gönderildi. Parola isteÄŸinizi onaylamak için baÄŸlantıya tıklayın.'; $wb['pw_error'] = 'Kullanıcı adı ya da e-posta adresiniz doÄŸru deÄŸil.'; $wb['pw_error_noinput'] = 'Lütfen e-posta adresinizi ya da kullanıcı adınızı yazın.'; +$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.'; $wb['pw_reset_mail_msg'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı. Yeni parolanız: '; $wb['pw_reset_mail_title'] = 'ISPConfig 3 Kontrol Paneli parolanız sıfırlandı'; $wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control Panel parola sıfırlama isteÄŸini onaylayın'; diff --git a/interface/web/login/password_reset.php b/interface/web/login/password_reset.php index 1550ae8af2..0a15b0c52b 100644 --- a/interface/web/login/password_reset.php +++ b/interface/web/login/password_reset.php @@ -71,8 +71,7 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' $username = $client['username']; $password_hash = sha1(uniqid('ispc_pw')); $app->db->query("UPDATE sys_user SET lost_password_reqtime = NOW(), lost_password_hash = ? WHERE username = ?", $password_hash, $username); - $app->tpl->setVar("message", $wb['pw_reset_act']); - + $server_domain = (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']); if($server_domain == '_') { $tmp = explode(':',$_SERVER["HTTP_HOST"]); @@ -81,9 +80,9 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' } if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') $server_domain = 'http://' . $server_domain; else $server_domain = 'https://' . $server_domain; - + if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '443') $server_domain .= ':' . $_SERVER['SERVER_PORT']; - + $app->uses('getconf,ispcmail'); $server_config_array = $app->getconf->get_global_config(); $mail_config = $server_config_array['mail']; @@ -94,10 +93,14 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' $app->ispcmail->setSender($mail_config['admin_mail'], $mail_config['admin_name']); $app->ispcmail->setSubject($wb['pw_reset_act_mail_title']); $app->ispcmail->setMailText($wb['pw_reset_act_mail_msg'].$server_domain . '/login/password_reset.php?username=' . urlencode($username) . '&hash=' . urlencode($password_hash)); - $app->ispcmail->send(array($client['contact_name'] => $client['email'])); + $send_result = $app->ispcmail->send(array($client['contact_name'] => $client['email'])); $app->ispcmail->finish(); - $app->tpl->setVar("msg", $wb['pw_reset_act']); + if($send_result !== false) { + $app->tpl->setVar("msg", $wb['pw_reset_act']); + } else { + $app->tpl->setVar("error", $wb['pw_reset_error_smtp_connection']); + } } else { $app->tpl->setVar("error", $wb['pw_error']); } @@ -132,7 +135,6 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' $username = $client['username']; $app->db->query("UPDATE sys_user SET passwort = ?, lost_password_hash = '', lost_password_reqtime = NULL WHERE username = ?", $new_password_encrypted, $username); $app->db->query("UPDATE client SET password = ? WHERE username = ?", $new_password_encrypted, $username); - $app->tpl->setVar("message", $wb['pw_reset']); $app->uses('getconf,ispcmail'); $mail_config = $server_config_array['mail']; @@ -143,11 +145,17 @@ if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != ' $app->ispcmail->setSender($mail_config['admin_mail'], $mail_config['admin_name']); $app->ispcmail->setSubject($wb['pw_reset_mail_title']); $app->ispcmail->setMailText($wb['pw_reset_mail_msg'].$new_password); - $app->ispcmail->send(array($client['contact_name'] => $client['email'])); + $send_result = $app->ispcmail->send(array($client['contact_name'] => $client['email'])); $app->ispcmail->finish(); $app->plugin->raiseEvent('password_reset', true); - $app->tpl->setVar("msg", $wb['pw_reset']); + + if($send_result !== false) { + $app->tpl->setVar("msg", $wb['pw_reset']); + } else { + $app->tpl->setVar("error", $wb['pw_reset_error_smtp_connection']); + } + } else { $app->tpl->setVar("error", $wb['pw_error']); } -- GitLab From f6ec140f871e5a4f5c2d2162129b0d11274783c4 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 29 Apr 2020 15:38:02 +0200 Subject: [PATCH 277/571] Refactor multiple TODOs into two. This removes duplication of the zone_file_prefix var. It might be nice to make it configurable in a follow up. --- server/plugins-available/bind_plugin.inc.php | 97 +++++--------------- 1 file changed, 23 insertions(+), 74 deletions(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index e8b72b5dbc..f2dc603ec5 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -86,11 +86,8 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - //TODO : change this when distribution information has been integrated into server record - $filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.'; - $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); - if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false; + if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix().$domain)) return false; //* Check Entropy if (file_get_contents('/proc/sys/kernel/random/entropy_avail') < 400) { @@ -129,9 +126,7 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - //TODO : change this when distribution information has been integrated into server record - $filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.'; - + $filespre = $this->zone_file_prefix(); $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false; @@ -168,9 +163,7 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - //TODO : change this when distribution information has been integrated into server record - $filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.'; - + $filespre = $this->zone_file_prefix(); $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); if (!file_exists($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain)) return false; @@ -203,13 +196,10 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - //TODO : change this when distribution information has been integrated into server record - $filespre = (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.'; - $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); unlink($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+*'); - unlink($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain.'.signed'); + unlink($dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix().$domain.'.signed'); unlink($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.'); if ($app->dbmaster !== $app->db) $app->dbmaster->query('UPDATE dns_soa SET dnssec_info=\'\', dnssec_initialized=\'N\' WHERE id=?', intval($data['new']['id'])); @@ -278,13 +268,7 @@ class bind_plugin { } $tpl->setLoop('zones', $records); - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($zone['origin'], 0, -1)); - } - else { - $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1)); - } + $filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($zone['origin'], 0, -1)); $old_zonefile = @file_get_contents($filename); file_put_contents($filename, $tpl->grab()); @@ -327,13 +311,7 @@ class bind_plugin { } else if ($data['new']['dnssec_wanted'] == 'Y' && $data['old']['dnssec_initialized'] == 'N') $this->soa_dnssec_create($data); else if ($data['new']['dnssec_wanted'] == 'N' && $data['old']['dnssec_initialized'] == 'Y') { //delete old signed file if dnssec is no longer wanted - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - else { - $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } + $filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1)); if(is_file($filename.'.signed')) unlink($filename.'.signed'); } else if ($data['new']['dnssec_wanted'] == 'Y') $this->soa_dnssec_update($data); // END DNSSEC @@ -345,13 +323,7 @@ class bind_plugin { //* Delete old domain file, if domain name has been changed if($data['old']['origin'] != $data['new']['origin']) { - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $filename = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - else { - $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } + $filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1)); if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); @@ -378,14 +350,7 @@ class bind_plugin { $this->write_named_conf($data, $dns_config); //* Delete the domain file - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $zone_file_name = $dns_config['bind_zonefiles_dir'].'/pri/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - else { - $zone_file_name = $dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - + $zone_file_name = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1)); if(is_file($zone_file_name)) unlink($zone_file_name); if(is_file($zone_file_name.'.err')) unlink($zone_file_name.'.err'); $app->log("Deleting BIND domain file: ".$zone_file_name, LOGLEVEL_DEBUG); @@ -425,23 +390,12 @@ class bind_plugin { //* Delete old domain file, if domain name has been changed if($data['old']['origin'] != $data['new']['origin']) { - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $filename = $dns_config['bind_zonefiles_dir'].'/sec/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - else { - $filename = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - + $filename = $dns_config['bind_zonefiles_dir'].'/' . $this->zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1)); if(is_file($filename)) unset($filename); } //* Ensure that the named slave directory is writable by the named user - if (file_exists('/etc/gentoo-release')) { - $slave_record_dir = $dns_config['bind_zonefiles_dir'].'/sec'; - } else { - $slave_record_dir = $dns_config['bind_zonefiles_dir'].'/slave'; - } + $slave_record_dir = $dns_config['bind_zonefiles_dir'].'/'.$this->slave_zone_file_prefix(); if(!@is_dir($slave_record_dir)) mkdir($slave_record_dir, 0770); chown($slave_record_dir, $dns_config['bind_user']); chgrp($slave_record_dir, $dns_config['bind_group']); @@ -463,14 +417,7 @@ class bind_plugin { $this->write_named_conf($data, $dns_config); //* Delete the domain file - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $zone_file_name = $dns_config['bind_zonefiles_dir'].'/sec/'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - else { - $zone_file_name = $dns_config['bind_zonefiles_dir'].'/slave/sec.'.str_replace("/", "_", substr($data['old']['origin'], 0, -1)); - } - + $zone_file_name = $dns_config['bind_zonefiles_dir'].'/' . $this->slave_zone_file_prefix() . str_replace("/", "_", substr($data['old']['origin'], 0, -1)); if(is_file($zone_file_name)) unlink($zone_file_name); $app->log("Deleting BIND domain file for secondary zone: ".$zone_file_name, LOGLEVEL_DEBUG); @@ -527,16 +474,8 @@ class bind_plugin { //* Check if the current zone that triggered this function has at least one NS record - //TODO : change this when distribution information has been integrated into server record - if (file_exists('/etc/gentoo-release')) { - $pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/pri/'; - $sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/sec/'; - - } - else { - $pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/pri.'; - $sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/slave/sec.'; - } + $pri_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/'.$this->zone_file_prefix(); + $sec_zonefiles_path = $dns_config['bind_zonefiles_dir'].'/'.$this->slave_zone_file_prefix(); //* Loop trough zones foreach($tmps as $tmp) { @@ -603,6 +542,16 @@ class bind_plugin { } + function zone_file_prefix() { + //TODO : change this when distribution information has been integrated into server record + return (file_exists('/etc/gentoo-release')) ? 'pri/' : 'pri.'; + } + function slave_zone_file_prefix() { + //TODO : change this when distribution information has been integrated into server record + return (file_exists('/etc/gentoo-release')) ? 'sec/' : 'slave/sec.'; + } + + } // end class -- GitLab From 2548cc13b35e87138f49ab0475c7e807666d75a2 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 19:48:18 +0200 Subject: [PATCH 278/571] Added translation option for form title --- ar_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ bg_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ br_system_config.lng | 95 ++++++++++++++++++++++++++++++++++++++++++ ca_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ cz_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ de_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ dk_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ el_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ en_system_config.lng | 99 ++++++++++++++++++++++++++++++++++++++++++++ es_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ fi_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ fr_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ hr_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ hu_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ id_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ it_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ ja_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ nl_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ pl_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ pt_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ ro_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ ru_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ se_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ sk_system_config.lng | 96 ++++++++++++++++++++++++++++++++++++++++++ tr_system_config.lng | 90 ++++++++++++++++++++++++++++++++++++++++ 25 files changed, 2396 insertions(+) create mode 100644 ar_system_config.lng create mode 100644 bg_system_config.lng create mode 100644 br_system_config.lng create mode 100644 ca_system_config.lng create mode 100644 cz_system_config.lng create mode 100644 de_system_config.lng create mode 100644 dk_system_config.lng create mode 100644 el_system_config.lng create mode 100644 en_system_config.lng create mode 100644 es_system_config.lng create mode 100644 fi_system_config.lng create mode 100644 fr_system_config.lng create mode 100644 hr_system_config.lng create mode 100644 hu_system_config.lng create mode 100644 id_system_config.lng create mode 100644 it_system_config.lng create mode 100644 ja_system_config.lng create mode 100644 nl_system_config.lng create mode 100644 pl_system_config.lng create mode 100644 pt_system_config.lng create mode 100644 ro_system_config.lng create mode 100644 ru_system_config.lng create mode 100644 se_system_config.lng create mode 100644 sk_system_config.lng create mode 100644 tr_system_config.lng diff --git a/ar_system_config.lng b/ar_system_config.lng new file mode 100644 index 0000000000..3a7ef0796c --- /dev/null +++ b/ar_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; +$wb['dbname_prefix_txt'] = 'Database name prefix'; +$wb['dbuser_prefix_txt'] = 'Database user prefix'; +$wb['shelluser_prefix_txt'] = 'Shell user prefix'; +$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; +$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/bg_system_config.lng b/bg_system_config.lng new file mode 100644 index 0000000000..4e6add8a6d --- /dev/null +++ b/bg_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['warning'] = 'Редактирай тези променливи внимателно! Ðе премахвай префикÑите на ÑиÑтемата.'; +$wb['dbname_prefix_txt'] = 'Име на префикÑа в базата данни'; +$wb['dbuser_prefix_txt'] = 'ПотребителÑки Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð² базата данни'; +$wb['shelluser_prefix_txt'] = 'Shell user prefix'; +$wb['ftpuser_prefix_txt'] = 'ПотребителÑки Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð½Ð° FTP'; +$wb['dbname_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на префикÑа.'; +$wb['dbuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на префикÑа.'; +$wb['ftpuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на ftp префикÑа.'; +$wb['shelluser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на shell префикÑа.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'Ðко използвате този модул, вашите клиенти могат да изберет Ñамо един от домейните, които админиÑтратора Ñъздава за Ñ‚ÑÑ…. Те не могат да оÑвободÑÑ‚ и редактират домейн - полето. Вие , Ñ‚Ñ€Ñбва отново да влезете Ñлед промÑна на тази ÑтойноÑÑ‚, за да направите промените видими.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на webdav префикÑа.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_custom_login_txt'] = 'Разреши различни имена за вход'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Мейлинг лиÑÑ‚ Ð°Ð´Ñ€ÐµÑ URL'; +$wb['admin_mail_txt'] = 'ÐдминиÑтраторÑки емаил'; +$wb['admin_name_txt'] = 'ÐдминиÑтраторÑки имена'; +$wb['system_config_desc_txt'] = ''; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/br_system_config.lng b/br_system_config.lng new file mode 100644 index 0000000000..f5ed36e9ea --- /dev/null +++ b/br_system_config.lng @@ -0,0 +1,95 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = 'Configurações do Sistema'; +$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.'; +$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)'; +$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom (clientes)'; +$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!'; +$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba'; +$wb['tab_change_warning_txt'] = 'Alerta de alterações'; +$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.'; +$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados'; +$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados'; +$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell'; +$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav'; +$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp'; +$wb['vhost_subdomains_txt'] = 'Adicionar subdomÃnios como um site'; +$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomÃnios vhost no sistema!'; +$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domÃnio como um site'; +$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domÃnios vhost no sistema!'; +$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.'; +$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.'; +$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.'; +$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.'; +$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin'; +$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado'; +$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail'; +$wb['webmail_url_txt'] = 'URL do webmail'; +$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails'; +$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails'; +$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin'; +$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domÃnios'; +$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domÃnios que o administrador adicionar para eles. Eles não podem editar o campo domÃnio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.'; +$wb['new_domain_txt'] = 'Código HTML para criar um novo domÃnio'; +$wb['webftp_url_txt'] = 'URL do FTPweb'; +$wb['admin_mail_txt'] = 'Administrador(es) de e-mails'; +$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar'; +$wb['admin_name_txt'] = 'Nome do administrador'; +$wb['maintenance_mode_txt'] = 'Modo manutenção'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema'; +$wb['smtp_host_txt'] = 'Host SMTP'; +$wb['smtp_port_txt'] = 'Porta SMTP'; +$wb['smtp_user_txt'] = 'Usuário SMTP'; +$wb['smtp_pass_txt'] = 'Senha do SMTP'; +$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.'; +$wb['use_combobox_txt'] = 'Usar combobox jQuery UI'; +$wb['use_loadindicator_txt'] = 'Usar indicador de carga'; +$wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).'; +$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.'; +$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.'; +$wb['phpmyadmin_url_note_txt'] = 'Ãrea reservada:'; +$wb['webmail_url_note_txt'] = 'Ãrea reservada:'; +$wb['available_dashlets_note_txt'] = 'Dashlets disponÃveis:'; +$wb['admin_dashlets_left_txt'] = 'Restrições de dashlets para administradores'; +$wb['admin_dashlets_right_txt'] = 'Permissões de dashlets para administradores'; +$wb['reseller_dashlets_left_txt'] = 'Restrições de dashlets para revendas'; +$wb['reseller_dashlets_right_txt'] = 'Permissões de dashlets para revendas'; +$wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes'; +$wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes'; +$wb['customer_no_template_txt'] = 'No. do gabarito do cliente'; +$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.'; +$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente'; +$wb['customer_no_counter_txt'] = 'Contador do código de cliente'; +$wb['session_timeout_txt'] = 'Duração da sessão (minutos)'; +$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"'; +$wb['No'] = 'Não'; +$wb['min_password_length_txt'] = 'Comprimento mÃnimo da senha'; +$wb['min_password_strength_txt'] = 'Dificuldade mÃnima da senha'; +$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; +$wb['default_webserver_txt'] = 'Servidor web padrão'; +$wb['default_dnsserver_txt'] = 'Servidor dns padrão'; +$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; +$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; +$wb['company_name_txt'] = 'Nome da empresa para tÃtulo da página'; +$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites'; +$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso'; +$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso'; +$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido'; +$wb['ca_name_txt'] = 'Nome'; +$wb['ca_issue_txt'] = 'Questão'; +$wb['ca_wildcard_txt'] = 'Usar curingas'; +$wb['ca_iodef_txt'] = 'Definições de E/S'; +$wb['active_txt'] = 'Ativo'; +$wb['btn_save_txt'] = 'Salvar'; +$wb['btn_cancel_txt'] = 'Cancelar'; +$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)'; +?> diff --git a/ca_system_config.lng b/ca_system_config.lng new file mode 100644 index 0000000000..f721f688c5 --- /dev/null +++ b/ca_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['dbname_prefix_txt'] = 'Database name prefix'; +$wb['dbuser_prefix_txt'] = 'Database user prefix'; +$wb['shelluser_prefix_txt'] = 'Shell user prefix'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain limits in client module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['admin_mail_txt'] = 'Administrator\'s e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrator\'s name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/cz_system_config.lng b/cz_system_config.lng new file mode 100644 index 0000000000..4ee62ece32 --- /dev/null +++ b/cz_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s vÃce, než jednÃm klientem.'; +$wb['dbname_prefix_txt'] = 'Prefix názvu databáze'; +$wb['dbuser_prefix_txt'] = 'Prefix uživatele databáze'; +$wb['shelluser_prefix_txt'] = 'Prefix shell uživatele'; +$wb['ftpuser_prefix_txt'] = 'Prefix FTP uživatele'; +$wb['dbname_prefix_error_regex'] = 'Znak nenà povolen v prefixu databázovém názvu.'; +$wb['dbuser_prefix_error_regex'] = 'Znak nenà povolen v prefixu databázového uživatele.'; +$wb['ftpuser_prefix_error_regex'] = 'Znak nenà povolen v prefixu FTP uživatele.'; +$wb['shelluser_prefix_error_regex'] = 'Znak nenà povolen v prefixu shell uživatele.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Ikonový odkaz na aplikaci PHPMyAdmin v seznamu databázÃ'; +$wb['mailboxlist_webmail_link_txt'] = 'Ikonový odkaz na aplikaci Webmail v seznamu e-mailových schránek'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['dashboard_atom_url_admin_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (admina)'; +$wb['dashboard_atom_url_reseller_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (prodejce)'; +$wb['dashboard_atom_url_client_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (klienty)'; +$wb['webdavuser_prefix_txt'] = 'Prefix webdav uživatele'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['use_domain_module_txt'] = 'Použijte modul-domény pro pÅ™idánà nových domén'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML vytvoÅ™it novou doménu'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['admin_mail_txt'] = 'E-mail Administrátora'; +$wb['admin_name_txt'] = 'Jméno Administrátora'; +$wb['enable_custom_login_txt'] = 'Povolit vlastnà pÅ™ihlaÅ¡ovacà jméno u e-mailové schránky'; +$wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konferencà seznamu e-mailových konferencÃ'; +$wb['mailmailinglist_url_txt'] = 'E-mailové konference URL'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['maintenance_mode_txt'] = 'Režim údržby'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'PoužÃt (zvolit) SMTP server pro zasÃlánà systémových mailů'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP uživatel'; +$wb['smtp_pass_txt'] = 'SMTP heslo'; +$wb['smtp_crypt_txt'] = 'PoužÃt SSL/TLS Å¡ifrované spojenà pro SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Zadejte prosÃm jméno Administrátora a e-mailovou adresu Administrátora, pokud chcete použÃvat zvolený SMTP server pro zasÃlánà systémových mailů.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Záložka zmÄ›na varovánÃ'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'VytvoÅ™it subdomény jako webové stránky'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin neplatné URL'; +$wb['use_combobox_txt'] = 'Použità jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Použità indikátoru zatÞenÃ'; +$wb['f5_to_reload_js_txt'] = 'Pokud vypnete tuto volbu, zÅ™ejmÄ› budete muset použÃvat klávesu F5, aby internetový prohlÞeÄ znovu naÄetl JavaScript knihovny nebo budete muset ruÄnÄ› vyprázdňovat mezipaměť (cache) vaÅ¡eho internetového prohlÞeÄe.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Ukázat kartu automatická odpovÄ›Ä v podrobnostech u e-mailové schránky'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Ukázat kartu e-mailové filtry v podrobnostech u e-mailové schránky'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Ukázat kartu vlastnà pravidla v podrobnostech u e-mailové schránky'; +$wb['webmail_url_error_regex'] = 'Neplatný webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Zástupný symbol'; +$wb['webmail_url_note_txt'] = 'Zástupný symbol'; +$wb['available_dashlets_note_txt'] = 'Dostupné moduly pro nástÄ›nku:'; +$wb['admin_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (admina)'; +$wb['admin_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (admina)'; +$wb['reseller_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (prodejce)'; +$wb['reseller_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (prodejce)'; +$wb['client_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (klienty)'; +$wb['client_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (klienty)'; +$wb['customer_no_template_txt'] = 'Zákaznické ÄÃslo - Å¡ablona'; +$wb['customer_no_template_error_regex_txt'] = 'Zákaznické ÄÃslo Å¡ablony obsahuje neplatné znaky'; +$wb['customer_no_start_txt'] = 'Zákaznické ÄÃslo - poÄáteÄnà hodnota'; +$wb['customer_no_counter_txt'] = 'Zákaznické ÄÃslo - ÄÃtaÄ'; +$wb['session_timeout_txt'] = 'ÄŒasový limit relace (minuty)'; +$wb['session_allow_endless_txt'] = 'Povolit - zůstat pÅ™ihlášen'; +$wb['No'] = 'Ne'; +$wb['min_password_length_txt'] = 'Minimálnà délka hesla'; +$wb['min_password_strength_txt'] = 'Minimálnà sÃla hesla'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['default_mailserver_txt'] = 'Výchozà E-mailový server'; +$wb['default_webserver_txt'] = 'Výchozà webový server'; +$wb['default_dnsserver_txt'] = 'Výchozà DNS server'; +$wb['default_slave_dnsserver_txt'] = 'Výchozà sekundárnà DNS server'; +$wb['default_dbserver_txt'] = 'Výchozà databázový server'; +$wb['company_name_txt'] = 'Název spoleÄnosti v panelu (listu) webového prohlÞeÄe'; +$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použÃt kartu možnostà pro weby.'; +$wb['custom_login_text_txt'] = 'Vlastnà text na pÅ™ihlaÅ¡ovacà stránce'; +$wb['custom_login_link_txt'] = 'Vlastnà odkaz (URL) na pÅ™ihlaÅ¡ovacà stránce (vlastnà text)'; +$wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastnà odkaz na pÅ™ihlaÅ¡ovacà stránce'; +$wb['ca_name_txt'] = 'Název vydavatele'; +$wb['ca_issue_txt'] = 'Doména vydavatele'; +$wb['ca_wildcard_txt'] = 'PoužÃt Wildcard (*)'; +$wb['ca_critical_txt'] = 'PÅ™Ãsná kontrola'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'AktivnÃ'; +$wb['btn_save_txt'] = 'Uložit'; +$wb['btn_cancel_txt'] = 'ZruÅ¡it'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/de_system_config.lng b/de_system_config.lng new file mode 100644 index 0000000000..f981cce832 --- /dev/null +++ b/de_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = 'Systemkonfiguration'; +$wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.'; +$wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.'; +$wb['tab_change_warning_txt'] = 'Reiter Wechsel Warnung'; +$wb['tab_change_discard_txt'] = 'Verwerfe Änderungen bei Reiter Wechsel'; +$wb['tab_change_warning_note_txt'] = 'Zeigt eine Warnung an, wenn der Reiter in einem Formular gewechselt wird und Daten geändert wurden.'; +$wb['dbname_prefix_txt'] = 'Datenbank Namen Präfix'; +$wb['dbuser_prefix_txt'] = 'Datenbank Benutzer Präfix'; +$wb['shelluser_prefix_txt'] = 'Shell Benutzer Präfix'; +$wb['ftpuser_prefix_txt'] = 'FTP Benutzer Präfix'; +$wb['vhost_subdomains_txt'] = 'Subdomains als Webseite anlegen'; +$wb['vhost_subdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Subdomains im System vorhanden sind!'; +$wb['vhost_aliasdomains_txt'] = 'Aliasdomains als Webseite anlegen'; +$wb['vhost_aliasdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Aliasdomains im System vorhanden sind!'; +$wb['dbname_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Namen Präfix.'; +$wb['dbuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Benutzer Präfix.'; +$wb['ftpuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in FTP Benutzer Präfix.'; +$wb['shelluser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Shell Benutzer Präfix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link zu phpMyAdmin in der Datenbankliste'; +$wb['mailboxlist_webmail_link_txt'] = 'Link zu Webmail in der Mailboxliste'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'phpMyAdmin URL'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (für Admins)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (für Reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (für Kunden)'; +$wb['webdavuser_prefix_txt'] = 'WebDAV Benutzer Präfix'; +$wb['webdavuser_prefix_error_regex'] = 'Zeichen nicht zulässig im WebDAV Benutzer Präfix.'; +$wb['use_domain_module_txt'] = 'Domain Limits im Kundenmodul benutzen, um neue Domains hinzuzufügen'; +$wb['use_domain_module_hint'] = 'Falls Sie die Domain Limits benutzen, können Ihre Kunden nur eine der Domains auswählen, die der Admin für sie angelegt hat. Die Kunden können das Domain-Feld nicht frei editieren. Sie müssen sich neu einloggen, wenn Sie diesen Wert ändern.'; +$wb['new_domain_txt'] = 'HTML Text zum Anlegen einer neuen Domain'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Abweichenden Login Namen erlauben'; +$wb['mailmailinglist_link_txt'] = 'Link zur Mailingliste in der Mailinglisten Ãœbersicht'; +$wb['mailmailinglist_url_txt'] = 'Mailinglisten URL'; +$wb['admin_mail_txt'] = 'Administrator E-Mail'; +$wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort'; +$wb['admin_name_txt'] = 'Name des Administrators'; +$wb['maintenance_mode_txt'] = 'Wartungsmodus'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen'; +$wb['smtp_host_txt'] = 'SMTP Server'; +$wb['smtp_port_txt'] = 'SMTP Port'; +$wb['smtp_user_txt'] = 'SMTP Benutzer'; +$wb['smtp_pass_txt'] = 'SMTP Passwort'; +$wb['smtp_crypt_txt'] = 'SSL/TLS verschlüsselte Verbindung für SMTP'; +$wb['use_combobox_txt'] = 'jQuery UI Combobox benutzen'; +$wb['use_loadindicator_txt'] = 'Laden Grafik anzeigen'; +$wb['f5_to_reload_js_txt'] = 'Wenn Sie den Wert ändern, müssen Sie F5 drücken, damit der Browser die JavaScript Bibliotheken neu lädt, oder Ihren Browser Cache leeren.'; +$wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL'; +$wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Ãœberprüfung für den Begriff <b>web<b>.'; +$wb['backups_include_into_web_quota_txt'] = 'Backups in Web Quota hinzuzählen.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails'; +$wb['webmail_url_error_regex'] = 'Falsche Webmail URL'; +$wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden'; +$wb['phpmyadmin_url_note_txt'] = 'Platzhalter:'; +$wb['webmail_url_note_txt'] = 'Platzhalter:'; +$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links'; +$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts'; +$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links'; +$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts'; +$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links'; +$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts'; +$wb['customer_no_template_txt'] = 'Kundennummer-Vorlage'; +$wb['customer_no_template_error_regex_txt'] = 'Die Kundennummer-Vorlage enthält ungültige Zeichen'; +$wb['customer_no_start_txt'] = 'Kundennummer Startwert'; +$wb['customer_no_counter_txt'] = 'Kundennummer Zähler'; +$wb['session_timeout_txt'] = 'Session-Timeout (Minuten)'; +$wb['session_allow_endless_txt'] = '"Eingeloggt bleiben" aktivieren'; +$wb['No'] = 'Nein'; +$wb['min_password_length_txt'] = 'Minimale Passwortlänge'; +$wb['min_password_strength_txt'] = 'Minimale Passwortstärke'; +$wb['company_name_txt'] = 'Firmenname fuer den Seitentitel'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Wildcard verwenden'; +$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktiv'; +$wb['btn_save_txt'] = 'Speichern'; +$wb['btn_cancel_txt'] = 'Abbrechen'; +$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)'; +?> diff --git a/dk_system_config.lng b/dk_system_config.lng new file mode 100644 index 0000000000..5f298f091a --- /dev/null +++ b/dk_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (forhandler)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (klient)'; +$wb['warning'] = 'Rediger disse værdier forsigtigt! Fjern ikke præfikser pÃ¥ et system med mere end én klient.'; +$wb['tab_change_discard_txt'] = 'Kassér ændringer pÃ¥ fanen forandring'; +$wb['tab_change_warning_txt'] = 'Fane ændrings advarsel'; +$wb['tab_change_warning_note_txt'] = 'Vis en advarsel pÃ¥ fanen ændring i redigere formularer, hvis nogen data er blevet ændret af brugeren.'; +$wb['dbname_prefix_txt'] = 'Database navn prefix'; +$wb['dbuser_prefix_txt'] = 'Database bruger prefix'; +$wb['shelluser_prefix_txt'] = 'Shell bruger prefix'; +$wb['webdavuser_prefix_txt'] = 'Webdav bruger prefix'; +$wb['ftpuser_prefix_txt'] = 'FTP bruger prefix'; +$wb['vhost_subdomains_txt'] = 'Opret Sub-domæne som web side'; +$wb['vhost_subdomains_note_txt'] = 'Du kan ikke deaktivere dette, sÃ¥ længe der findes vhost sub-domæner i systemet!'; +$wb['dbname_prefix_error_regex'] = 'Char ikke tilladt i database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char ikke tilladt i database bruger prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char ikke tilladt i ftp bruger prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char ikke tilladt i shell bruger prefix.'; +$wb['webdavuser_prefix_error_regex'] = 'Char ikke tilladt i webdav bruger prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link til phpmyadmin i DB liste'; +$wb['enable_custom_login_txt'] = 'Tillad brugerdefinerede login-navn'; +$wb['mailboxlist_webmail_link_txt'] = 'Link til webmail i Postboks liste'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['mailmailinglist_link_txt'] = 'Link til mailing list i Mailing list liste'; +$wb['mailmailinglist_url_txt'] = 'Mail-list URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Brug domæne grænser i klient-modul for at tilføje nye domæner'; +$wb['use_domain_module_hint'] = 'Hvis du bruger domæne grænser, kan dine kunder kun vælge et af de omrÃ¥der admin skabte for dem. De kan ikke frit redigere domæne-feltet. Du er nødt til at re-login efter at ændre denne værdi, for at gøre ændringerne synlige.'; +$wb['new_domain_txt'] = 'HTML for at oprette et nyt domæne'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['admin_mail_txt'] = 'Administratorer e-mail'; +$wb['monitor_key_txt'] = 'Monitor nøgleord'; +$wb['admin_name_txt'] = 'Administratorer navn'; +$wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP bruger'; +$wb['smtp_pass_txt'] = 'SMTP adgangskode'; +$wb['smtp_crypt_txt'] = 'Brug SSL/TLS krypteret forbindelse for SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'Ugyldigt phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Brug jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Brug Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'Hvis du ændrer dette, kan du blive nødt til at trykke pÃ¥ F5 for at browseren genindlæser JavaScript-biblioteker eller tømme browserens cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Deaktiver klient-brugernavns check for ordet \'web\'.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Vis autoresponder tab i mail kontooplysninger'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Vis mail filter tab i mail kontooplysninger'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Vis custom mailfilter tab i mail kontooplysninger'; +$wb['webmail_url_error_regex'] = 'Ugyldigt webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Pladsholder:'; +$wb['webmail_url_note_txt'] = 'Pladsholder:'; +$wb['available_dashlets_note_txt'] = 'Tilgængelig Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Forhandler Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Forhandler Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Kunde Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Kunde Dashlets'; +$wb['customer_no_template_txt'] = 'Kunde Nr. skabelon'; +$wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugyldigt karaktere'; +$wb['customer_no_start_txt'] = 'Kunde Nr. start værdi'; +$wb['customer_no_counter_txt'] = 'Kunde Nr. tæller'; +$wb['session_timeout_txt'] = 'Session timeout (minutter)'; +$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum adgangskode længde'; +$wb['min_password_strength_txt'] = 'Minimum adgangskode styrke'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/el_system_config.lng b/el_system_config.lng new file mode 100644 index 0000000000..17414e666d --- /dev/null +++ b/el_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['warning'] = 'ΕπεξεÏγαστείτε τις τιμÎÏ‚ με Ï€Ïοσοχή! ΜΗΠαφαιÏείτε τα Ï€ÏοθÎματα σε συστήματα με πεÏισσότεÏους από Îναν πελάτες.'; +$wb['dbname_prefix_txt'] = 'Î Ïόθεμα Ονόματος Βάσης ΔεδομÎνων'; +$wb['dbuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Βάσης ΔεδομÎνων'; +$wb['shelluser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Shell'; +$wb['webdavuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Webdav'; +$wb['ftpuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη FTP'; +$wb['dbname_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του Ονόματος της Βάσης ΔεδομÎνων.'; +$wb['dbuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη της Βάσης ΔεδομÎνων.'; +$wb['ftpuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη ftp.'; +$wb['shelluser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη Shell.'; +$wb['webdavuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη Webdav.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link για το phpmyadmin στη λίστα των βάσεων δεδομÎνων'; +$wb['mailboxlist_webmail_link_txt'] = 'Link για το webmail στην λίστα των θυÏίδων mail'; +$wb['webmail_url_txt'] = 'URL του Webmail'; +$wb['phpmyadmin_url_txt'] = 'URL του PHPMyAdmin'; +$wb['use_domain_module_txt'] = 'ΧÏήση του αÏθÏώματος-domain για την Ï€Ïοσθήκη νÎων domains'; +$wb['use_domain_module_hint'] = 'Αν χÏησιμοποιήσετε αυτό το άÏθÏωμα, οι πελάτες σας μποÏοÏν μόνο να διαλÎξουν Îνα από τα domains που δημιοÏÏγησε για αυτοÏÏ‚ ο διαχειÏιστής. Δεν μποÏοÏν να επεξεÏγαστοÏν ελεÏθεÏα τα πεδία του domain.Î ÏÎπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγÎÏ‚ σας, οÏατÎÏ‚.'; +$wb['new_domain_txt'] = 'HTML για την δημιουÏγία domain'; +$wb['webftp_url_txt'] = 'URL του WebFTP'; +$wb['enable_custom_login_txt'] = 'Αποδοχή Ï€ÏοσαÏμοσμÎνου ονόματος login'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'URL της Mailing list '; +$wb['admin_mail_txt'] = 'e-mail ΔιαχειÏιστών'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Όνομα Administrator'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP θÏÏα'; +$wb['smtp_user_txt'] = 'SMTP χÏήστης'; +$wb['smtp_pass_txt'] = 'SMTP συνθηματικό'; +$wb['smtp_crypt_txt'] = 'ΧÏήση κÏυπτογÏαφημÎνης σÏνδεσης SSL/TLS για SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'ΠΑÏακαλοÏμε εισάγετε το όνομα διαχειÏιστή και την διεÏθυνση mail αν θÎλετε να χÏησιμοποιήσετε απόστολή mail με smtp.'; +$wb['tab_change_discard_txt'] = 'ΑκÏÏωση αλλαγών με την αλλαγή καÏÏ„Îλας'; +$wb['tab_change_warning_txt'] = 'Î Ïοειδοποίηση αλλαγής καÏÏ„Îλας'; +$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας Ï€Ïοειδοποίησης κατα την αλλαγή καÏÏ„Îλας σε φόÏμες επεξεÏγασίας που Îχουν Ï„Ïοποποιηθεί από τον χÏήστη.'; +$wb['vhost_subdomains_txt'] = 'ΔημιουÏγία Subdomains ως web site'; +$wb['vhost_subdomains_note_txt'] = 'Δεν μποÏεί να γίνει απενεÏγοποίηση όσο υπάÏχουν vhost subdomains στο σÏστημα!'; +$wb['vhost_aliasdomains_txt'] = 'ΔημιουÏγία aliasdomains ως web site'; +$wb['vhost_aliasdomains_note_txt'] = 'Δεν μποÏεί να γίνει απενεÏγοποίηση όσο υπάÏχουν vhost aliasdomains στο σÏστημα!'; +$wb['phpmyadmin_url_error_regex'] = 'Μη ÎγκυÏο URL phpmyadmin'; +$wb['use_combobox_txt'] = 'ΧÏήση jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'ΧÏήση Load Indicator (ενδεικτή φόÏτωσης)'; +$wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως Ï€ÏÎπει να πατήσετε το F5 για να κάνετε τον φυλλομετÏητη να ξαναφοÏτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετÏητή.'; +$wb['client_username_web_check_disabled_txt'] = 'ΑπενεÏγοποίηση ελÎγχου στο όνομα χÏήστη για την λÎξη \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Αυτόματης Απάντησης στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας ΦίλτÏα mail στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Î ÏοσαÏμοσμÎνοι Κανόνες στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/en_system_config.lng b/en_system_config.lng new file mode 100644 index 0000000000..840b3f434b --- /dev/null +++ b/en_system_config.lng @@ -0,0 +1,99 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb["warning"] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb["dbname_prefix_txt"] = 'Database name prefix'; +$wb["dbuser_prefix_txt"] = 'Database user prefix'; +$wb["shelluser_prefix_txt"] = 'Shell user prefix'; +$wb["webdavuser_prefix_txt"] = 'Webdav user prefix'; +$wb["ftpuser_prefix_txt"] = 'FTP user prefix'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb["dbname_prefix_error_regex"] = 'Char not allowed in database name prefix.'; +$wb["dbuser_prefix_error_regex"] = 'Char not allowed in database user prefix.'; +$wb["ftpuser_prefix_error_regex"] = 'Char not allowed in ftp user prefix.'; +$wb["shelluser_prefix_error_regex"] = 'Char not allowed in shell user prefix.'; +$wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.'; +$wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail'; +$wb["webmail_url_txt"] = 'Webmail URL'; +$wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list'; +$wb["mailmailinglist_url_txt"] = 'Mailing list URL'; +$wb["phpmyadmin_url_txt"] = 'PHPMyAdmin URL'; +$wb["use_domain_module_txt"] = 'Use the domain limits in client module to add new domains'; +$wb["use_domain_module_hint"] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.'; +$wb["new_domain_txt"] = 'HTML to create a new domain'; +$wb["webftp_url_txt"] = 'WebFTP URL'; +$wb['admin_mail_txt'] = 'Administrator\'s e-mail'; +$wb["monitor_key_txt"] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrator\'s name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable "stay logged in"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb["default_mailserver_txt"] = 'Default Mailserver'; +$wb["default_webserver_txt"] = 'Default Webserver'; +$wb["default_dnsserver_txt"] = 'Default DNS Server'; +$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server'; +$wb["default_dbserver_txt"] = 'Default Database Server'; +$wb["company_name_txt"] = "Company Name for the page title"; +$wb["reseller_can_use_options_txt"] = "Reseller can use the option-tab for websites"; +$wb["custom_login_text_txt"] = "Custom Text on Login-Page"; +$wb["custom_login_link_txt"] = "Custom Link on Login-Page"; +$wb["login_link_error_regex"] = "Invalid Link for Custom Login"; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Active'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/es_system_config.lng b/es_system_config.lng new file mode 100644 index 0000000000..7c4525da9a --- /dev/null +++ b/es_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda'; +$wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha'; +$wb['admin_mail_txt'] = 'Correo del administrador'; +$wb['admin_name_txt'] = 'Nombre del administrador'; +$wb['available_dashlets_note_txt'] = 'Componentes disponibles:'; +$wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.'; +$wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda'; +$wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha'; +$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.'; +$wb['company_name_txt'] = 'Nombre de la compañÃa para el tÃtulo de la página'; +$wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión'; +$wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión'; +$wb['customer_no_counter_txt'] = 'Contador de Nº. cliente'; +$wb['customer_no_start_txt'] = 'Valor de inicio de Nº. de cliente'; +$wb['customer_no_template_error_regex_txt'] = 'La plantilla Nº. de cliente contiene caracteres inválidos'; +$wb['customer_no_template_txt'] = 'Plantilla de Nº. de cliente'; +$wb['dashboard_atom_url_admin_txt'] = 'URL del feed atom en el panel (admin)'; +$wb['dashboard_atom_url_client_txt'] = 'URL del feed atom en el panel (cliente)'; +$wb['dashboard_atom_url_reseller_txt'] = 'URL del feed atom en el panel (revendedor)'; +$wb['dblist_phpmyadmin_link_txt'] = 'VÃnculo a phpMyAdmin en la lista de bases de datos'; +$wb['dbname_prefix_error_regex'] = 'Carácter no permitido en el prefijo de nombre de base de datos.'; +$wb['dbname_prefix_txt'] = 'Prefijo del nombre de la base de datos'; +$wb['dbuser_prefix_error_regex'] = 'Carácter no permitido en el nombre del usuario de la base datos.'; +$wb['dbuser_prefix_txt'] = 'Prefijo del usuario de la base de datos'; +$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto'; +$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; +$wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; +$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; +$wb['default_webserver_txt'] = 'Servidor web por defecto'; +$wb['enable_custom_login_txt'] = 'Permitir nombre de inicio de sesión personalizado'; +$wb['f5_to_reload_js_txt'] = 'Si modifica esto, deberá pulsar F5 para que el explorador cargue las librerÃas JavaScript o incluso necesitará borrar la caché de su explorador.'; +$wb['ftpuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario de FTP.'; +$wb['ftpuser_prefix_txt'] = 'Prefijo del usuario de FTP'; +$wb['login_link_error_regex'] = 'Enlace incorrecto para el inicio de sesión personalizado'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar la pestaña del auto-respondedor en los detalles de la cuenta de correo'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar la pestaña filtro de correo personalizado en los detalles de la cuenta de correo'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar la pestaña filtro de correo en los detalles de la cuenta de correo'; +$wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzones de correo'; +$wb['mailmailinglist_link_txt'] = 'VÃnculo a la lista de correos en la lista de la Lista de correos'; +$wb['mailmailinglist_url_txt'] = 'URL a la lista de correos'; +$wb['maintenance_mode_txt'] = 'Modo de mantenimiento'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['min_password_length_txt'] = 'Longitud mÃnima de la contraseña'; +$wb['min_password_strength_txt'] = 'Fortaleza mÃnima de la contraseña'; +$wb['monitor_key_txt'] = 'Palabra clave del Monitor'; +$wb['new_domain_txt'] = 'HTML para la creación de nuevos dominios'; +$wb['No'] = 'No'; +$wb['phpmyadmin_url_error_regex'] = 'URL inválida a phpMyAdmin'; +$wb['phpmyadmin_url_note_txt'] = 'Marcador de posición:'; +$wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin'; +$wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs'; +$wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda'; +$wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha'; +$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"'; +$wb['session_timeout_txt'] = 'Tiempo lÃmite de sesión (minutos)'; +$wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.'; +$wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell'; +$wb['smtp_crypt_txt'] = 'Usar conexión encriptada SSL/TLS para el SMTP'; +$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar correos del sistema'; +$wb['smtp_host_txt'] = 'Host del SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Por favor ingrese el nombre y correo del admin si desea usar el envÃo de correo mediante SMTP.'; +$wb['smtp_pass_txt'] = 'Contraseña del SMTP'; +$wb['smtp_port_txt'] = 'Puerto del SMTP'; +$wb['smtp_user_txt'] = 'Usuario del SMTP'; +$wb['system_config_desc_txt'] = ''; +$wb['tab_change_discard_txt'] = 'Descartar cambios al cambiar de pestaña'; +$wb['tab_change_warning_note_txt'] = 'Mostrar advertencia al cambiar de pestaña en los formularios de edición si se ha cambiado algún parámetro.'; +$wb['tab_change_warning_txt'] = 'Advertencia al cambiar de pestaña'; +$wb['use_combobox_txt'] = 'Usar lista desplegable de jQuery UI'; +$wb['use_domain_module_hint'] = 'Si utiliza los lÃmites de dominio, sus clientes solo podrán seleccionar los dominios que el administrador haya creado para ellos. Los clientes no podrán editar libremente en campo de dominio. Necesitará reiniciar la sesión después de modificar esta opción para que que los cambios surjan efecto.'; +$wb['use_domain_module_txt'] = 'Usar los lÃmites de dominio en el modulo del cliente para agregar nuevos dominios'; +$wb['use_loadindicator_txt'] = 'Usar indicador de carga'; +$wb['vhost_aliasdomains_note_txt'] = 'No puede deshabilitar esto mientras existan host virtuales de alias de dominios en el sistema'; +$wb['vhost_aliasdomains_txt'] = 'Crear alias de dominios como sitios web'; +$wb['vhost_subdomains_note_txt'] = '¡No se puede desactivar esta opción mientras existan sub-dominios con host virtuales en el sistema!'; +$wb['vhost_subdomains_txt'] = 'Crear sub-dominio como sitio web'; +$wb['warning'] = '¡Edite estos valores cuidadosamente! No elimine los prefijos si el sistema contiene más de un cliente.'; +$wb['webdavuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo del usuario de webdav.'; +$wb['webdavuser_prefix_txt'] = 'Prefijo del usuario de Webdav'; +$wb['webftp_url_txt'] = 'Enlace al cliente FTP por web'; +$wb['webmail_url_error_regex'] = 'Dirección del correo web inválida'; +$wb['webmail_url_note_txt'] = 'Marcador de posición:'; +$wb['webmail_url_txt'] = 'URL de correo web'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/fi_system_config.lng b/fi_system_config.lng new file mode 100644 index 0000000000..2cafa6f5bf --- /dev/null +++ b/fi_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.'; +$wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite'; +$wb['dbuser_prefix_txt'] = 'Tietokannan käyttäjätunnuksen etuliite'; +$wb['shelluser_prefix_txt'] = 'Shell-käyttäjätunnuksen etuliite'; +$wb['ftpuser_prefix_txt'] = 'FTP-käyttäjätunnuksen etuliite'; +$wb['dbname_prefix_error_regex'] = 'Tietokannan nimen etuliite on vääränlainen.'; +$wb['dbuser_prefix_error_regex'] = 'Tietokannan käyttäjätunnuksen etuliite on vääränlainen.'; +$wb['ftpuser_prefix_error_regex'] = 'FTP-käyttäjätunnuksen etuliite on vääränlainen.'; +$wb['shelluser_prefix_error_regex'] = 'Shell-käyttäjätunnuksen etuliite on vääränlainen.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Linkki phpMyAdminiin tietokantalistassa'; +$wb['mailboxlist_webmail_link_txt'] = 'Linkki internetpostiin postilaatikkolistassa'; +$wb['webmail_url_txt'] = 'Webmail-osoite'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin-osoite'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/fr_system_config.lng b/fr_system_config.lng new file mode 100644 index 0000000000..3b6fe68521 --- /dev/null +++ b/fr_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'URL du fil de syndication Atom du tableau de bord (client)'; +$wb['warning'] = 'Editez ces valeurs prudemment ! Il n’est pas conseillé de modifier les préfixes lorsque vous avez des clients !'; +$wb['dbname_prefix_txt'] = 'Préfixe du nom de la BDd'; +$wb['dbuser_prefix_txt'] = 'Préfixe de l’utilisateur de la BDd'; +$wb['shelluser_prefix_txt'] = 'Préfixe de l’utilisateur Shell'; +$wb['webdavuser_prefix_txt'] = 'Préfixe de l’utilisateur WebDAV'; +$wb['ftpuser_prefix_txt'] = 'Préfixe de l’utilisateur FTP'; +$wb['dbname_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe du nom de la BDD.'; +$wb['dbuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur de la BDD.'; +$wb['ftpuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur FTP.'; +$wb['shelluser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur Shell.'; +$wb['webdavuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe utilisateur WebDAV.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Lien vers PHPMyAdmin dans la liste des bases'; +$wb['enable_custom_login_txt'] = 'Autoriser les noms d’utilisateurs personnalisés'; +$wb['mailboxlist_webmail_link_txt'] = 'Lien vers le Webmail dans la liste des boîtes mail'; +$wb['webmail_url_txt'] = 'URL du Webmail'; +$wb['mailmailinglist_link_txt'] = 'Lien vers la mailing list dans la liste des Liste de distribution'; +$wb['mailmailinglist_url_txt'] = 'URL des Liste de distribution'; +$wb['phpmyadmin_url_txt'] = 'URL de PHPMyAdmin'; +$wb['use_domain_module_txt'] = 'Utiliser le module de domaine pour ajouter de nouveaux domaines'; +$wb['use_domain_module_hint'] = 'Si vous utilisez ce module, vos utilisateurs peuvent uniquement sélectionner un des domaines que l’admin crée pour eux. Ils ne peuvent pas éditer librement le champ domaine. Vous devez vous identifier à nouveau après avoir modifié cette valeur pour rendre les modifications visibles.'; +$wb['new_domain_txt'] = 'HTML pour créer un nouveau domaine'; +$wb['webftp_url_txt'] = 'URL du WebFTP'; +$wb['admin_mail_txt'] = 'E-mail de l’administrateur'; +$wb['monitor_key_txt'] = 'Mot-clé du moniteur'; +$wb['admin_name_txt'] = 'Nom des administrateurs'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word ’web’.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/hr_system_config.lng b/hr_system_config.lng new file mode 100644 index 0000000000..66931524ec --- /dev/null +++ b/hr_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji viÅ¡e od jednog klijenata.'; +$wb['dbname_prefix_txt'] = 'Prefiks nazivu baze'; +$wb['dbuser_prefix_txt'] = 'Prefiks nazivu korisnika baze'; +$wb['shelluser_prefix_txt'] = 'Prefiks Shell raÄunu'; +$wb['webdavuser_prefix_txt'] = 'Prefix Webdav raÄunu'; +$wb['ftpuser_prefix_txt'] = 'Prefiks FTP raÄunu'; +$wb['dbname_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva baze.'; +$wb['dbuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva korisnika baze.'; +$wb['ftpuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu FTP raÄuna.'; +$wb['shelluser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu Shell raÄuna.'; +$wb['webdavuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu webdav raÄuna.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link za phpmyadmin u DB listi'; +$wb['mailboxlist_webmail_link_txt'] = 'Link za webmail u Mailbox listi'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Koristi modul Domene za dodavanje novih domena'; +$wb['use_domain_module_hint'] = 'Ukoliko koristite ovaj modul, vaÅ¡i klijenti mogu izabrati samo domenu koju im je admin kreirao. Klijenti ne mogu slobodno mijenjati postavke domene. Morate se ponovno logirati nakon mijenjanja ove postavke da bi promjene bile vidljive.'; +$wb['new_domain_txt'] = 'HTML za kreiranje nove domene'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['monitor_key_txt'] = 'Monitoriranje rijeÄi'; +$wb['dashboard_atom_url_admin_txt'] = 'RSS URL za poÄetnu stranicu (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'RSS URL za poÄetnu stranicu (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'RSS URL za poÄetnu stranicu (client)'; +$wb['enable_custom_login_txt'] = 'Dozvoli izbor korisniÄkog imena'; +$wb['mailmailinglist_link_txt'] = 'Link na mailing listu u Mailing listi'; +$wb['mailmailinglist_url_txt'] = 'URL mailing liste'; +$wb['admin_mail_txt'] = 'e-mail administratora'; +$wb['admin_name_txt'] = 'Ime administratora'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/hu_system_config.lng b/hu_system_config.lng new file mode 100644 index 0000000000..6e1f97dfbb --- /dev/null +++ b/hu_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ãœgyfél.'; +$wb['dbname_prefix_txt'] = 'Database name prefix'; +$wb['dbuser_prefix_txt'] = 'Database user prefix'; +$wb['shelluser_prefix_txt'] = 'Shell user prefix'; +$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; +$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/id_system_config.lng b/id_system_config.lng new file mode 100644 index 0000000000..9072d62832 --- /dev/null +++ b/id_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.'; +$wb['dbname_prefix_txt'] = 'Prefiks nama database'; +$wb['dbuser_prefix_txt'] = 'Prefiks pengguna database'; +$wb['shelluser_prefix_txt'] = 'Prefiks pengguna shell'; +$wb['ftpuser_prefix_txt'] = 'Prefiks pengguna FTP'; +$wb['dbname_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks nama database.'; +$wb['dbuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna database.'; +$wb['ftpuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna ftp.'; +$wb['shelluser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna shell.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Tautan ke phpmyadmin di daftar DB'; +$wb['mailboxlist_webmail_link_txt'] = 'Tautan ke webmail di daftar Mailbox'; +$wb['webmail_url_txt'] = 'URL Webmail'; +$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Prefiks pengguna Webdav'; +$wb['webdavuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna webdav.'; +$wb['use_domain_module_txt'] = 'Gunakan modul domain untuk menambahkan domain baru'; +$wb['use_domain_module_hint'] = 'Jika Anda menggunakan modul ini, pelanggan Anda hanya dapat memilih salah satu domain yang dibuat oleh admin untuk mereka. Mereka tidak bisa menyunting dengan bebas kolom domain. Anda harus masuk kembali setelah mengubah nilai ini, agar perubahannya terlihat.'; +$wb['new_domain_txt'] = 'HTML untuk membuat domain baru'; +$wb['webftp_url_txt'] = 'URL WebFTP'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/it_system_config.lng b/it_system_config.lng new file mode 100644 index 0000000000..42a03ed0b8 --- /dev/null +++ b/it_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; +$wb['dbname_prefix_txt'] = 'Prefisso nome database'; +$wb['dbuser_prefix_txt'] = 'Prefisso utente database'; +$wb['shelluser_prefix_txt'] = 'Prefisso utente Shell'; +$wb['ftpuser_prefix_txt'] = 'Prefisso utente FTP'; +$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Crea Subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/ja_system_config.lng b/ja_system_config.lng new file mode 100644 index 0000000000..dfea52b18d --- /dev/null +++ b/ja_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = '値ã®å¤‰æ›´ã«ã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。クライアントãŒåˆ©ç”¨ä¸ã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ—リフィックスã¯å‰Šé™¤ã—ãªã„ã§ãã ã•ã„。'; +$wb['dbname_prefix_txt'] = 'データベースåã®ãƒ—リフィックス'; +$wb['dbuser_prefix_txt'] = 'データベースユーザーåã®ãƒ—リフィックス'; +$wb['shelluser_prefix_txt'] = 'Shellユーザーåã®ãƒ—リフィックス'; +$wb['ftpuser_prefix_txt'] = 'FTPユーザーåã®ãƒ—リフィックス'; +$wb['dbname_prefix_error_regex'] = 'データベースã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; +$wb['dbuser_prefix_error_regex'] = 'データベースユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; +$wb['ftpuser_prefix_error_regex'] = 'FTPユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; +$wb['shelluser_prefix_error_regex'] = 'Shellユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; +$wb['dblist_phpmyadmin_link_txt'] = 'データベースã®ä¸€è¦§ã‹ã‚‰ phpmyadmin ã¸ãƒªãƒ³ã‚¯ã™ã‚‹'; +$wb['mailboxlist_webmail_link_txt'] = 'メールボックスã®ä¸€è¦§ã‹ã‚‰ webmail ã¸ãƒªãƒ³ã‚¯ã™ã‚‹'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/nl_system_config.lng b/nl_system_config.lng new file mode 100644 index 0000000000..358edde69b --- /dev/null +++ b/nl_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['warning'] = 'Edit these values carefully! Verwijder de voorvoegsels niet op systemen met meer dan ♪één klant.'; +$wb['dbname_prefix_txt'] = 'Database naam voorvoegsel'; +$wb['dbuser_prefix_txt'] = 'Database gebruiker voorvoegsel'; +$wb['shelluser_prefix_txt'] = 'Shell gebruiker voorvoegsel'; +$wb['webdavuser_prefix_txt'] = 'Webdav gebruiker voorvoegsel'; +$wb['ftpuser_prefix_txt'] = 'FTP gebruiker voorvoegsel'; +$wb['dbname_prefix_error_regex'] = 'Char niet toegestaan in database naam voorvoegsel.'; +$wb['dbuser_prefix_error_regex'] = 'Char niet toegestaan in database gebruiker voorvoegsel.'; +$wb['ftpuser_prefix_error_regex'] = 'Char niet toegestaan in ftp gebruiker voorvoegsel.'; +$wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker voorvoegsel.'; +$wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst'; +$wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe te voegen'; +$wb['use_domain_module_hint'] = 'Als u deze module gebruikt, kunnen uw klanten alleen de domeinen selecteren die de administrator heeft aangemaakt. klanten kunnen het domein-veld zelf niet wijzigen. Na opnieuw ingelogd te zijn zullen de wijzigingen zichtbaar zijn.'; +$wb['new_domain_txt'] = 'HTML om een nieuw domein te maken'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/pl_system_config.lng b/pl_system_config.lng new file mode 100644 index 0000000000..d309ab812f --- /dev/null +++ b/pl_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['warning'] = 'Edytuj te wartoÅ›ci ostrożnie! Nie usuwaj prefiksów w systemie w wiÄ™cej niż jednym kliencie.'; +$wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych'; +$wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych'; +$wb['shelluser_prefix_txt'] = 'Prefiks użytkownika shell'; +$wb['ftpuser_prefix_txt'] = 'Prefiks użytkownika FTP'; +$wb['dbname_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy bazy danych.'; +$wb['dbuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika bazy danych.'; +$wb['ftpuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika ftp.'; +$wb['shelluser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika shell.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Adres do phpMyAdmin w liÅ›cie baz danych'; +$wb['mailboxlist_webmail_link_txt'] = 'Adres do poczty e-mail w liÅ›cie skrzynek pocztowych'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Użyj moduÅ‚u Domeny do dodawania nowych domen'; +$wb['use_domain_module_hint'] = 'Jeżeli użyjesz tego moduÅ‚u, Twoi użytkownicy bÄ™dÄ… mogli użyć tylko domeny stworzonej im przez administratora. Nie mogÄ… edytować wpisów domeny. Musisz przelogować siÄ™ po zmianie tej wartoÅ›ci, aby zobaczyć widoczne rezultaty.'; +$wb['new_domain_txt'] = 'HTML do stworzenia nowej domeny'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Prefiks użytkownika webdav'; +$wb['webdavuser_prefix_error_regex'] = 'Niedozwolony znak w prefiksie użytkownika webdav.'; +$wb['webftp_url_txt'] = 'Link do WebFTP'; +$wb['enable_custom_login_txt'] = 'Zezwalaj na dowolnÄ… nazwÄ™ loginu'; +$wb['mailmailinglist_link_txt'] = 'Link do listy mailingowej na liÅ›cie list mailingowych'; +$wb['mailmailinglist_url_txt'] = 'URL listy mailingowej'; +$wb['admin_mail_txt'] = 'E-Mail administratora'; +$wb['monitor_key_txt'] = 'Klucz monitora'; +$wb['admin_name_txt'] = 'Nazwa administratora'; +$wb['system_config_desc_txt'] = ''; +$wb['smtp_missing_admin_mail_txt'] = 'Podaj nazwÄ™ administratora oraz adres email jeżeli chcesz użyć wysyÅ‚anie maili przez SMTP.'; +$wb['tab_change_discard_txt'] = 'Porzuć zmiany przy zmianie zakÅ‚adki'; +$wb['tab_change_warning_txt'] = 'Ostrzegaj przy zmianie zakÅ‚adki'; +$wb['tab_change_warning_note_txt'] = 'Pokaż ostrzeżenie przy zmianie zakÅ‚adki jeżeli zostaÅ‚y zmienione dane przez użytkownika.'; +$wb['vhost_subdomains_txt'] = 'Twórz subdomeny jako strony web'; +$wb['vhost_subdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak istniejÄ… w systemie vhosty subdomen.'; +$wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web'; +$wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak istniejÄ… w systemie vhosty aliasdomen.'; +$wb['maintenance_mode_txt'] = 'Tryb serwisowy'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyÅ‚ania powiadomieÅ„ systemowych'; +$wb['smtp_host_txt'] = 'Host SMTP'; +$wb['smtp_port_txt'] = 'Port SMTP'; +$wb['smtp_user_txt'] = 'Użytkownik SMTP'; +$wb['smtp_pass_txt'] = 'HasÅ‚o SMTP'; +$wb['smtp_crypt_txt'] = 'Użyj poÅ‚Ä…czenia szyfrowanego SSL/TLS dla SMTP'; +$wb['phpmyadmin_url_error_regex'] = 'NieprawidÅ‚owy link do phpmyadmin'; +$wb['use_combobox_txt'] = 'Użyj jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Użyj wskaźnika Å‚adowania'; +$wb['f5_to_reload_js_txt'] = 'Jeżeli zmienisz to, możesz potrzebować wcisnąć F5 lub wyczyÅ›cić cache aby przeglÄ…darka przeÅ‚adowaÅ‚a biblioteki JavaScript.'; +$wb['client_username_web_check_disabled_txt'] = 'WyÅ‚Ä…cz sprawdzanie nazwy klienta w poszukiwaniu sÅ‚owa -web-.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ autorespondera w szczegółach konta email.'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ filtra email w szczegółach konta email.'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ wÅ‚asnych filtrów email w szczegółach konta email.'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/pt_system_config.lng b/pt_system_config.lng new file mode 100644 index 0000000000..05edb306d9 --- /dev/null +++ b/pt_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!'; +$wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados'; +$wb['dbuser_prefix_txt'] = 'Prefixo Utilizador da Base de Dados'; +$wb['shelluser_prefix_txt'] = 'Prefixo Utilizador de Shell'; +$wb['ftpuser_prefix_txt'] = 'Prefixo Utilizador FTP'; +$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do nome da Base de Dados!'; +$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador da Base de Dados!'; +$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador FTP!'; +$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador Shell!'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link para phpmyadmin'; +$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail'; +$wb['webmail_url_txt'] = 'URL do Webmail'; +$wb['phpmyadmin_url_txt'] = 'URL do PHPMyAdmin'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/ro_system_config.lng b/ro_system_config.lng new file mode 100644 index 0000000000..33ee2b4bde --- /dev/null +++ b/ro_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; +$wb['dbname_prefix_txt'] = 'Database name prefix'; +$wb['dbuser_prefix_txt'] = 'Database user prefix'; +$wb['shelluser_prefix_txt'] = 'Shell user prefix'; +$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; +$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; +$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; +$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; +$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; +$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/ru_system_config.lng b/ru_system_config.lng new file mode 100644 index 0000000000..62c856fae0 --- /dev/null +++ b/ru_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = 'ÐаÑтройка параметров по умолчанию'; +$wb['warning'] = 'ИзменÑйте Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°ÐºÐºÑƒÑ€Ð°Ñ‚Ð½Ð¾! Ðе удалÑйте префикÑÑ‹ на ÑиÑтемах где более одного пользователÑ.'; +$wb['dbname_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð±Ð°Ð·Ñ‹ данных'; +$wb['dbuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных'; +$wb['shelluser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ shell-пользователÑ'; +$wb['ftpuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ FTP пользователÑ'; +$wb['dbname_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе базы данных'; +$wb['dbuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных'; +$wb['ftpuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе FTP пользователÑ'; +$wb['shelluser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе shell-пользователÑ'; +$wb['dblist_phpmyadmin_link_txt'] = 'СÑылка на phpmyadmin в ÑпиÑке баз данных'; +$wb['mailboxlist_webmail_link_txt'] = 'СÑылка на веб-почту в ÑпиÑке почтовых Ñщиков'; +$wb['webmail_url_txt'] = 'URL веб-почты'; +$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; +$wb['use_domain_module_txt'] = 'ИÑпользовать модуль домена, чтобы добавить новые домены'; +$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \\"домен\\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; +$wb['new_domain_txt'] = 'HTML текÑÑ‚, чтобы Ñоздать новый домен'; +$wb['webdavuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV'; +$wb['webdavuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV.'; +$wb['webftp_url_txt'] = 'URL WebFTP'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['enable_custom_login_txt'] = 'Разрешить пользовательÑкое Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему'; +$wb['mailmailinglist_link_txt'] = 'СÑылка на почтовую раÑÑылку в ÑпиÑке раÑÑылок'; +$wb['mailmailinglist_url_txt'] = 'URL почтовой раÑÑылки'; +$wb['admin_mail_txt'] = 'E-mail админиÑтратора'; +$wb['admin_name_txt'] = 'Ð˜Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора'; +$wb['maintenance_mode_txt'] = 'Режим техничеÑкого бÑлуживаниÑ'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'ИÑпользовать SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÑиÑтемных Ñообщений'; +$wb['smtp_host_txt'] = 'ХоÑÑ‚ SMTP'; +$wb['smtp_port_txt'] = 'Порт SMTP'; +$wb['smtp_user_txt'] = 'Пользователь SMTP'; +$wb['smtp_pass_txt'] = 'Пароль SMTP'; +$wb['smtp_crypt_txt'] = 'ИÑпользовать SSL/TLS-шифрование ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'ПожалуйÑта, введите Ð¸Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора и Ð°Ð´Ñ€ÐµÑ Ñл. почты админиÑтратора, еÑли вы хотите иÑпользовать SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ почты.'; +$wb['tab_change_discard_txt'] = 'Откатить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° вкладке изменить'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Показать предупреждение об изменении вкладки в формах редактированиÑ, еÑли какие-либо данные были изменены пользователем.'; +$wb['vhost_subdomains_txt'] = 'Создать поддомен как веб-Ñайт'; +$wb['vhost_subdomains_note_txt'] = 'Ðтот параметр не может быть отключен пока поÑкольку ÑущеÑтвует виртуальный хоÑÑ‚ поддоменов в ÑиÑтеме!'; +$wb['vhost_aliasdomains_txt'] = 'Создать Ð°Ð»Ð¸Ð°Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² как веб-Ñайт'; +$wb['vhost_aliasdomains_note_txt'] = 'Ðтот параметр не может быть отключен пока поÑкольку ÑущеÑтвует виртуальный хоÑÑ‚ алиаÑов доменов в ÑиÑтеме!'; +$wb['phpmyadmin_url_error_regex'] = 'Ðекорректный URL phpmyadmin'; +$wb['use_combobox_txt'] = 'ИÑпользовать jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'ИÑпользовать индикатор загрузки'; +$wb['f5_to_reload_js_txt'] = 'ЕÑли вы измените Ñто, вам, возможно, придетÑÑ Ð½Ð°Ð¶Ð°Ñ‚ÑŒ F5, чтобы перезагрузить в браузере JavaScript-библиотеи или очиÑтить кÑш браузера.'; +$wb['client_username_web_check_disabled_txt'] = 'Отключить проверку логина клиента Ð´Ð»Ñ Ñлова \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Включить резервное копирование файлов в веб-квоту.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Показывать вкладку автоответчика в деталÑÑ… учетной запиÑи Ñлектронной почты'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Показывать вкладку почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Показывать вкладку пользовательÑкого почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; +$wb['webmail_url_error_regex'] = 'Ðекорректный URL веб-почты'; +$wb['phpmyadmin_url_note_txt'] = 'Заменитель:'; +$wb['webmail_url_note_txt'] = 'Заменитель:'; +$wb['available_dashlets_note_txt'] = 'ДоÑтупные дашлеты:'; +$wb['admin_dashlets_left_txt'] = 'Дашлеты Ðдмина Ñлева'; +$wb['admin_dashlets_right_txt'] = 'Дашлеты Ðдмина Ñправа'; +$wb['reseller_dashlets_left_txt'] = 'Дашлеты РеÑеллера Ñлева'; +$wb['reseller_dashlets_right_txt'] = 'Дашлеты РеÑеллера Ñправа'; +$wb['client_dashlets_left_txt'] = 'Дашлеты Клиента Ñлева'; +$wb['client_dashlets_right_txt'] = 'Дашлеты Клиента Ñправа'; +$wb['customer_no_template_txt'] = 'Шаблон номера Клиента'; +$wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Клиента Ñодержит недопуÑтимые Ñимволы.'; +$wb['customer_no_start_txt'] = 'Ðачальное значение номера Клиента'; +$wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; +$wb['session_timeout_txt'] = 'Тайм-аут ÑеÑÑии (в минутах)'; +$wb['session_allow_endless_txt'] = 'Включить \\"оÑтаватьÑÑ Ð² ÑиÑтеме\\"'; +$wb['No'] = 'Ðет'; +$wb['min_password_length_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° паролÑ'; +$wb['min_password_strength_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑтойкоÑÑ‚ÑŒ паролÑ'; +$wb['company_name_txt'] = 'Ðазвание компании Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ñтраницы'; +$wb['reseller_can_use_options_txt'] = 'РеÑеллер может иÑпользовать вкладку Параметры Ð´Ð»Ñ Ð²ÐµÐ±-Ñайтов'; +$wb['custom_login_text_txt'] = 'ПользовательÑкий текÑÑ‚ на Ñтранице входа'; +$wb['custom_login_link_txt'] = 'ПользовательÑÐºÐ°Ñ ÑÑылка на Ñтраницу входа'; +$wb['login_link_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÑылка Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого входа'; +$wb['default_mailserver_txt'] = 'Почтовый Ñервер по умолчанию'; +$wb['default_webserver_txt'] = 'Web-Ñервер по умолчанию'; +$wb['default_dnsserver_txt'] = 'DNS-Ñервер по умолчанию'; +$wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-Ñервер по умолчанию'; +$wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/se_system_config.lng b/se_system_config.lng new file mode 100644 index 0000000000..bf0ec4942d --- /dev/null +++ b/se_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix pÃ¥ system med mer än en kund.'; +$wb['dbname_prefix_txt'] = 'Prefix för databasnamn'; +$wb['dbuser_prefix_txt'] = 'Prefix för databasanvändare'; +$wb['shelluser_prefix_txt'] = 'Prefix för shell-användare'; +$wb['ftpuser_prefix_txt'] = 'Prefix för FTP-användare'; +$wb['dbname_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för databasnamn.'; +$wb['dbuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för databasanvändare.'; +$wb['ftpuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för FTP-användare.'; +$wb['shelluser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för shell-användare.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Länka till PHPMyAdmin i databaslista'; +$wb['mailboxlist_webmail_link_txt'] = 'Länka till webbmail i epostkontolista'; +$wb['webmail_url_txt'] = 'Webbmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Används domänmodul för att lägga till nya domäner'; +$wb['use_domain_module_hint'] = 'Om du använder denna modul kommer kunder endast kunna välja bland de domäner administratören har tilldelat dem, de kan alltsÃ¥ inte lägga till vilken domän som helst. Du mÃ¥ste logga in pÃ¥ nytt innan dessa ändringar blir synliga.'; +$wb['new_domain_txt'] = 'HTML vid skapande av nya domäner'; +$wb['dashboard_atom_url_admin_txt'] = 'Kontrolpanelens nyhetsflöde URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Kontrolpanelens nyhetsflöde URL (Ã¥terförsäljare)'; +$wb['dashboard_atom_url_client_txt'] = 'Kontrolpanelens nyhetsflöde URL (kund)'; +$wb['webdavuser_prefix_txt'] = 'Prefix för WebDAV-användare'; +$wb['webdavuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för WebDAV-användare'; +$wb['webftp_url_txt'] = 'WebbFTP URL'; +$wb['enable_custom_login_txt'] = 'TillÃ¥t valfritt inloggningsnamn'; +$wb['mailmailinglist_link_txt'] = 'Länka till epostlista i listan över epostlistor'; +$wb['mailmailinglist_url_txt'] = 'Adress till epostlista'; +$wb['admin_mail_txt'] = 'Administratörens epostadress'; +$wb['monitor_key_txt'] = 'Bevakning nyckelord'; +$wb['admin_name_txt'] = 'Administratörens namn'; +$wb['maintenance_mode_txt'] = 'UnderhÃ¥llsläge'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail'; +$wb['smtp_host_txt'] = 'SMTP-värd'; +$wb['smtp_port_txt'] = 'SMTP-port'; +$wb['smtp_user_txt'] = 'SMTP-användare'; +$wb['smtp_pass_txt'] = 'SMTP-lösenord'; +$wb['smtp_crypt_txt'] = 'Använd SSL/TLS-krypterad anslutning för SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Kasta ändringar vid byte av flik'; +$wb['tab_change_warning_txt'] = 'Varning vid byte av flik'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['vhost_subdomains_txt'] = 'Skapa underdomäner som en egen sajt'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Ogiltig adress till PHPMyAdmin'; +$wb['use_combobox_txt'] = 'Använd jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Använd laddningsindikator'; +$wb['f5_to_reload_js_txt'] = 'Om du ändrar detta kan du behöva trycka F5 för att ladda om javascript, eller rensa din webbläsarcache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Visa autosvarsfliken vid detaljerna för epostkonto'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Visa epostfilterfliken vid detaljerna för epostkonto'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Kundnummermall'; +$wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehÃ¥ller otillÃ¥tna tecken'; +$wb['customer_no_start_txt'] = 'Kundnummer startvärde'; +$wb['customer_no_counter_txt'] = 'Kundnummer räknare'; +$wb['session_timeout_txt'] = 'Session timeout (minuter)'; +$wb['session_allow_endless_txt'] = 'Aktivera \\"hÃ¥ll mig inloggad\\"'; +$wb['No'] = 'Nej'; +$wb['min_password_length_txt'] = 'Minsta lösenordslängd'; +$wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/sk_system_config.lng b/sk_system_config.lng new file mode 100644 index 0000000000..b6bbe102dd --- /dev/null +++ b/sk_system_config.lng @@ -0,0 +1,96 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.'; +$wb['dbname_prefix_txt'] = 'Predpona názvu databázy '; +$wb['dbuser_prefix_txt'] = 'Predpona databáza užÃvateľa'; +$wb['shelluser_prefix_txt'] = 'Predpona Shell užÃvateľa'; +$wb['ftpuser_prefix_txt'] = 'Predpona FTP užÃvateľ'; +$wb['dbname_prefix_error_regex'] = 'Char nie je povolený v prefix názov databázy.'; +$wb['dbuser_prefix_error_regex'] = 'Char nie je povolené v databáze predpone user.'; +$wb['ftpuser_prefix_error_regex'] = 'Char nie je povolené v ftp užÃvateľ predpone .'; +$wb['shelluser_prefix_error_regex'] = 'Char nie je povolené Shell užÃvateľ predpone .'; +$wb['dblist_phpmyadmin_link_txt'] = 'Odkaz na phpmyadmin v DB zozname'; +$wb['mailboxlist_webmail_link_txt'] = 'Odkaz na webmail v zozname schránok'; +$wb['webmail_url_txt'] = 'Webmail URL'; +$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; +$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; +$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; +$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; +$wb['new_domain_txt'] = 'HTML to create a new domain'; +$wb['webftp_url_txt'] = 'WebFTP URL'; +$wb['enable_custom_login_txt'] = 'Allow custom login name'; +$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; +$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; +$wb['admin_mail_txt'] = 'Administrators e-mail'; +$wb['monitor_key_txt'] = 'Monitor keyword'; +$wb['admin_name_txt'] = 'Administrators name'; +$wb['maintenance_mode_txt'] = 'Maintenance Mode'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; +$wb['smtp_host_txt'] = 'SMTP host'; +$wb['smtp_port_txt'] = 'SMTP port'; +$wb['smtp_user_txt'] = 'SMTP user'; +$wb['smtp_pass_txt'] = 'SMTP password'; +$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; +$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; +$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; +$wb['tab_change_warning_txt'] = 'Tab change warning'; +$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; +$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; +$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; +$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; +$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; +$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; +$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; +$wb['use_loadindicator_txt'] = 'Use Load Indicator'; +$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; +$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; +$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; +$wb['customer_no_template_txt'] = 'Customer No. template'; +$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; +$wb['customer_no_start_txt'] = 'Customer No. start value'; +$wb['customer_no_counter_txt'] = 'Customer No. counter'; +$wb['session_timeout_txt'] = 'Session timeout (minutes)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'Minimum password length'; +$wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['company_name_txt'] = 'Company Name for the page title'; +$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; +$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; +$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; +$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb['default_mailserver_txt'] = 'Default Mailserver'; +$wb['default_webserver_txt'] = 'Default Webserver'; +$wb['default_dnsserver_txt'] = 'Default DNS Server'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; +$wb['default_dbserver_txt'] = 'Default Database Server'; +$wb['ca_name_txt'] = 'Name'; +$wb['ca_issue_txt'] = 'Issue'; +$wb['ca_wildcard_txt'] = 'Use Wildcard'; +$wb['ca_critical_txt'] = 'Strict Check'; +$wb['ca_iodef_txt'] = 'iodef'; +$wb['active_txt'] = 'Aktive'; +$wb['btn_save_txt'] = 'Save'; +$wb['btn_cancel_txt'] = 'Cancel'; +$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +?> diff --git a/tr_system_config.lng b/tr_system_config.lng new file mode 100644 index 0000000000..21a70bec4b --- /dev/null +++ b/tr_system_config.lng @@ -0,0 +1,90 @@ +<?php +$wb['system_config_title'] = 'System Config'; +$wb['system_config_desc_txt'] = ''; +$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.'; +$wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının Ä°nternet adresi (yönetici)'; +$wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının Ä°nternet adresi (bayi)'; +$wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının Ä°nternet adresi (müşteri)'; +$wb['warning'] = 'Bu deÄŸerleri deÄŸiÅŸtirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.'; +$wb['tab_change_discard_txt'] = 'Sekme deÄŸiÅŸtirildiÄŸinde deÄŸiÅŸiklikler yok sayılsın'; +$wb['tab_change_warning_txt'] = 'Sekme deÄŸiÅŸtirme uyarısı'; +$wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir deÄŸiÅŸiklik yapmışsa sekme deÄŸiÅŸtirilmek istendiÄŸinde bir uyarı görüntülenir.'; +$wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki'; +$wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki'; +$wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki'; +$wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki'; +$wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki'; +$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi ÅŸeklinde oluÅŸturulsun'; +$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!'; +$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin'; +$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!'; +$wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var'; +$wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var'; +$wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var'; +$wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin verilmeyen karakterler var'; +$wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.'; +$wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin baÄŸlantısı'; +$wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin'; +$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail baÄŸlantısı'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; +$wb['webmail_url_txt'] = 'Webmail Adresi'; +$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi baÄŸlantısı'; +$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi'; +$wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi'; +$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın'; +$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluÅŸturduÄŸu etki alanlarından birini seçebilir. Etki alanını istediÄŸi gibi yazamaz. Bu deÄŸeri deÄŸiÅŸtirdikten sonra deÄŸiÅŸikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.'; +$wb['new_domain_txt'] = 'Yeni etki alanı oluÅŸturma HTML kodu'; +$wb['webftp_url_txt'] = 'WebFTP Adresi'; +$wb['admin_mail_txt'] = 'Yönetici E-posta Adresi'; +$wb['monitor_key_txt'] = 'Ä°zlenecek Kelime'; +$wb['admin_name_txt'] = 'Yönetici Adı'; +$wb['maintenance_mode_txt'] = 'Bakım Kipi'; +$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; +$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; +$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin'; +$wb['smtp_host_txt'] = 'SMTP Sunucusu'; +$wb['smtp_port_txt'] = 'SMTP Kapısı'; +$wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı'; +$wb['smtp_pass_txt'] = 'SMTP Parolası'; +$wb['smtp_crypt_txt'] = 'SMTP için SSL/TLS ÅŸifreli baÄŸlantı kullanılsın'; +$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin adresi geçersiz'; +$wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın'; +$wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın'; +$wb['f5_to_reload_js_txt'] = 'Bu deÄŸer deÄŸiÅŸtirildiÄŸinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuÅŸuna basmalı ya da web tarayıcının ön belleÄŸini temizlemelisiniz.'; +$wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.'; +$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.'; +$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; +$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; +$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; +$wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz'; +$wb['phpmyadmin_url_note_txt'] = 'Kod:'; +$wb['webmail_url_note_txt'] = 'Kod:'; +$wb['available_dashlets_note_txt'] = 'Kullanılabilecek BileÅŸenler:'; +$wb['admin_dashlets_left_txt'] = 'Sol Yönetici BileÅŸenleri'; +$wb['admin_dashlets_right_txt'] = 'SaÄŸ Yönetici BileÅŸenleri'; +$wb['reseller_dashlets_left_txt'] = 'Sol Bayi BileÅŸenleri'; +$wb['reseller_dashlets_right_txt'] = 'SaÄŸ Bayi BileÅŸenleri'; +$wb['client_dashlets_left_txt'] = 'Sol Müşteri BileÅŸenleri'; +$wb['client_dashlets_right_txt'] = 'SaÄŸ Müşteri BileÅŸenleri'; +$wb['customer_no_template_txt'] = 'Müşteri No Kalıbı'; +$wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var'; +$wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; +$wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; +$wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)'; +$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin'; +$wb['No'] = 'No'; +$wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu'; +$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu'; +$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; +$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; +$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu'; +$wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; +$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; +$wb['company_name_txt'] = 'Sayfa baÅŸlığı için kurum adı'; +$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin'; +$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni'; +$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası BaÄŸlantısı'; +$wb['login_link_error_regex'] = 'Oturum Açma BaÄŸlantısı Geçersiz'; +?> -- GitLab From 9ac0e6e6e50201a6df59115e2a5e8be610c2d6b1 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 19:52:10 +0200 Subject: [PATCH 279/571] Update system_config.tform.php --- system_config.tform.php | 774 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 774 insertions(+) create mode 100644 system_config.tform.php diff --git a/system_config.tform.php b/system_config.tform.php new file mode 100644 index 0000000000..1b84e59560 --- /dev/null +++ b/system_config.tform.php @@ -0,0 +1,774 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ + +$form["title"] = "system_config_title"; +$form["description"] = "system_config_desc_txt"; +$form["name"] = "system_config"; +$form["action"] = "system_config_edit.php"; +$form["db_table"] = "sys_ini"; +$form["db_table_idx"] = "sysini_id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "sites"; +$form["list_default"] = "server_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$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 + +$form["tabs"]['sites'] = array ( + 'title' => "Sites", + 'width' => 70, + 'template' => "templates/system_config_sites_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'dbname_prefix' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'dbname_prefix_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'dbuser_prefix' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'dbuser_prefix_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'ftpuser_prefix' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'ftpuser_prefix_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'shelluser_prefix' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'shelluser_prefix_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'webdavuser_prefix' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'webdavuser_prefix_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'dblist_phpmyadmin_link' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'phpmyadmin_url' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[0-9a-zA-Z\:\/\-\.\_\[\]\?\=\&]{0,255}$/', + 'errmsg'=> 'phpmyadmin_url_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'webftp_url' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/', + 'errmsg'=> 'webftp_url_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'vhost_subdomains' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'vhost_aliasdomains' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'client_username_web_check_disabled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'backups_include_into_web_quota' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'reseller_can_use_options' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'default_webserver' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'value' => '', + 'name' => 'default_webserver' + ), + 'default_dbserver' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'value' => '', + 'name' => 'default_dbserver' + ), + 'web_php_options' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOXARRAY', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'web_php_options_notempty'), + ), + 'default' => '', + 'separator' => ',', + 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') + ), + //################################# + // END Datatable fields + //################################# + ) +); + +$form["tabs"]['mail'] = array ( + 'title' => "Mail", + 'width' => 70, + 'template' => "templates/system_config_mail_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'enable_custom_login' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailbox_show_autoresponder_tab' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailbox_show_mail_filter_tab' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailbox_show_custom_rules_tab' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailboxlist_webmail_link' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'webmail_url' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + /*'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}(\?.+)?$/',*/ + 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', + 'errmsg'=> 'webmail_url_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'mailmailinglist_link' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailmailinglist_url' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/', + 'errmsg'=> 'mailinglist_url_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'admin_mail' => array ( + 'datatype' => 'VARCHAR', + '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') + ), + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'smtp_enabled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'smtp_host' => array ( + 'datatype' => 'VARCHAR', + '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') + ), + 'formtype' => 'TEXT', + 'default' => 'localhost', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + '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', + 'maxlength' => '255' + ), + 'smtp_pass' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'smtp_crypt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS') + ), + 'default_mailserver' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'value' => '', + 'name' => 'default_mailserver' + ), + //################################# + // END Datatable fields + //################################# + ) +); + +$form["tabs"]['dns'] = array ( + 'title' => "DNS", + 'width' => 70, + 'template' => "templates/system_config_dns_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'default_dnsserver' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'value' => '', + 'name' => 'default_dnsserver' + ), + 'default_slave_dnsserver' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '1', + 'datasource' => array ( 'type' => 'CUSTOM', + 'class'=> 'custom_datasource', + 'function'=> 'client_servers' + ), + 'value' => '', + 'name' => 'default_slave_dnsserver' + ), + //################################# + // END Datatable fields + //################################# + ) +); + +$form["tabs"]['domains'] = array ( + 'title' => "Domains", + 'width' => 70, + 'template' => "templates/system_config_domains_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'use_domain_module' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'new_domain_html' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS') + ), + 'default' => '', + 'value' => '' + ), + //################################# + // END Datatable fields + //################################# + ) +); + +/* TODO_ BEGIN: Branding + +$form["tabs"]['domains'] = array ( + 'title' => "Branding", + 'width' => 70, + 'template' => "templates/system_config_branding_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'allow_themechange' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'N', + 'value' => array(0 => 'n',1 => 'y') + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + + END: Branding */ +$form["tabs"]['misc'] = array ( + 'title' => "Misc", + 'width' => 70, + 'template' => "templates/system_config_misc_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + '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' => '' + ), + 'custom_login_link' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^(http|https):\\/\\/.*|^$/', + 'errmsg'=> 'login_link_error_regex'), + ) + ), + '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' => '' + ), + 'monitor_key' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'tab_change_discard' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'tab_change_warning' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'use_loadindicator' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'use_combobox' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'maintenance_mode' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'maintenance_mode_exclude_ips' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array( + 0 => array ( + 'type' => 'ISIP', + 'allowempty' => true, + 'separator' => ',', + 'errmsg'=> 'maintenance_mode_exclude_ips_error_isip' + ), + ), + 'default' => '', + 'value' => '' + ), + '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' => '' + ), + 'customer_no_template' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', + 'errmsg'=> 'customer_no_template_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'customer_no_start' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'customer_no_counter' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'session_timeout' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'session_allow_endless' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'min_password_length' => array( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '5', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'min_password_strength' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5') + ) + //################################# + // END Datatable fields + //################################# + ) +); + +$form['tabs']['dns_ca'] = array ( + 'title' => 'DNS CAs', + 'width' => 100, + 'template' => 'templates/system_config_dns_ca.htm', + 'fields' => array (), + 'plugins' => array ( + 'dns_ca' => array ( + 'class' => 'plugin_system_config_dns_ca', + 'options' => array() + ), + 'dns_ca_list' => array ( + 'class' => 'plugin_system_config_dns_ca_list', + 'options' => array() + ) + ) +); + +?> -- GitLab From c9b0ce235d6fff2f18c31caa58f3ac384de5fcd0 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 19:55:14 +0200 Subject: [PATCH 280/571] Deleted system_config.tform.php --- system_config.tform.php | 774 ---------------------------------------- 1 file changed, 774 deletions(-) delete mode 100644 system_config.tform.php diff --git a/system_config.tform.php b/system_config.tform.php deleted file mode 100644 index 1b84e59560..0000000000 --- a/system_config.tform.php +++ /dev/null @@ -1,774 +0,0 @@ -<?php - -/* - Form Definition - - Tabledefinition - - Datatypes: - - INTEGER (Forces the input to Int) - - DOUBLE - - CURRENCY (Formats the values to currency notation) - - VARCHAR (no format check, maxlength: 255) - - TEXT (no format check) - - DATE (Dateformat, automatic conversion to timestamps) - - Formtype: - - TEXT (Textfield) - - TEXTAREA (Textarea) - - PASSWORD (Password textfield, input is not shown when edited) - - SELECT (Select option field) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hint: - The ID field of the database table is not part of the datafield definition. - The ID field must be always auto incement (int or bigint). - - -*/ - -$form["title"] = "system_config_title"; -$form["description"] = "system_config_desc_txt"; -$form["name"] = "system_config"; -$form["action"] = "system_config_edit.php"; -$form["db_table"] = "sys_ini"; -$form["db_table_idx"] = "sysini_id"; -$form["db_history"] = "yes"; -$form["tab_default"] = "sites"; -$form["list_default"] = "server_list.php"; -$form["auth"] = 'yes'; // yes / no - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$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 - -$form["tabs"]['sites'] = array ( - 'title' => "Sites", - 'width' => 70, - 'template' => "templates/system_config_sites_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'dbname_prefix' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'dbname_prefix_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'dbuser_prefix' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'dbuser_prefix_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'ftpuser_prefix' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'ftpuser_prefix_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'shelluser_prefix' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'shelluser_prefix_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'webdavuser_prefix' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'webdavuser_prefix_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'dblist_phpmyadmin_link' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'phpmyadmin_url' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[0-9a-zA-Z\:\/\-\.\_\[\]\?\=\&]{0,255}$/', - 'errmsg'=> 'phpmyadmin_url_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'webftp_url' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/', - 'errmsg'=> 'webftp_url_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'vhost_subdomains' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'vhost_aliasdomains' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'client_username_web_check_disabled' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'backups_include_into_web_quota' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'reseller_can_use_options' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'default_webserver' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'datasource' => array ( 'type' => 'CUSTOM', - 'class'=> 'custom_datasource', - 'function'=> 'client_servers' - ), - 'value' => '', - 'name' => 'default_webserver' - ), - 'default_dbserver' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'datasource' => array ( 'type' => 'CUSTOM', - 'class'=> 'custom_datasource', - 'function'=> 'client_servers' - ), - 'value' => '', - 'name' => 'default_dbserver' - ), - 'web_php_options' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOXARRAY', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'web_php_options_notempty'), - ), - 'default' => '', - 'separator' => ',', - 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM') - ), - //################################# - // END Datatable fields - //################################# - ) -); - -$form["tabs"]['mail'] = array ( - 'title' => "Mail", - 'width' => 70, - 'template' => "templates/system_config_mail_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'enable_custom_login' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailbox_show_autoresponder_tab' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailbox_show_mail_filter_tab' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailbox_show_custom_rules_tab' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailboxlist_webmail_link' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'webmail_url' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - /*'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}(\?.+)?$/',*/ - 'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/', - 'errmsg'=> 'webmail_url_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'mailmailinglist_link' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'mailmailinglist_url' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/', - 'errmsg'=> 'mailinglist_url_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'admin_mail' => array ( - 'datatype' => 'VARCHAR', - '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') - ), - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'smtp_enabled' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'smtp_host' => array ( - 'datatype' => 'VARCHAR', - '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') - ), - 'formtype' => 'TEXT', - 'default' => 'localhost', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - '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', - 'maxlength' => '255' - ), - 'smtp_pass' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'smtp_crypt' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS') - ), - 'default_mailserver' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'datasource' => array ( 'type' => 'CUSTOM', - 'class'=> 'custom_datasource', - 'function'=> 'client_servers' - ), - 'value' => '', - 'name' => 'default_mailserver' - ), - //################################# - // END Datatable fields - //################################# - ) -); - -$form["tabs"]['dns'] = array ( - 'title' => "DNS", - 'width' => 70, - 'template' => "templates/system_config_dns_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'default_dnsserver' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'datasource' => array ( 'type' => 'CUSTOM', - 'class'=> 'custom_datasource', - 'function'=> 'client_servers' - ), - 'value' => '', - 'name' => 'default_dnsserver' - ), - 'default_slave_dnsserver' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '1', - 'datasource' => array ( 'type' => 'CUSTOM', - 'class'=> 'custom_datasource', - 'function'=> 'client_servers' - ), - 'value' => '', - 'name' => 'default_slave_dnsserver' - ), - //################################# - // END Datatable fields - //################################# - ) -); - -$form["tabs"]['domains'] = array ( - 'title' => "Domains", - 'width' => 70, - 'template' => "templates/system_config_domains_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'use_domain_module' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'new_domain_html' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'filters' => array( - 0 => array( 'event' => 'SAVE', - 'type' => 'STRIPTAGS') - ), - 'default' => '', - 'value' => '' - ), - //################################# - // END Datatable fields - //################################# - ) -); - -/* TODO_ BEGIN: Branding - -$form["tabs"]['domains'] = array ( - 'title' => "Branding", - 'width' => 70, - 'template' => "templates/system_config_branding_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'allow_themechange' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'N', - 'value' => array(0 => 'n',1 => 'y') - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - - END: Branding */ -$form["tabs"]['misc'] = array ( - 'title' => "Misc", - 'width' => 70, - 'template' => "templates/system_config_misc_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - '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' => '' - ), - 'custom_login_link' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^(http|https):\\/\\/.*|^$/', - 'errmsg'=> 'login_link_error_regex'), - ) - ), - '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' => '' - ), - 'monitor_key' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '' - ), - 'tab_change_discard' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'tab_change_warning' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'use_loadindicator' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'use_combobox' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'maintenance_mode' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'maintenance_mode_exclude_ips' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array( - 0 => array ( - 'type' => 'ISIP', - 'allowempty' => true, - 'separator' => ',', - 'errmsg'=> 'maintenance_mode_exclude_ips_error_isip' - ), - ), - 'default' => '', - 'value' => '' - ), - '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' => '' - ), - 'customer_no_template' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\-\_\[\]]{0,50}$/', - 'errmsg'=> 'customer_no_template_error_regex'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'customer_no_start' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'customer_no_counter' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'session_timeout' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'session_allow_endless' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') - ), - 'min_password_length' => array( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '5', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'min_password_strength' => array( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5') - ) - //################################# - // END Datatable fields - //################################# - ) -); - -$form['tabs']['dns_ca'] = array ( - 'title' => 'DNS CAs', - 'width' => 100, - 'template' => 'templates/system_config_dns_ca.htm', - 'fields' => array (), - 'plugins' => array ( - 'dns_ca' => array ( - 'class' => 'plugin_system_config_dns_ca', - 'options' => array() - ), - 'dns_ca_list' => array ( - 'class' => 'plugin_system_config_dns_ca_list', - 'options' => array() - ) - ) -); - -?> -- GitLab From bcb6e94bc8d98587ee32e4b51186495071a0882d Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 19:56:49 +0200 Subject: [PATCH 281/571] Update interface/web/admin/form/system_config.tform.php --- interface/web/admin/form/system_config.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index d1b0a793e7..1b84e59560 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -33,7 +33,7 @@ */ -$form["title"] = "System Config"; +$form["title"] = "system_config_title"; $form["description"] = "system_config_desc_txt"; $form["name"] = "system_config"; $form["action"] = "system_config_edit.php"; -- GitLab From a4420597b95fcaeb458133a15510986ebc3e7c0f Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:11:02 +0200 Subject: [PATCH 282/571] Update interface/web/admin/form/server_ip.tform.php --- interface/web/admin/form/server_ip.tform.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/form/server_ip.tform.php b/interface/web/admin/form/server_ip.tform.php index cd7190ebc6..d86dbb7535 100644 --- a/interface/web/admin/form/server_ip.tform.php +++ b/interface/web/admin/form/server_ip.tform.php @@ -64,8 +64,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -$form["title"] = "IP Addresses"; -$form["description"] = "Form to edit system IP Addresses"; +$form["title"] = "server_ip_edit_title"; +$form["description"] = "server_ip_edit_desc"; $form["name"] = "server_ip"; $form["action"] = "server_ip_edit.php"; $form["db_table"] = "server_ip"; -- GitLab From 13c9e0baeb50303d063f30a80cdb67bc86a7c04a Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:17:12 +0200 Subject: [PATCH 283/571] Fixes #4480 (Translate IP edit form title and desc) --- ar_server_ip.lng | 13 +++++++++++++ bg_server_ip.lng | 13 +++++++++++++ br_server_ip.lng | 13 +++++++++++++ ca_server_ip.lng | 13 +++++++++++++ cz_server_ip.lng | 13 +++++++++++++ de_server_ip.lng | 13 +++++++++++++ dk_server_ip.lng | 13 +++++++++++++ el_server_ip.lng | 13 +++++++++++++ en_server_ip.lng | 13 +++++++++++++ es_server_ip.lng | 13 +++++++++++++ fi_server_ip.lng | 13 +++++++++++++ fr_server_ip.lng | 13 +++++++++++++ hr_server_ip.lng | 13 +++++++++++++ hu_server_ip.lng | 13 +++++++++++++ id_server_ip.lng | 13 +++++++++++++ it_server_ip.lng | 13 +++++++++++++ ja_server_ip.lng | 13 +++++++++++++ nl_server_ip.lng | 13 +++++++++++++ pl_server_ip.lng | 13 +++++++++++++ pt_server_ip.lng | 13 +++++++++++++ ro_server_ip.lng | 13 +++++++++++++ ru_server_ip.lng | 13 +++++++++++++ se_server_ip.lng | 13 +++++++++++++ sk_server_ip.lng | 13 +++++++++++++ tr_server_ip.lng | 13 +++++++++++++ 25 files changed, 325 insertions(+) create mode 100644 ar_server_ip.lng create mode 100644 bg_server_ip.lng create mode 100644 br_server_ip.lng create mode 100644 ca_server_ip.lng create mode 100644 cz_server_ip.lng create mode 100644 de_server_ip.lng create mode 100644 dk_server_ip.lng create mode 100644 el_server_ip.lng create mode 100644 en_server_ip.lng create mode 100644 es_server_ip.lng create mode 100644 fi_server_ip.lng create mode 100644 fr_server_ip.lng create mode 100644 hr_server_ip.lng create mode 100644 hu_server_ip.lng create mode 100644 id_server_ip.lng create mode 100644 it_server_ip.lng create mode 100644 ja_server_ip.lng create mode 100644 nl_server_ip.lng create mode 100644 pl_server_ip.lng create mode 100644 pt_server_ip.lng create mode 100644 ro_server_ip.lng create mode 100644 ru_server_ip.lng create mode 100644 se_server_ip.lng create mode 100644 sk_server_ip.lng create mode 100644 tr_server_ip.lng diff --git a/ar_server_ip.lng b/ar_server_ip.lng new file mode 100644 index 0000000000..1947d3ec37 --- /dev/null +++ b/ar_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP Address'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'The IP address is invalid'; +$wb['ip_error_unique'] = 'The IP address must be unique'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/bg_server_ip.lng b/bg_server_ip.lng new file mode 100644 index 0000000000..70f428a634 --- /dev/null +++ b/bg_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Сървър'; +$wb['ip_address_txt'] = 'IP адреÑ'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'IP адреÑÑŠÑ‚ е грешен'; +$wb['ip_error_unique'] = 'IP адреÑÑŠÑ‚ Ñ‚Ñ€Ñбва да бъде уникален'; +$wb['client_id_txt'] = 'Клиент'; +$wb['ip_type_txt'] = 'Тип'; +$wb['virtualhost_port_txt'] = 'HTTP портове'; +$wb['error_port_syntax'] = 'Грешни Ñимволи в полето за портове, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ¶Ð´Ð°Ð¹Ñ‚Ðµ Ñамо чиÑла разделени Ñ Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ. Пример: 80,443'; +?> diff --git a/br_server_ip.lng b/br_server_ip.lng new file mode 100644 index 0000000000..8380b61ebd --- /dev/null +++ b/br_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Servidor'; +$wb['client_id_txt'] = 'Cliente'; +$wb['ip_type_txt'] = 'Tipo'; +$wb['ip_address_txt'] = 'Endereço IP'; +$wb['virtualhost_txt'] = 'Nome do vhost http'; +$wb['virtualhost_port_txt'] = 'Porta http'; +$wb['ip_error_wrong'] = 'O endereço IP é inválido.'; +$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.'; +$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vÃrgula. Exemplo: 80,443.'; +?> diff --git a/ca_server_ip.lng b/ca_server_ip.lng new file mode 100644 index 0000000000..8f7738e51f --- /dev/null +++ b/ca_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['ip_address_txt'] = 'IP Address'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['ip_error_wrong'] = 'The IP address is invalid'; +$wb['ip_error_unique'] = 'The IP address must be unique'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/cz_server_ip.lng b/cz_server_ip.lng new file mode 100644 index 0000000000..3698df5c74 --- /dev/null +++ b/cz_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP adresa'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'IP adresa je neplatná nebo prázdná'; +$wb['ip_error_unique'] = 'IP adresa musà být unikátnÃ'; +$wb['client_id_txt'] = 'Klient'; +$wb['ip_type_txt'] = 'Verze'; +$wb['virtualhost_port_txt'] = 'HTTP Porty'; +$wb['error_port_syntax'] = 'Neplatné znaky ve volbÄ› HTTP Portů. ProsÃm, zadejte pouze ÄÃselné hodnoty oddÄ›lené Äárkami. PÅ™Ãklad: 80,443'; +?> diff --git a/de_server_ip.lng b/de_server_ip.lng new file mode 100644 index 0000000000..88f23ebc15 --- /dev/null +++ b/de_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP Adresse'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'Die IP Adresse ist ungültig'; +$wb['ip_error_unique'] = 'Die IP Adresse muss einzigartig sein'; +$wb['client_id_txt'] = 'Kunde'; +$wb['ip_type_txt'] = 'Typ'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443'; +?> diff --git a/dk_server_ip.lng b/dk_server_ip.lng new file mode 100644 index 0000000000..a6ba3ba045 --- /dev/null +++ b/dk_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['client_id_txt'] = 'Kunde'; +$wb['ip_type_txt'] = 'Type'; +$wb['ip_address_txt'] = 'IP Adresse'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['virtualhost_port_txt'] = 'HTTP Porte'; +$wb['ip_error_wrong'] = 'IP adressen er ugyldigt'; +$wb['ip_error_unique'] = 'IP adressen skal være unikke'; +$wb['error_port_syntax'] = 'Ugyldigt tegn i Port felt, du mÃ¥ kun indtaste kommasepareret tal. F.eks.: 80,443'; +?> diff --git a/el_server_ip.lng b/el_server_ip.lng new file mode 100644 index 0000000000..f00925fc62 --- /dev/null +++ b/el_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'ΔιεÏθυνση IP'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'Η ΔιεÏθυνση IP είναι άκυÏη'; +$wb['ip_error_unique'] = 'Η ΔιεÏθυνση IP Ï€ÏÎπει να είναι μοναδική'; +$wb['client_id_txt'] = 'Πελάτης'; +$wb['ip_type_txt'] = 'ΤÏπος'; +$wb['virtualhost_port_txt'] = 'ΘÏÏες HTTP'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/en_server_ip.lng b/en_server_ip.lng new file mode 100644 index 0000000000..8ef448f85d --- /dev/null +++ b/en_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb["server_id_txt"] = 'Server'; +$wb["client_id_txt"] = 'Client'; +$wb["ip_type_txt"] = 'Type'; +$wb["ip_address_txt"] = 'IP Address'; +$wb["virtualhost_txt"] = 'HTTP NameVirtualHost'; +$wb["virtualhost_port_txt"] = 'HTTP Ports'; +$wb["ip_error_wrong"] = 'The IP address is invalid'; +$wb["ip_error_unique"] = 'The IP address must be unique'; +$wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/es_server_ip.lng b/es_server_ip.lng new file mode 100644 index 0000000000..ba4d06d098 --- /dev/null +++ b/es_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['client_id_txt'] = 'Cliente'; +$wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443'; +$wb['ip_address_txt'] = 'Dirección IP'; +$wb['ip_error_unique'] = 'La dirección IP debe ser única'; +$wb['ip_error_wrong'] = 'La dirección IP no es correcta'; +$wb['ip_type_txt'] = 'Tipo'; +$wb['server_id_txt'] = 'Servidor'; +$wb['virtualhost_port_txt'] = 'Puertos HTTP'; +$wb['virtualhost_txt'] = 'Nombre de host virtual HTTP (NameVirtualHost)'; +?> diff --git a/fi_server_ip.lng b/fi_server_ip.lng new file mode 100644 index 0000000000..a9f49cc124 --- /dev/null +++ b/fi_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Palvelin'; +$wb['ip_address_txt'] = 'IP-osoite'; +$wb['virtualhost_txt'] = 'Virtuaalipalvelin'; +$wb['ip_error_wrong'] = 'IP-osoite vääränlainen'; +$wb['ip_error_unique'] = 'IP-osoitteen on oltava yksilöllinen'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/fr_server_ip.lng b/fr_server_ip.lng new file mode 100644 index 0000000000..1289cd755a --- /dev/null +++ b/fr_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Serveur'; +$wb['ip_address_txt'] = 'Adresse IP'; +$wb['virtualhost_txt'] = 'NameVirtualHost HTTP'; +$wb['ip_error_wrong'] = 'L’adresse IP est invalide'; +$wb['ip_error_unique'] = 'L’adresse IP doit être unique'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/hr_server_ip.lng b/hr_server_ip.lng new file mode 100644 index 0000000000..f26fd720ca --- /dev/null +++ b/hr_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP adresa'; +$wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta'; +$wb['ip_error_wrong'] = 'Neispravna IP adresa'; +$wb['ip_error_unique'] = 'IP adresa mora biti jedinstvena'; +$wb['client_id_txt'] = 'Klijent'; +$wb['ip_type_txt'] = 'Vrsta'; +$wb['virtualhost_port_txt'] = 'HTTP portovi'; +$wb['error_port_syntax'] = 'Nedozvoljeni znakovi u port polju, unesite samo znamenke odvojene zarezom. Primjer: 80,443'; +?> diff --git a/hu_server_ip.lng b/hu_server_ip.lng new file mode 100644 index 0000000000..2e8f88a2f7 --- /dev/null +++ b/hu_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Szerver'; +$wb['ip_address_txt'] = 'IP cÃm'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'IP cÃm érvénytelen'; +$wb['ip_error_unique'] = 'AZ IP cÃmnek egyedinek kell lennie'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/id_server_ip.lng b/id_server_ip.lng new file mode 100644 index 0000000000..00cecf5026 --- /dev/null +++ b/id_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'Alamat IP'; +$wb['virtualhost_txt'] = 'Nama VirtualHost HTTP'; +$wb['ip_error_wrong'] = 'Alamat IP tidak valid'; +$wb['ip_error_unique'] = 'Alamat IP harus unik'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/it_server_ip.lng b/it_server_ip.lng new file mode 100644 index 0000000000..9850f2e38b --- /dev/null +++ b/it_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'Indirizzo IP'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'Indirizzo IP non valido'; +$wb['ip_error_unique'] = 'Indirizzo IP deve essere unico'; +$wb['client_id_txt'] = 'Cliente'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Caratteri non validi nel campo porta, per favore inserire solo valori separati da virgola. Esempio: 80,443'; +?> diff --git a/ja_server_ip.lng b/ja_server_ip.lng new file mode 100644 index 0000000000..982d797760 --- /dev/null +++ b/ja_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'サーãƒãƒ¼'; +$wb['ip_address_txt'] = 'IPアドレス'; +$wb['virtualhost_txt'] = 'HTTP ã® NameVirtualHost を使ã†'; +$wb['ip_error_wrong'] = 'IPアドレスãŒä¸æ£ã§ã™ã€‚'; +$wb['ip_error_unique'] = 'æ—¢ã«ç™»éŒ²æ¸ˆã¿ã®IPアドレスã§ã™ã€‚別ã®å€¤ã«å¤‰æ›´ã—ã¦ãã ã•ã„。'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/nl_server_ip.lng b/nl_server_ip.lng new file mode 100644 index 0000000000..1fd397e01b --- /dev/null +++ b/nl_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP adres'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'Het IP adres is ongeldig'; +$wb['ip_error_unique'] = 'Het IP addres moet uniek zijn'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/pl_server_ip.lng b/pl_server_ip.lng new file mode 100644 index 0000000000..0e31866078 --- /dev/null +++ b/pl_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Serwer'; +$wb['ip_address_txt'] = 'Adres IP'; +$wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP'; +$wb['ip_error_wrong'] = 'Adres IP jest niepoprawny'; +$wb['ip_error_unique'] = 'Adres IP musi być unikalny'; +$wb['client_id_txt'] = 'Klient'; +$wb['ip_type_txt'] = 'Typ'; +$wb['virtualhost_port_txt'] = 'Porty HTTP'; +$wb['error_port_syntax'] = 'NieprawidÅ‚owe wartoÅ›ci w polu portów, proszÄ™ wpisać tylko liczby oddzielone przecinkiem. PrzykÅ‚adowo: 80,443'; +?> diff --git a/pt_server_ip.lng b/pt_server_ip.lng new file mode 100644 index 0000000000..8a3d00be61 --- /dev/null +++ b/pt_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Servidor'; +$wb['ip_address_txt'] = 'Endereço IP'; +$wb['virtualhost_txt'] = 'Nome VirtualHost HTTP'; +$wb['ip_error_wrong'] = 'Endereço IP inválido!'; +$wb['ip_error_unique'] = 'O endereço IP deve ser único'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/ro_server_ip.lng b/ro_server_ip.lng new file mode 100644 index 0000000000..1947d3ec37 --- /dev/null +++ b/ro_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP Address'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'The IP address is invalid'; +$wb['ip_error_unique'] = 'The IP address must be unique'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/ru_server_ip.lng b/ru_server_ip.lng new file mode 100644 index 0000000000..f874ba1bbd --- /dev/null +++ b/ru_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Сервер'; +$wb['ip_address_txt'] = 'IP-адреÑ'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; +$wb['ip_error_unique'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть уникальным'; +$wb['client_id_txt'] = 'ID Клиента'; +$wb['ip_type_txt'] = 'Тип'; +$wb['virtualhost_port_txt'] = 'HTTP порты'; +$wb['error_port_syntax'] = 'ÐедопуÑтимые Ñимволы в поле порта. ПожалуйÑта, вводите только чиÑла, разделенные запÑтой. Пример: 80,443'; +?> diff --git a/se_server_ip.lng b/se_server_ip.lng new file mode 100644 index 0000000000..09bc3b593a --- /dev/null +++ b/se_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP-adress'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'IP_adressen är ogiltig'; +$wb['ip_error_unique'] = 'IP-adressen mÃ¥ste vara unik'; +$wb['client_id_txt'] = 'Kund'; +$wb['ip_type_txt'] = 'Typ'; +$wb['virtualhost_port_txt'] = 'HTTP-portar'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/sk_server_ip.lng b/sk_server_ip.lng new file mode 100644 index 0000000000..02f84ded4c --- /dev/null +++ b/sk_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Server'; +$wb['ip_address_txt'] = 'IP Adresa'; +$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; +$wb['ip_error_wrong'] = 'IP adresa je neplatná'; +$wb['ip_error_unique'] = 'IP adresa musà byÅ¥ unikátna'; +$wb['client_id_txt'] = 'Client'; +$wb['ip_type_txt'] = 'Type'; +$wb['virtualhost_port_txt'] = 'HTTP Ports'; +$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; +?> diff --git a/tr_server_ip.lng b/tr_server_ip.lng new file mode 100644 index 0000000000..1f31bd3932 --- /dev/null +++ b/tr_server_ip.lng @@ -0,0 +1,13 @@ +<?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; +$wb['server_id_txt'] = 'Sunucu'; +$wb['client_id_txt'] = 'Müşteri'; +$wb['ip_type_txt'] = 'Tür'; +$wb['ip_address_txt'] = 'IP Adresi'; +$wb['virtualhost_txt'] = 'HTTP sSunucu Adı'; +$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları'; +$wb['ip_error_wrong'] = 'IP adresi geçersiz'; +$wb['ip_error_unique'] = 'Aynı IP adresi zaten var'; +$wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443'; +?> -- GitLab From cdded70e3033b5d2c939f915126d582d1d844e3f Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:19:25 +0200 Subject: [PATCH 284/571] Revert "Added translation option for form title" This reverts commit 2548cc13b35e87138f49ab0475c7e807666d75a2 --- ar_system_config.lng | 96 ------------------------------------------ bg_system_config.lng | 96 ------------------------------------------ br_system_config.lng | 95 ------------------------------------------ ca_system_config.lng | 96 ------------------------------------------ cz_system_config.lng | 96 ------------------------------------------ de_system_config.lng | 96 ------------------------------------------ dk_system_config.lng | 96 ------------------------------------------ el_system_config.lng | 96 ------------------------------------------ en_system_config.lng | 99 -------------------------------------------- es_system_config.lng | 96 ------------------------------------------ fi_system_config.lng | 96 ------------------------------------------ fr_system_config.lng | 96 ------------------------------------------ hr_system_config.lng | 96 ------------------------------------------ hu_system_config.lng | 96 ------------------------------------------ id_system_config.lng | 96 ------------------------------------------ it_system_config.lng | 96 ------------------------------------------ ja_system_config.lng | 96 ------------------------------------------ nl_system_config.lng | 96 ------------------------------------------ pl_system_config.lng | 96 ------------------------------------------ pt_system_config.lng | 96 ------------------------------------------ ro_system_config.lng | 96 ------------------------------------------ ru_system_config.lng | 96 ------------------------------------------ se_system_config.lng | 96 ------------------------------------------ sk_system_config.lng | 96 ------------------------------------------ tr_system_config.lng | 90 ---------------------------------------- 25 files changed, 2396 deletions(-) delete mode 100644 ar_system_config.lng delete mode 100644 bg_system_config.lng delete mode 100644 br_system_config.lng delete mode 100644 ca_system_config.lng delete mode 100644 cz_system_config.lng delete mode 100644 de_system_config.lng delete mode 100644 dk_system_config.lng delete mode 100644 el_system_config.lng delete mode 100644 en_system_config.lng delete mode 100644 es_system_config.lng delete mode 100644 fi_system_config.lng delete mode 100644 fr_system_config.lng delete mode 100644 hr_system_config.lng delete mode 100644 hu_system_config.lng delete mode 100644 id_system_config.lng delete mode 100644 it_system_config.lng delete mode 100644 ja_system_config.lng delete mode 100644 nl_system_config.lng delete mode 100644 pl_system_config.lng delete mode 100644 pt_system_config.lng delete mode 100644 ro_system_config.lng delete mode 100644 ru_system_config.lng delete mode 100644 se_system_config.lng delete mode 100644 sk_system_config.lng delete mode 100644 tr_system_config.lng diff --git a/ar_system_config.lng b/ar_system_config.lng deleted file mode 100644 index 3a7ef0796c..0000000000 --- a/ar_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; -$wb['dbname_prefix_txt'] = 'Database name prefix'; -$wb['dbuser_prefix_txt'] = 'Database user prefix'; -$wb['shelluser_prefix_txt'] = 'Shell user prefix'; -$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; -$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/bg_system_config.lng b/bg_system_config.lng deleted file mode 100644 index 4e6add8a6d..0000000000 --- a/bg_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['warning'] = 'Редактирай тези променливи внимателно! Ðе премахвай префикÑите на ÑиÑтемата.'; -$wb['dbname_prefix_txt'] = 'Име на префикÑа в базата данни'; -$wb['dbuser_prefix_txt'] = 'ПотребителÑки Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð² базата данни'; -$wb['shelluser_prefix_txt'] = 'Shell user prefix'; -$wb['ftpuser_prefix_txt'] = 'ПотребителÑки Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð½Ð° FTP'; -$wb['dbname_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на префикÑа.'; -$wb['dbuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на префикÑа.'; -$wb['ftpuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на ftp префикÑа.'; -$wb['shelluser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на shell префикÑа.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'Ðко използвате този модул, вашите клиенти могат да изберет Ñамо един от домейните, които админиÑтратора Ñъздава за Ñ‚ÑÑ…. Те не могат да оÑвободÑÑ‚ и редактират домейн - полето. Вие , Ñ‚Ñ€Ñбва отново да влезете Ñлед промÑна на тази ÑтойноÑÑ‚, за да направите промените видими.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Ðеразрешени Ñимволи в името на webdav префикÑа.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['enable_custom_login_txt'] = 'Разреши различни имена за вход'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Мейлинг лиÑÑ‚ Ð°Ð´Ñ€ÐµÑ URL'; -$wb['admin_mail_txt'] = 'ÐдминиÑтраторÑки емаил'; -$wb['admin_name_txt'] = 'ÐдминиÑтраторÑки имена'; -$wb['system_config_desc_txt'] = ''; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/br_system_config.lng b/br_system_config.lng deleted file mode 100644 index f5ed36e9ea..0000000000 --- a/br_system_config.lng +++ /dev/null @@ -1,95 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = 'Configurações do Sistema'; -$wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.'; -$wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'URL do Dashboard atom (revendas)'; -$wb['dashboard_atom_url_client_txt'] = 'URL do Dashboard atom (clientes)'; -$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!'; -$wb['tab_change_discard_txt'] = 'Descartar alterações nesta aba'; -$wb['tab_change_warning_txt'] = 'Alerta de alterações'; -$wb['tab_change_warning_note_txt'] = 'Exibir alertas de alterações nesta aba se qualquer dado for alterado pelo usuário.'; -$wb['dbname_prefix_txt'] = 'Prefixo de banco de dados'; -$wb['dbuser_prefix_txt'] = 'Prefixo de usuário de banco de dados'; -$wb['shelluser_prefix_txt'] = 'Prefixo de usuário do shell'; -$wb['webdavuser_prefix_txt'] = 'Prefixo de usuário webdav'; -$wb['ftpuser_prefix_txt'] = 'Prefixo de usuário ftp'; -$wb['vhost_subdomains_txt'] = 'Adicionar subdomÃnios como um site'; -$wb['vhost_subdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem subdomÃnios vhost no sistema!'; -$wb['vhost_aliasdomains_txt'] = 'Adicionar alias de domÃnio como um site'; -$wb['vhost_aliasdomains_note_txt'] = 'Você não pode desabilitar esta configuração enquanto existirem alias de domÃnios vhost no sistema!'; -$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo de banco de dados.'; -$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário de banco de dados.'; -$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário ftp.'; -$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuário do shell.'; -$wb['webdavuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo de usuários webdav.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link para o phpmyadmin'; -$wb['enable_custom_login_txt'] = 'Permitir nome de usuário personalizado'; -$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Exibir aba de auto-resposta nos detalhes da conta de e-mail'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Exibir aba de filtro de e-mails nos detalhes da conta de e-mail'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Exibir aba de filtros personalizados de e-mail nos detalhes da conta de e-mail'; -$wb['webmail_url_txt'] = 'URL do webmail'; -$wb['mailmailinglist_link_txt'] = 'Link para lista de e-mails na lista de e-mails'; -$wb['mailmailinglist_url_txt'] = 'URL da lista de e-mails'; -$wb['phpmyadmin_url_txt'] = 'URL do phpMyAdmin'; -$wb['use_domain_module_txt'] = 'Use o módulo de cliente para adicionar novos domÃnios'; -$wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem selecionar apenas um dos domÃnios que o administrador adicionar para eles. Eles não podem editar o campo domÃnio livremente. Você deve sair e acessar novamente após alterar este valor para que as mudanças sejam aplicadas.'; -$wb['new_domain_txt'] = 'Código HTML para criar um novo domÃnio'; -$wb['webftp_url_txt'] = 'URL do FTPweb'; -$wb['admin_mail_txt'] = 'Administrador(es) de e-mails'; -$wb['monitor_key_txt'] = 'Palavras reservadas a monitorar'; -$wb['admin_name_txt'] = 'Nome do administrador'; -$wb['maintenance_mode_txt'] = 'Modo manutenção'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar e-mails do sistema'; -$wb['smtp_host_txt'] = 'Host SMTP'; -$wb['smtp_port_txt'] = 'Porta SMTP'; -$wb['smtp_user_txt'] = 'Usuário SMTP'; -$wb['smtp_pass_txt'] = 'Senha do SMTP'; -$wb['smtp_crypt_txt'] = 'Usar conexão criptografada SSL/TLS para o SMTP'; -$wb['phpmyadmin_url_error_regex'] = 'URL do phpmyadmin é inválida.'; -$wb['use_combobox_txt'] = 'Usar combobox jQuery UI'; -$wb['use_loadindicator_txt'] = 'Usar indicador de carga'; -$wb['f5_to_reload_js_txt'] = 'Se você modificar esta configuração, talvez será necessário pressionar F5 no seu navegador para recarregar as bibliotecas do JavaScript ou esvaziar o cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Desabilitar verificação da palavra reservada "web" para o nome de usuário (não recomendado!).'; -$wb['backups_include_into_web_quota_txt'] = 'Incluir arquivos de backup na cota do site.'; -$wb['webmail_url_error_regex'] = 'URL do webmail é inválida.'; -$wb['phpmyadmin_url_note_txt'] = 'Ãrea reservada:'; -$wb['webmail_url_note_txt'] = 'Ãrea reservada:'; -$wb['available_dashlets_note_txt'] = 'Dashlets disponÃveis:'; -$wb['admin_dashlets_left_txt'] = 'Restrições de dashlets para administradores'; -$wb['admin_dashlets_right_txt'] = 'Permissões de dashlets para administradores'; -$wb['reseller_dashlets_left_txt'] = 'Restrições de dashlets para revendas'; -$wb['reseller_dashlets_right_txt'] = 'Permissões de dashlets para revendas'; -$wb['client_dashlets_left_txt'] = 'Restrições de dashlets para clientes'; -$wb['client_dashlets_right_txt'] = 'Permissões de dashlets para clientes'; -$wb['customer_no_template_txt'] = 'No. do gabarito do cliente'; -$wb['customer_no_template_error_regex_txt'] = 'O número do gabarito do cliente contém caracteres inválidos.'; -$wb['customer_no_start_txt'] = 'Valor inicial do código de cliente'; -$wb['customer_no_counter_txt'] = 'Contador do código de cliente'; -$wb['session_timeout_txt'] = 'Duração da sessão (minutos)'; -$wb['session_allow_endless_txt'] = 'Habilitar "Manter-me conectado"'; -$wb['No'] = 'Não'; -$wb['min_password_length_txt'] = 'Comprimento mÃnimo da senha'; -$wb['min_password_strength_txt'] = 'Dificuldade mÃnima da senha'; -$wb['default_mailserver_txt'] = 'Servidor de e-mails padrão'; -$wb['default_webserver_txt'] = 'Servidor web padrão'; -$wb['default_dnsserver_txt'] = 'Servidor dns padrão'; -$wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; -$wb['default_dbserver_txt'] = 'Servidor de banco de dados padrão'; -$wb['company_name_txt'] = 'Nome da empresa para tÃtulo da página'; -$wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites'; -$wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso'; -$wb['custom_login_link_txt'] = 'Link personalizado para página de acesso'; -$wb['login_link_error_regex'] = 'Link personalizado para acesso inválido'; -$wb['ca_name_txt'] = 'Nome'; -$wb['ca_issue_txt'] = 'Questão'; -$wb['ca_wildcard_txt'] = 'Usar curingas'; -$wb['ca_iodef_txt'] = 'Definições de E/S'; -$wb['active_txt'] = 'Ativo'; -$wb['btn_save_txt'] = 'Salvar'; -$wb['btn_cancel_txt'] = 'Cancelar'; -$wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)'; -?> diff --git a/ca_system_config.lng b/ca_system_config.lng deleted file mode 100644 index f721f688c5..0000000000 --- a/ca_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['dbname_prefix_txt'] = 'Database name prefix'; -$wb['dbuser_prefix_txt'] = 'Database user prefix'; -$wb['shelluser_prefix_txt'] = 'Shell user prefix'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain limits in client module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['admin_mail_txt'] = 'Administrator\'s e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrator\'s name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/cz_system_config.lng b/cz_system_config.lng deleted file mode 100644 index 4ee62ece32..0000000000 --- a/cz_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s vÃce, než jednÃm klientem.'; -$wb['dbname_prefix_txt'] = 'Prefix názvu databáze'; -$wb['dbuser_prefix_txt'] = 'Prefix uživatele databáze'; -$wb['shelluser_prefix_txt'] = 'Prefix shell uživatele'; -$wb['ftpuser_prefix_txt'] = 'Prefix FTP uživatele'; -$wb['dbname_prefix_error_regex'] = 'Znak nenà povolen v prefixu databázovém názvu.'; -$wb['dbuser_prefix_error_regex'] = 'Znak nenà povolen v prefixu databázového uživatele.'; -$wb['ftpuser_prefix_error_regex'] = 'Znak nenà povolen v prefixu FTP uživatele.'; -$wb['shelluser_prefix_error_regex'] = 'Znak nenà povolen v prefixu shell uživatele.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Ikonový odkaz na aplikaci PHPMyAdmin v seznamu databázÃ'; -$wb['mailboxlist_webmail_link_txt'] = 'Ikonový odkaz na aplikaci Webmail v seznamu e-mailových schránek'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['dashboard_atom_url_admin_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (admina)'; -$wb['dashboard_atom_url_reseller_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (prodejce)'; -$wb['dashboard_atom_url_client_txt'] = 'NástÄ›nka - novinky naÄÃtat z URL pro: (klienty)'; -$wb['webdavuser_prefix_txt'] = 'Prefix webdav uživatele'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['use_domain_module_txt'] = 'Použijte modul-domény pro pÅ™idánà nových domén'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML vytvoÅ™it novou doménu'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['admin_mail_txt'] = 'E-mail Administrátora'; -$wb['admin_name_txt'] = 'Jméno Administrátora'; -$wb['enable_custom_login_txt'] = 'Povolit vlastnà pÅ™ihlaÅ¡ovacà jméno u e-mailové schránky'; -$wb['mailmailinglist_link_txt'] = 'Ikonový odkaz na aplikaci E-mailových konferencà seznamu e-mailových konferencÃ'; -$wb['mailmailinglist_url_txt'] = 'E-mailové konference URL'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['maintenance_mode_txt'] = 'Režim údržby'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'PoužÃt (zvolit) SMTP server pro zasÃlánà systémových mailů'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP uživatel'; -$wb['smtp_pass_txt'] = 'SMTP heslo'; -$wb['smtp_crypt_txt'] = 'PoužÃt SSL/TLS Å¡ifrované spojenà pro SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Zadejte prosÃm jméno Administrátora a e-mailovou adresu Administrátora, pokud chcete použÃvat zvolený SMTP server pro zasÃlánà systémových mailů.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Záložka zmÄ›na varovánÃ'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'VytvoÅ™it subdomény jako webové stránky'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin neplatné URL'; -$wb['use_combobox_txt'] = 'Použità jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Použità indikátoru zatÞenÃ'; -$wb['f5_to_reload_js_txt'] = 'Pokud vypnete tuto volbu, zÅ™ejmÄ› budete muset použÃvat klávesu F5, aby internetový prohlÞeÄ znovu naÄetl JavaScript knihovny nebo budete muset ruÄnÄ› vyprázdňovat mezipaměť (cache) vaÅ¡eho internetového prohlÞeÄe.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Ukázat kartu automatická odpovÄ›Ä v podrobnostech u e-mailové schránky'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Ukázat kartu e-mailové filtry v podrobnostech u e-mailové schránky'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Ukázat kartu vlastnà pravidla v podrobnostech u e-mailové schránky'; -$wb['webmail_url_error_regex'] = 'Neplatný webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Zástupný symbol'; -$wb['webmail_url_note_txt'] = 'Zástupný symbol'; -$wb['available_dashlets_note_txt'] = 'Dostupné moduly pro nástÄ›nku:'; -$wb['admin_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (admina)'; -$wb['admin_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (admina)'; -$wb['reseller_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (prodejce)'; -$wb['reseller_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (prodejce)'; -$wb['client_dashlets_left_txt'] = 'NástÄ›nka - zobrazenà modulů v lévé Äásti pro: (klienty)'; -$wb['client_dashlets_right_txt'] = 'NástÄ›nka - zobrazenà modulů v pravé Äásti pro: (klienty)'; -$wb['customer_no_template_txt'] = 'Zákaznické ÄÃslo - Å¡ablona'; -$wb['customer_no_template_error_regex_txt'] = 'Zákaznické ÄÃslo Å¡ablony obsahuje neplatné znaky'; -$wb['customer_no_start_txt'] = 'Zákaznické ÄÃslo - poÄáteÄnà hodnota'; -$wb['customer_no_counter_txt'] = 'Zákaznické ÄÃslo - ÄÃtaÄ'; -$wb['session_timeout_txt'] = 'ÄŒasový limit relace (minuty)'; -$wb['session_allow_endless_txt'] = 'Povolit - zůstat pÅ™ihlášen'; -$wb['No'] = 'Ne'; -$wb['min_password_length_txt'] = 'Minimálnà délka hesla'; -$wb['min_password_strength_txt'] = 'Minimálnà sÃla hesla'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['default_mailserver_txt'] = 'Výchozà E-mailový server'; -$wb['default_webserver_txt'] = 'Výchozà webový server'; -$wb['default_dnsserver_txt'] = 'Výchozà DNS server'; -$wb['default_slave_dnsserver_txt'] = 'Výchozà sekundárnà DNS server'; -$wb['default_dbserver_txt'] = 'Výchozà databázový server'; -$wb['company_name_txt'] = 'Název spoleÄnosti v panelu (listu) webového prohlÞeÄe'; -$wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použÃt kartu možnostà pro weby.'; -$wb['custom_login_text_txt'] = 'Vlastnà text na pÅ™ihlaÅ¡ovacà stránce'; -$wb['custom_login_link_txt'] = 'Vlastnà odkaz (URL) na pÅ™ihlaÅ¡ovacà stránce (vlastnà text)'; -$wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastnà odkaz na pÅ™ihlaÅ¡ovacà stránce'; -$wb['ca_name_txt'] = 'Název vydavatele'; -$wb['ca_issue_txt'] = 'Doména vydavatele'; -$wb['ca_wildcard_txt'] = 'PoužÃt Wildcard (*)'; -$wb['ca_critical_txt'] = 'PÅ™Ãsná kontrola'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'AktivnÃ'; -$wb['btn_save_txt'] = 'Uložit'; -$wb['btn_cancel_txt'] = 'ZruÅ¡it'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/de_system_config.lng b/de_system_config.lng deleted file mode 100644 index f981cce832..0000000000 --- a/de_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = 'Systemkonfiguration'; -$wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.'; -$wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.'; -$wb['tab_change_warning_txt'] = 'Reiter Wechsel Warnung'; -$wb['tab_change_discard_txt'] = 'Verwerfe Änderungen bei Reiter Wechsel'; -$wb['tab_change_warning_note_txt'] = 'Zeigt eine Warnung an, wenn der Reiter in einem Formular gewechselt wird und Daten geändert wurden.'; -$wb['dbname_prefix_txt'] = 'Datenbank Namen Präfix'; -$wb['dbuser_prefix_txt'] = 'Datenbank Benutzer Präfix'; -$wb['shelluser_prefix_txt'] = 'Shell Benutzer Präfix'; -$wb['ftpuser_prefix_txt'] = 'FTP Benutzer Präfix'; -$wb['vhost_subdomains_txt'] = 'Subdomains als Webseite anlegen'; -$wb['vhost_subdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Subdomains im System vorhanden sind!'; -$wb['vhost_aliasdomains_txt'] = 'Aliasdomains als Webseite anlegen'; -$wb['vhost_aliasdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Aliasdomains im System vorhanden sind!'; -$wb['dbname_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Namen Präfix.'; -$wb['dbuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Benutzer Präfix.'; -$wb['ftpuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in FTP Benutzer Präfix.'; -$wb['shelluser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Shell Benutzer Präfix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link zu phpMyAdmin in der Datenbankliste'; -$wb['mailboxlist_webmail_link_txt'] = 'Link zu Webmail in der Mailboxliste'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'phpMyAdmin URL'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (für Admins)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (für Reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (für Kunden)'; -$wb['webdavuser_prefix_txt'] = 'WebDAV Benutzer Präfix'; -$wb['webdavuser_prefix_error_regex'] = 'Zeichen nicht zulässig im WebDAV Benutzer Präfix.'; -$wb['use_domain_module_txt'] = 'Domain Limits im Kundenmodul benutzen, um neue Domains hinzuzufügen'; -$wb['use_domain_module_hint'] = 'Falls Sie die Domain Limits benutzen, können Ihre Kunden nur eine der Domains auswählen, die der Admin für sie angelegt hat. Die Kunden können das Domain-Feld nicht frei editieren. Sie müssen sich neu einloggen, wenn Sie diesen Wert ändern.'; -$wb['new_domain_txt'] = 'HTML Text zum Anlegen einer neuen Domain'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Abweichenden Login Namen erlauben'; -$wb['mailmailinglist_link_txt'] = 'Link zur Mailingliste in der Mailinglisten Ãœbersicht'; -$wb['mailmailinglist_url_txt'] = 'Mailinglisten URL'; -$wb['admin_mail_txt'] = 'Administrator E-Mail'; -$wb['monitor_key_txt'] = 'ISPConfig Monitor App Passwort'; -$wb['admin_name_txt'] = 'Name des Administrators'; -$wb['maintenance_mode_txt'] = 'Wartungsmodus'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'SMTP zum System E-Mailversand nutzen'; -$wb['smtp_host_txt'] = 'SMTP Server'; -$wb['smtp_port_txt'] = 'SMTP Port'; -$wb['smtp_user_txt'] = 'SMTP Benutzer'; -$wb['smtp_pass_txt'] = 'SMTP Passwort'; -$wb['smtp_crypt_txt'] = 'SSL/TLS verschlüsselte Verbindung für SMTP'; -$wb['use_combobox_txt'] = 'jQuery UI Combobox benutzen'; -$wb['use_loadindicator_txt'] = 'Laden Grafik anzeigen'; -$wb['f5_to_reload_js_txt'] = 'Wenn Sie den Wert ändern, müssen Sie F5 drücken, damit der Browser die JavaScript Bibliotheken neu lädt, oder Ihren Browser Cache leeren.'; -$wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL'; -$wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Ãœberprüfung für den Begriff <b>web<b>.'; -$wb['backups_include_into_web_quota_txt'] = 'Backups in Web Quota hinzuzählen.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails'; -$wb['webmail_url_error_regex'] = 'Falsche Webmail URL'; -$wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden'; -$wb['phpmyadmin_url_note_txt'] = 'Platzhalter:'; -$wb['webmail_url_note_txt'] = 'Platzhalter:'; -$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links'; -$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts'; -$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links'; -$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts'; -$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links'; -$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts'; -$wb['customer_no_template_txt'] = 'Kundennummer-Vorlage'; -$wb['customer_no_template_error_regex_txt'] = 'Die Kundennummer-Vorlage enthält ungültige Zeichen'; -$wb['customer_no_start_txt'] = 'Kundennummer Startwert'; -$wb['customer_no_counter_txt'] = 'Kundennummer Zähler'; -$wb['session_timeout_txt'] = 'Session-Timeout (Minuten)'; -$wb['session_allow_endless_txt'] = '"Eingeloggt bleiben" aktivieren'; -$wb['No'] = 'Nein'; -$wb['min_password_length_txt'] = 'Minimale Passwortlänge'; -$wb['min_password_strength_txt'] = 'Minimale Passwortstärke'; -$wb['company_name_txt'] = 'Firmenname fuer den Seitentitel'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Wildcard verwenden'; -$wb['ca_critical_txt'] = 'Strikte Ãœberprüfung'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktiv'; -$wb['btn_save_txt'] = 'Speichern'; -$wb['btn_cancel_txt'] = 'Abbrechen'; -$wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)'; -?> diff --git a/dk_system_config.lng b/dk_system_config.lng deleted file mode 100644 index 5f298f091a..0000000000 --- a/dk_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (forhandler)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (klient)'; -$wb['warning'] = 'Rediger disse værdier forsigtigt! Fjern ikke præfikser pÃ¥ et system med mere end én klient.'; -$wb['tab_change_discard_txt'] = 'Kassér ændringer pÃ¥ fanen forandring'; -$wb['tab_change_warning_txt'] = 'Fane ændrings advarsel'; -$wb['tab_change_warning_note_txt'] = 'Vis en advarsel pÃ¥ fanen ændring i redigere formularer, hvis nogen data er blevet ændret af brugeren.'; -$wb['dbname_prefix_txt'] = 'Database navn prefix'; -$wb['dbuser_prefix_txt'] = 'Database bruger prefix'; -$wb['shelluser_prefix_txt'] = 'Shell bruger prefix'; -$wb['webdavuser_prefix_txt'] = 'Webdav bruger prefix'; -$wb['ftpuser_prefix_txt'] = 'FTP bruger prefix'; -$wb['vhost_subdomains_txt'] = 'Opret Sub-domæne som web side'; -$wb['vhost_subdomains_note_txt'] = 'Du kan ikke deaktivere dette, sÃ¥ længe der findes vhost sub-domæner i systemet!'; -$wb['dbname_prefix_error_regex'] = 'Char ikke tilladt i database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char ikke tilladt i database bruger prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char ikke tilladt i ftp bruger prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char ikke tilladt i shell bruger prefix.'; -$wb['webdavuser_prefix_error_regex'] = 'Char ikke tilladt i webdav bruger prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link til phpmyadmin i DB liste'; -$wb['enable_custom_login_txt'] = 'Tillad brugerdefinerede login-navn'; -$wb['mailboxlist_webmail_link_txt'] = 'Link til webmail i Postboks liste'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['mailmailinglist_link_txt'] = 'Link til mailing list i Mailing list liste'; -$wb['mailmailinglist_url_txt'] = 'Mail-list URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Brug domæne grænser i klient-modul for at tilføje nye domæner'; -$wb['use_domain_module_hint'] = 'Hvis du bruger domæne grænser, kan dine kunder kun vælge et af de omrÃ¥der admin skabte for dem. De kan ikke frit redigere domæne-feltet. Du er nødt til at re-login efter at ændre denne værdi, for at gøre ændringerne synlige.'; -$wb['new_domain_txt'] = 'HTML for at oprette et nyt domæne'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['admin_mail_txt'] = 'Administratorer e-mail'; -$wb['monitor_key_txt'] = 'Monitor nøgleord'; -$wb['admin_name_txt'] = 'Administratorer navn'; -$wb['maintenance_mode_txt'] = 'Vedligeholdelsestilstand'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Brug SMTP for at sende system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP bruger'; -$wb['smtp_pass_txt'] = 'SMTP adgangskode'; -$wb['smtp_crypt_txt'] = 'Brug SSL/TLS krypteret forbindelse for SMTP'; -$wb['phpmyadmin_url_error_regex'] = 'Ugyldigt phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Brug jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Brug Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'Hvis du ændrer dette, kan du blive nødt til at trykke pÃ¥ F5 for at browseren genindlæser JavaScript-biblioteker eller tømme browserens cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Deaktiver klient-brugernavns check for ordet \'web\'.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Vis autoresponder tab i mail kontooplysninger'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Vis mail filter tab i mail kontooplysninger'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Vis custom mailfilter tab i mail kontooplysninger'; -$wb['webmail_url_error_regex'] = 'Ugyldigt webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Pladsholder:'; -$wb['webmail_url_note_txt'] = 'Pladsholder:'; -$wb['available_dashlets_note_txt'] = 'Tilgængelig Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Forhandler Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Forhandler Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Kunde Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Kunde Dashlets'; -$wb['customer_no_template_txt'] = 'Kunde Nr. skabelon'; -$wb['customer_no_template_error_regex_txt'] = 'Kunde Nr. skabelon indeholder ugyldigt karaktere'; -$wb['customer_no_start_txt'] = 'Kunde Nr. start værdi'; -$wb['customer_no_counter_txt'] = 'Kunde Nr. tæller'; -$wb['session_timeout_txt'] = 'Session timeout (minutter)'; -$wb['session_allow_endless_txt'] = 'Aktiver \\"forbliv logget ind\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum adgangskode længde'; -$wb['min_password_strength_txt'] = 'Minimum adgangskode styrke'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/el_system_config.lng b/el_system_config.lng deleted file mode 100644 index 17414e666d..0000000000 --- a/el_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['warning'] = 'ΕπεξεÏγαστείτε τις τιμÎÏ‚ με Ï€Ïοσοχή! ΜΗΠαφαιÏείτε τα Ï€ÏοθÎματα σε συστήματα με πεÏισσότεÏους από Îναν πελάτες.'; -$wb['dbname_prefix_txt'] = 'Î Ïόθεμα Ονόματος Βάσης ΔεδομÎνων'; -$wb['dbuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Βάσης ΔεδομÎνων'; -$wb['shelluser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Shell'; -$wb['webdavuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη Webdav'; -$wb['ftpuser_prefix_txt'] = 'Î Ïόθεμα ΧÏήστη FTP'; -$wb['dbname_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του Ονόματος της Βάσης ΔεδομÎνων.'; -$wb['dbuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη της Βάσης ΔεδομÎνων.'; -$wb['ftpuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη ftp.'; -$wb['shelluser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη Shell.'; -$wb['webdavuser_prefix_error_regex'] = 'Δεν επιτÏÎπονται χαÏακτήÏες στο Ï€Ïόθεμα του ΧÏήστη Webdav.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link για το phpmyadmin στη λίστα των βάσεων δεδομÎνων'; -$wb['mailboxlist_webmail_link_txt'] = 'Link για το webmail στην λίστα των θυÏίδων mail'; -$wb['webmail_url_txt'] = 'URL του Webmail'; -$wb['phpmyadmin_url_txt'] = 'URL του PHPMyAdmin'; -$wb['use_domain_module_txt'] = 'ΧÏήση του αÏθÏώματος-domain για την Ï€Ïοσθήκη νÎων domains'; -$wb['use_domain_module_hint'] = 'Αν χÏησιμοποιήσετε αυτό το άÏθÏωμα, οι πελάτες σας μποÏοÏν μόνο να διαλÎξουν Îνα από τα domains που δημιοÏÏγησε για αυτοÏÏ‚ ο διαχειÏιστής. Δεν μποÏοÏν να επεξεÏγαστοÏν ελεÏθεÏα τα πεδία του domain.Î ÏÎπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγÎÏ‚ σας, οÏατÎÏ‚.'; -$wb['new_domain_txt'] = 'HTML για την δημιουÏγία domain'; -$wb['webftp_url_txt'] = 'URL του WebFTP'; -$wb['enable_custom_login_txt'] = 'Αποδοχή Ï€ÏοσαÏμοσμÎνου ονόματος login'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'URL της Mailing list '; -$wb['admin_mail_txt'] = 'e-mail ΔιαχειÏιστών'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Όνομα Administrator'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP θÏÏα'; -$wb['smtp_user_txt'] = 'SMTP χÏήστης'; -$wb['smtp_pass_txt'] = 'SMTP συνθηματικό'; -$wb['smtp_crypt_txt'] = 'ΧÏήση κÏυπτογÏαφημÎνης σÏνδεσης SSL/TLS για SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'ΠΑÏακαλοÏμε εισάγετε το όνομα διαχειÏιστή και την διεÏθυνση mail αν θÎλετε να χÏησιμοποιήσετε απόστολή mail με smtp.'; -$wb['tab_change_discard_txt'] = 'ΑκÏÏωση αλλαγών με την αλλαγή καÏÏ„Îλας'; -$wb['tab_change_warning_txt'] = 'Î Ïοειδοποίηση αλλαγής καÏÏ„Îλας'; -$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας Ï€Ïοειδοποίησης κατα την αλλαγή καÏÏ„Îλας σε φόÏμες επεξεÏγασίας που Îχουν Ï„Ïοποποιηθεί από τον χÏήστη.'; -$wb['vhost_subdomains_txt'] = 'ΔημιουÏγία Subdomains ως web site'; -$wb['vhost_subdomains_note_txt'] = 'Δεν μποÏεί να γίνει απενεÏγοποίηση όσο υπάÏχουν vhost subdomains στο σÏστημα!'; -$wb['vhost_aliasdomains_txt'] = 'ΔημιουÏγία aliasdomains ως web site'; -$wb['vhost_aliasdomains_note_txt'] = 'Δεν μποÏεί να γίνει απενεÏγοποίηση όσο υπάÏχουν vhost aliasdomains στο σÏστημα!'; -$wb['phpmyadmin_url_error_regex'] = 'Μη ÎγκυÏο URL phpmyadmin'; -$wb['use_combobox_txt'] = 'ΧÏήση jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'ΧÏήση Load Indicator (ενδεικτή φόÏτωσης)'; -$wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως Ï€ÏÎπει να πατήσετε το F5 για να κάνετε τον φυλλομετÏητη να ξαναφοÏτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετÏητή.'; -$wb['client_username_web_check_disabled_txt'] = 'ΑπενεÏγοποίηση ελÎγχου στο όνομα χÏήστη για την λÎξη \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Αυτόματης Απάντησης στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας ΦίλτÏα mail στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καÏÏ„Îλας Î ÏοσαÏμοσμÎνοι Κανόνες στις λεπτομÎÏειες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï mail'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/en_system_config.lng b/en_system_config.lng deleted file mode 100644 index 840b3f434b..0000000000 --- a/en_system_config.lng +++ /dev/null @@ -1,99 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb["warning"] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb["dbname_prefix_txt"] = 'Database name prefix'; -$wb["dbuser_prefix_txt"] = 'Database user prefix'; -$wb["shelluser_prefix_txt"] = 'Shell user prefix'; -$wb["webdavuser_prefix_txt"] = 'Webdav user prefix'; -$wb["ftpuser_prefix_txt"] = 'FTP user prefix'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb["dbname_prefix_error_regex"] = 'Char not allowed in database name prefix.'; -$wb["dbuser_prefix_error_regex"] = 'Char not allowed in database user prefix.'; -$wb["ftpuser_prefix_error_regex"] = 'Char not allowed in ftp user prefix.'; -$wb["shelluser_prefix_error_regex"] = 'Char not allowed in shell user prefix.'; -$wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.'; -$wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail'; -$wb["webmail_url_txt"] = 'Webmail URL'; -$wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list'; -$wb["mailmailinglist_url_txt"] = 'Mailing list URL'; -$wb["phpmyadmin_url_txt"] = 'PHPMyAdmin URL'; -$wb["use_domain_module_txt"] = 'Use the domain limits in client module to add new domains'; -$wb["use_domain_module_hint"] = 'If you use the domain limits, your customers can only select one of the domains the admin creates for them. They cannot freely edit the domain-field. You have to re-login after changing this value, to make the changes visible.'; -$wb["new_domain_txt"] = 'HTML to create a new domain'; -$wb["webftp_url_txt"] = 'WebFTP URL'; -$wb['admin_mail_txt'] = 'Administrator\'s e-mail'; -$wb["monitor_key_txt"] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrator\'s name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable "stay logged in"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb["default_mailserver_txt"] = 'Default Mailserver'; -$wb["default_webserver_txt"] = 'Default Webserver'; -$wb["default_dnsserver_txt"] = 'Default DNS Server'; -$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server'; -$wb["default_dbserver_txt"] = 'Default Database Server'; -$wb["company_name_txt"] = "Company Name for the page title"; -$wb["reseller_can_use_options_txt"] = "Reseller can use the option-tab for websites"; -$wb["custom_login_text_txt"] = "Custom Text on Login-Page"; -$wb["custom_login_link_txt"] = "Custom Link on Login-Page"; -$wb["login_link_error_regex"] = "Invalid Link for Custom Login"; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; //For future use. At this time, CA’s do not recognize any other flag values as described in RFC 6844 -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Active'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/es_system_config.lng b/es_system_config.lng deleted file mode 100644 index 7c4525da9a..0000000000 --- a/es_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda'; -$wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha'; -$wb['admin_mail_txt'] = 'Correo del administrador'; -$wb['admin_name_txt'] = 'Nombre del administrador'; -$wb['available_dashlets_note_txt'] = 'Componentes disponibles:'; -$wb['backups_include_into_web_quota_txt'] = 'Incluir archivos de copia de seguridad en la cuota web.'; -$wb['client_dashlets_left_txt'] = 'Componentes del cliente a la izquierda'; -$wb['client_dashlets_right_txt'] = 'Componentes del cliente a la derecha'; -$wb['client_username_web_check_disabled_txt'] = 'Desactivar la comprobación de la palabra \\"web\\" en los nombres de clientes.'; -$wb['company_name_txt'] = 'Nombre de la compañÃa para el tÃtulo de la página'; -$wb['custom_login_link_txt'] = 'Enlace personalizado para la página de Inicio de Sesión'; -$wb['custom_login_text_txt'] = 'Texto personalizado para la página de Inicio de Sesión'; -$wb['customer_no_counter_txt'] = 'Contador de Nº. cliente'; -$wb['customer_no_start_txt'] = 'Valor de inicio de Nº. de cliente'; -$wb['customer_no_template_error_regex_txt'] = 'La plantilla Nº. de cliente contiene caracteres inválidos'; -$wb['customer_no_template_txt'] = 'Plantilla de Nº. de cliente'; -$wb['dashboard_atom_url_admin_txt'] = 'URL del feed atom en el panel (admin)'; -$wb['dashboard_atom_url_client_txt'] = 'URL del feed atom en el panel (cliente)'; -$wb['dashboard_atom_url_reseller_txt'] = 'URL del feed atom en el panel (revendedor)'; -$wb['dblist_phpmyadmin_link_txt'] = 'VÃnculo a phpMyAdmin en la lista de bases de datos'; -$wb['dbname_prefix_error_regex'] = 'Carácter no permitido en el prefijo de nombre de base de datos.'; -$wb['dbname_prefix_txt'] = 'Prefijo del nombre de la base de datos'; -$wb['dbuser_prefix_error_regex'] = 'Carácter no permitido en el nombre del usuario de la base datos.'; -$wb['dbuser_prefix_txt'] = 'Prefijo del usuario de la base de datos'; -$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto'; -$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto'; -$wb['default_mailserver_txt'] = 'Servidor de correo por defecto'; -$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto'; -$wb['default_webserver_txt'] = 'Servidor web por defecto'; -$wb['enable_custom_login_txt'] = 'Permitir nombre de inicio de sesión personalizado'; -$wb['f5_to_reload_js_txt'] = 'Si modifica esto, deberá pulsar F5 para que el explorador cargue las librerÃas JavaScript o incluso necesitará borrar la caché de su explorador.'; -$wb['ftpuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario de FTP.'; -$wb['ftpuser_prefix_txt'] = 'Prefijo del usuario de FTP'; -$wb['login_link_error_regex'] = 'Enlace incorrecto para el inicio de sesión personalizado'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar la pestaña del auto-respondedor en los detalles de la cuenta de correo'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar la pestaña filtro de correo personalizado en los detalles de la cuenta de correo'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar la pestaña filtro de correo en los detalles de la cuenta de correo'; -$wb['mailboxlist_webmail_link_txt'] = 'Vinculo a correo web en la lista de buzones de correo'; -$wb['mailmailinglist_link_txt'] = 'VÃnculo a la lista de correos en la lista de la Lista de correos'; -$wb['mailmailinglist_url_txt'] = 'URL a la lista de correos'; -$wb['maintenance_mode_txt'] = 'Modo de mantenimiento'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['min_password_length_txt'] = 'Longitud mÃnima de la contraseña'; -$wb['min_password_strength_txt'] = 'Fortaleza mÃnima de la contraseña'; -$wb['monitor_key_txt'] = 'Palabra clave del Monitor'; -$wb['new_domain_txt'] = 'HTML para la creación de nuevos dominios'; -$wb['No'] = 'No'; -$wb['phpmyadmin_url_error_regex'] = 'URL inválida a phpMyAdmin'; -$wb['phpmyadmin_url_note_txt'] = 'Marcador de posición:'; -$wb['phpmyadmin_url_txt'] = 'Enlace a phpMyAdmin'; -$wb['reseller_can_use_options_txt'] = 'El revendedor puede utilizar la pestaña opciones para los sitios webs'; -$wb['reseller_dashlets_left_txt'] = 'Componentes de revendedores a la izquierda'; -$wb['reseller_dashlets_right_txt'] = 'Componentes de revendedores a la derecha'; -$wb['session_allow_endless_txt'] = 'Habilitar \\"mantenerme conectado\\"'; -$wb['session_timeout_txt'] = 'Tiempo lÃmite de sesión (minutos)'; -$wb['shelluser_prefix_error_regex'] = 'Carácter no permitido en el prefijo de usuario del shell.'; -$wb['shelluser_prefix_txt'] = 'Prefijo del usuario del Shell'; -$wb['smtp_crypt_txt'] = 'Usar conexión encriptada SSL/TLS para el SMTP'; -$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar correos del sistema'; -$wb['smtp_host_txt'] = 'Host del SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Por favor ingrese el nombre y correo del admin si desea usar el envÃo de correo mediante SMTP.'; -$wb['smtp_pass_txt'] = 'Contraseña del SMTP'; -$wb['smtp_port_txt'] = 'Puerto del SMTP'; -$wb['smtp_user_txt'] = 'Usuario del SMTP'; -$wb['system_config_desc_txt'] = ''; -$wb['tab_change_discard_txt'] = 'Descartar cambios al cambiar de pestaña'; -$wb['tab_change_warning_note_txt'] = 'Mostrar advertencia al cambiar de pestaña en los formularios de edición si se ha cambiado algún parámetro.'; -$wb['tab_change_warning_txt'] = 'Advertencia al cambiar de pestaña'; -$wb['use_combobox_txt'] = 'Usar lista desplegable de jQuery UI'; -$wb['use_domain_module_hint'] = 'Si utiliza los lÃmites de dominio, sus clientes solo podrán seleccionar los dominios que el administrador haya creado para ellos. Los clientes no podrán editar libremente en campo de dominio. Necesitará reiniciar la sesión después de modificar esta opción para que que los cambios surjan efecto.'; -$wb['use_domain_module_txt'] = 'Usar los lÃmites de dominio en el modulo del cliente para agregar nuevos dominios'; -$wb['use_loadindicator_txt'] = 'Usar indicador de carga'; -$wb['vhost_aliasdomains_note_txt'] = 'No puede deshabilitar esto mientras existan host virtuales de alias de dominios en el sistema'; -$wb['vhost_aliasdomains_txt'] = 'Crear alias de dominios como sitios web'; -$wb['vhost_subdomains_note_txt'] = '¡No se puede desactivar esta opción mientras existan sub-dominios con host virtuales en el sistema!'; -$wb['vhost_subdomains_txt'] = 'Crear sub-dominio como sitio web'; -$wb['warning'] = '¡Edite estos valores cuidadosamente! No elimine los prefijos si el sistema contiene más de un cliente.'; -$wb['webdavuser_prefix_error_regex'] = 'Carácter no permitido en el prefijo del usuario de webdav.'; -$wb['webdavuser_prefix_txt'] = 'Prefijo del usuario de Webdav'; -$wb['webftp_url_txt'] = 'Enlace al cliente FTP por web'; -$wb['webmail_url_error_regex'] = 'Dirección del correo web inválida'; -$wb['webmail_url_note_txt'] = 'Marcador de posición:'; -$wb['webmail_url_txt'] = 'URL de correo web'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/fi_system_config.lng b/fi_system_config.lng deleted file mode 100644 index 2cafa6f5bf..0000000000 --- a/fi_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.'; -$wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite'; -$wb['dbuser_prefix_txt'] = 'Tietokannan käyttäjätunnuksen etuliite'; -$wb['shelluser_prefix_txt'] = 'Shell-käyttäjätunnuksen etuliite'; -$wb['ftpuser_prefix_txt'] = 'FTP-käyttäjätunnuksen etuliite'; -$wb['dbname_prefix_error_regex'] = 'Tietokannan nimen etuliite on vääränlainen.'; -$wb['dbuser_prefix_error_regex'] = 'Tietokannan käyttäjätunnuksen etuliite on vääränlainen.'; -$wb['ftpuser_prefix_error_regex'] = 'FTP-käyttäjätunnuksen etuliite on vääränlainen.'; -$wb['shelluser_prefix_error_regex'] = 'Shell-käyttäjätunnuksen etuliite on vääränlainen.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Linkki phpMyAdminiin tietokantalistassa'; -$wb['mailboxlist_webmail_link_txt'] = 'Linkki internetpostiin postilaatikkolistassa'; -$wb['webmail_url_txt'] = 'Webmail-osoite'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin-osoite'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/fr_system_config.lng b/fr_system_config.lng deleted file mode 100644 index 3b6fe68521..0000000000 --- a/fr_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'URL du fil de syndication Atom du tableau de bord (client)'; -$wb['warning'] = 'Editez ces valeurs prudemment ! Il n’est pas conseillé de modifier les préfixes lorsque vous avez des clients !'; -$wb['dbname_prefix_txt'] = 'Préfixe du nom de la BDd'; -$wb['dbuser_prefix_txt'] = 'Préfixe de l’utilisateur de la BDd'; -$wb['shelluser_prefix_txt'] = 'Préfixe de l’utilisateur Shell'; -$wb['webdavuser_prefix_txt'] = 'Préfixe de l’utilisateur WebDAV'; -$wb['ftpuser_prefix_txt'] = 'Préfixe de l’utilisateur FTP'; -$wb['dbname_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe du nom de la BDD.'; -$wb['dbuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur de la BDD.'; -$wb['ftpuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur FTP.'; -$wb['shelluser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe de l’utilisateur Shell.'; -$wb['webdavuser_prefix_error_regex'] = 'Caractère non autorisé dans le préfixe utilisateur WebDAV.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Lien vers PHPMyAdmin dans la liste des bases'; -$wb['enable_custom_login_txt'] = 'Autoriser les noms d’utilisateurs personnalisés'; -$wb['mailboxlist_webmail_link_txt'] = 'Lien vers le Webmail dans la liste des boîtes mail'; -$wb['webmail_url_txt'] = 'URL du Webmail'; -$wb['mailmailinglist_link_txt'] = 'Lien vers la mailing list dans la liste des Liste de distribution'; -$wb['mailmailinglist_url_txt'] = 'URL des Liste de distribution'; -$wb['phpmyadmin_url_txt'] = 'URL de PHPMyAdmin'; -$wb['use_domain_module_txt'] = 'Utiliser le module de domaine pour ajouter de nouveaux domaines'; -$wb['use_domain_module_hint'] = 'Si vous utilisez ce module, vos utilisateurs peuvent uniquement sélectionner un des domaines que l’admin crée pour eux. Ils ne peuvent pas éditer librement le champ domaine. Vous devez vous identifier à nouveau après avoir modifié cette valeur pour rendre les modifications visibles.'; -$wb['new_domain_txt'] = 'HTML pour créer un nouveau domaine'; -$wb['webftp_url_txt'] = 'URL du WebFTP'; -$wb['admin_mail_txt'] = 'E-mail de l’administrateur'; -$wb['monitor_key_txt'] = 'Mot-clé du moniteur'; -$wb['admin_name_txt'] = 'Nom des administrateurs'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word ’web’.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/hr_system_config.lng b/hr_system_config.lng deleted file mode 100644 index 66931524ec..0000000000 --- a/hr_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji viÅ¡e od jednog klijenata.'; -$wb['dbname_prefix_txt'] = 'Prefiks nazivu baze'; -$wb['dbuser_prefix_txt'] = 'Prefiks nazivu korisnika baze'; -$wb['shelluser_prefix_txt'] = 'Prefiks Shell raÄunu'; -$wb['webdavuser_prefix_txt'] = 'Prefix Webdav raÄunu'; -$wb['ftpuser_prefix_txt'] = 'Prefiks FTP raÄunu'; -$wb['dbname_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva baze.'; -$wb['dbuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu naziva korisnika baze.'; -$wb['ftpuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu FTP raÄuna.'; -$wb['shelluser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu Shell raÄuna.'; -$wb['webdavuser_prefix_error_regex'] = 'Nedozvoljeni znak u prefiksu webdav raÄuna.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link za phpmyadmin u DB listi'; -$wb['mailboxlist_webmail_link_txt'] = 'Link za webmail u Mailbox listi'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Koristi modul Domene za dodavanje novih domena'; -$wb['use_domain_module_hint'] = 'Ukoliko koristite ovaj modul, vaÅ¡i klijenti mogu izabrati samo domenu koju im je admin kreirao. Klijenti ne mogu slobodno mijenjati postavke domene. Morate se ponovno logirati nakon mijenjanja ove postavke da bi promjene bile vidljive.'; -$wb['new_domain_txt'] = 'HTML za kreiranje nove domene'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['monitor_key_txt'] = 'Monitoriranje rijeÄi'; -$wb['dashboard_atom_url_admin_txt'] = 'RSS URL za poÄetnu stranicu (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'RSS URL za poÄetnu stranicu (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'RSS URL za poÄetnu stranicu (client)'; -$wb['enable_custom_login_txt'] = 'Dozvoli izbor korisniÄkog imena'; -$wb['mailmailinglist_link_txt'] = 'Link na mailing listu u Mailing listi'; -$wb['mailmailinglist_url_txt'] = 'URL mailing liste'; -$wb['admin_mail_txt'] = 'e-mail administratora'; -$wb['admin_name_txt'] = 'Ime administratora'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/hu_system_config.lng b/hu_system_config.lng deleted file mode 100644 index 6e1f97dfbb..0000000000 --- a/hu_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ãœgyfél.'; -$wb['dbname_prefix_txt'] = 'Database name prefix'; -$wb['dbuser_prefix_txt'] = 'Database user prefix'; -$wb['shelluser_prefix_txt'] = 'Shell user prefix'; -$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; -$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/id_system_config.lng b/id_system_config.lng deleted file mode 100644 index 9072d62832..0000000000 --- a/id_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.'; -$wb['dbname_prefix_txt'] = 'Prefiks nama database'; -$wb['dbuser_prefix_txt'] = 'Prefiks pengguna database'; -$wb['shelluser_prefix_txt'] = 'Prefiks pengguna shell'; -$wb['ftpuser_prefix_txt'] = 'Prefiks pengguna FTP'; -$wb['dbname_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks nama database.'; -$wb['dbuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna database.'; -$wb['ftpuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna ftp.'; -$wb['shelluser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna shell.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Tautan ke phpmyadmin di daftar DB'; -$wb['mailboxlist_webmail_link_txt'] = 'Tautan ke webmail di daftar Mailbox'; -$wb['webmail_url_txt'] = 'URL Webmail'; -$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Prefiks pengguna Webdav'; -$wb['webdavuser_prefix_error_regex'] = 'Karakter tidak diperbolehkan di prefiks pengguna webdav.'; -$wb['use_domain_module_txt'] = 'Gunakan modul domain untuk menambahkan domain baru'; -$wb['use_domain_module_hint'] = 'Jika Anda menggunakan modul ini, pelanggan Anda hanya dapat memilih salah satu domain yang dibuat oleh admin untuk mereka. Mereka tidak bisa menyunting dengan bebas kolom domain. Anda harus masuk kembali setelah mengubah nilai ini, agar perubahannya terlihat.'; -$wb['new_domain_txt'] = 'HTML untuk membuat domain baru'; -$wb['webftp_url_txt'] = 'URL WebFTP'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/it_system_config.lng b/it_system_config.lng deleted file mode 100644 index 42a03ed0b8..0000000000 --- a/it_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; -$wb['dbname_prefix_txt'] = 'Prefisso nome database'; -$wb['dbuser_prefix_txt'] = 'Prefisso utente database'; -$wb['shelluser_prefix_txt'] = 'Prefisso utente Shell'; -$wb['ftpuser_prefix_txt'] = 'Prefisso utente FTP'; -$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Crea Subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/ja_system_config.lng b/ja_system_config.lng deleted file mode 100644 index dfea52b18d..0000000000 --- a/ja_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = '値ã®å¤‰æ›´ã«ã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。クライアントãŒåˆ©ç”¨ä¸ã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ—リフィックスã¯å‰Šé™¤ã—ãªã„ã§ãã ã•ã„。'; -$wb['dbname_prefix_txt'] = 'データベースåã®ãƒ—リフィックス'; -$wb['dbuser_prefix_txt'] = 'データベースユーザーåã®ãƒ—リフィックス'; -$wb['shelluser_prefix_txt'] = 'Shellユーザーåã®ãƒ—リフィックス'; -$wb['ftpuser_prefix_txt'] = 'FTPユーザーåã®ãƒ—リフィックス'; -$wb['dbname_prefix_error_regex'] = 'データベースã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; -$wb['dbuser_prefix_error_regex'] = 'データベースユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; -$wb['ftpuser_prefix_error_regex'] = 'FTPユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; -$wb['shelluser_prefix_error_regex'] = 'Shellユーザーã®ãƒ—リフィックスã¨ã—ã¦ä¸æ£ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚'; -$wb['dblist_phpmyadmin_link_txt'] = 'データベースã®ä¸€è¦§ã‹ã‚‰ phpmyadmin ã¸ãƒªãƒ³ã‚¯ã™ã‚‹'; -$wb['mailboxlist_webmail_link_txt'] = 'メールボックスã®ä¸€è¦§ã‹ã‚‰ webmail ã¸ãƒªãƒ³ã‚¯ã™ã‚‹'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/nl_system_config.lng b/nl_system_config.lng deleted file mode 100644 index 358edde69b..0000000000 --- a/nl_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['warning'] = 'Edit these values carefully! Verwijder de voorvoegsels niet op systemen met meer dan ♪één klant.'; -$wb['dbname_prefix_txt'] = 'Database naam voorvoegsel'; -$wb['dbuser_prefix_txt'] = 'Database gebruiker voorvoegsel'; -$wb['shelluser_prefix_txt'] = 'Shell gebruiker voorvoegsel'; -$wb['webdavuser_prefix_txt'] = 'Webdav gebruiker voorvoegsel'; -$wb['ftpuser_prefix_txt'] = 'FTP gebruiker voorvoegsel'; -$wb['dbname_prefix_error_regex'] = 'Char niet toegestaan in database naam voorvoegsel.'; -$wb['dbuser_prefix_error_regex'] = 'Char niet toegestaan in database gebruiker voorvoegsel.'; -$wb['ftpuser_prefix_error_regex'] = 'Char niet toegestaan in ftp gebruiker voorvoegsel.'; -$wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker voorvoegsel.'; -$wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst'; -$wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe te voegen'; -$wb['use_domain_module_hint'] = 'Als u deze module gebruikt, kunnen uw klanten alleen de domeinen selecteren die de administrator heeft aangemaakt. klanten kunnen het domein-veld zelf niet wijzigen. Na opnieuw ingelogd te zijn zullen de wijzigingen zichtbaar zijn.'; -$wb['new_domain_txt'] = 'HTML om een nieuw domein te maken'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/pl_system_config.lng b/pl_system_config.lng deleted file mode 100644 index d309ab812f..0000000000 --- a/pl_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['warning'] = 'Edytuj te wartoÅ›ci ostrożnie! Nie usuwaj prefiksów w systemie w wiÄ™cej niż jednym kliencie.'; -$wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych'; -$wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych'; -$wb['shelluser_prefix_txt'] = 'Prefiks użytkownika shell'; -$wb['ftpuser_prefix_txt'] = 'Prefiks użytkownika FTP'; -$wb['dbname_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy bazy danych.'; -$wb['dbuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika bazy danych.'; -$wb['ftpuser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika ftp.'; -$wb['shelluser_prefix_error_regex'] = 'Znak nie jest dozwolony w prefiksie nazwy użytkownika shell.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Adres do phpMyAdmin w liÅ›cie baz danych'; -$wb['mailboxlist_webmail_link_txt'] = 'Adres do poczty e-mail w liÅ›cie skrzynek pocztowych'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Użyj moduÅ‚u Domeny do dodawania nowych domen'; -$wb['use_domain_module_hint'] = 'Jeżeli użyjesz tego moduÅ‚u, Twoi użytkownicy bÄ™dÄ… mogli użyć tylko domeny stworzonej im przez administratora. Nie mogÄ… edytować wpisów domeny. Musisz przelogować siÄ™ po zmianie tej wartoÅ›ci, aby zobaczyć widoczne rezultaty.'; -$wb['new_domain_txt'] = 'HTML do stworzenia nowej domeny'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Prefiks użytkownika webdav'; -$wb['webdavuser_prefix_error_regex'] = 'Niedozwolony znak w prefiksie użytkownika webdav.'; -$wb['webftp_url_txt'] = 'Link do WebFTP'; -$wb['enable_custom_login_txt'] = 'Zezwalaj na dowolnÄ… nazwÄ™ loginu'; -$wb['mailmailinglist_link_txt'] = 'Link do listy mailingowej na liÅ›cie list mailingowych'; -$wb['mailmailinglist_url_txt'] = 'URL listy mailingowej'; -$wb['admin_mail_txt'] = 'E-Mail administratora'; -$wb['monitor_key_txt'] = 'Klucz monitora'; -$wb['admin_name_txt'] = 'Nazwa administratora'; -$wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'Podaj nazwÄ™ administratora oraz adres email jeżeli chcesz użyć wysyÅ‚anie maili przez SMTP.'; -$wb['tab_change_discard_txt'] = 'Porzuć zmiany przy zmianie zakÅ‚adki'; -$wb['tab_change_warning_txt'] = 'Ostrzegaj przy zmianie zakÅ‚adki'; -$wb['tab_change_warning_note_txt'] = 'Pokaż ostrzeżenie przy zmianie zakÅ‚adki jeżeli zostaÅ‚y zmienione dane przez użytkownika.'; -$wb['vhost_subdomains_txt'] = 'Twórz subdomeny jako strony web'; -$wb['vhost_subdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak istniejÄ… w systemie vhosty subdomen.'; -$wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web'; -$wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyÅ‚Ä…czyć tego tak dÅ‚ugo jak istniejÄ… w systemie vhosty aliasdomen.'; -$wb['maintenance_mode_txt'] = 'Tryb serwisowy'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyÅ‚ania powiadomieÅ„ systemowych'; -$wb['smtp_host_txt'] = 'Host SMTP'; -$wb['smtp_port_txt'] = 'Port SMTP'; -$wb['smtp_user_txt'] = 'Użytkownik SMTP'; -$wb['smtp_pass_txt'] = 'HasÅ‚o SMTP'; -$wb['smtp_crypt_txt'] = 'Użyj poÅ‚Ä…czenia szyfrowanego SSL/TLS dla SMTP'; -$wb['phpmyadmin_url_error_regex'] = 'NieprawidÅ‚owy link do phpmyadmin'; -$wb['use_combobox_txt'] = 'Użyj jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Użyj wskaźnika Å‚adowania'; -$wb['f5_to_reload_js_txt'] = 'Jeżeli zmienisz to, możesz potrzebować wcisnąć F5 lub wyczyÅ›cić cache aby przeglÄ…darka przeÅ‚adowaÅ‚a biblioteki JavaScript.'; -$wb['client_username_web_check_disabled_txt'] = 'WyÅ‚Ä…cz sprawdzanie nazwy klienta w poszukiwaniu sÅ‚owa -web-.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ autorespondera w szczegółach konta email.'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ filtra email w szczegółach konta email.'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakÅ‚adkÄ™ wÅ‚asnych filtrów email w szczegółach konta email.'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/pt_system_config.lng b/pt_system_config.lng deleted file mode 100644 index 05edb306d9..0000000000 --- a/pt_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!'; -$wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados'; -$wb['dbuser_prefix_txt'] = 'Prefixo Utilizador da Base de Dados'; -$wb['shelluser_prefix_txt'] = 'Prefixo Utilizador de Shell'; -$wb['ftpuser_prefix_txt'] = 'Prefixo Utilizador FTP'; -$wb['dbname_prefix_error_regex'] = 'Caractere não permitido para o prefixo do nome da Base de Dados!'; -$wb['dbuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador da Base de Dados!'; -$wb['ftpuser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador FTP!'; -$wb['shelluser_prefix_error_regex'] = 'Caractere não permitido para o prefixo do Utilizador Shell!'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link para phpmyadmin'; -$wb['mailboxlist_webmail_link_txt'] = 'Link para o webmail'; -$wb['webmail_url_txt'] = 'URL do Webmail'; -$wb['phpmyadmin_url_txt'] = 'URL do PHPMyAdmin'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/ro_system_config.lng b/ro_system_config.lng deleted file mode 100644 index 33ee2b4bde..0000000000 --- a/ro_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; -$wb['dbname_prefix_txt'] = 'Database name prefix'; -$wb['dbuser_prefix_txt'] = 'Database user prefix'; -$wb['shelluser_prefix_txt'] = 'Shell user prefix'; -$wb['ftpuser_prefix_txt'] = 'FTP user prefix'; -$wb['dbname_prefix_error_regex'] = 'Char not allowed in database name prefix.'; -$wb['dbuser_prefix_error_regex'] = 'Char not allowed in database user prefix.'; -$wb['ftpuser_prefix_error_regex'] = 'Char not allowed in ftp user prefix.'; -$wb['shelluser_prefix_error_regex'] = 'Char not allowed in shell user prefix.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; -$wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They can not free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/ru_system_config.lng b/ru_system_config.lng deleted file mode 100644 index 62c856fae0..0000000000 --- a/ru_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = 'ÐаÑтройка параметров по умолчанию'; -$wb['warning'] = 'ИзменÑйте Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°ÐºÐºÑƒÑ€Ð°Ñ‚Ð½Ð¾! Ðе удалÑйте префикÑÑ‹ на ÑиÑтемах где более одного пользователÑ.'; -$wb['dbname_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð±Ð°Ð·Ñ‹ данных'; -$wb['dbuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных'; -$wb['shelluser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ shell-пользователÑ'; -$wb['ftpuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ FTP пользователÑ'; -$wb['dbname_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе базы данных'; -$wb['dbuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных'; -$wb['ftpuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе FTP пользователÑ'; -$wb['shelluser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе shell-пользователÑ'; -$wb['dblist_phpmyadmin_link_txt'] = 'СÑылка на phpmyadmin в ÑпиÑке баз данных'; -$wb['mailboxlist_webmail_link_txt'] = 'СÑылка на веб-почту в ÑпиÑке почтовых Ñщиков'; -$wb['webmail_url_txt'] = 'URL веб-почты'; -$wb['phpmyadmin_url_txt'] = 'URL PHPMyAdmin'; -$wb['use_domain_module_txt'] = 'ИÑпользовать модуль домена, чтобы добавить новые домены'; -$wb['use_domain_module_hint'] = 'При иÑпользовании Ñтого модулÑ, Ваши клиенты Ñмогут выбрать только один из доменов, Ñозданных Ð´Ð»Ñ Ð½Ð¸Ñ… админиÑтратором. Они не могут Ñвободно редактировать поле \\"домен\\". Чтобы Ñделать Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸, Ð’Ñ‹ должны выйти и повторно войти в панель поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого значениÑ.'; -$wb['new_domain_txt'] = 'HTML текÑÑ‚, чтобы Ñоздать новый домен'; -$wb['webdavuser_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV'; -$wb['webdavuser_prefix_error_regex'] = 'Ðекорректный Ñимвол в префикÑе Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ WebDAV.'; -$wb['webftp_url_txt'] = 'URL WebFTP'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['enable_custom_login_txt'] = 'Разрешить пользовательÑкое Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему'; -$wb['mailmailinglist_link_txt'] = 'СÑылка на почтовую раÑÑылку в ÑпиÑке раÑÑылок'; -$wb['mailmailinglist_url_txt'] = 'URL почтовой раÑÑылки'; -$wb['admin_mail_txt'] = 'E-mail админиÑтратора'; -$wb['admin_name_txt'] = 'Ð˜Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора'; -$wb['maintenance_mode_txt'] = 'Режим техничеÑкого бÑлуживаниÑ'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'ИÑпользовать SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÑиÑтемных Ñообщений'; -$wb['smtp_host_txt'] = 'ХоÑÑ‚ SMTP'; -$wb['smtp_port_txt'] = 'Порт SMTP'; -$wb['smtp_user_txt'] = 'Пользователь SMTP'; -$wb['smtp_pass_txt'] = 'Пароль SMTP'; -$wb['smtp_crypt_txt'] = 'ИÑпользовать SSL/TLS-шифрование ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'ПожалуйÑта, введите Ð¸Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора и Ð°Ð´Ñ€ÐµÑ Ñл. почты админиÑтратора, еÑли вы хотите иÑпользовать SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ почты.'; -$wb['tab_change_discard_txt'] = 'Откатить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° вкладке изменить'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Показать предупреждение об изменении вкладки в формах редактированиÑ, еÑли какие-либо данные были изменены пользователем.'; -$wb['vhost_subdomains_txt'] = 'Создать поддомен как веб-Ñайт'; -$wb['vhost_subdomains_note_txt'] = 'Ðтот параметр не может быть отключен пока поÑкольку ÑущеÑтвует виртуальный хоÑÑ‚ поддоменов в ÑиÑтеме!'; -$wb['vhost_aliasdomains_txt'] = 'Создать Ð°Ð»Ð¸Ð°Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² как веб-Ñайт'; -$wb['vhost_aliasdomains_note_txt'] = 'Ðтот параметр не может быть отключен пока поÑкольку ÑущеÑтвует виртуальный хоÑÑ‚ алиаÑов доменов в ÑиÑтеме!'; -$wb['phpmyadmin_url_error_regex'] = 'Ðекорректный URL phpmyadmin'; -$wb['use_combobox_txt'] = 'ИÑпользовать jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'ИÑпользовать индикатор загрузки'; -$wb['f5_to_reload_js_txt'] = 'ЕÑли вы измените Ñто, вам, возможно, придетÑÑ Ð½Ð°Ð¶Ð°Ñ‚ÑŒ F5, чтобы перезагрузить в браузере JavaScript-библиотеи или очиÑтить кÑш браузера.'; -$wb['client_username_web_check_disabled_txt'] = 'Отключить проверку логина клиента Ð´Ð»Ñ Ñлова \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Включить резервное копирование файлов в веб-квоту.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Показывать вкладку автоответчика в деталÑÑ… учетной запиÑи Ñлектронной почты'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Показывать вкладку почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Показывать вкладку пользовательÑкого почтового фильтра в деталÑÑ… учетной запиÑи Ñлектронной почты'; -$wb['webmail_url_error_regex'] = 'Ðекорректный URL веб-почты'; -$wb['phpmyadmin_url_note_txt'] = 'Заменитель:'; -$wb['webmail_url_note_txt'] = 'Заменитель:'; -$wb['available_dashlets_note_txt'] = 'ДоÑтупные дашлеты:'; -$wb['admin_dashlets_left_txt'] = 'Дашлеты Ðдмина Ñлева'; -$wb['admin_dashlets_right_txt'] = 'Дашлеты Ðдмина Ñправа'; -$wb['reseller_dashlets_left_txt'] = 'Дашлеты РеÑеллера Ñлева'; -$wb['reseller_dashlets_right_txt'] = 'Дашлеты РеÑеллера Ñправа'; -$wb['client_dashlets_left_txt'] = 'Дашлеты Клиента Ñлева'; -$wb['client_dashlets_right_txt'] = 'Дашлеты Клиента Ñправа'; -$wb['customer_no_template_txt'] = 'Шаблон номера Клиента'; -$wb['customer_no_template_error_regex_txt'] = 'Шаблон номера Клиента Ñодержит недопуÑтимые Ñимволы.'; -$wb['customer_no_start_txt'] = 'Ðачальное значение номера Клиента'; -$wb['customer_no_counter_txt'] = 'Счётчик номера Клиента'; -$wb['session_timeout_txt'] = 'Тайм-аут ÑеÑÑии (в минутах)'; -$wb['session_allow_endless_txt'] = 'Включить \\"оÑтаватьÑÑ Ð² ÑиÑтеме\\"'; -$wb['No'] = 'Ðет'; -$wb['min_password_length_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° паролÑ'; -$wb['min_password_strength_txt'] = 'ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑтойкоÑÑ‚ÑŒ паролÑ'; -$wb['company_name_txt'] = 'Ðазвание компании Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ñтраницы'; -$wb['reseller_can_use_options_txt'] = 'РеÑеллер может иÑпользовать вкладку Параметры Ð´Ð»Ñ Ð²ÐµÐ±-Ñайтов'; -$wb['custom_login_text_txt'] = 'ПользовательÑкий текÑÑ‚ на Ñтранице входа'; -$wb['custom_login_link_txt'] = 'ПользовательÑÐºÐ°Ñ ÑÑылка на Ñтраницу входа'; -$wb['login_link_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÑÑылка Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого входа'; -$wb['default_mailserver_txt'] = 'Почтовый Ñервер по умолчанию'; -$wb['default_webserver_txt'] = 'Web-Ñервер по умолчанию'; -$wb['default_dnsserver_txt'] = 'DNS-Ñервер по умолчанию'; -$wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-Ñервер по умолчанию'; -$wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/se_system_config.lng b/se_system_config.lng deleted file mode 100644 index bf0ec4942d..0000000000 --- a/se_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix pÃ¥ system med mer än en kund.'; -$wb['dbname_prefix_txt'] = 'Prefix för databasnamn'; -$wb['dbuser_prefix_txt'] = 'Prefix för databasanvändare'; -$wb['shelluser_prefix_txt'] = 'Prefix för shell-användare'; -$wb['ftpuser_prefix_txt'] = 'Prefix för FTP-användare'; -$wb['dbname_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för databasnamn.'; -$wb['dbuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för databasanvändare.'; -$wb['ftpuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för FTP-användare.'; -$wb['shelluser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för shell-användare.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Länka till PHPMyAdmin i databaslista'; -$wb['mailboxlist_webmail_link_txt'] = 'Länka till webbmail i epostkontolista'; -$wb['webmail_url_txt'] = 'Webbmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['use_domain_module_txt'] = 'Används domänmodul för att lägga till nya domäner'; -$wb['use_domain_module_hint'] = 'Om du använder denna modul kommer kunder endast kunna välja bland de domäner administratören har tilldelat dem, de kan alltsÃ¥ inte lägga till vilken domän som helst. Du mÃ¥ste logga in pÃ¥ nytt innan dessa ändringar blir synliga.'; -$wb['new_domain_txt'] = 'HTML vid skapande av nya domäner'; -$wb['dashboard_atom_url_admin_txt'] = 'Kontrolpanelens nyhetsflöde URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Kontrolpanelens nyhetsflöde URL (Ã¥terförsäljare)'; -$wb['dashboard_atom_url_client_txt'] = 'Kontrolpanelens nyhetsflöde URL (kund)'; -$wb['webdavuser_prefix_txt'] = 'Prefix för WebDAV-användare'; -$wb['webdavuser_prefix_error_regex'] = 'OtillÃ¥tet tecken i prefix för WebDAV-användare'; -$wb['webftp_url_txt'] = 'WebbFTP URL'; -$wb['enable_custom_login_txt'] = 'TillÃ¥t valfritt inloggningsnamn'; -$wb['mailmailinglist_link_txt'] = 'Länka till epostlista i listan över epostlistor'; -$wb['mailmailinglist_url_txt'] = 'Adress till epostlista'; -$wb['admin_mail_txt'] = 'Administratörens epostadress'; -$wb['monitor_key_txt'] = 'Bevakning nyckelord'; -$wb['admin_name_txt'] = 'Administratörens namn'; -$wb['maintenance_mode_txt'] = 'UnderhÃ¥llsläge'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Använd SMTP för att skicka systemmail'; -$wb['smtp_host_txt'] = 'SMTP-värd'; -$wb['smtp_port_txt'] = 'SMTP-port'; -$wb['smtp_user_txt'] = 'SMTP-användare'; -$wb['smtp_pass_txt'] = 'SMTP-lösenord'; -$wb['smtp_crypt_txt'] = 'Använd SSL/TLS-krypterad anslutning för SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Kasta ändringar vid byte av flik'; -$wb['tab_change_warning_txt'] = 'Varning vid byte av flik'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['vhost_subdomains_txt'] = 'Skapa underdomäner som en egen sajt'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Ogiltig adress till PHPMyAdmin'; -$wb['use_combobox_txt'] = 'Använd jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Använd laddningsindikator'; -$wb['f5_to_reload_js_txt'] = 'Om du ändrar detta kan du behöva trycka F5 för att ladda om javascript, eller rensa din webbläsarcache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Visa autosvarsfliken vid detaljerna för epostkonto'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Visa epostfilterfliken vid detaljerna för epostkonto'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Kundnummermall'; -$wb['customer_no_template_error_regex_txt'] = 'Kundnummermallen innehÃ¥ller otillÃ¥tna tecken'; -$wb['customer_no_start_txt'] = 'Kundnummer startvärde'; -$wb['customer_no_counter_txt'] = 'Kundnummer räknare'; -$wb['session_timeout_txt'] = 'Session timeout (minuter)'; -$wb['session_allow_endless_txt'] = 'Aktivera \\"hÃ¥ll mig inloggad\\"'; -$wb['No'] = 'Nej'; -$wb['min_password_length_txt'] = 'Minsta lösenordslängd'; -$wb['min_password_strength_txt'] = 'Minsta lösenordsstyrka'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/sk_system_config.lng b/sk_system_config.lng deleted file mode 100644 index b6bbe102dd..0000000000 --- a/sk_system_config.lng +++ /dev/null @@ -1,96 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.'; -$wb['dbname_prefix_txt'] = 'Predpona názvu databázy '; -$wb['dbuser_prefix_txt'] = 'Predpona databáza užÃvateľa'; -$wb['shelluser_prefix_txt'] = 'Predpona Shell užÃvateľa'; -$wb['ftpuser_prefix_txt'] = 'Predpona FTP užÃvateľ'; -$wb['dbname_prefix_error_regex'] = 'Char nie je povolený v prefix názov databázy.'; -$wb['dbuser_prefix_error_regex'] = 'Char nie je povolené v databáze predpone user.'; -$wb['ftpuser_prefix_error_regex'] = 'Char nie je povolené v ftp užÃvateľ predpone .'; -$wb['shelluser_prefix_error_regex'] = 'Char nie je povolené Shell užÃvateľ predpone .'; -$wb['dblist_phpmyadmin_link_txt'] = 'Odkaz na phpmyadmin v DB zozname'; -$wb['mailboxlist_webmail_link_txt'] = 'Odkaz na webmail v zozname schránok'; -$wb['webmail_url_txt'] = 'Webmail URL'; -$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; -$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; -$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)'; -$wb['webdavuser_prefix_txt'] = 'Webdav user prefix'; -$wb['webdavuser_prefix_error_regex'] = 'Char not allowed in webdav user prefix.'; -$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; -$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.'; -$wb['new_domain_txt'] = 'HTML to create a new domain'; -$wb['webftp_url_txt'] = 'WebFTP URL'; -$wb['enable_custom_login_txt'] = 'Allow custom login name'; -$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list'; -$wb['mailmailinglist_url_txt'] = 'Mailing list URL'; -$wb['admin_mail_txt'] = 'Administrators e-mail'; -$wb['monitor_key_txt'] = 'Monitor keyword'; -$wb['admin_name_txt'] = 'Administrators name'; -$wb['maintenance_mode_txt'] = 'Maintenance Mode'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails'; -$wb['smtp_host_txt'] = 'SMTP host'; -$wb['smtp_port_txt'] = 'SMTP port'; -$wb['smtp_user_txt'] = 'SMTP user'; -$wb['smtp_pass_txt'] = 'SMTP password'; -$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP'; -$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; -$wb['tab_change_discard_txt'] = 'Discard changes on tab change'; -$wb['tab_change_warning_txt'] = 'Tab change warning'; -$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.'; -$wb['vhost_subdomains_txt'] = 'Create subdomains as web site'; -$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!'; -$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site'; -$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!'; -$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL'; -$wb['use_combobox_txt'] = 'Use jQuery UI Combobox'; -$wb['use_loadindicator_txt'] = 'Use Load Indicator'; -$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.'; -$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.'; -$wb['backups_include_into_web_quota_txt'] = 'Include backup files into web quota.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; -$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; -$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; -$wb['webmail_url_note_txt'] = 'Placeholder:'; -$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; -$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; -$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; -$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; -$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; -$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; -$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; -$wb['customer_no_template_txt'] = 'Customer No. template'; -$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters'; -$wb['customer_no_start_txt'] = 'Customer No. start value'; -$wb['customer_no_counter_txt'] = 'Customer No. counter'; -$wb['session_timeout_txt'] = 'Session timeout (minutes)'; -$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'Minimum password length'; -$wb['min_password_strength_txt'] = 'Minimum password strength'; -$wb['company_name_txt'] = 'Company Name for the page title'; -$wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websites'; -$wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; -$wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; -$wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; -$wb['default_mailserver_txt'] = 'Default Mailserver'; -$wb['default_webserver_txt'] = 'Default Webserver'; -$wb['default_dnsserver_txt'] = 'Default DNS Server'; -$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['default_dbserver_txt'] = 'Default Database Server'; -$wb['ca_name_txt'] = 'Name'; -$wb['ca_issue_txt'] = 'Issue'; -$wb['ca_wildcard_txt'] = 'Use Wildcard'; -$wb['ca_critical_txt'] = 'Strict Check'; -$wb['ca_iodef_txt'] = 'iodef'; -$wb['active_txt'] = 'Aktive'; -$wb['btn_save_txt'] = 'Save'; -$wb['btn_cancel_txt'] = 'Cancel'; -$wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; -?> diff --git a/tr_system_config.lng b/tr_system_config.lng deleted file mode 100644 index 21a70bec4b..0000000000 --- a/tr_system_config.lng +++ /dev/null @@ -1,90 +0,0 @@ -<?php -$wb['system_config_title'] = 'System Config'; -$wb['system_config_desc_txt'] = ''; -$wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.'; -$wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının Ä°nternet adresi (yönetici)'; -$wb['dashboard_atom_url_reseller_txt'] = 'Panel Atom akışının Ä°nternet adresi (bayi)'; -$wb['dashboard_atom_url_client_txt'] = 'Panel Atom akışının Ä°nternet adresi (müşteri)'; -$wb['warning'] = 'Bu deÄŸerleri deÄŸiÅŸtirirken dikkatli olun! Sistemde birden fazla müşteri varsa, ön ekleri kaldırmayın.'; -$wb['tab_change_discard_txt'] = 'Sekme deÄŸiÅŸtirildiÄŸinde deÄŸiÅŸiklikler yok sayılsın'; -$wb['tab_change_warning_txt'] = 'Sekme deÄŸiÅŸtirme uyarısı'; -$wb['tab_change_warning_note_txt'] = 'Formlardaki veriler düzenlenirken, kullanıcı bir deÄŸiÅŸiklik yapmışsa sekme deÄŸiÅŸtirilmek istendiÄŸinde bir uyarı görüntülenir.'; -$wb['dbname_prefix_txt'] = 'Veritabanı adı ön eki'; -$wb['dbuser_prefix_txt'] = 'Veritabanı kullanıcısı ön eki'; -$wb['shelluser_prefix_txt'] = 'Kabuk kullanıcısı ön eki'; -$wb['webdavuser_prefix_txt'] = 'Webdav kullanıcısı ön eki'; -$wb['ftpuser_prefix_txt'] = 'FTP kullanıcısı ön eki'; -$wb['vhost_subdomains_txt'] = 'Etki alanları web sitesi ÅŸeklinde oluÅŸturulsun'; -$wb['vhost_subdomains_note_txt'] = 'Sistemde sanal sunucu alt etki alanları varken bu seçenek devre dışı bırakılamaz!'; -$wb['vhost_aliasdomains_txt'] = 'Takma etki alanı web sitesi olarak eklensin'; -$wb['vhost_aliasdomains_note_txt'] = 'Sistemde sanal sunucu takma etki alanları varken bu seçenek devre dışı bırakılamaz!'; -$wb['dbname_prefix_error_regex'] = 'Veritabanı adı ön ekinde izin verilmeyen karakterler var'; -$wb['dbuser_prefix_error_regex'] = 'Veritabanı kullanıcısı ön ekinde izin verilmeyen karakterler var'; -$wb['ftpuser_prefix_error_regex'] = 'FTP kullanıcısı ön ekinde izin verilmeyen karakterler var'; -$wb['shelluser_prefix_error_regex'] = 'Kabuk kullanıcısı ön ekinde izin verilmeyen karakterler var'; -$wb['webdavuser_prefix_error_regex'] = 'Webdav kullanıcısı ön ekinde izin verilmeyen karakterler var.'; -$wb['dblist_phpmyadmin_link_txt'] = 'Veritabanı listesinde phpMyAdmin baÄŸlantısı'; -$wb['enable_custom_login_txt'] = 'Özel oturum açma kullanıcı adı kullanılabilsin'; -$wb['mailboxlist_webmail_link_txt'] = 'E-posta kutusu listesinde Webmail baÄŸlantısı'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; -$wb['webmail_url_txt'] = 'Webmail Adresi'; -$wb['mailmailinglist_link_txt'] = 'E-posta Listeleri listesinde E-posta Listesi baÄŸlantısı'; -$wb['mailmailinglist_url_txt'] = 'E-posta Listesi Adresi'; -$wb['phpmyadmin_url_txt'] = 'phpMyAdmin Adresi'; -$wb['use_domain_module_txt'] = 'Etki alanı eklemek için etki alanı modülü kullanılsın'; -$wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yalnız yöneticinin oluÅŸturduÄŸu etki alanlarından birini seçebilir. Etki alanını istediÄŸi gibi yazamaz. Bu deÄŸeri deÄŸiÅŸtirdikten sonra deÄŸiÅŸikliklerin geçerli olması için oturumu kapatıp yeniden açmalısınız.'; -$wb['new_domain_txt'] = 'Yeni etki alanı oluÅŸturma HTML kodu'; -$wb['webftp_url_txt'] = 'WebFTP Adresi'; -$wb['admin_mail_txt'] = 'Yönetici E-posta Adresi'; -$wb['monitor_key_txt'] = 'Ä°zlenecek Kelime'; -$wb['admin_name_txt'] = 'Yönetici Adı'; -$wb['maintenance_mode_txt'] = 'Bakım Kipi'; -$wb['maintenance_mode_exclude_ips_txt'] = 'Exclude IP\'s from maintenance'; -$wb['maintenance_mode_exclude_ips_error_isip'] = 'One or more invalid IP addresses in maintenance mode exclude list. Must be a list of comma-separated IPv4 and/or IPv6 addresses.'; -$wb['smtp_enabled_txt'] = 'Sistem e-postaları SMTP ile gönderilsin'; -$wb['smtp_host_txt'] = 'SMTP Sunucusu'; -$wb['smtp_port_txt'] = 'SMTP Kapısı'; -$wb['smtp_user_txt'] = 'SMTP Kullanıcı Adı'; -$wb['smtp_pass_txt'] = 'SMTP Parolası'; -$wb['smtp_crypt_txt'] = 'SMTP için SSL/TLS ÅŸifreli baÄŸlantı kullanılsın'; -$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin adresi geçersiz'; -$wb['use_combobox_txt'] = 'jQuery Açılan Kutusu Kullanılsın'; -$wb['use_loadindicator_txt'] = 'Yük Göstergesi Kullanılsın'; -$wb['f5_to_reload_js_txt'] = 'Bu deÄŸer deÄŸiÅŸtirildiÄŸinde, web tarayıcının JavaScript kitaplıklarını yeniden yüklemesi için F5 tuÅŸuna basmalı ya da web tarayıcının ön belleÄŸini temizlemelisiniz.'; -$wb['client_username_web_check_disabled_txt'] = 'Müşteri kullanıcı adında \'web\' sözcüğü denetimi devre dışı bırakılsın.'; -$wb['backups_include_into_web_quota_txt'] = 'Yedek dosyaları web kotasına katılsın.'; -$wb['mailbox_show_autoresponder_tab_txt'] = 'E-posta hesabı ayrıntılarında otoyanıtlayıcı sekmesi görüntülensin'; -$wb['mailbox_show_mail_filter_tab_txt'] = 'E-posta hesabı ayrıntılarında e-posta süzgeci sekmesi görüntülensin'; -$wb['mailbox_show_custom_rules_tab_txt'] = 'E-posta hesabı ayrıntılarında isteÄŸe baÄŸlı e-posta süzgeci sekmesi görüntülensin'; -$wb['webmail_url_error_regex'] = 'Webmail adresi geçersiz'; -$wb['phpmyadmin_url_note_txt'] = 'Kod:'; -$wb['webmail_url_note_txt'] = 'Kod:'; -$wb['available_dashlets_note_txt'] = 'Kullanılabilecek BileÅŸenler:'; -$wb['admin_dashlets_left_txt'] = 'Sol Yönetici BileÅŸenleri'; -$wb['admin_dashlets_right_txt'] = 'SaÄŸ Yönetici BileÅŸenleri'; -$wb['reseller_dashlets_left_txt'] = 'Sol Bayi BileÅŸenleri'; -$wb['reseller_dashlets_right_txt'] = 'SaÄŸ Bayi BileÅŸenleri'; -$wb['client_dashlets_left_txt'] = 'Sol Müşteri BileÅŸenleri'; -$wb['client_dashlets_right_txt'] = 'SaÄŸ Müşteri BileÅŸenleri'; -$wb['customer_no_template_txt'] = 'Müşteri No Kalıbı'; -$wb['customer_no_template_error_regex_txt'] = 'Müşteri no kalıbında geçersiz karakterler var'; -$wb['customer_no_start_txt'] = 'Müşteri No BaÅŸlangıç DeÄŸeri'; -$wb['customer_no_counter_txt'] = 'Müşteri No Sayacı'; -$wb['session_timeout_txt'] = 'Oturum Zaman Aşımı (dakika)'; -$wb['session_allow_endless_txt'] = '"Oturum açık kalsın" kullanılabilsin'; -$wb['No'] = 'No'; -$wb['min_password_length_txt'] = 'En Az Parola UzunluÄŸu'; -$wb['min_password_strength_txt'] = 'En Az Parola ZorluÄŸu'; -$wb['default_mailserver_txt'] = 'Varsayılan E-posta Sunucusu'; -$wb['default_webserver_txt'] = 'Varsayılan Web Sunucusu'; -$wb['default_dnsserver_txt'] = 'Varsayılan Birincil DNS Sunucusu'; -$wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; -$wb['default_dbserver_txt'] = 'Varsayılan Veritabanı Sunucusu'; -$wb['company_name_txt'] = 'Sayfa baÅŸlığı için kurum adı'; -$wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesini kullanabilsin'; -$wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni'; -$wb['custom_login_link_txt'] = 'Oturum Açma Sayfası BaÄŸlantısı'; -$wb['login_link_error_regex'] = 'Oturum Açma BaÄŸlantısı Geçersiz'; -?> -- GitLab From 90f7fcd8aba740e71d11b45458f1c9a5eea61e22 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:19:52 +0200 Subject: [PATCH 285/571] Revert "Fixes #4480 (Translate IP edit form title and desc)" This reverts commit 13c9e0baeb50303d063f30a80cdb67bc86a7c04a --- ar_server_ip.lng | 13 ------------- bg_server_ip.lng | 13 ------------- br_server_ip.lng | 13 ------------- ca_server_ip.lng | 13 ------------- cz_server_ip.lng | 13 ------------- de_server_ip.lng | 13 ------------- dk_server_ip.lng | 13 ------------- el_server_ip.lng | 13 ------------- en_server_ip.lng | 13 ------------- es_server_ip.lng | 13 ------------- fi_server_ip.lng | 13 ------------- fr_server_ip.lng | 13 ------------- hr_server_ip.lng | 13 ------------- hu_server_ip.lng | 13 ------------- id_server_ip.lng | 13 ------------- it_server_ip.lng | 13 ------------- ja_server_ip.lng | 13 ------------- nl_server_ip.lng | 13 ------------- pl_server_ip.lng | 13 ------------- pt_server_ip.lng | 13 ------------- ro_server_ip.lng | 13 ------------- ru_server_ip.lng | 13 ------------- se_server_ip.lng | 13 ------------- sk_server_ip.lng | 13 ------------- tr_server_ip.lng | 13 ------------- 25 files changed, 325 deletions(-) delete mode 100644 ar_server_ip.lng delete mode 100644 bg_server_ip.lng delete mode 100644 br_server_ip.lng delete mode 100644 ca_server_ip.lng delete mode 100644 cz_server_ip.lng delete mode 100644 de_server_ip.lng delete mode 100644 dk_server_ip.lng delete mode 100644 el_server_ip.lng delete mode 100644 en_server_ip.lng delete mode 100644 es_server_ip.lng delete mode 100644 fi_server_ip.lng delete mode 100644 fr_server_ip.lng delete mode 100644 hr_server_ip.lng delete mode 100644 hu_server_ip.lng delete mode 100644 id_server_ip.lng delete mode 100644 it_server_ip.lng delete mode 100644 ja_server_ip.lng delete mode 100644 nl_server_ip.lng delete mode 100644 pl_server_ip.lng delete mode 100644 pt_server_ip.lng delete mode 100644 ro_server_ip.lng delete mode 100644 ru_server_ip.lng delete mode 100644 se_server_ip.lng delete mode 100644 sk_server_ip.lng delete mode 100644 tr_server_ip.lng diff --git a/ar_server_ip.lng b/ar_server_ip.lng deleted file mode 100644 index 1947d3ec37..0000000000 --- a/ar_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP Address'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'The IP address is invalid'; -$wb['ip_error_unique'] = 'The IP address must be unique'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/bg_server_ip.lng b/bg_server_ip.lng deleted file mode 100644 index 70f428a634..0000000000 --- a/bg_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Сървър'; -$wb['ip_address_txt'] = 'IP адреÑ'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'IP адреÑÑŠÑ‚ е грешен'; -$wb['ip_error_unique'] = 'IP адреÑÑŠÑ‚ Ñ‚Ñ€Ñбва да бъде уникален'; -$wb['client_id_txt'] = 'Клиент'; -$wb['ip_type_txt'] = 'Тип'; -$wb['virtualhost_port_txt'] = 'HTTP портове'; -$wb['error_port_syntax'] = 'Грешни Ñимволи в полето за портове, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ¶Ð´Ð°Ð¹Ñ‚Ðµ Ñамо чиÑла разделени Ñ Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ. Пример: 80,443'; -?> diff --git a/br_server_ip.lng b/br_server_ip.lng deleted file mode 100644 index 8380b61ebd..0000000000 --- a/br_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Servidor'; -$wb['client_id_txt'] = 'Cliente'; -$wb['ip_type_txt'] = 'Tipo'; -$wb['ip_address_txt'] = 'Endereço IP'; -$wb['virtualhost_txt'] = 'Nome do vhost http'; -$wb['virtualhost_port_txt'] = 'Porta http'; -$wb['ip_error_wrong'] = 'O endereço IP é inválido.'; -$wb['ip_error_unique'] = 'O endereço IP deve ser exclusivo.'; -$wb['error_port_syntax'] = 'Caracteres inválidos para porta http, por favor, insira apenas uma porta ou separe portas por vÃrgula. Exemplo: 80,443.'; -?> diff --git a/ca_server_ip.lng b/ca_server_ip.lng deleted file mode 100644 index 8f7738e51f..0000000000 --- a/ca_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['ip_address_txt'] = 'IP Address'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['ip_error_wrong'] = 'The IP address is invalid'; -$wb['ip_error_unique'] = 'The IP address must be unique'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/cz_server_ip.lng b/cz_server_ip.lng deleted file mode 100644 index 3698df5c74..0000000000 --- a/cz_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP adresa'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'IP adresa je neplatná nebo prázdná'; -$wb['ip_error_unique'] = 'IP adresa musà být unikátnÃ'; -$wb['client_id_txt'] = 'Klient'; -$wb['ip_type_txt'] = 'Verze'; -$wb['virtualhost_port_txt'] = 'HTTP Porty'; -$wb['error_port_syntax'] = 'Neplatné znaky ve volbÄ› HTTP Portů. ProsÃm, zadejte pouze ÄÃselné hodnoty oddÄ›lené Äárkami. PÅ™Ãklad: 80,443'; -?> diff --git a/de_server_ip.lng b/de_server_ip.lng deleted file mode 100644 index 88f23ebc15..0000000000 --- a/de_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP Adresse'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'Die IP Adresse ist ungültig'; -$wb['ip_error_unique'] = 'Die IP Adresse muss einzigartig sein'; -$wb['client_id_txt'] = 'Kunde'; -$wb['ip_type_txt'] = 'Typ'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443'; -?> diff --git a/dk_server_ip.lng b/dk_server_ip.lng deleted file mode 100644 index a6ba3ba045..0000000000 --- a/dk_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['client_id_txt'] = 'Kunde'; -$wb['ip_type_txt'] = 'Type'; -$wb['ip_address_txt'] = 'IP Adresse'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['virtualhost_port_txt'] = 'HTTP Porte'; -$wb['ip_error_wrong'] = 'IP adressen er ugyldigt'; -$wb['ip_error_unique'] = 'IP adressen skal være unikke'; -$wb['error_port_syntax'] = 'Ugyldigt tegn i Port felt, du mÃ¥ kun indtaste kommasepareret tal. F.eks.: 80,443'; -?> diff --git a/el_server_ip.lng b/el_server_ip.lng deleted file mode 100644 index f00925fc62..0000000000 --- a/el_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'ΔιεÏθυνση IP'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'Η ΔιεÏθυνση IP είναι άκυÏη'; -$wb['ip_error_unique'] = 'Η ΔιεÏθυνση IP Ï€ÏÎπει να είναι μοναδική'; -$wb['client_id_txt'] = 'Πελάτης'; -$wb['ip_type_txt'] = 'ΤÏπος'; -$wb['virtualhost_port_txt'] = 'ΘÏÏες HTTP'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/en_server_ip.lng b/en_server_ip.lng deleted file mode 100644 index 8ef448f85d..0000000000 --- a/en_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb["server_id_txt"] = 'Server'; -$wb["client_id_txt"] = 'Client'; -$wb["ip_type_txt"] = 'Type'; -$wb["ip_address_txt"] = 'IP Address'; -$wb["virtualhost_txt"] = 'HTTP NameVirtualHost'; -$wb["virtualhost_port_txt"] = 'HTTP Ports'; -$wb["ip_error_wrong"] = 'The IP address is invalid'; -$wb["ip_error_unique"] = 'The IP address must be unique'; -$wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/es_server_ip.lng b/es_server_ip.lng deleted file mode 100644 index ba4d06d098..0000000000 --- a/es_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['client_id_txt'] = 'Cliente'; -$wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443'; -$wb['ip_address_txt'] = 'Dirección IP'; -$wb['ip_error_unique'] = 'La dirección IP debe ser única'; -$wb['ip_error_wrong'] = 'La dirección IP no es correcta'; -$wb['ip_type_txt'] = 'Tipo'; -$wb['server_id_txt'] = 'Servidor'; -$wb['virtualhost_port_txt'] = 'Puertos HTTP'; -$wb['virtualhost_txt'] = 'Nombre de host virtual HTTP (NameVirtualHost)'; -?> diff --git a/fi_server_ip.lng b/fi_server_ip.lng deleted file mode 100644 index a9f49cc124..0000000000 --- a/fi_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Palvelin'; -$wb['ip_address_txt'] = 'IP-osoite'; -$wb['virtualhost_txt'] = 'Virtuaalipalvelin'; -$wb['ip_error_wrong'] = 'IP-osoite vääränlainen'; -$wb['ip_error_unique'] = 'IP-osoitteen on oltava yksilöllinen'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/fr_server_ip.lng b/fr_server_ip.lng deleted file mode 100644 index 1289cd755a..0000000000 --- a/fr_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Serveur'; -$wb['ip_address_txt'] = 'Adresse IP'; -$wb['virtualhost_txt'] = 'NameVirtualHost HTTP'; -$wb['ip_error_wrong'] = 'L’adresse IP est invalide'; -$wb['ip_error_unique'] = 'L’adresse IP doit être unique'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/hr_server_ip.lng b/hr_server_ip.lng deleted file mode 100644 index f26fd720ca..0000000000 --- a/hr_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP adresa'; -$wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta'; -$wb['ip_error_wrong'] = 'Neispravna IP adresa'; -$wb['ip_error_unique'] = 'IP adresa mora biti jedinstvena'; -$wb['client_id_txt'] = 'Klijent'; -$wb['ip_type_txt'] = 'Vrsta'; -$wb['virtualhost_port_txt'] = 'HTTP portovi'; -$wb['error_port_syntax'] = 'Nedozvoljeni znakovi u port polju, unesite samo znamenke odvojene zarezom. Primjer: 80,443'; -?> diff --git a/hu_server_ip.lng b/hu_server_ip.lng deleted file mode 100644 index 2e8f88a2f7..0000000000 --- a/hu_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Szerver'; -$wb['ip_address_txt'] = 'IP cÃm'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'IP cÃm érvénytelen'; -$wb['ip_error_unique'] = 'AZ IP cÃmnek egyedinek kell lennie'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/id_server_ip.lng b/id_server_ip.lng deleted file mode 100644 index 00cecf5026..0000000000 --- a/id_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'Alamat IP'; -$wb['virtualhost_txt'] = 'Nama VirtualHost HTTP'; -$wb['ip_error_wrong'] = 'Alamat IP tidak valid'; -$wb['ip_error_unique'] = 'Alamat IP harus unik'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/it_server_ip.lng b/it_server_ip.lng deleted file mode 100644 index 9850f2e38b..0000000000 --- a/it_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'Indirizzo IP'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'Indirizzo IP non valido'; -$wb['ip_error_unique'] = 'Indirizzo IP deve essere unico'; -$wb['client_id_txt'] = 'Cliente'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Caratteri non validi nel campo porta, per favore inserire solo valori separati da virgola. Esempio: 80,443'; -?> diff --git a/ja_server_ip.lng b/ja_server_ip.lng deleted file mode 100644 index 982d797760..0000000000 --- a/ja_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'サーãƒãƒ¼'; -$wb['ip_address_txt'] = 'IPアドレス'; -$wb['virtualhost_txt'] = 'HTTP ã® NameVirtualHost を使ã†'; -$wb['ip_error_wrong'] = 'IPアドレスãŒä¸æ£ã§ã™ã€‚'; -$wb['ip_error_unique'] = 'æ—¢ã«ç™»éŒ²æ¸ˆã¿ã®IPアドレスã§ã™ã€‚別ã®å€¤ã«å¤‰æ›´ã—ã¦ãã ã•ã„。'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/nl_server_ip.lng b/nl_server_ip.lng deleted file mode 100644 index 1fd397e01b..0000000000 --- a/nl_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP adres'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'Het IP adres is ongeldig'; -$wb['ip_error_unique'] = 'Het IP addres moet uniek zijn'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/pl_server_ip.lng b/pl_server_ip.lng deleted file mode 100644 index 0e31866078..0000000000 --- a/pl_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Serwer'; -$wb['ip_address_txt'] = 'Adres IP'; -$wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP'; -$wb['ip_error_wrong'] = 'Adres IP jest niepoprawny'; -$wb['ip_error_unique'] = 'Adres IP musi być unikalny'; -$wb['client_id_txt'] = 'Klient'; -$wb['ip_type_txt'] = 'Typ'; -$wb['virtualhost_port_txt'] = 'Porty HTTP'; -$wb['error_port_syntax'] = 'NieprawidÅ‚owe wartoÅ›ci w polu portów, proszÄ™ wpisać tylko liczby oddzielone przecinkiem. PrzykÅ‚adowo: 80,443'; -?> diff --git a/pt_server_ip.lng b/pt_server_ip.lng deleted file mode 100644 index 8a3d00be61..0000000000 --- a/pt_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Servidor'; -$wb['ip_address_txt'] = 'Endereço IP'; -$wb['virtualhost_txt'] = 'Nome VirtualHost HTTP'; -$wb['ip_error_wrong'] = 'Endereço IP inválido!'; -$wb['ip_error_unique'] = 'O endereço IP deve ser único'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/ro_server_ip.lng b/ro_server_ip.lng deleted file mode 100644 index 1947d3ec37..0000000000 --- a/ro_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP Address'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'The IP address is invalid'; -$wb['ip_error_unique'] = 'The IP address must be unique'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/ru_server_ip.lng b/ru_server_ip.lng deleted file mode 100644 index f874ba1bbd..0000000000 --- a/ru_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Сервер'; -$wb['ip_address_txt'] = 'IP-адреÑ'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; -$wb['ip_error_unique'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть уникальным'; -$wb['client_id_txt'] = 'ID Клиента'; -$wb['ip_type_txt'] = 'Тип'; -$wb['virtualhost_port_txt'] = 'HTTP порты'; -$wb['error_port_syntax'] = 'ÐедопуÑтимые Ñимволы в поле порта. ПожалуйÑта, вводите только чиÑла, разделенные запÑтой. Пример: 80,443'; -?> diff --git a/se_server_ip.lng b/se_server_ip.lng deleted file mode 100644 index 09bc3b593a..0000000000 --- a/se_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP-adress'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'IP_adressen är ogiltig'; -$wb['ip_error_unique'] = 'IP-adressen mÃ¥ste vara unik'; -$wb['client_id_txt'] = 'Kund'; -$wb['ip_type_txt'] = 'Typ'; -$wb['virtualhost_port_txt'] = 'HTTP-portar'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/sk_server_ip.lng b/sk_server_ip.lng deleted file mode 100644 index 02f84ded4c..0000000000 --- a/sk_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Server'; -$wb['ip_address_txt'] = 'IP Adresa'; -$wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; -$wb['ip_error_wrong'] = 'IP adresa je neplatná'; -$wb['ip_error_unique'] = 'IP adresa musà byÅ¥ unikátna'; -$wb['client_id_txt'] = 'Client'; -$wb['ip_type_txt'] = 'Type'; -$wb['virtualhost_port_txt'] = 'HTTP Ports'; -$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> diff --git a/tr_server_ip.lng b/tr_server_ip.lng deleted file mode 100644 index 1f31bd3932..0000000000 --- a/tr_server_ip.lng +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$wb['server_ip_edit_title'] = 'IP Adresses'; -$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; -$wb['server_id_txt'] = 'Sunucu'; -$wb['client_id_txt'] = 'Müşteri'; -$wb['ip_type_txt'] = 'Tür'; -$wb['ip_address_txt'] = 'IP Adresi'; -$wb['virtualhost_txt'] = 'HTTP sSunucu Adı'; -$wb['virtualhost_port_txt'] = 'HTTP Kapı Numaraları'; -$wb['ip_error_wrong'] = 'IP adresi geçersiz'; -$wb['ip_error_unique'] = 'Aynı IP adresi zaten var'; -$wb['error_port_syntax'] = 'Kapı alanında geçersiz karakterler var. Lütfen yalnız virgül ile ayrılmış sayılar yazın. Örnek: 80,443'; -?> -- GitLab From 306d944ceb20930ab52472ec20dd09455339665b Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:32:36 +0200 Subject: [PATCH 286/571] Fixes #4480 --- interface/web/admin/lib/lang/ar_server_ip.lng | 2 ++ interface/web/admin/lib/lang/bg_server_ip.lng | 2 ++ interface/web/admin/lib/lang/br_server_ip.lng | 2 ++ interface/web/admin/lib/lang/ca_server_ip.lng | 2 ++ interface/web/admin/lib/lang/cz_server_ip.lng | 2 ++ interface/web/admin/lib/lang/de_server_ip.lng | 2 ++ interface/web/admin/lib/lang/dk_server_ip.lng | 2 ++ interface/web/admin/lib/lang/el_server_ip.lng | 2 ++ interface/web/admin/lib/lang/en_server_ip.lng | 4 +++- interface/web/admin/lib/lang/es_server_ip.lng | 2 ++ interface/web/admin/lib/lang/fi_server_ip.lng | 2 ++ interface/web/admin/lib/lang/fr_server_ip.lng | 2 ++ interface/web/admin/lib/lang/hr_server_ip.lng | 2 ++ interface/web/admin/lib/lang/hu_server_ip.lng | 2 ++ interface/web/admin/lib/lang/id_server_ip.lng | 2 ++ interface/web/admin/lib/lang/it_server_ip.lng | 2 ++ interface/web/admin/lib/lang/ja_server_ip.lng | 2 ++ interface/web/admin/lib/lang/nl_server_ip.lng | 2 ++ interface/web/admin/lib/lang/pl_server_ip.lng | 2 ++ interface/web/admin/lib/lang/pt_server_ip.lng | 2 ++ interface/web/admin/lib/lang/ro_server_ip.lng | 2 ++ interface/web/admin/lib/lang/ru_server_ip.lng | 2 ++ interface/web/admin/lib/lang/se_server_ip.lng | 2 ++ interface/web/admin/lib/lang/sk_server_ip.lng | 2 ++ interface/web/admin/lib/lang/tr_server_ip.lng | 2 ++ 25 files changed, 51 insertions(+), 1 deletion(-) diff --git a/interface/web/admin/lib/lang/ar_server_ip.lng b/interface/web/admin/lib/lang/ar_server_ip.lng index 88d8a2f604..1947d3ec37 100644 --- a/interface/web/admin/lib/lang/ar_server_ip.lng +++ b/interface/web/admin/lib/lang/ar_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP Address'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/bg_server_ip.lng b/interface/web/admin/lib/lang/bg_server_ip.lng index 7337577754..70f428a634 100644 --- a/interface/web/admin/lib/lang/bg_server_ip.lng +++ b/interface/web/admin/lib/lang/bg_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Сървър'; $wb['ip_address_txt'] = 'IP адреÑ'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/br_server_ip.lng b/interface/web/admin/lib/lang/br_server_ip.lng index b9bbd47949..8380b61ebd 100644 --- a/interface/web/admin/lib/lang/br_server_ip.lng +++ b/interface/web/admin/lib/lang/br_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Servidor'; $wb['client_id_txt'] = 'Cliente'; $wb['ip_type_txt'] = 'Tipo'; diff --git a/interface/web/admin/lib/lang/ca_server_ip.lng b/interface/web/admin/lib/lang/ca_server_ip.lng index f06b6be78a..8f7738e51f 100644 --- a/interface/web/admin/lib/lang/ca_server_ip.lng +++ b/interface/web/admin/lib/lang/ca_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['client_id_txt'] = 'Client'; $wb['ip_type_txt'] = 'Type'; diff --git a/interface/web/admin/lib/lang/cz_server_ip.lng b/interface/web/admin/lib/lang/cz_server_ip.lng index 43a382a646..3698df5c74 100644 --- a/interface/web/admin/lib/lang/cz_server_ip.lng +++ b/interface/web/admin/lib/lang/cz_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP adresa'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/de_server_ip.lng b/interface/web/admin/lib/lang/de_server_ip.lng index 5757b165cb..88f23ebc15 100644 --- a/interface/web/admin/lib/lang/de_server_ip.lng +++ b/interface/web/admin/lib/lang/de_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP Adresse'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/dk_server_ip.lng b/interface/web/admin/lib/lang/dk_server_ip.lng index ba1586644d..a6ba3ba045 100644 --- a/interface/web/admin/lib/lang/dk_server_ip.lng +++ b/interface/web/admin/lib/lang/dk_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['client_id_txt'] = 'Kunde'; $wb['ip_type_txt'] = 'Type'; diff --git a/interface/web/admin/lib/lang/el_server_ip.lng b/interface/web/admin/lib/lang/el_server_ip.lng index 212f432793..f00925fc62 100644 --- a/interface/web/admin/lib/lang/el_server_ip.lng +++ b/interface/web/admin/lib/lang/el_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'ΔιεÏθυνση IP'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/en_server_ip.lng b/interface/web/admin/lib/lang/en_server_ip.lng index fd91fc30d6..8ef448f85d 100644 --- a/interface/web/admin/lib/lang/en_server_ip.lng +++ b/interface/web/admin/lib/lang/en_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb["server_id_txt"] = 'Server'; $wb["client_id_txt"] = 'Client'; $wb["ip_type_txt"] = 'Type'; @@ -8,4 +10,4 @@ $wb["virtualhost_port_txt"] = 'HTTP Ports'; $wb["ip_error_wrong"] = 'The IP address is invalid'; $wb["ip_error_unique"] = 'The IP address must be unique'; $wb["error_port_syntax"] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443'; -?> \ No newline at end of file +?> diff --git a/interface/web/admin/lib/lang/es_server_ip.lng b/interface/web/admin/lib/lang/es_server_ip.lng index 5cd2d77e52..ba4d06d098 100755 --- a/interface/web/admin/lib/lang/es_server_ip.lng +++ b/interface/web/admin/lib/lang/es_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['client_id_txt'] = 'Cliente'; $wb['error_port_syntax'] = 'Caracteres inválidos en el campo puerto, por favor introduzca sólo números separados por comas. Por ejemplo: 80,443'; $wb['ip_address_txt'] = 'Dirección IP'; diff --git a/interface/web/admin/lib/lang/fi_server_ip.lng b/interface/web/admin/lib/lang/fi_server_ip.lng index 7d2b642fc2..a9f49cc124 100755 --- a/interface/web/admin/lib/lang/fi_server_ip.lng +++ b/interface/web/admin/lib/lang/fi_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Palvelin'; $wb['ip_address_txt'] = 'IP-osoite'; $wb['virtualhost_txt'] = 'Virtuaalipalvelin'; diff --git a/interface/web/admin/lib/lang/fr_server_ip.lng b/interface/web/admin/lib/lang/fr_server_ip.lng index 471abb87ae..1289cd755a 100644 --- a/interface/web/admin/lib/lang/fr_server_ip.lng +++ b/interface/web/admin/lib/lang/fr_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Serveur'; $wb['ip_address_txt'] = 'Adresse IP'; $wb['virtualhost_txt'] = 'NameVirtualHost HTTP'; diff --git a/interface/web/admin/lib/lang/hr_server_ip.lng b/interface/web/admin/lib/lang/hr_server_ip.lng index 0ddf8be14c..f26fd720ca 100644 --- a/interface/web/admin/lib/lang/hr_server_ip.lng +++ b/interface/web/admin/lib/lang/hr_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP adresa'; $wb['virtualhost_txt'] = 'HTTP ime virtualnog hosta'; diff --git a/interface/web/admin/lib/lang/hu_server_ip.lng b/interface/web/admin/lib/lang/hu_server_ip.lng index 33be4f514e..2e8f88a2f7 100644 --- a/interface/web/admin/lib/lang/hu_server_ip.lng +++ b/interface/web/admin/lib/lang/hu_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Szerver'; $wb['ip_address_txt'] = 'IP cÃm'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/id_server_ip.lng b/interface/web/admin/lib/lang/id_server_ip.lng index c6d99a1212..00cecf5026 100644 --- a/interface/web/admin/lib/lang/id_server_ip.lng +++ b/interface/web/admin/lib/lang/id_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'Alamat IP'; $wb['virtualhost_txt'] = 'Nama VirtualHost HTTP'; diff --git a/interface/web/admin/lib/lang/it_server_ip.lng b/interface/web/admin/lib/lang/it_server_ip.lng index 0d36ac79c3..9850f2e38b 100644 --- a/interface/web/admin/lib/lang/it_server_ip.lng +++ b/interface/web/admin/lib/lang/it_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'Indirizzo IP'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/ja_server_ip.lng b/interface/web/admin/lib/lang/ja_server_ip.lng index fdd8681ebb..982d797760 100644 --- a/interface/web/admin/lib/lang/ja_server_ip.lng +++ b/interface/web/admin/lib/lang/ja_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'サーãƒãƒ¼'; $wb['ip_address_txt'] = 'IPアドレス'; $wb['virtualhost_txt'] = 'HTTP ã® NameVirtualHost を使ã†'; diff --git a/interface/web/admin/lib/lang/nl_server_ip.lng b/interface/web/admin/lib/lang/nl_server_ip.lng index 3b281d60a0..1fd397e01b 100644 --- a/interface/web/admin/lib/lang/nl_server_ip.lng +++ b/interface/web/admin/lib/lang/nl_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP adres'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/pl_server_ip.lng b/interface/web/admin/lib/lang/pl_server_ip.lng index cb16e104d5..0e31866078 100644 --- a/interface/web/admin/lib/lang/pl_server_ip.lng +++ b/interface/web/admin/lib/lang/pl_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Serwer'; $wb['ip_address_txt'] = 'Adres IP'; $wb['virtualhost_txt'] = 'Nazwa wirtualnego hosta HTTP'; diff --git a/interface/web/admin/lib/lang/pt_server_ip.lng b/interface/web/admin/lib/lang/pt_server_ip.lng index 62f9ad351a..8a3d00be61 100644 --- a/interface/web/admin/lib/lang/pt_server_ip.lng +++ b/interface/web/admin/lib/lang/pt_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Servidor'; $wb['ip_address_txt'] = 'Endereço IP'; $wb['virtualhost_txt'] = 'Nome VirtualHost HTTP'; diff --git a/interface/web/admin/lib/lang/ro_server_ip.lng b/interface/web/admin/lib/lang/ro_server_ip.lng index 88d8a2f604..1947d3ec37 100644 --- a/interface/web/admin/lib/lang/ro_server_ip.lng +++ b/interface/web/admin/lib/lang/ro_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP Address'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/ru_server_ip.lng b/interface/web/admin/lib/lang/ru_server_ip.lng index fd82e2efa1..f874ba1bbd 100644 --- a/interface/web/admin/lib/lang/ru_server_ip.lng +++ b/interface/web/admin/lib/lang/ru_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Сервер'; $wb['ip_address_txt'] = 'IP-адреÑ'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/se_server_ip.lng b/interface/web/admin/lib/lang/se_server_ip.lng index c6f92d8b60..09bc3b593a 100644 --- a/interface/web/admin/lib/lang/se_server_ip.lng +++ b/interface/web/admin/lib/lang/se_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP-adress'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/sk_server_ip.lng b/interface/web/admin/lib/lang/sk_server_ip.lng index 65915cc56b..02f84ded4c 100644 --- a/interface/web/admin/lib/lang/sk_server_ip.lng +++ b/interface/web/admin/lib/lang/sk_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Server'; $wb['ip_address_txt'] = 'IP Adresa'; $wb['virtualhost_txt'] = 'HTTP NameVirtualHost'; diff --git a/interface/web/admin/lib/lang/tr_server_ip.lng b/interface/web/admin/lib/lang/tr_server_ip.lng index 4b2cb1187d..1f31bd3932 100644 --- a/interface/web/admin/lib/lang/tr_server_ip.lng +++ b/interface/web/admin/lib/lang/tr_server_ip.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_edit_title'] = 'IP Adresses'; +$wb['server_ip_edit_desc'] = 'Form to edit system IP adresses'; $wb['server_id_txt'] = 'Sunucu'; $wb['client_id_txt'] = 'Müşteri'; $wb['ip_type_txt'] = 'Tür'; -- GitLab From e178ce60051a048fca875476d8353e42c16d1daa Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 20:39:38 +0200 Subject: [PATCH 287/571] Fixes #4478 (Translate option for System Config) --- interface/web/admin/lib/lang/ar_system_config.lng | 1 + interface/web/admin/lib/lang/bg_system_config.lng | 1 + interface/web/admin/lib/lang/br_system_config.lng | 1 + interface/web/admin/lib/lang/ca_system_config.lng | 1 + interface/web/admin/lib/lang/cz_system_config.lng | 1 + interface/web/admin/lib/lang/de_system_config.lng | 1 + interface/web/admin/lib/lang/dk_system_config.lng | 1 + interface/web/admin/lib/lang/el_system_config.lng | 1 + interface/web/admin/lib/lang/en_system_config.lng | 1 + interface/web/admin/lib/lang/es_system_config.lng | 1 + interface/web/admin/lib/lang/fi_system_config.lng | 1 + interface/web/admin/lib/lang/fr_system_config.lng | 1 + interface/web/admin/lib/lang/hr_system_config.lng | 1 + interface/web/admin/lib/lang/hu_system_config.lng | 1 + interface/web/admin/lib/lang/id_system_config.lng | 1 + interface/web/admin/lib/lang/it_system_config.lng | 1 + interface/web/admin/lib/lang/ja_system_config.lng | 1 + interface/web/admin/lib/lang/nl_system_config.lng | 1 + interface/web/admin/lib/lang/pl_system_config.lng | 1 + interface/web/admin/lib/lang/pt_system_config.lng | 1 + interface/web/admin/lib/lang/ro_system_config.lng | 1 + interface/web/admin/lib/lang/ru_system_config.lng | 1 + interface/web/admin/lib/lang/se_system_config.lng | 1 + interface/web/admin/lib/lang/sk_system_config.lng | 1 + interface/web/admin/lib/lang/tr_system_config.lng | 1 + 25 files changed, 25 insertions(+) diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 4ea9a68919..3a7ef0796c 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; $wb['dbname_prefix_txt'] = 'Database name prefix'; diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 1ea00be94f..4e6add8a6d 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['warning'] = 'Редактирай тези променливи внимателно! Ðе премахвай префикÑите на ÑиÑтемата.'; $wb['dbname_prefix_txt'] = 'Име на префикÑа в базата данни'; $wb['dbuser_prefix_txt'] = 'ПотребителÑки Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð² базата данни'; diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index f1feae4768..f5ed36e9ea 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = 'Configurações do Sistema'; $wb['smtp_missing_admin_mail_txt'] = 'Por favor, insira um nome e e-mail do administrador se você usar smtp para envio dos e-mails do sistema.'; $wb['dashboard_atom_url_admin_txt'] = 'URL do Dashboard atom (admin)'; diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index d9dfcfaa66..f721f688c5 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index e85b8ab9a5..4ee62ece32 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Upravujte tyto údaje opatrne! Neodstraňujte prefixy na systémech s vÃce, než jednÃm klientem.'; $wb['dbname_prefix_txt'] = 'Prefix názvu databáze'; diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 21169ddf08..f981cce832 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = 'Systemkonfiguration'; $wb['smtp_missing_admin_mail_txt'] = 'Bitte geben Sie die Administrator E-Mail und den Namen ein, wenn Sie SMTP Versand nutzen wollen.'; $wb['warning'] = 'Bearbeiten Sie diese Werte sorgfältig! Entfernen Sie die Präfixe nicht auf Systemen mit mehr als einem Kunden.'; diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index eb725ac519..5f298f091a 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['smtp_missing_admin_mail_txt'] = 'Indtast venligst admin navn og admin mail adresse, hvis du vil bruge smtp mail afsendelse.'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 583bef7d39..17414e666d 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index f43603f6b6..840b3f434b 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.'; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index f788117fd4..7c4525da9a 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['admin_dashlets_left_txt'] = 'Componentes del administrador a la izquierda'; $wb['admin_dashlets_right_txt'] = 'Componentes del administrador a la derecha'; $wb['admin_mail_txt'] = 'Correo del administrador'; diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index 9def05e14a..2cafa6f5bf 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Muokkaa näitä arvoja varoen! Älä poista etuliitteitä jos järjestelmässä on enemmän kuin yksi asiakas.'; $wb['dbname_prefix_txt'] = 'Tietokannan nimen etuliite'; diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 7150804aaf..3b6fe68521 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['dashboard_atom_url_admin_txt'] = 'URL du fil de syndication Atom du tableau de bord (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'URL du fil de syndication Atom du tableau de bord ( reseller)'; diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index 21b7953035..66931524ec 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Oprezno mijenjajte prefikse i postavke! Nemojte brisati prefikse na sistemima gdje postoji viÅ¡e od jednog klijenata.'; $wb['dbname_prefix_txt'] = 'Prefiks nazivu baze'; diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index 8ef0acdeae..6e1f97dfbb 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one Ãœgyfél.'; $wb['dbname_prefix_txt'] = 'Database name prefix'; diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 5e76d45bf7..9072d62832 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Sunting nilai-nilai ini dengan hati-hati! Jangan hapus prefiks di sistem yang memiliki lebih dari 1 klien.'; $wb['dbname_prefix_txt'] = 'Prefiks nama database'; diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 85464c3739..42a03ed0b8 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; $wb['dbname_prefix_txt'] = 'Prefisso nome database'; diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index 744db787b8..dfea52b18d 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = '値ã®å¤‰æ›´ã«ã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。クライアントãŒåˆ©ç”¨ä¸ã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ—リフィックスã¯å‰Šé™¤ã—ãªã„ã§ãã ã•ã„。'; $wb['dbname_prefix_txt'] = 'データベースåã®ãƒ—リフィックス'; diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index f4b778d337..358edde69b 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)'; $wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)'; diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index 95bf2f6ffc..d309ab812f 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['warning'] = 'Edytuj te wartoÅ›ci ostrożnie! Nie usuwaj prefiksów w systemie w wiÄ™cej niż jednym kliencie.'; $wb['dbname_prefix_txt'] = 'Prefiks nazwy bazy danych'; $wb['dbuser_prefix_txt'] = 'Prefiks użytkownika bazy danych'; diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index faaebeca2a..05edb306d9 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Edite estes valores com cuidado! Não remova os prefixos em um sistema com mais de um cliente!!'; $wb['dbname_prefix_txt'] = 'Prefixo Nome da Base de Dados'; diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index e6ed186de7..33ee2b4bde 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Edit these values carefully! Do not remove the prefixes on a systems with more then one client.'; $wb['dbname_prefix_txt'] = 'Database name prefix'; diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index 792628d492..62c856fae0 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = 'ÐаÑтройка параметров по умолчанию'; $wb['warning'] = 'ИзменÑйте Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°ÐºÐºÑƒÑ€Ð°Ñ‚Ð½Ð¾! Ðе удалÑйте префикÑÑ‹ на ÑиÑтемах где более одного пользователÑ.'; $wb['dbname_prefix_txt'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð±Ð°Ð·Ñ‹ данных'; diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 8f6c9a63f0..bf0ec4942d 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Redigera dess värden försiktigt! Ta inte bort prefix pÃ¥ system med mer än en kund.'; $wb['dbname_prefix_txt'] = 'Prefix för databasnamn'; diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 2ea9666db5..b6bbe102dd 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['warning'] = 'Upravte tieto hodnoty pozorne! Neodstraňujte predpony na systémoch s viac ako jedného klienta.'; $wb['dbname_prefix_txt'] = 'Predpona názvu databázy '; diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 0ccf846c1c..21a70bec4b 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -1,4 +1,5 @@ <?php +$wb['system_config_title'] = 'System Config'; $wb['system_config_desc_txt'] = ''; $wb['smtp_missing_admin_mail_txt'] = 'SMTP e-posta gönderimini kullanmak için yönetici adı ve yönetici e-posta adresini yazmalısınız.'; $wb['dashboard_atom_url_admin_txt'] = 'Panel Atom akışının Ä°nternet adresi (yönetici)'; -- GitLab From 9e6898414c4f0d7624f550e4547f6bb749379b54 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 22:03:12 +0200 Subject: [PATCH 288/571] Fixes #4479 --- interface/web/client/lib/lang/ar_client.lng | 1 + interface/web/client/lib/lang/ar_reseller.lng | 2 ++ interface/web/client/lib/lang/bg_client.lng | 1 + interface/web/client/lib/lang/bg_reseller.lng | 2 ++ interface/web/client/lib/lang/br_client.lng | 1 + interface/web/client/lib/lang/br_reseller.lng | 2 ++ interface/web/client/lib/lang/ca_client.lng | 1 + interface/web/client/lib/lang/ca_reseller.lng | 2 ++ interface/web/client/lib/lang/cz_client.lng | 1 + interface/web/client/lib/lang/cz_reseller.lng | 2 ++ interface/web/client/lib/lang/de_client.lng | 1 + interface/web/client/lib/lang/de_reseller.lng | 2 ++ interface/web/client/lib/lang/dk_client.lng | 1 + interface/web/client/lib/lang/dk_reseller.lng | 2 ++ interface/web/client/lib/lang/el_client.lng | 1 + interface/web/client/lib/lang/el_reseller.lng | 2 ++ interface/web/client/lib/lang/en_client.lng | 1 + interface/web/client/lib/lang/en_reseller.lng | 2 ++ interface/web/client/lib/lang/es_client.lng | 1 + interface/web/client/lib/lang/es_reseller.lng | 2 ++ interface/web/client/lib/lang/fi_client.lng | 1 + interface/web/client/lib/lang/fi_reseller.lng | 2 ++ interface/web/client/lib/lang/fr_client.lng | 1 + interface/web/client/lib/lang/fr_reseller.lng | 2 ++ interface/web/client/lib/lang/hr_client.lng | 1 + interface/web/client/lib/lang/hr_reseller.lng | 2 ++ interface/web/client/lib/lang/hu_client.lng | 1 + interface/web/client/lib/lang/hu_reseller.lng | 2 ++ interface/web/client/lib/lang/id_client.lng | 1 + interface/web/client/lib/lang/id_reseller.lng | 2 ++ interface/web/client/lib/lang/it_client.lng | 1 + interface/web/client/lib/lang/it_reseller.lng | 2 ++ interface/web/client/lib/lang/ja_client.lng | 1 + interface/web/client/lib/lang/ja_reseller.lng | 2 ++ interface/web/client/lib/lang/nl_client.lng | 1 + interface/web/client/lib/lang/nl_reseller.lng | 2 ++ interface/web/client/lib/lang/pl_client.lng | 1 + interface/web/client/lib/lang/pl_reseller.lng | 2 ++ interface/web/client/lib/lang/pt_client.lng | 1 + interface/web/client/lib/lang/pt_reseller.lng | 2 ++ interface/web/client/lib/lang/ro_client.lng | 1 + interface/web/client/lib/lang/ro_reseller.lng | 2 ++ interface/web/client/lib/lang/ru_client.lng | 1 + interface/web/client/lib/lang/ru_reseller.lng | 2 ++ interface/web/client/lib/lang/se_client.lng | 1 + interface/web/client/lib/lang/se_reseller.lng | 2 ++ interface/web/client/lib/lang/sk_client.lng | 1 + interface/web/client/lib/lang/sk_reseller.lng | 2 ++ interface/web/client/lib/lang/tr_client.lng | 1 + interface/web/client/lib/lang/tr_reseller.lng | 2 ++ interface/web/client/templates/client_edit_address.htm | 2 +- interface/web/client/templates/reseller_edit_address.htm | 2 +- 52 files changed, 77 insertions(+), 2 deletions(-) diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index 71bc0fc1f7..deefcd8ade 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng index 68e8a950f3..333c8bdb96 100644 --- a/interface/web/client/lib/lang/ar_reseller.lng +++ b/interface/web/client/lib/lang/ar_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index 36da0a0422..8b024de0eb 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng index 211b6daf93..528b2c7897 100644 --- a/interface/web/client/lib/lang/bg_reseller.lng +++ b/interface/web/client/lib/lang/bg_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index c640be54fb..ba26b61513 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -200,5 +200,6 @@ $wb['btn_cancel_txt'] = 'Cancelar'; $wb['invalid_vat_id'] = 'O ID do VAT é inválido.'; $wb['email_error_empty'] = 'O e-mail está em branco'; $wb['limit_directive_snippets_txt'] = 'Exibir configurações de seleção do servidor web'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limites'; ?> diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index 12a8a2953f..322235d36b 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_directive_snippets_txt'] = 'Exibir seleção de configuração do ser $wb['limit_database_user_error_notint'] = 'O limite de usuários do banco de dados deve ser um número.'; $wb['limit_database_quota_txt'] = 'Cota do banco de dados'; $wb['limit_database_quota_error_notint'] = 'A cota do banco de dados deve ser um número.'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limites'; ?> diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng index bfa38a3401..1797c17cd7 100644 --- a/interface/web/client/lib/lang/ca_client.lng +++ b/interface/web/client/lib/lang/ca_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng index f83d3aaff7..411096ef54 100644 --- a/interface/web/client/lib/lang/ca_reseller.lng +++ b/interface/web/client/lib/lang/ca_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index 3351ac58e1..355611f50e 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -200,5 +200,6 @@ $wb['limit_database_user_txt'] = 'Max. poÄet databázových uživatelů'; $wb['limit_database_user_error_notint'] = 'Limit databázové kvóty musà být ÄÃslo.'; $wb['password_click_to_set_txt'] = 'Pro nastavenà klikni zde'; $wb['limit_dns_record_error_notint'] = 'Limit DNS záznamů musà být ÄÃslo.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limity'; ?> diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index adfea62ac5..d9ddb4c5c4 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_user_error_notint'] = 'Limit databázové kvóty musà být $wb['limit_database_quota_txt'] = 'Databázové kvóty'; $wb['limit_database_quota_error_notint'] = 'Limit databázové kvóty musà být ÄÃslo.'; $wb['password_click_to_set_txt'] = 'Pro nastavenà klikni zde'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limity'; ?> diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng index b051d71305..58e390c9f2 100644 --- a/interface/web/client/lib/lang/de_client.lng +++ b/interface/web/client/lib/lang/de_client.lng @@ -200,5 +200,6 @@ $wb['limit_database_user_txt'] = 'Max. Database users'; $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng index e37ca395af..9f68b18cf5 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_user_error_notint'] = 'The database user limit must be a num $wb['limit_database_quota_txt'] = 'Database quota'; $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng index b944e03175..c0e8734912 100644 --- a/interface/web/client/lib/lang/dk_client.lng +++ b/interface/web/client/lib/lang/dk_client.lng @@ -200,5 +200,6 @@ $wb['invalid_vat_id'] = 'The VAT ID is invalid.'; $wb['email_error_empty'] = 'Email is empty'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/dk_reseller.lng b/interface/web/client/lib/lang/dk_reseller.lng index b06301ccdd..12004df761 100644 --- a/interface/web/client/lib/lang/dk_reseller.lng +++ b/interface/web/client/lib/lang/dk_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.'; $wb['limit_database_quota_txt'] = 'Database quota'; $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index b85f653d4e..59d50b3c85 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index b409c169e6..3b7bc470bc 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 3cc323fd4b..9b114d4e64 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -202,5 +202,6 @@ $wb['btn_cancel_txt'] = "Cancel"; $wb['invalid_vat_id'] = 'The VAT ID is invalid.'; $wb["email_error_empty"] = "Email is empty"; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index b5950132c4..789229460f 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -207,5 +207,7 @@ $wb['limit_database_user_txt'] = 'Max. Database users'; $wb['limit_database_user_error_notint'] = 'The database user limit must be a number.'; $wb['limit_database_quota_txt'] = 'Database quota'; $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index 75125024fb..2595853096 100755 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng index 5a94b9e803..6830c56cb8 100755 --- a/interface/web/client/lib/lang/es_reseller.lng +++ b/interface/web/client/lib/lang/es_reseller.lng @@ -203,5 +203,7 @@ $wb['zip_txt'] = 'Código postal'; $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index 6df30e7753..65893189b3 100755 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng index 58af2fdf0d..122fea5268 100644 --- a/interface/web/client/lib/lang/fi_reseller.lng +++ b/interface/web/client/lib/lang/fi_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index 61612ccbe0..10f212e0f1 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index f30fcd48c6..76d44cb324 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index ec5b73d940..9975861bde 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index 9188b6861b..d4b9f58eeb 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index 10993601c0..b74881e9bf 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng index dd9290885a..91c31b05ad 100644 --- a/interface/web/client/lib/lang/hu_reseller.lng +++ b/interface/web/client/lib/lang/hu_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index c84e6251f4..b9cec3c1e6 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng index 821a35e3cd..f466b2562c 100644 --- a/interface/web/client/lib/lang/id_reseller.lng +++ b/interface/web/client/lib/lang/id_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index 0f75d849d6..09c93513ae 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng index 2cef293265..1a2e6a1092 100644 --- a/interface/web/client/lib/lang/it_reseller.lng +++ b/interface/web/client/lib/lang/it_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index 33aa6ab4e9..41023dd0a6 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng index 7edf836f39..c1bade6839 100644 --- a/interface/web/client/lib/lang/ja_reseller.lng +++ b/interface/web/client/lib/lang/ja_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index 188a37f4fd..4d6f11ca51 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -200,5 +200,6 @@ $wb['limit_database_user_error_notint'] = 'The database user limit must be a num $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index 9953880bec..bed1291a2b 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_txt'] = 'Database quota'; $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.'; $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng index f1a1e1e6e7..5fcf7a26d4 100644 --- a/interface/web/client/lib/lang/pl_client.lng +++ b/interface/web/client/lib/lang/pl_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng index 9b2cf58f75..71f5bcfa4b 100644 --- a/interface/web/client/lib/lang/pl_reseller.lng +++ b/interface/web/client/lib/lang/pl_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index ae3e45b24d..a3f98566ee 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng index e021cd2511..7f47221418 100644 --- a/interface/web/client/lib/lang/pt_reseller.lng +++ b/interface/web/client/lib/lang/pt_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index 034c4d0e44..0b7c552b37 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng index 68e8a950f3..333c8bdb96 100644 --- a/interface/web/client/lib/lang/ro_reseller.lng +++ b/interface/web/client/lib/lang/ro_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index befd6b15bf..94d0bb6a0d 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt доÑтупен'; $wb['limit_directive_snippets_txt'] = 'Показать выбор конфигурации веб-Ñервера'; $wb['password_click_to_set_txt'] = 'Клик Ð´Ð»Ñ ÑƒÑтановки'; $wb['limit_dns_record_error_notint'] = 'Лимит вторичных DNS-зон должен быть чиÑлом.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Лимиты'; ?> diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 998a886990..f5806377c3 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'Лимит квоты базы да $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt доÑтупен'; $wb['limit_directive_snippets_txt'] = 'Показать выбор конфигурации веб-Ñервера'; $wb['password_click_to_set_txt'] = 'Клик Ð´Ð»Ñ ÑƒÑтановки'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Лимиты'; ?> diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index 2884302c18..fb1151ed8e 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index 68e8a950f3..333c8bdb96 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index 3edec417cf..dcd291bc53 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -200,5 +200,6 @@ $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng index 4ae3ef5b97..9e1ec0a80f 100644 --- a/interface/web/client/lib/lang/sk_reseller.lng +++ b/interface/web/client/lib/lang/sk_reseller.lng @@ -203,5 +203,7 @@ $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a n $wb['limit_ssl_letsencrypt_txt'] = 'Let\'s Encrypt available'; $wb['limit_directive_snippets_txt'] = 'Show web server config selection'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Limits'; ?> diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index f071170966..9e8e6b9be3 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -202,5 +202,6 @@ $wb['btn_cancel_txt'] = 'Ä°ptal'; $wb['invalid_vat_id'] = 'Vergi numarası geçersiz.'; $wb['email_error_empty'] = 'E-posta boÅŸ olamaz.'; $wb['limit_directive_snippets_txt'] = 'Web Sunucu Yapılandırma Seçimi Görüntülensin'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Sınırlar'; ?> diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index e042301400..d7bc06429e 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -207,5 +207,7 @@ $wb['limit_database_user_txt'] = 'En Fazla Veritabanı Kullanıcısı Sayısı'; $wb['limit_database_user_error_notint'] = 'Veritabanı kullanıcı sınırı bir sayı olmalıdır.'; $wb['limit_database_quota_txt'] = 'Veritabanı Kotası'; $wb['limit_database_quota_error_notint'] = 'Veritabanı kotası sınırı bir sayı olmalıdır.'; +$wb['Reseller'] = 'Reseller'; +$wb['Address'] = 'Address'; $wb['Limits'] = 'Sınırlar'; ?> diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index 86393c8e9d..689849287c 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -4,7 +4,7 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>Address</legend> + <legend>{tmpl_var name='Address'}</legend> <div class="form-group"> <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label> <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div> diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm index 69b6552938..5cb829a008 100644 --- a/interface/web/client/templates/reseller_edit_address.htm +++ b/interface/web/client/templates/reseller_edit_address.htm @@ -4,7 +4,7 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>Address</legend> + <legend>{tmpl_var name='Address'}</legend> <div class="form-group"> <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label> <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div> -- GitLab From c6cb9f3dc7369985566a56bee01ba8cbd97aa45a Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 23:03:42 +0200 Subject: [PATCH 289/571] Fixed several language module issues (#4473) --- .../web/admin/templates/language_add.htm | 3 +-- .../web/admin/templates/language_complete.htm | 26 +++++++++---------- .../web/admin/templates/language_edit.htm | 20 ++++++++------ .../web/admin/templates/language_export.htm | 1 - .../web/admin/templates/language_import.htm | 3 +-- .../web/admin/templates/language_list.htm | 4 +-- 6 files changed, 27 insertions(+), 30 deletions(-) diff --git a/interface/web/admin/templates/language_add.htm b/interface/web/admin/templates/language_add.htm index e124abf575..30dc4d153c 100644 --- a/interface/web/admin/templates/language_add.htm +++ b/interface/web/admin/templates/language_add.htm @@ -4,7 +4,6 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>Language Add</legend> <div class="form-group"> <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label> <div class="col-sm-9"><select name="lng_select" id="language" class="form-control flags"> @@ -22,4 +21,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_add.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/language_complete.htm b/interface/web/admin/templates/language_complete.htm index 5205b285d5..53f42fc8fe 100644 --- a/interface/web/admin/templates/language_complete.htm +++ b/interface/web/admin/templates/language_complete.htm @@ -13,20 +13,18 @@ </tmpl_if> <div class="pnl_formsarea"> - <legend>Language Complete</legend> - <div class="form-group"> - <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label> - <div class="col-sm-9"><select name="lng_select" id="language" class="form-control flags"> - {tmpl_var name='language_option'} - </select></div> + <div class="form-group"> + <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label> + <div class="col-sm-9"> + <select name="lng_select" id="language" class="form-control flags">{tmpl_var name='language_option'}</select> </div> - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_complete.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> - - - + </div> + <div class="clear"> + <div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_complete.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button> + </div> + </div> </div> -</div> \ No newline at end of file +</div> diff --git a/interface/web/admin/templates/language_edit.htm b/interface/web/admin/templates/language_edit.htm index d3830494da..c42ebaa51e 100644 --- a/interface/web/admin/templates/language_edit.htm +++ b/interface/web/admin/templates/language_edit.htm @@ -4,16 +4,20 @@ <p><tmpl_var name="list_desc_txt"></p> - <fieldset id="wf_area_language_edit"><legend>Language File Edit: {tmpl_var name="file_path"}</legend> + <fieldset id="wf_area_language_edit"><legend>{tmpl_var name="lang_file_txt"}: {tmpl_var name="file_path"}</legend> <span class="wf_oneField"> <tmpl_loop name="records"> <span class="wf_oneField"> - <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label> - <div class="col-sm-9"><input class="form-control" type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" ></div></span> - </tmpl_loop> - </span> - </fieldset> - + <div class="col-sm-9"> + <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label> + <input class="form-control" type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" > + </div> + </span> + </tmpl_loop> + </span> + </fieldset> + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input type="hidden" name="lang" value="{tmpl_var name='lang'}"> <input type="hidden" name="lang_file" value="{tmpl_var name='lang_file'}"> @@ -22,4 +26,4 @@ <div class="wf_actions buttons"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/language_list.php?lng_select={tmpl_var name='lang'}">{tmpl_var name='btn_cancel_txt'}</button> - </div> \ No newline at end of file + </div> diff --git a/interface/web/admin/templates/language_export.htm b/interface/web/admin/templates/language_export.htm index b00a204b29..a115e6493a 100644 --- a/interface/web/admin/templates/language_export.htm +++ b/interface/web/admin/templates/language_export.htm @@ -4,7 +4,6 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>Language Export</legend> <div class="form-group"> <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label> <div class="col-sm-9"><select name="lng_select" id="lng_select" class="form-control flags"> diff --git a/interface/web/admin/templates/language_import.htm b/interface/web/admin/templates/language_import.htm index 8bd653c13e..0761cc87ed 100644 --- a/interface/web/admin/templates/language_import.htm +++ b/interface/web/admin/templates/language_import.htm @@ -4,7 +4,6 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>Language Import</legend> <div class="form-group"> <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_import_txt'}</label> <input name="file" id="file" size="30" type="file" class="fileUpload" /> @@ -31,4 +30,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/language_import.php" data-form-upload="true">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/language_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/language_list.htm b/interface/web/admin/templates/language_list.htm index 33897be0a1..0a80e5391c 100644 --- a/interface/web/admin/templates/language_list.htm +++ b/interface/web/admin/templates/language_list.htm @@ -3,8 +3,6 @@ </div> <p><tmpl_var name="list_desc_txt"></p> - - <legend>Tools</legend> <div class="form-group"> <label for="lng_select" class="col-sm-3 control-label">{tmpl_var name='language_select_txt'}</label> @@ -43,4 +41,4 @@ </table> </div> - \ No newline at end of file + -- GitLab From ab6ee8799fa7bc72270b17c2df0b4715c2be39ba Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 23:47:01 +0200 Subject: [PATCH 290/571] Fixes #4480 --- interface/web/admin/templates/server_ip_edit.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm index 9e895eac04..85f06432e8 100644 --- a/interface/web/admin/templates/server_ip_edit.htm +++ b/interface/web/admin/templates/server_ip_edit.htm @@ -4,7 +4,7 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>IP Address</legend> + <legend>{tmpl_var name='server_ip_edit_title'}</legend> <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -42,4 +42,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_ip_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_ip_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> -- GitLab From 5c646738481813909e9f58b688b6e9171f5bcf04 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 24 May 2020 23:59:35 +0200 Subject: [PATCH 291/571] Fixes #4474 --- interface/web/admin/form/server_ip_map.tform.php | 4 ++-- interface/web/admin/lib/lang/ar_server_ip_map.lng | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/form/server_ip_map.tform.php b/interface/web/admin/form/server_ip_map.tform.php index 4f7ed3d28c..bdaac87429 100644 --- a/interface/web/admin/form/server_ip_map.tform.php +++ b/interface/web/admin/form/server_ip_map.tform.php @@ -28,8 +28,8 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -$form["title"] = "IPv4 Address mapping"; -$form["description"] = "Form to map IPv4-addresses for Web-Server"; +$form["title"] = "server_ip_map_title"; +$form["description"] = "server_ip_map_desc"; $form["name"] = "server_ip_map"; $form["action"] = "server_ip_map_edit.php"; $form["db_table"] = "server_ip_map"; diff --git a/interface/web/admin/lib/lang/ar_server_ip_map.lng b/interface/web/admin/lib/lang/ar_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/ar_server_ip_map.lng +++ b/interface/web/admin/lib/lang/ar_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; -- GitLab From 3cd63a2179f0cbc0b1c85e762960b3e8c32ac24c Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 25 May 2020 00:05:08 +0200 Subject: [PATCH 292/571] Fixes #4474 (tweak) --- interface/web/admin/form/server_ip_map.tform.php | 2 +- interface/web/admin/templates/server_ip_map_edit.htm | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/web/admin/form/server_ip_map.tform.php b/interface/web/admin/form/server_ip_map.tform.php index bdaac87429..2374ca0ce0 100644 --- a/interface/web/admin/form/server_ip_map.tform.php +++ b/interface/web/admin/form/server_ip_map.tform.php @@ -46,7 +46,7 @@ $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete $form["tabs"]['server_ip_map'] = array ( - 'title' => "IP Address Mapping", + 'title' => "server_ip_map_title", 'width' => 80, 'template' => "templates/server_ip_map_edit.htm", 'fields' => array ( diff --git a/interface/web/admin/templates/server_ip_map_edit.htm b/interface/web/admin/templates/server_ip_map_edit.htm index a53d982c85..bba26348ae 100644 --- a/interface/web/admin/templates/server_ip_map_edit.htm +++ b/interface/web/admin/templates/server_ip_map_edit.htm @@ -2,7 +2,6 @@ <h1><tmpl_var name="list_head_txt"></h1> </div> <p><tmpl_var name="list_desc_txt"></p> -<legend>IP Address Mapping</legend> <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"> -- GitLab From 9e8048f790d26d82aa19d0b9f334445fb6dfde0e Mon Sep 17 00:00:00 2001 From: Webslice <webslice@bixels.nl> Date: Mon, 25 May 2020 09:50:51 +0200 Subject: [PATCH 293/571] Add option to enable chrooted PHP-FPM by default per server --- install/tpl/server.ini.master | 1 + .../web/admin/form/server_config.tform.php | 6 ++++++ .../web/admin/lib/lang/ar_server_config.lng | 1 + .../web/admin/lib/lang/bg_server_config.lng | 1 + .../web/admin/lib/lang/br_server_config.lng | 1 + .../web/admin/lib/lang/ca_server_config.lng | 1 + .../web/admin/lib/lang/cz_server_config.lng | 1 + .../web/admin/lib/lang/de_server_config.lng | 1 + .../web/admin/lib/lang/dk_server_config.lng | 1 + .../web/admin/lib/lang/el_server_config.lng | 1 + .../web/admin/lib/lang/en_server_config.lng | 1 + .../web/admin/lib/lang/es_server_config.lng | 1 + .../web/admin/lib/lang/fi_server_config.lng | 1 + .../web/admin/lib/lang/fr_server_config.lng | 1 + .../web/admin/lib/lang/hr_server_config.lng | 1 + .../web/admin/lib/lang/hu_server_config.lng | 1 + .../web/admin/lib/lang/id_server_config.lng | 1 + .../web/admin/lib/lang/it_server_config.lng | 1 + .../web/admin/lib/lang/ja_server_config.lng | 1 + .../web/admin/lib/lang/nl_server_config.lng | 1 + .../web/admin/lib/lang/pl_server_config.lng | 1 + .../web/admin/lib/lang/pt_server_config.lng | 1 + .../web/admin/lib/lang/ro_server_config.lng | 1 + .../web/admin/lib/lang/ru_server_config.lng | 1 + .../web/admin/lib/lang/se_server_config.lng | 1 + .../web/admin/lib/lang/sk_server_config.lng | 1 + .../web/admin/lib/lang/tr_server_config.lng | 1 + .../admin/templates/server_config_web_edit.htm | 6 ++++++ interface/web/sites/web_vhost_domain_edit.php | 18 ++++++++++++------ 29 files changed, 50 insertions(+), 6 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 45a5644392..5edc09807c 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -121,6 +121,7 @@ overquota_db_notify_client=y overquota_notify_onok=n logging=yes php_fpm_reload_mode=reload +php_fpm_default_chroot=n [dns] bind_user=root diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 945e422da2..b95ab024a3 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1274,6 +1274,12 @@ $form["tabs"]['web'] = array( 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), 'searchable' => 2 ), + 'php_fpm_default_chroot' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'php_fpm_incron_reload' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 520fdb1028..5865981382 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 1ca873fd2d..cda45345cb 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 79a956cfad..7c2c5f3db1 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -215,6 +215,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Enviar alerta da cota do banco de dados $wb['overquota_db_notify_client_txt'] = 'Enviar alerta da cota do banco de dados para o cliente'; $wb['monitor_system_updates_txt'] = 'Verificar por atualizações do sistema'; $wb['php_handler_txt'] = 'Manipulador padrão do php'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Instale o arquivo de disparo do incron para recarregar o php-fpm.'; $wb['disabled_txt'] = 'Desabilitado'; $wb['dkim_strength_txt'] = 'Dificuldade do DKIM'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index b1ac3545e7..ee03ca41ca 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -211,6 +211,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index a4219cafa3..649938c0fb 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -260,6 +260,7 @@ $wb['backup_delete_txt'] = 'Odstranit zálohy pokud byla smazána doména/webov $wb['overquota_db_notify_admin_txt'] = 'Poslat varovánà o pÅ™ekroÄenà nebo vyÄerpánà DB kvót adminovi'; $wb['overquota_db_notify_client_txt'] = 'Poslat varovánà o pÅ™ekroÄenà nebo vyÄerpánà DB kvót klientovi'; $wb['php_handler_txt'] = 'Výchozà PHP obslužná rutina'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Vypnuto'; $wb['php_ini_check_minutes_txt'] = 'ProvádÄ›t kontrolu zmÄ›ny obsahu souboru php.ini každých X minut'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index aa7818f9ad..de1a84f30e 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -270,6 +270,7 @@ $wb['php_ini_check_minutes_txt'] = 'Prüfe php.ini alle X Minuten auf Änderunge $wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.'; $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; $wb['php_handler_txt'] = 'Standard-PHP-Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 0020d5347a..38f5a90281 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -263,6 +263,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 29ad1bf454..50665670b3 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 9093ac6baa..70801dca2f 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -215,6 +215,7 @@ $wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin'; $wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client'; $wb['monitor_system_updates_txt'] = 'Check for Linux updates'; $wb['php_handler_txt'] = "Default PHP Handler"; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 2b1ca0a221..ca61f29883 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -209,6 +209,7 @@ $wb['php_fpm_socket_dir_txt'] = 'Directorio para el socket de PHP-FPM'; $wb['php_fpm_start_port_error_empty'] = 'El puerto de inicio de PHP-FPM está vacÃo.'; $wb['php_fpm_start_port_txt'] = 'Puerto de inicio de PHP-FPM'; $wb['php_handler_txt'] = 'Controlador PHP por defecto'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['php_ini_check_minutes_error_empty'] = 'Por favor especifique un valor para definir con qué frecuencia se deberÃan buscar cambios en el archivo php.ini.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no comprobar'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6724ea0e85..060f956776 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index a505ceef37..3efb6b3d9c 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -262,6 +262,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index a390c29e6c..500b1e3a8c 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -264,6 +264,7 @@ $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 3da2d0ad4e..0ba1d523e1 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index c79b296072..15693cabc4 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 89491ae497..de074d94c1 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -262,6 +262,7 @@ $wb['backup_delete_txt'] = 'Delete backups on domain/website delete'; $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 6569591233..6690aadd20 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 1e398f9bdc..7d3260a89c 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 87ec7fc285..02d22662ff 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index e1df35f548..0ec4c89827 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 6d7dc3d8ca..f8da71cf01 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 027e41c13e..2a721bfac1 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Выполните команду монти $wb['overquota_db_notify_admin_txt'] = 'ПриÑылать Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ²Ð¾Ñ‚Ñ‹ DB админиÑтратору'; $wb['overquota_db_notify_client_txt'] = 'ПриÑылать Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ²Ð¾Ñ‚Ñ‹ DB клиенту'; $wb['php_handler_txt'] = 'Обработчик PHP по умолчанию'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Отключено'; $wb['dkim_strength_txt'] = 'СтойкоÑÑ‚ÑŒ DKIM'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index be8742f80c..6e27cbb4a6 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 659a83e7d4..a244690cb2 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -264,6 +264,7 @@ $wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounte $wb['overquota_db_notify_admin_txt'] = 'Send DB quota warnings to admin'; $wb['overquota_db_notify_client_txt'] = 'Send DB quota warnings to client'; $wb['php_handler_txt'] = 'Default PHP Handler'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; $wb['disabled_txt'] = 'Disabled'; $wb['dkim_strength_txt'] = 'DKIM strength'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 76812dd90d..ddc679d78e 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -215,6 +215,7 @@ $wb['overquota_db_notify_admin_txt'] = 'Veritabanı Kotası Bildirimleri Yöneti $wb['overquota_db_notify_client_txt'] = 'Veritabanı Kotası Bildirimleri Müşteriye Gönderilsin'; $wb['monitor_system_updates_txt'] = 'Linux Güncellemeleri Denetlensin'; $wb['php_handler_txt'] = 'Varsayılan PHP Ä°ÅŸleyici'; +$wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['disabled_txt'] = 'Devre Dışı'; $wb['dkim_strength_txt'] = 'DKIM zorluÄŸu'; $wb['monitor_system_updates_txt'] = 'Linux Güncelleme Denetimi'; diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 1031eea183..f5f38affe7 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -316,6 +316,12 @@ {tmpl_var name='php_handler'} </select></div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_default_chroot_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='php_fpm_default_chroot'} + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_incron_reload_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 7f0cd697e9..81415f194a 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1430,6 +1430,12 @@ class page_action extends tform_actions { $log_retention = 10; } + // Get default value for chrooted PHP-FPM + $php_fpm_chroot = 'n'; + if (!empty($web_config['php_fpm_default_chroot'])) { + $php_fpm_chroot = $web_config['php_fpm_default_chroot']; + } + if($this->_vhostdomain_type == 'domain') { $document_root = str_replace("[website_id]", $this->id, $web_config["website_path"]); $document_root = str_replace("[website_idhash_1]", $this->id_hash($page_form->id, 1), $document_root); @@ -1462,8 +1468,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 = ?, 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); + $sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ?, added_date = CURDATE(), added_by = ?, log_retention = ?, php_fpm_chroot = ? WHERE domain_id = ?"; + $app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $added_by, $log_retention, $php_fpm_chroot, $this->id); } else { // Set the values for document_root, system_user and system_group $system_user = $this->parent_domain_record['system_user']; @@ -1475,12 +1481,12 @@ class page_action extends tform_actions { $php_open_basedir = str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir); $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 = ?, 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); + + $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 = ?, php_fpm_chroot = ? 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, $php_fpm_chroot, $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); - + // Add a datalog insert without letsencrypt and then an update with letsencrypt enabled (see also onBeforeInsert) if($this->_letsencrypt_on_insert == true) { $new_data_record = $app->tform->getDataRecord($this->id); -- GitLab From 8183c38bdd1ac60f0537c581dcacde9c566a1615 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 25 May 2020 13:51:37 +0200 Subject: [PATCH 294/571] Disable TLSv1 and TLSv1.1 --- server/conf/nginx_vhost.conf.master | 2 +- server/conf/vhost.conf.master | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 4487e4e450..978139174f 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -18,7 +18,7 @@ server { listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; </tmpl_if> </tmpl_if> - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_protocols 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_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index f6ad4b830f..0612c13f7f 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -52,7 +52,7 @@ <tmpl_if name='ssl_enabled'> <tmpl_if name='enable_http2' op='==' value='y'> Protocols h2 http/1.1 - SSLProtocol All -SSLv2 -SSLv3 + SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite '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' </tmpl_if> </tmpl_if> @@ -79,7 +79,7 @@ <IfModule mod_ssl.c> <tmpl_if name='ssl_enabled'> SSLEngine on - SSLProtocol All -SSLv2 -SSLv3 + SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # 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 SSLHonorCipherOrder on # <IfModule mod_headers.c> -- GitLab From f589bbbf16a756dbfa69d9d339000eaaa412e949 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 25 May 2020 22:14:05 +0200 Subject: [PATCH 295/571] Fixes #4725 --- interface/lib/classes/custom_datasource.inc.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index c50d585027..57078388f0 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -161,9 +161,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); -- GitLab From ba4577bac30ba879be2f3f6e8feeaa21da40f245 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Tue, 26 May 2020 17:19:57 +0200 Subject: [PATCH 296/571] Revert "Fixes #4725" This reverts commit f589bbbf16a756dbfa69d9d339000eaaa412e949 --- interface/lib/classes/custom_datasource.inc.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index 57078388f0..c50d585027 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -161,10 +161,9 @@ 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 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); + //* 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']); } 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); -- GitLab From 4d622544edd4572532b2ac42a311f8ede01b722c Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Tue, 26 May 2020 17:22:23 +0200 Subject: [PATCH 297/571] Server select fix (fixes #4725) --- interface/lib/classes/custom_datasource.inc.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index c50d585027..57078388f0 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -161,9 +161,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); -- GitLab From 9e1fe1b51c017b8dc97dd15187896c31429bded8 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 26 May 2020 17:51:21 +0200 Subject: [PATCH 298/571] Update custom_datasource.inc.php --- interface/lib/classes/custom_datasource.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php index 57078388f0..3158fdde1a 100644 --- a/interface/lib/classes/custom_datasource.inc.php +++ b/interface/lib/classes/custom_datasource.inc.php @@ -162,9 +162,9 @@ class custom_datasource { $client = $app->db->queryOneRecord($sql, $client_group_id); if($client['server_id'] > 0) { ///* 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); + $clientservers = explode(',',$client['server_id']); + $sql = "SELECT server_id,server_name FROM server WHERE server_id IN ? ORDER BY server_name"; + $records = $app->db->queryAllRecords($sql,$clientservers); } 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); -- GitLab From 15ae954a0cf8978ad9a3a3e9da6db7f45722ddcc Mon Sep 17 00:00:00 2001 From: Ninos <me@ninosego.de> Date: Tue, 26 May 2020 18:24:00 +0200 Subject: [PATCH 299/571] Added: SSH authentication option (password, key, both) --- install/tpl/system.ini.master | 1 + interface/web/admin/form/system_config.tform.php | 6 ++++++ interface/web/admin/lib/lang/de_system_config.lng | 4 ++++ interface/web/admin/lib/lang/en_system_config.lng | 4 ++++ interface/web/admin/templates/system_config_misc_edit.htm | 6 ++++++ interface/web/sites/shell_user_edit.php | 3 +++ interface/web/sites/templates/shell_user_edit.htm | 4 ++++ 7 files changed, 28 insertions(+) diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 4df1a877dc..873b0e7372 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -69,3 +69,4 @@ session_timeout=0 session_allow_endless=0 min_password_length=8 min_password_strength=3 +ssh_authentication= diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 1b84e59560..58649d3f1b 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -747,6 +747,12 @@ $form["tabs"]['misc'] = array ( 'formtype' => 'SELECT', 'default' => '', 'value' => array('' => 'None', '1' => 'strength_1', '2' => 'strength_2', '3' => 'strength_3', '4' => 'strength_4', '5' => 'strength_5') + ), + 'ssh_authentication' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('' => 'ssh_authentication_password_key', 'password' => 'ssh_authentication_password', 'key' => 'ssh_authentication_key') ) //################################# // END Datatable fields diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index f981cce832..693fd2110e 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -75,6 +75,10 @@ $wb['session_allow_endless_txt'] = '"Eingeloggt bleiben" aktivieren'; $wb['No'] = 'Nein'; $wb['min_password_length_txt'] = 'Minimale Passwortlänge'; $wb['min_password_strength_txt'] = 'Minimale Passwortstärke'; +$wb['ssh_authentication_txt'] = 'Erlaubte SSH Authentifizierung'; +$wb['ssh_authentication_password_key'] = 'Passwort & Schlüssel'; +$wb['ssh_authentication_password'] = 'Passwort'; +$wb['ssh_authentication_key'] = 'Schlüssel'; $wb['company_name_txt'] = 'Firmenname fuer den Seitentitel'; $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 840b3f434b..e0b25eb4af 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -77,6 +77,10 @@ $wb['session_allow_endless_txt'] = 'Enable "stay logged in"'; $wb['No'] = 'No'; $wb['min_password_length_txt'] = 'Minimum password length'; $wb['min_password_strength_txt'] = 'Minimum password strength'; +$wb['ssh_authentication_txt'] = 'Allowed SSH authentication'; +$wb['ssh_authentication_password_key'] = 'Password & Key'; +$wb['ssh_authentication_password'] = 'Password'; +$wb['ssh_authentication_key'] = 'Key'; $wb["default_mailserver_txt"] = 'Default Mailserver'; $wb["default_webserver_txt"] = 'Default Webserver'; $wb["default_dnsserver_txt"] = 'Default DNS Server'; diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 00debd66dc..b8f36b2efd 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -106,6 +106,12 @@ <div class="col-sm-9"><select name="min_password_strength" id="min_password_strength" class="form-control"> {tmpl_var name='min_password_strength'} </select></div> + </div> + <div class="form-group"> + <label for="ssh_authentication" class="col-sm-3 control-label">{tmpl_var name='ssh_authentication_txt'}</label> + <div class="col-sm-9"><select name="ssh_authentication" id="ssh_authentication" class="form-control"> + {tmpl_var name='ssh_authentication'} + </select></div> </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='maintenance_mode_txt'}</label> diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index 7f74d893fc..d1b7017cc7 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -75,6 +75,7 @@ class page_action extends tform_actions { $app->uses('getconf,tools_sites'); $global_config = $app->getconf->get_global_config('sites'); + $system_config = $app->getconf->get_global_config(); $shelluser_prefix = $app->tools_sites->replacePrefix($global_config['shelluser_prefix'], $this->dataRecord); if ($this->dataRecord['username'] != ""){ @@ -96,6 +97,8 @@ class page_action extends tform_actions { $app->tpl->setVar("edit_disabled", 0); } + $app->tpl->setVar('ssh_authentication', $system_config['misc']['ssh_authentication']); + parent::onShowEnd(); } diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm index 9ea5f183e5..e5b305b0d4 100644 --- a/interface/web/sites/templates/shell_user_edit.htm +++ b/interface/web/sites/templates/shell_user_edit.htm @@ -28,6 +28,7 @@ </div> </div> </div> + <tmpl_if name="ssh_authentication" op="!=" value="key"> <div class="form-group"> <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> @@ -55,6 +56,7 @@ <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> </div> </div> + </tmpl_if> <div class="form-group"> <label for="chroot" class="col-sm-3 control-label">{tmpl_var name='chroot_txt'}</label> <div class="col-sm-9"><select name="chroot" id="chroot" class="form-control"> @@ -65,10 +67,12 @@ <label for="quota_size" class="col-sm-3 control-label">{tmpl_var name='quota_size_txt'}</label> <div class="col-sm-9"><div class="input-group"><input type="text" name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" class="form-control" aria-describedby="quota_size-desc" /><span class="input-group-addon" id="quota_size-desc">MB</span></div></div> </div> + <tmpl_if name="ssh_authentication" op="!=" value="password"> <div class="form-group"> <label for="ssh_rsa" class="col-sm-3 control-label">{tmpl_var name='ssh_rsa_txt'}</label> <div class="col-sm-9"><textarea class="form-control" name="ssh_rsa" id="ssh_rsa" rows="10" cols="30">{tmpl_var name='ssh_rsa'}</textarea></div> </div> + </tmpl_if> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> -- GitLab From 734277e2f1c5abacaac3035584d463459740bcfe Mon Sep 17 00:00:00 2001 From: Ninos <me@ninosego.de> Date: Tue, 26 May 2020 18:25:48 +0200 Subject: [PATCH 300/571] Added: Field validation (do not allow key/password-field, if only password/key is allowed) --- interface/web/sites/shell_user_edit.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index d1b7017cc7..055676ad95 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -126,6 +126,17 @@ class page_action extends tform_actions { if(isset($this->dataRecord['ssh_rsa'])) $this->dataRecord['ssh_rsa'] = trim($this->dataRecord['ssh_rsa']); + $system_config = $app->getconf->get_global_config(); + + if($system_config['misc']['ssh_authentication'] == 'password') { + $this->dataRecord['ssh_rsa'] = null; + } + + if($system_config['misc']['ssh_authentication'] == 'key') { + $this->dataRecord['password'] = null; + $this->dataRecord['repeat_password'] = null; + } + parent::onSubmit(); } -- GitLab From b6c42d0e630719352ee87f79333f9e92f8a0577b Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 00:47:36 +0200 Subject: [PATCH 301/571] Removed double titles or descriptions --- interface/web/client/templates/client_edit_address.htm | 6 ------ interface/web/client/templates/client_edit_limits.htm | 7 ------- interface/web/client/templates/client_message.htm | 6 +----- .../web/client/templates/client_template_edit_limits.htm | 8 -------- .../client/templates/client_template_edit_template.htm | 9 --------- interface/web/client/templates/message_template.htm | 6 ------ interface/web/client/templates/reseller_edit_address.htm | 7 ------- interface/web/client/templates/reseller_edit_limits.htm | 8 -------- 8 files changed, 1 insertion(+), 56 deletions(-) diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index 689849287c..23318b218b 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -1,9 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - <legend>{tmpl_var name='Address'}</legend> <div class="form-group"> <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label> diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index c8cf74e328..0508ab5090 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -1,10 +1,3 @@ -<tmpl_if name="list_head_txt"> -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -</tmpl_if> -<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if> - <div class="panel panel_client"> <div class="pnl_formsarea"> diff --git a/interface/web/client/templates/client_message.htm b/interface/web/client/templates/client_message.htm index 7e1b1da701..b546181fa7 100644 --- a/interface/web/client/templates/client_message.htm +++ b/interface/web/client/templates/client_message.htm @@ -1,10 +1,6 @@ <div class='page-header'> <h1><tmpl_var name="page_head_txt"></h1> </div> -<p><tmpl_var name="form_desc_txt"></p> - - - <legend>{tmpl_var name='form_legend_txt'}</legend> <tmpl_if name="okmsg"> <div id="OKMsg"><p><tmpl_var name="okmsg"></p></div> </tmpl_if> @@ -32,4 +28,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_send_txt'}" data-submit-form="pageForm" data-form-action="client/client_message.php">{tmpl_var name='btn_send_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm index df5501602b..a3e4b63e9a 100644 --- a/interface/web/client/templates/client_template_edit_limits.htm +++ b/interface/web/client/templates/client_template_edit_limits.htm @@ -1,11 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>{tmpl_var name="Limits"}</legend> - <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingWeb"> diff --git a/interface/web/client/templates/client_template_edit_template.htm b/interface/web/client/templates/client_template_edit_template.htm index e06d07792d..181dedd20f 100644 --- a/interface/web/client/templates/client_template_edit_template.htm +++ b/interface/web/client/templates/client_template_edit_template.htm @@ -1,12 +1,3 @@ -<tmpl_if name="list_head_txt"> -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -</tmpl_if> -<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if> - - - <legend>Template</legend> <div class="form-group"> <label for="template_type" class="col-sm-3 control-label">{tmpl_var name='template_type_txt'}</label> <div class="col-sm-9"><select name="template_type" id="template_type" class="form-control"> diff --git a/interface/web/client/templates/message_template.htm b/interface/web/client/templates/message_template.htm index 7fd63f3448..4078d36ac8 100644 --- a/interface/web/client/templates/message_template.htm +++ b/interface/web/client/templates/message_template.htm @@ -1,12 +1,6 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="panel panel_invoice_message_template"> <div class="pnl_formsarea"> - <legend>Settings</legend> <div class="form-group"> <label for="template_type" class="col-sm-3 control-label">{tmpl_var name='template_type_txt'}</label> <div class="col-sm-9"><select name="template_type" id="template_type" class="form-control"> diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm index 5cb829a008..eb2760dc3d 100644 --- a/interface/web/client/templates/reseller_edit_address.htm +++ b/interface/web/client/templates/reseller_edit_address.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>{tmpl_var name='Address'}</legend> <div class="form-group"> <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label> <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div> diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm index 7a4dc09041..c0a25939df 100644 --- a/interface/web/client/templates/reseller_edit_limits.htm +++ b/interface/web/client/templates/reseller_edit_limits.htm @@ -1,14 +1,6 @@ -<tmpl_if name="list_head_txt"> -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -</tmpl_if> -<tmpl_if name="list_desc_txt"><p><tmpl_var name="list_desc_txt"></p></tmpl_if> - <div class="panel panel_client"> <div class="pnl_formsarea"> - <legend>{tmpl_var name="Limits"}</legend> <tmpl_if name="is_admin"> <div class="form-group"> <label for="template_master" class="col-sm-3 control-label">{tmpl_var name='template_master_txt'}</label> -- GitLab From ad0ffdf677009519354b5e053c87313d2b1053ba Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 00:53:59 +0200 Subject: [PATCH 302/571] Improved page title --- interface/web/client/lib/lang/ar_client_message.lng | 2 +- interface/web/client/lib/lang/bg_client_message.lng | 2 +- interface/web/client/lib/lang/el_client_message.lng | 2 +- interface/web/client/lib/lang/en_client_message.lng | 2 +- interface/web/client/lib/lang/fi_client_message.lng | 2 +- interface/web/client/lib/lang/hu_client_message.lng | 2 +- interface/web/client/lib/lang/id_client_message.lng | 2 +- interface/web/client/lib/lang/it_client_message.lng | 2 +- interface/web/client/lib/lang/ja_client_message.lng | 2 +- interface/web/client/lib/lang/nl_client_message.lng | 2 +- interface/web/client/lib/lang/pt_client_message.lng | 2 +- interface/web/client/lib/lang/ro_client_message.lng | 2 +- interface/web/client/lib/lang/sk_client_message.lng | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/interface/web/client/lib/lang/ar_client_message.lng b/interface/web/client/lib/lang/ar_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/ar_client_message.lng +++ b/interface/web/client/lib/lang/ar_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/bg_client_message.lng b/interface/web/client/lib/lang/bg_client_message.lng index 671d454304..557972113b 100644 --- a/interface/web/client/lib/lang/bg_client_message.lng +++ b/interface/web/client/lib/lang/bg_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Полето Ñ Ð¢ÐµÐ¼Ð° е празно.'; $wb['message_invalid_error'] = 'Полето Ñ Ñъобщение е празно.'; $wb['email_sent_to_txt'] = 'Изпрати до:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/el_client_message.lng b/interface/web/client/lib/lang/el_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/el_client_message.lng +++ b/interface/web/client/lib/lang/el_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng index c04bd6cda2..01d34392f7 100644 --- a/interface/web/client/lib/lang/en_client_message.lng +++ b/interface/web/client/lib/lang/en_client_message.lng @@ -1,5 +1,5 @@ <?php -$wb["page_head_txt"] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb["btn_send_txt"] = 'Send email'; $wb["btn_cancel_txt"] = 'Cancel'; $wb["sender_txt"] = 'Sender email address'; diff --git a/interface/web/client/lib/lang/fi_client_message.lng b/interface/web/client/lib/lang/fi_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/fi_client_message.lng +++ b/interface/web/client/lib/lang/fi_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/hu_client_message.lng b/interface/web/client/lib/lang/hu_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/hu_client_message.lng +++ b/interface/web/client/lib/lang/hu_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/id_client_message.lng b/interface/web/client/lib/lang/id_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/id_client_message.lng +++ b/interface/web/client/lib/lang/id_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/it_client_message.lng b/interface/web/client/lib/lang/it_client_message.lng index f5f93c2294..c21f9fb3be 100644 --- a/interface/web/client/lib/lang/it_client_message.lng +++ b/interface/web/client/lib/lang/it_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject vuoto.'; $wb['message_invalid_error'] = 'Message vuoto.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/ja_client_message.lng b/interface/web/client/lib/lang/ja_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/ja_client_message.lng +++ b/interface/web/client/lib/lang/ja_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/nl_client_message.lng b/interface/web/client/lib/lang/nl_client_message.lng index aaa93be1b8..39962efa65 100644 --- a/interface/web/client/lib/lang/nl_client_message.lng +++ b/interface/web/client/lib/lang/nl_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Onderwerp is leeg.'; $wb['message_invalid_error'] = 'Bericht is leeg.'; $wb['email_sent_to_txt'] = 'E-mail verstuurd aan:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Ontvanger'; $wb['all_clients_resellers_txt'] = 'Alle klanten en resellers'; $wb['all_clients_txt'] = 'Alle klanten'; diff --git a/interface/web/client/lib/lang/pt_client_message.lng b/interface/web/client/lib/lang/pt_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/pt_client_message.lng +++ b/interface/web/client/lib/lang/pt_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/ro_client_message.lng b/interface/web/client/lib/lang/ro_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/ro_client_message.lng +++ b/interface/web/client/lib/lang/ro_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; diff --git a/interface/web/client/lib/lang/sk_client_message.lng b/interface/web/client/lib/lang/sk_client_message.lng index 6b2a872f10..1b6b3bb7ae 100644 --- a/interface/web/client/lib/lang/sk_client_message.lng +++ b/interface/web/client/lib/lang/sk_client_message.lng @@ -10,7 +10,7 @@ $wb['sender_invalid_error'] = 'Sender email invalid.'; $wb['subject_invalid_error'] = 'Subject is empty.'; $wb['message_invalid_error'] = 'Message is empty.'; $wb['email_sent_to_txt'] = 'Email sent to:'; -$wb['page_head_txt'] = 'Send customer information'; +$wb["page_head_txt"] = 'Send email message to clients and resellers'; $wb['recipient_txt'] = 'Recipient'; $wb['all_clients_resellers_txt'] = 'All clients and resellers'; $wb['all_clients_txt'] = 'All clients'; -- GitLab From b7cb06c065e54121af407bf4789aa1200969936c Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 01:41:41 +0200 Subject: [PATCH 303/571] Removed double or empty titles / descriptions --- interface/web/sites/templates/cron_edit.htm | 9 +-------- interface/web/sites/templates/database_edit.htm | 7 ------- interface/web/sites/templates/database_user_edit.htm | 9 +-------- interface/web/sites/templates/ftp_user_advanced.htm | 7 ------- .../web/sites/templates/ftp_user_advanced_client.htm | 7 ------- interface/web/sites/templates/ftp_user_edit.htm | 9 +-------- interface/web/sites/templates/shell_user_advanced.htm | 7 +------ interface/web/sites/templates/shell_user_edit.htm | 9 +-------- .../web/sites/templates/web_childdomain_advanced.htm | 7 ------- interface/web/sites/templates/web_childdomain_edit.htm | 9 +-------- interface/web/sites/templates/web_folder_edit.htm | 7 ------- interface/web/sites/templates/web_folder_user_edit.htm | 7 ------- .../web/sites/templates/web_vhost_domain_advanced.htm | 5 ----- .../web/sites/templates/web_vhost_domain_backup.htm | 8 +------- interface/web/sites/templates/web_vhost_domain_edit.htm | 4 +++- interface/web/sites/templates/web_vhost_domain_list.htm | 2 +- .../web/sites/templates/web_vhost_domain_redirect.htm | 7 +------ interface/web/sites/templates/web_vhost_domain_ssl.htm | 7 +------ interface/web/sites/templates/web_vhost_domain_stats.htm | 5 ----- interface/web/sites/templates/webdav_user_edit.htm | 9 +-------- 20 files changed, 14 insertions(+), 127 deletions(-) diff --git a/interface/web/sites/templates/cron_edit.htm b/interface/web/sites/templates/cron_edit.htm index 579ba8af4f..2c0f22ddb9 100644 --- a/interface/web/sites/templates/cron_edit.htm +++ b/interface/web/sites/templates/cron_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Cron Job</legend> <div class="form-group"> <tmpl_if name="edit_disabled"> <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> @@ -80,4 +73,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/cron_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/cron_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm index 290ae30a96..a61e85e193 100644 --- a/interface/web/sites/templates/database_edit.htm +++ b/interface/web/sites/templates/database_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> diff --git a/interface/web/sites/templates/database_user_edit.htm b/interface/web/sites/templates/database_user_edit.htm index c9ae106cb0..8e9c9fd43d 100644 --- a/interface/web/sites/templates/database_user_edit.htm +++ b/interface/web/sites/templates/database_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <tmpl_if name="is_admin"> <div class="form-group"> <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> @@ -64,4 +57,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/database_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/database_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/ftp_user_advanced.htm b/interface/web/sites/templates/ftp_user_advanced.htm index 11069aee97..e77c0bcb26 100644 --- a/interface/web/sites/templates/ftp_user_advanced.htm +++ b/interface/web/sites/templates/ftp_user_advanced.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="uid" class="col-sm-3 control-label">{tmpl_var name='uid_txt'}</label> <div class="col-sm-9"><input type="text" name="uid" id="uid" value="{tmpl_var name='uid'}" class="form-control" /></div></div> diff --git a/interface/web/sites/templates/ftp_user_advanced_client.htm b/interface/web/sites/templates/ftp_user_advanced_client.htm index 02479c9e2f..c4cb1646ac 100644 --- a/interface/web/sites/templates/ftp_user_advanced_client.htm +++ b/interface/web/sites/templates/ftp_user_advanced_client.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="dir" class="col-sm-3 control-label">{tmpl_var name='dir_txt'}</label> <div class="col-sm-9"><input type="text" name="dir" id="dir" value="{tmpl_var name='dir'}" class="form-control" /></div></div> diff --git a/interface/web/sites/templates/ftp_user_edit.htm b/interface/web/sites/templates/ftp_user_edit.htm index 72ec55fbec..e9b4e7ff9a 100644 --- a/interface/web/sites/templates/ftp_user_edit.htm +++ b/interface/web/sites/templates/ftp_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> <div class="col-sm-9"><select name="parent_domain_id" id="parent_domain_id" class="form-control"> @@ -64,4 +57,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/ftp_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/ftp_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/shell_user_advanced.htm b/interface/web/sites/templates/shell_user_advanced.htm index bcbbdfa16d..640497a571 100644 --- a/interface/web/sites/templates/shell_user_advanced.htm +++ b/interface/web/sites/templates/shell_user_advanced.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="puser" class="col-sm-3 control-label">{tmpl_var name='puser_txt'}</label> <div class="col-sm-9"><input type="text" name="puser" id="puser" value="{tmpl_var name='puser'}" class="form-control" /></div> @@ -30,4 +25,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/shell_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/shell_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm index 9ea5f183e5..b9afe15d98 100644 --- a/interface/web/sites/templates/shell_user_edit.htm +++ b/interface/web/sites/templates/shell_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <tmpl_if name="edit_disabled"> <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> @@ -82,4 +75,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/shell_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/shell_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/web_childdomain_advanced.htm b/interface/web/sites/templates/web_childdomain_advanced.htm index 1eac311824..e2a1bc4975 100644 --- a/interface/web/sites/templates/web_childdomain_advanced.htm +++ b/interface/web/sites/templates/web_childdomain_advanced.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Options</legend> <div class="form-group proxy"> <label for="proxy_directives" class="col-sm-3 control-label">{tmpl_var name='proxy_directives_txt'}</label> <div class="col-sm-9"><textarea class="form-control" name="proxy_directives" id="proxy_directives" rows='10' cols='50'>{tmpl_var name='proxy_directives'}</textarea> <b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br> {tmpl_var name="proxy_directive_snippets_txt"} diff --git a/interface/web/sites/templates/web_childdomain_edit.htm b/interface/web/sites/templates/web_childdomain_edit.htm index 4836f4a65c..9e16d3ce94 100644 --- a/interface/web/sites/templates/web_childdomain_edit.htm +++ b/interface/web/sites/templates/web_childdomain_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <tmpl_if name="childdomain_type" value="subdomain"> <tmpl_if name="domain_option"> <div class="form-group"> @@ -175,4 +168,4 @@ } }); } -</script> \ No newline at end of file +</script> diff --git a/interface/web/sites/templates/web_folder_edit.htm b/interface/web/sites/templates/web_folder_edit.htm index dd24094434..e3fef0e477 100644 --- a/interface/web/sites/templates/web_folder_edit.htm +++ b/interface/web/sites/templates/web_folder_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Folder</legend> <div class="form-group"> <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> <div class="col-sm-9"><select name="parent_domain_id" id="parent_domain_id" class="form-control"> diff --git a/interface/web/sites/templates/web_folder_user_edit.htm b/interface/web/sites/templates/web_folder_user_edit.htm index 5a7ab466c1..a0c0db8120 100644 --- a/interface/web/sites/templates/web_folder_user_edit.htm +++ b/interface/web/sites/templates/web_folder_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Folder</legend> <div class="form-group"> <label for="web_folder_id" class="col-sm-3 control-label">{tmpl_var name='web_folder_id_txt'}</label> <div class="col-sm-9"><select name="web_folder_id" id="web_folder_id" class="form-control"> diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm index 11f95d9cbd..f1df422bad 100644 --- a/interface/web/sites/templates/web_vhost_domain_advanced.htm +++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> diff --git a/interface/web/sites/templates/web_vhost_domain_backup.htm b/interface/web/sites/templates/web_vhost_domain_backup.htm index c31a579fc2..8c8aa11bee 100644 --- a/interface/web/sites/templates/web_vhost_domain_backup.htm +++ b/interface/web/sites/templates/web_vhost_domain_backup.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -12,7 +7,6 @@ </div> </tmpl_if> - <legend>Backup</legend> <div class="form-group"> <label for="backup_interval" class="col-sm-3 control-label">{tmpl_var name='backup_interval_txt'}</label> <div class="col-sm-9"><select name="backup_interval" id="backup_interval" class="form-control"> @@ -38,4 +32,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/web_vhost_domain_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/web_vhost_domain_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 247ef175e2..6092778af8 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -92,7 +92,9 @@ <tmpl_if name="edit_disabled"> <div class="form-group"> <label for="document_root" class="col-sm-3 control-label" readonly >{tmpl_var name='document_root_txt'}</label> - <div class="col-sm-9">{tmpl_var name='document_root'}</div> + <div class="col-sm-9"> + <div class="checkbox">{tmpl_var name='document_root'}</div> + </div> </div> </tmpl_if> <div class="form-group"> diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index 4cdde852a3..a202aff2e2 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -1,4 +1,4 @@ -<div class='page-header'> +<div class="page-header"> <h1><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="domain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="subdomain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="aliasdomain_list_head_txt"}</tmpl_if></h1> </div> <p><tmpl_var name="list_desc_txt"></p> diff --git a/interface/web/sites/templates/web_vhost_domain_redirect.htm b/interface/web/sites/templates/web_vhost_domain_redirect.htm index e38c08671c..3326d5ec96 100644 --- a/interface/web/sites/templates/web_vhost_domain_redirect.htm +++ b/interface/web/sites/templates/web_vhost_domain_redirect.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -94,4 +89,4 @@ }); } -</script> \ No newline at end of file +</script> diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm index ad9629fe4c..8b3d986a02 100644 --- a/interface/web/sites/templates/web_vhost_domain_ssl.htm +++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -111,4 +106,4 @@ } </tmpl_if> //--> -</script> \ No newline at end of file +</script> diff --git a/interface/web/sites/templates/web_vhost_domain_stats.htm b/interface/web/sites/templates/web_vhost_domain_stats.htm index 66c9fa3c94..6ebf9a6613 100644 --- a/interface/web/sites/templates/web_vhost_domain_stats.htm +++ b/interface/web/sites/templates/web_vhost_domain_stats.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> diff --git a/interface/web/sites/templates/webdav_user_edit.htm b/interface/web/sites/templates/webdav_user_edit.htm index ee261ec29e..3ea8ed2776 100644 --- a/interface/web/sites/templates/webdav_user_edit.htm +++ b/interface/web/sites/templates/webdav_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <tmpl_if name="edit_disabled"> <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> @@ -76,4 +69,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/webdav_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/webdav_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> -- GitLab From 6281ea7328bcd501f5528e9e1604e12b5fc41bc3 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 01:42:29 +0200 Subject: [PATCH 304/571] Changed the class on accident, revert --- interface/web/sites/templates/web_vhost_domain_list.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/sites/templates/web_vhost_domain_list.htm b/interface/web/sites/templates/web_vhost_domain_list.htm index a202aff2e2..4cdde852a3 100644 --- a/interface/web/sites/templates/web_vhost_domain_list.htm +++ b/interface/web/sites/templates/web_vhost_domain_list.htm @@ -1,4 +1,4 @@ -<div class="page-header"> +<div class='page-header'> <h1><tmpl_if name='vhostdomain_type' op='==' value='domain'>{tmpl_var name="domain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='subdomain'>{tmpl_var name="subdomain_list_head_txt"}</tmpl_if><tmpl_if name='vhostdomain_type' op='==' value='aliasdomain'>{tmpl_var name="aliasdomain_list_head_txt"}</tmpl_if></h1> </div> <p><tmpl_var name="list_desc_txt"></p> -- GitLab From 666d1df8726a964bb74c7ab2d50992bd582fc149 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 27 May 2020 21:16:02 +0200 Subject: [PATCH 305/571] Fixed: #5622 Do not display user switcher to client_id 0 users. --- interface/web/admin/templates/users_list.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/templates/users_list.htm b/interface/web/admin/templates/users_list.htm index 8db81c6c8d..6486ed344d 100644 --- a/interface/web/admin/templates/users_list.htm +++ b/interface/web/admin/templates/users_list.htm @@ -41,7 +41,7 @@ <td><div class="icons16 group-{tmpl_var name="typ"}" title="{tmpl_var name="typ"}"><span>{tmpl_var name="typ"}</span></div> <div class="group-icon"><a href="#" data-load-content="admin/users_edit.php?id={tmpl_var name='id'}">{tmpl_var name="username"}</a></div></td> <td>{tmpl_var name="groups"}</td> <td class="text-right"> - <tmpl_if name="username" op="!=" value="admin"> + <tmpl_if name="client_id" op="!=" value="0"> <a class="btn btn-default formbutton-success formbutton-narrow" data-load-content="login/login_as.php?cid={tmpl_var name='client_id'}"><span class="icon icon-loginas"></span></a> <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('admin/users_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='csrf_id'}&_csrf_key={tmpl_var name='csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a> </tmpl_if> -- GitLab From e7fadf857fca081c40e2f18a8ca037995aa51537 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 21:26:55 +0200 Subject: [PATCH 306/571] Removed double / empty titles and descriptions --- interface/web/mail/templates/mail_alias_edit.htm | 5 ----- .../web/mail/templates/mail_aliasdomain_edit.htm | 9 +-------- interface/web/mail/templates/mail_blacklist_edit.htm | 9 +-------- .../web/mail/templates/mail_content_filter_edit.htm | 9 +-------- .../web/mail/templates/mail_domain_catchall_edit.htm | 8 ++------ interface/web/mail/templates/mail_domain_edit.htm | 9 +-------- interface/web/mail/templates/mail_forward_edit.htm | 5 ----- interface/web/mail/templates/mail_get_edit.htm | 9 +-------- .../web/mail/templates/mail_mailinglist_edit.htm | 7 ------- .../web/mail/templates/mail_relay_recipient_edit.htm | 9 +-------- interface/web/mail/templates/mail_transport_edit.htm | 9 +-------- .../mail/templates/mail_user_autoresponder_edit.htm | 9 +-------- interface/web/mail/templates/mail_user_backup.htm | 5 ----- .../mail/templates/mail_user_custom_rules_edit.htm | 9 +-------- .../web/mail/templates/mail_user_filter_edit.htm | 9 +-------- .../web/mail/templates/mail_user_mailbox_edit.htm | 7 ------- .../web/mail/templates/mail_user_mailfilter_edit.htm | 9 +-------- interface/web/mail/templates/mail_whitelist_edit.htm | 9 +-------- .../web/mail/templates/spamfilter_amavis_edit.htm | 7 +------ .../web/mail/templates/spamfilter_blacklist_edit.htm | 9 +-------- .../web/mail/templates/spamfilter_policy_edit.htm | 8 +------- .../web/mail/templates/spamfilter_rspamd_edit.htm | 7 +------ .../web/mail/templates/spamfilter_users_edit.htm | 9 +-------- .../web/mail/templates/spamfilter_whitelist_edit.htm | 11 ++--------- interface/web/mail/templates/xmpp_domain_edit.htm | 7 ------- .../web/mail/templates/xmpp_domain_edit_modules.htm | 6 ------ interface/web/mail/templates/xmpp_domain_edit_muc.htm | 7 ------- interface/web/mail/templates/xmpp_domain_edit_ssl.htm | 7 +------ interface/web/mail/templates/xmpp_user_edit.htm | 4 ---- 29 files changed, 22 insertions(+), 205 deletions(-) diff --git a/interface/web/mail/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm index 6a67887bf9..2fd149a348 100644 --- a/interface/web/mail/templates/mail_alias_edit.htm +++ b/interface/web/mail/templates/mail_alias_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/mail/templates/mail_aliasdomain_edit.htm b/interface/web/mail/templates/mail_aliasdomain_edit.htm index 9e19b5d07a..a18ff0e3db 100644 --- a/interface/web/mail/templates/mail_aliasdomain_edit.htm +++ b/interface/web/mail/templates/mail_aliasdomain_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="destination" class="col-sm-3 control-label">{tmpl_var name='source_txt'}</label> <div class="col-sm-9"><select name="source" id="source" class="form-control"> @@ -31,4 +24,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_aliasdomain_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_aliasdomain_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_blacklist_edit.htm b/interface/web/mail/templates/mail_blacklist_edit.htm index c68729cbce..24ad67e569 100644 --- a/interface/web/mail/templates/mail_blacklist_edit.htm +++ b/interface/web/mail/templates/mail_blacklist_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -34,4 +27,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_blacklist_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_blacklist_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_content_filter_edit.htm b/interface/web/mail/templates/mail_content_filter_edit.htm index 4aa59c8e06..8eb4266fef 100644 --- a/interface/web/mail/templates/mail_content_filter_edit.htm +++ b/interface/web/mail/templates/mail_content_filter_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -42,4 +35,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_content_filter_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_content_filter_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm index 5991f2aecc..0ccae15a8f 100644 --- a/interface/web/mail/templates/mail_domain_catchall_edit.htm +++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm @@ -1,8 +1,4 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> +< <div class="form-group"> <label for="email_domain" class="col-sm-3 control-label">{tmpl_var name='source_txt'}</label> <div class="col-sm-9"> <div class="input-group"> @@ -33,4 +29,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_domain_catchall_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_domain_catchall_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm index 71a6655e80..1e4a49c2a5 100644 --- a/interface/web/mail/templates/mail_domain_edit.htm +++ b/interface/web/mail/templates/mail_domain_edit.htm @@ -1,11 +1,4 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <tmpl_if name="is_admin"> + <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> <label for="server_id_disabled" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> diff --git a/interface/web/mail/templates/mail_forward_edit.htm b/interface/web/mail/templates/mail_forward_edit.htm index 7c1fca0299..a5de2a00b7 100644 --- a/interface/web/mail/templates/mail_forward_edit.htm +++ b/interface/web/mail/templates/mail_forward_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/mail/templates/mail_get_edit.htm b/interface/web/mail/templates/mail_get_edit.htm index f3d8a3b0f4..6b5b8c198e 100644 --- a/interface/web/mail/templates/mail_get_edit.htm +++ b/interface/web/mail/templates/mail_get_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="type" class="col-sm-3 control-label">{tmpl_var name='type_txt'}</label> <div class="col-sm-9"><select name="type" id="type" class="form-control"> @@ -51,4 +44,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_get_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_get_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_mailinglist_edit.htm b/interface/web/mail/templates/mail_mailinglist_edit.htm index 9d6f8bdde6..ac43cbb417 100644 --- a/interface/web/mail/templates/mail_mailinglist_edit.htm +++ b/interface/web/mail/templates/mail_mailinglist_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Mailing List</legend> <tmpl_if name="is_admin"> <div class="form-group"> <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> diff --git a/interface/web/mail/templates/mail_relay_recipient_edit.htm b/interface/web/mail/templates/mail_relay_recipient_edit.htm index 83e52aa661..7b476fe37a 100644 --- a/interface/web/mail/templates/mail_relay_recipient_edit.htm +++ b/interface/web/mail/templates/mail_relay_recipient_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>Relay recipient</legend> <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -28,4 +21,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_relay_recipient_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_relay_recipient_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_transport_edit.htm b/interface/web/mail/templates/mail_transport_edit.htm index e0332de1b6..694e57634d 100644 --- a/interface/web/mail/templates/mail_transport_edit.htm +++ b/interface/web/mail/templates/mail_transport_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -48,4 +41,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_transport_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_transport_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_user_autoresponder_edit.htm b/interface/web/mail/templates/mail_user_autoresponder_edit.htm index c5fc584c09..1c1cdc6759 100644 --- a/interface/web/mail/templates/mail_user_autoresponder_edit.htm +++ b/interface/web/mail/templates/mail_user_autoresponder_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="autoresponder_subject" class="col-sm-3 control-label">{tmpl_var name='autoresponder_subject_txt'}</label> <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div></div> @@ -30,4 +23,4 @@ <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_user_backup.htm b/interface/web/mail/templates/mail_user_backup.htm index f9abba3bba..0de61a3297 100644 --- a/interface/web/mail/templates/mail_user_backup.htm +++ b/interface/web/mail/templates/mail_user_backup.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> diff --git a/interface/web/mail/templates/mail_user_custom_rules_edit.htm b/interface/web/mail/templates/mail_user_custom_rules_edit.htm index d12378678c..263ea7916a 100644 --- a/interface/web/mail/templates/mail_user_custom_rules_edit.htm +++ b/interface/web/mail/templates/mail_user_custom_rules_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="custom_mailfilter" class="col-sm-3 control-label">{tmpl_var name='custom_mailfilter_txt'}</label> <div class="col-sm-9"><textarea class="form-control" name="custom_mailfilter" id="custom_mailfilter" rows='15' cols='30'>{tmpl_var name='custom_mailfilter'}</textarea></div> @@ -16,4 +9,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_user_filter_edit.htm b/interface/web/mail/templates/mail_user_filter_edit.htm index cb2d79a249..6a7983c64e 100644 --- a/interface/web/mail/templates/mail_user_filter_edit.htm +++ b/interface/web/mail/templates/mail_user_filter_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="rulename" class="col-sm-3 control-label">{tmpl_var name='rulename_txt'}</label> <div class="col-sm-9"><input type="text" id="rulename" name="rulename" value="{tmpl_var name='rulename'}" class="form-control"></div> @@ -32,4 +25,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_filter_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='mailuser_id'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm index bcab744de3..a90799cf11 100644 --- a/interface/web/mail/templates/mail_user_mailbox_edit.htm +++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-6"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='name_optional_txt'} diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm index 183a98b5e3..fc40398d5d 100644 --- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm +++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label> <div class="col-sm-9"> @@ -20,4 +13,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/mail_whitelist_edit.htm b/interface/web/mail/templates/mail_whitelist_edit.htm index 1f72e6935f..575a6ae2fb 100644 --- a/interface/web/mail/templates/mail_whitelist_edit.htm +++ b/interface/web/mail/templates/mail_whitelist_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -34,4 +27,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_whitelist_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_whitelist_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_amavis_edit.htm b/interface/web/mail/templates/spamfilter_amavis_edit.htm index 41bf6b5410..d770ed842a 100644 --- a/interface/web/mail/templates/spamfilter_amavis_edit.htm +++ b/interface/web/mail/templates/spamfilter_amavis_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <!-- Settings --> <div class="panel panel-default"> @@ -195,4 +190,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_blacklist_edit.htm b/interface/web/mail/templates/spamfilter_blacklist_edit.htm index 1db93dd7c2..3a7fd47869 100644 --- a/interface/web/mail/templates/spamfilter_blacklist_edit.htm +++ b/interface/web/mail/templates/spamfilter_blacklist_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <!-- <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> @@ -42,4 +35,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_blacklist_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_blacklist_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm index 506b4d5b89..11fd8e73d1 100644 --- a/interface/web/mail/templates/spamfilter_policy_edit.htm +++ b/interface/web/mail/templates/spamfilter_policy_edit.htm @@ -1,9 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - <div class="form-group"> <label for="policy_name" class="col-sm-3 control-label">{tmpl_var name='policy_name_txt'}</label> <div class="col-sm-9"><input type="text" name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" class="form-control" /></div></div> @@ -26,4 +20,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_rspamd_edit.htm b/interface/web/mail/templates/spamfilter_rspamd_edit.htm index 2f8ea0f451..5d1602514a 100644 --- a/interface/web/mail/templates/spamfilter_rspamd_edit.htm +++ b/interface/web/mail/templates/spamfilter_rspamd_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="rspamd_spam_greylisting_level" class="col-sm-3 control-label">{tmpl_var name='rspamd_spam_greylisting_level_txt'}</label> <div class="col-sm-9"><input type="text" name="rspamd_spam_greylisting_level" id="rspamd_spam_greylisting_level" value="{tmpl_var name='rspamd_spam_greylisting_level'}" class="form-control" /></div> @@ -27,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_policy_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_policy_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_users_edit.htm b/interface/web/mail/templates/spamfilter_users_edit.htm index 7c75c5ee34..80bdbd66ca 100644 --- a/interface/web/mail/templates/spamfilter_users_edit.htm +++ b/interface/web/mail/templates/spamfilter_users_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -42,4 +35,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_users_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_users_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/spamfilter_whitelist_edit.htm b/interface/web/mail/templates/spamfilter_whitelist_edit.htm index aefe5f9fec..fcc6e09a2e 100644 --- a/interface/web/mail/templates/spamfilter_whitelist_edit.htm +++ b/interface/web/mail/templates/spamfilter_whitelist_edit.htm @@ -1,11 +1,4 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <!-- + <!-- <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -42,4 +35,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/spamfilter_whitelist_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/spamfilter_whitelist_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mail/templates/xmpp_domain_edit.htm b/interface/web/mail/templates/xmpp_domain_edit.htm index 5c4e8d79a0..6953fbfb14 100644 --- a/interface/web/mail/templates/xmpp_domain_edit.htm +++ b/interface/web/mail/templates/xmpp_domain_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> diff --git a/interface/web/mail/templates/xmpp_domain_edit_modules.htm b/interface/web/mail/templates/xmpp_domain_edit_modules.htm index 8efcf50976..f705c495da 100644 --- a/interface/web/mail/templates/xmpp_domain_edit_modules.htm +++ b/interface/web/mail/templates/xmpp_domain_edit_modules.htm @@ -1,9 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - <tmpl_if name="limit_xmpp_anon" value="y"> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='use_anon_host_txt'}</label> diff --git a/interface/web/mail/templates/xmpp_domain_edit_muc.htm b/interface/web/mail/templates/xmpp_domain_edit_muc.htm index dd46514cae..5425822352 100644 --- a/interface/web/mail/templates/xmpp_domain_edit_muc.htm +++ b/interface/web/mail/templates/xmpp_domain_edit_muc.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='use_muc_host_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/mail/templates/xmpp_domain_edit_ssl.htm b/interface/web/mail/templates/xmpp_domain_edit_ssl.htm index 2bb7d059aa..0ef2e2c962 100644 --- a/interface/web/mail/templates/xmpp_domain_edit_ssl.htm +++ b/interface/web/mail/templates/xmpp_domain_edit_ssl.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -97,4 +92,4 @@ } </tmpl_if> //--> -</script> \ No newline at end of file +</script> diff --git a/interface/web/mail/templates/xmpp_user_edit.htm b/interface/web/mail/templates/xmpp_user_edit.htm index 467b83fb52..c70155d8f5 100644 --- a/interface/web/mail/templates/xmpp_user_edit.htm +++ b/interface/web/mail/templates/xmpp_user_edit.htm @@ -1,7 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> <div class="form-group"> <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='jid_txt'}</label> <div class="col-sm-9"> -- GitLab From 86e85a33b6a32de0c9b68c0db8ab73ca5d9d0885 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 21:43:34 +0200 Subject: [PATCH 307/571] Removed double / empty titles and descriptions --- interface/web/dns/templates/dns_a_edit.htm | 11 ++--------- interface/web/dns/templates/dns_aaaa_edit.htm | 9 +-------- interface/web/dns/templates/dns_alias_edit.htm | 9 +-------- interface/web/dns/templates/dns_caa_edit.htm | 3 --- interface/web/dns/templates/dns_cname_edit.htm | 9 +-------- interface/web/dns/templates/dns_dkim_edit.htm | 4 ---- interface/web/dns/templates/dns_dmarc_edit.htm | 7 ------- interface/web/dns/templates/dns_ds_edit.htm | 9 +-------- interface/web/dns/templates/dns_hinfo_edit.htm | 9 +-------- interface/web/dns/templates/dns_import.htm | 2 +- interface/web/dns/templates/dns_loc_edit.htm | 9 +-------- interface/web/dns/templates/dns_mx_edit.htm | 9 +-------- interface/web/dns/templates/dns_ns_edit.htm | 9 +-------- interface/web/dns/templates/dns_ptr_edit.htm | 9 +-------- interface/web/dns/templates/dns_records_edit.htm | 7 +------ interface/web/dns/templates/dns_rp_edit.htm | 9 +-------- interface/web/dns/templates/dns_slave_edit.htm | 7 ------- interface/web/dns/templates/dns_soa_edit.htm | 6 ------ interface/web/dns/templates/dns_spf_edit.htm | 7 ------- interface/web/dns/templates/dns_srv_edit.htm | 9 +-------- interface/web/dns/templates/dns_template_edit.htm | 7 ------- interface/web/dns/templates/dns_tlsa_edit.htm | 9 +-------- interface/web/dns/templates/dns_txt_edit.htm | 9 +-------- interface/web/dns/templates/dns_wizard.htm | 2 -- 24 files changed, 17 insertions(+), 163 deletions(-) diff --git a/interface/web/dns/templates/dns_a_edit.htm b/interface/web/dns/templates/dns_a_edit.htm index 92dfbcd3ae..907d84b0bc 100644 --- a/interface/web/dns/templates/dns_a_edit.htm +++ b/interface/web/dns/templates/dns_a_edit.htm @@ -1,11 +1,4 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - - <div class="form-group"> + <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div><p class="formHint">{tmpl_var name='name_hint_txt'}</p> </div> @@ -45,4 +38,4 @@ searchFieldWatermark: '', resultBoxPosition: '' }); -</script> \ No newline at end of file +</script> diff --git a/interface/web/dns/templates/dns_aaaa_edit.htm b/interface/web/dns/templates/dns_aaaa_edit.htm index fbbc757cec..13ee0ccaab 100644 --- a/interface/web/dns/templates/dns_aaaa_edit.htm +++ b/interface/web/dns/templates/dns_aaaa_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div><p class="formHint">{tmpl_var name='name_hint_txt'}</p> @@ -45,4 +38,4 @@ searchFieldWatermark: '', resultBoxPosition: '' }); -</script> \ No newline at end of file +</script> diff --git a/interface/web/dns/templates/dns_alias_edit.htm b/interface/web/dns/templates/dns_alias_edit.htm index 5ab2a3ccaa..ad6c74d863 100644 --- a/interface/web/dns/templates/dns_alias_edit.htm +++ b/interface/web/dns/templates/dns_alias_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_alias_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_caa_edit.htm b/interface/web/dns/templates/dns_caa_edit.htm index 3de64818b4..8d4372d9a9 100644 --- a/interface/web/dns/templates/dns_caa_edit.htm +++ b/interface/web/dns/templates/dns_caa_edit.htm @@ -1,6 +1,3 @@ -<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="ca_list" class="col-sm-2 control-label">{tmpl_var name='ca_list_txt'}</label> <div class="col-sm-4"><select name="ca_list" id="ca_list" class="form-control">{tmpl_var name='ca_list'}</select></div> diff --git a/interface/web/dns/templates/dns_cname_edit.htm b/interface/web/dns/templates/dns_cname_edit.htm index 778279cbd8..3b37e5133d 100644 --- a/interface/web/dns/templates/dns_cname_edit.htm +++ b/interface/web/dns/templates/dns_cname_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_cname_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_dkim_edit.htm b/interface/web/dns/templates/dns_dkim_edit.htm index 310dda1c9e..be3bea3dd5 100644 --- a/interface/web/dns/templates/dns_dkim_edit.htm +++ b/interface/web/dns/templates/dns_dkim_edit.htm @@ -1,7 +1,3 @@ -<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div> - -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="data" class="col-sm-3 control-label">{tmpl_var name='public_key_txt'}</label> <tmpl_if name="edit_disabled"> diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm index 4b7646a398..668b29f8df 100644 --- a/interface/web/dns/templates/dns_dmarc_edit.htm +++ b/interface/web/dns/templates/dns_dmarc_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="domain" class="col-sm-2 control-label">{tmpl_var name='domain_txt'}</label> <div class="col-sm-3"> diff --git a/interface/web/dns/templates/dns_ds_edit.htm b/interface/web/dns/templates/dns_ds_edit.htm index 56113f0ec0..c7012d9fd9 100644 --- a/interface/web/dns/templates/dns_ds_edit.htm +++ b/interface/web/dns/templates/dns_ds_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_ds_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_hinfo_edit.htm b/interface/web/dns/templates/dns_hinfo_edit.htm index 0be975f529..39a02dabbc 100644 --- a/interface/web/dns/templates/dns_hinfo_edit.htm +++ b/interface/web/dns/templates/dns_hinfo_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_hinfo_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_import.htm b/interface/web/dns/templates/dns_import.htm index 87d54316f3..dafb9016a0 100644 --- a/interface/web/dns/templates/dns_import.htm +++ b/interface/web/dns/templates/dns_import.htm @@ -62,4 +62,4 @@ jQuery('.positive').trigger('click'); } } -</script> \ No newline at end of file +</script> diff --git a/interface/web/dns/templates/dns_loc_edit.htm b/interface/web/dns/templates/dns_loc_edit.htm index 12cfb6357f..d8e261991c 100644 --- a/interface/web/dns/templates/dns_loc_edit.htm +++ b/interface/web/dns/templates/dns_loc_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_loc_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_mx_edit.htm b/interface/web/dns/templates/dns_mx_edit.htm index 290c218faf..3a84cbacb4 100644 --- a/interface/web/dns/templates/dns_mx_edit.htm +++ b/interface/web/dns/templates/dns_mx_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -32,4 +25,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_mx_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_ns_edit.htm b/interface/web/dns/templates/dns_ns_edit.htm index 3cafa17daf..6644af152c 100644 --- a/interface/web/dns/templates/dns_ns_edit.htm +++ b/interface/web/dns/templates/dns_ns_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_ns_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_ptr_edit.htm b/interface/web/dns/templates/dns_ptr_edit.htm index de59069259..725bbb17fa 100644 --- a/interface/web/dns/templates/dns_ptr_edit.htm +++ b/interface/web/dns/templates/dns_ptr_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_ptr_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_records_edit.htm b/interface/web/dns/templates/dns_records_edit.htm index a2a42c3d45..979cebe5fd 100644 --- a/interface/web/dns/templates/dns_records_edit.htm +++ b/interface/web/dns/templates/dns_records_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="panel panel_dns_soa"> {tmpl_var name='dns_records'} @@ -11,4 +6,4 @@ <input type="hidden" name="id" value="{tmpl_var name='id'}"> </div> -</div> \ No newline at end of file +</div> diff --git a/interface/web/dns/templates/dns_rp_edit.htm b/interface/web/dns/templates/dns_rp_edit.htm index 3dd04adf1a..9a4b9f4e55 100644 --- a/interface/web/dns/templates/dns_rp_edit.htm +++ b/interface/web/dns/templates/dns_rp_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_rp_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_slave_edit.htm b/interface/web/dns/templates/dns_slave_edit.htm index 832fec1abc..1f4f7234d6 100644 --- a/interface/web/dns/templates/dns_slave_edit.htm +++ b/interface/web/dns/templates/dns_slave_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend><tmpl_var name="secondary_zone_txt"></legend> <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index 7a069cb3bf..ce8154c857 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -10,7 +5,6 @@ </div> </tmpl_if> - <legend>DNS Zone</legend> <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> diff --git a/interface/web/dns/templates/dns_spf_edit.htm b/interface/web/dns/templates/dns_spf_edit.htm index fc7400d620..2817d7645b 100644 --- a/interface/web/dns/templates/dns_spf_edit.htm +++ b/interface/web/dns/templates/dns_spf_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div> diff --git a/interface/web/dns/templates/dns_srv_edit.htm b/interface/web/dns/templates/dns_srv_edit.htm index fd9f00d7b4..f142f482d4 100644 --- a/interface/web/dns/templates/dns_srv_edit.htm +++ b/interface/web/dns/templates/dns_srv_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -38,4 +31,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_srv_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_template_edit.htm b/interface/web/dns/templates/dns_template_edit.htm index 9de8c93447..db0ee9d925 100644 --- a/interface/web/dns/templates/dns_template_edit.htm +++ b/interface/web/dns/templates/dns_template_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> diff --git a/interface/web/dns/templates/dns_tlsa_edit.htm b/interface/web/dns/templates/dns_tlsa_edit.htm index c2cde8be61..297077eecb 100644 --- a/interface/web/dns/templates/dns_tlsa_edit.htm +++ b/interface/web/dns/templates/dns_tlsa_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_tlsa_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_txt_edit.htm b/interface/web/dns/templates/dns_txt_edit.htm index f03f6d36c8..de69bc553e 100644 --- a/interface/web/dns/templates/dns_txt_edit.htm +++ b/interface/web/dns/templates/dns_txt_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_txt_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm index 907dedca88..2f4f24b4e0 100644 --- a/interface/web/dns/templates/dns_wizard.htm +++ b/interface/web/dns/templates/dns_wizard.htm @@ -1,14 +1,12 @@ <div class='page-header'> <h1><tmpl_var name="list_head_txt"></h1> </div> -<p><tmpl_var name="list_desc_txt"></p> <tmpl_if name="error"> <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div> </tmpl_if> - <legend><tmpl_var name="dns_zone_txt"></legend> <div class="form-group"> <label for="template_id" class="col-sm-3 control-label">{tmpl_var name='template_id_txt'}</label> <div class="col-sm-9"><select name="template_id" id="template_id" class="form-control" onChange="ISPConfig.submitForm('pageForm','dns/dns_wizard.php')"> -- GitLab From d4751a42b4a23372d3270505b5ae1bf98f0dd445 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 21:57:47 +0200 Subject: [PATCH 308/571] Removed double / empty titles and descriptions --- interface/web/tools/form/interface_settings.tform.php | 2 +- interface/web/tools/form/user_settings.tform.php | 2 +- interface/web/tools/templates/dns_import_tupa.htm | 1 - interface/web/tools/templates/interface_settings.htm | 9 +-------- interface/web/tools/templates/resync.htm | 5 ----- interface/web/tools/templates/user_settings.htm | 7 +------ 6 files changed, 4 insertions(+), 22 deletions(-) diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php index 9ab49eb0f1..05eaba9416 100644 --- a/interface/web/tools/form/interface_settings.tform.php +++ b/interface/web/tools/form/interface_settings.tform.php @@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form['title'] = 'interface_head_txt'; -$form['description'] = 'interface_desc_txt'; +//*$form['description'] = 'interface_desc_txt'; $form['name'] = 'interface'; $form['action'] = 'interface_settings.php'; $form['db_table'] = 'sys_user'; diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php index f3ad5a2d3d..7daa1a7b84 100644 --- a/interface/web/tools/form/user_settings.tform.php +++ b/interface/web/tools/form/user_settings.tform.php @@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form['title'] = 'User Settings'; -$form['description'] = 'Form to edit the user password and language.'; +//*$form['description'] = 'Form to edit the user password and language.'; $form['name'] = 'usersettings'; $form['action'] = 'user_settings.php'; $form['db_table'] = 'sys_user'; diff --git a/interface/web/tools/templates/dns_import_tupa.htm b/interface/web/tools/templates/dns_import_tupa.htm index cd47f431e0..4593fbb800 100644 --- a/interface/web/tools/templates/dns_import_tupa.htm +++ b/interface/web/tools/templates/dns_import_tupa.htm @@ -2,7 +2,6 @@ <p><tmpl_var name="list_desc_txt"></p> - <legend>PowerDNS Tupa import</legend> <div class="form-group"> <label class="col-sm-3 control-label" for="dbhost">Tupa database hostname</label> <div class="col-sm-9"><input class="form-control" type="text" id="dbhost" value="{tmpl_var name='dbhost'}" name="dbhost" /></div> diff --git a/interface/web/tools/templates/interface_settings.htm b/interface/web/tools/templates/interface_settings.htm index ccd5000445..6767287206 100644 --- a/interface/web/tools/templates/interface_settings.htm +++ b/interface/web/tools/templates/interface_settings.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="page_head_txt"></h1> -</div> -<p><tmpl_var name="page_desc_txt"></p> - - - <!-- TODO: If user theme change is activated --> <div class="form-group"> <label for="app_theme" class="col-sm-3 control-label">{tmpl_var name='app_theme_txt'}</label> @@ -26,4 +19,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/interface_settings.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/tools/templates/resync.htm b/interface/web/tools/templates/resync.htm index 3e66290fb0..ef3ac886c8 100644 --- a/interface/web/tools/templates/resync.htm +++ b/interface/web/tools/templates/resync.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="resync_all" class="col-sm-2 control-label">{tmpl_var name='resync_all_txt'}</label> <div class="col-sm-1"><input type="checkbox" id="resync_all" value="1" name="resync_all"></div> diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm index 26f9e0c861..4fa1c9de34 100644 --- a/interface/web/tools/templates/user_settings.htm +++ b/interface/web/tools/templates/user_settings.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <div class="form-group"> <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> <div class="col-sm-9"> @@ -43,4 +38,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/user_settings.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> -- GitLab From 499745fdfa6bf31802a9de05647a538a26408815 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 22:21:59 +0200 Subject: [PATCH 309/571] Removed double / empty titles and descriptions --- interface/web/help/templates/faq_edit.htm | 4 +--- interface/web/help/templates/faq_sections_edit.htm | 3 --- interface/web/help/templates/support_message_edit.htm | 9 +-------- interface/web/help/templates/support_message_view.htm | 9 +-------- 4 files changed, 3 insertions(+), 22 deletions(-) diff --git a/interface/web/help/templates/faq_edit.htm b/interface/web/help/templates/faq_edit.htm index 3bf9d8a903..d0f9760511 100644 --- a/interface/web/help/templates/faq_edit.htm +++ b/interface/web/help/templates/faq_edit.htm @@ -1,5 +1,3 @@ - - <legend>{tmpl_var name='faq_faq_txt'}</legend> <div class="form-group"> <label for="hf_section" class="col-sm-3 control-label">{tmpl_var name='faq_section_txt'}</label> <div class="col-sm-9"><select name="hf_section" id="hf_section" class="form-control"> @@ -20,4 +18,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="help/faq_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="help/faq_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/help/templates/faq_sections_edit.htm b/interface/web/help/templates/faq_sections_edit.htm index 1380447db8..2ff8354976 100644 --- a/interface/web/help/templates/faq_sections_edit.htm +++ b/interface/web/help/templates/faq_sections_edit.htm @@ -1,5 +1,3 @@ - - <legend>{tmpl_var name='faq_section_name_txt'}</legend> <div class="form-group"> <label for="hfs_name" class="col-sm-3 control-label">{tmpl_var name='faq_section_name_txt'}</label> <div class="col-sm-9"><input type="text" name="hfs_name" id="hfs_name" value="{tmpl_var name='hfs_name'}" class="form-control" /></div></div> @@ -11,4 +9,3 @@ <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="help/faq_sections_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="help/faq_sections_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> - diff --git a/interface/web/help/templates/support_message_edit.htm b/interface/web/help/templates/support_message_edit.htm index fb54578e16..a01cb31076 100644 --- a/interface/web/help/templates/support_message_edit.htm +++ b/interface/web/help/templates/support_message_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>{tmpl_var name='message_txt'}</legend> <div class="form-group"> <label for="recipient_id" class="col-sm-3 control-label">{tmpl_var name='recipient_id_txt'}</label> <div class="col-sm-9"><select name="recipient_id" id="recipient_id" class="form-control"> @@ -26,4 +19,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="help/support_message_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="help/support_message_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/help/templates/support_message_view.htm b/interface/web/help/templates/support_message_view.htm index faaaf859cd..4771a47148 100644 --- a/interface/web/help/templates/support_message_view.htm +++ b/interface/web/help/templates/support_message_view.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>{tmpl_var name='message_txt'}</legend> <div class="form-group"> <label for="subject" class="col-sm-3 control-label">{tmpl_var name='subject_txt'}</label> <p>{tmpl_var name='subject'}</p> @@ -20,4 +13,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='reply_txt'}" data-load-content="help/support_message_edit.php?reply={tmpl_var name='id'}">{tmpl_var name='reply_txt'}</button> - </div></div> \ No newline at end of file + </div></div> -- GitLab From 517e507620f6bdd6cb4b4b79d2e5acd18dbf5561 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 23:05:46 +0200 Subject: [PATCH 310/571] Removed double / empty titles and descriptions --- interface/web/admin/form/users.tform.php | 2 +- .../web/admin/templates/directive_snippets_edit.htm | 7 ------- interface/web/admin/templates/firewall_edit.htm | 9 +-------- interface/web/admin/templates/remote_action_osupdate.htm | 3 +-- interface/web/admin/templates/remote_user_edit.htm | 7 ------- interface/web/admin/templates/server_edit_services.htm | 7 ------- interface/web/admin/templates/server_ip_edit.htm | 7 ------- interface/web/admin/templates/server_ip_map_edit.htm | 4 ---- .../web/admin/templates/server_php_fastcgi_edit.htm | 9 +-------- interface/web/admin/templates/server_php_fpm_edit.htm | 9 +-------- interface/web/admin/templates/server_php_name_edit.htm | 7 ------- interface/web/admin/templates/software_repo_edit.htm | 9 +-------- .../web/admin/templates/system_config_mail_edit.htm | 7 ------- .../web/admin/templates/system_config_misc_edit.htm | 4 ---- .../web/admin/templates/system_config_sites_edit.htm | 7 ------- interface/web/admin/templates/users_groups_edit.htm | 9 +-------- interface/web/admin/templates/users_user_edit.htm | 7 ------- 17 files changed, 7 insertions(+), 107 deletions(-) diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index be77122b10..30c9cbb397 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form['title'] = 'Users'; -$form['description'] = 'Form to edit systemusers.'; +//$form['description'] = 'Form to edit systemusers.'; $form['name'] = 'users'; $form['action'] = 'users_edit.php'; $form['db_table'] = 'sys_user'; diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm index 657d0ad1ef..ee4d2ab3cd 100644 --- a/interface/web/admin/templates/directive_snippets_edit.htm +++ b/interface/web/admin/templates/directive_snippets_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <tmpl_if name='is_master'><div class="col-sm-9 col-text">{tmpl_var name='name'}</div></tmpl_else><div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></tmpl_if> diff --git a/interface/web/admin/templates/firewall_edit.htm b/interface/web/admin/templates/firewall_edit.htm index cd643a8caf..07fe3d0ff5 100644 --- a/interface/web/admin/templates/firewall_edit.htm +++ b/interface/web/admin/templates/firewall_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> @@ -30,4 +23,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/firewall_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/firewall_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/remote_action_osupdate.htm b/interface/web/admin/templates/remote_action_osupdate.htm index d5fa2fffd5..55629fc1e9 100644 --- a/interface/web/admin/templates/remote_action_osupdate.htm +++ b/interface/web/admin/templates/remote_action_osupdate.htm @@ -4,7 +4,6 @@ <p><tmpl_var name="do_osupdate_desc"></p> - <legend>{tmpl_var name='do_osupdate_caption'}</legend> <div class="form-group"> <label for="server_select" class="col-sm-3 control-label">{tmpl_var name='select_server_txt'}</label> <div class="col-sm-9"><select name="server_select" id="server" class="form-control" onchange="$('#OKMsg').hide(); "> @@ -19,4 +18,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_do_txt'}" data-submit-form="pageForm" data-form-action="admin/remote_action_osupdate.php">{tmpl_var name='btn_do_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/remote_user_edit.htm b/interface/web/admin/templates/remote_user_edit.htm index 099af58eb5..723c3e6966 100644 --- a/interface/web/admin/templates/remote_user_edit.htm +++ b/interface/web/admin/templates/remote_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="remote_username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label> <div class="col-sm-9"><input type="text" name="remote_username" id="username" value="{tmpl_var name='remote_username'}" class="form-control" /></div></div> diff --git a/interface/web/admin/templates/server_edit_services.htm b/interface/web/admin/templates/server_edit_services.htm index 2775e029d3..b0aca56b17 100644 --- a/interface/web/admin/templates/server_edit_services.htm +++ b/interface/web/admin/templates/server_edit_services.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_name" class="col-sm-3 control-label">{tmpl_var name='server_name_txt'}</label> <div class="col-sm-9"><input type="text" name="server_name" id="server_name" value="{tmpl_var name='server_name'}" class="form-control" /></div></div> diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm index 85f06432e8..f0e0eb78d7 100644 --- a/interface/web/admin/templates/server_ip_edit.htm +++ b/interface/web/admin/templates/server_ip_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <legend>{tmpl_var name='server_ip_edit_title'}</legend> <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> diff --git a/interface/web/admin/templates/server_ip_map_edit.htm b/interface/web/admin/templates/server_ip_map_edit.htm index bba26348ae..6986213742 100644 --- a/interface/web/admin/templates/server_ip_map_edit.htm +++ b/interface/web/admin/templates/server_ip_map_edit.htm @@ -1,7 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/admin/templates/server_php_fastcgi_edit.htm b/interface/web/admin/templates/server_php_fastcgi_edit.htm index 99a3eeb09d..e219addde0 100644 --- a/interface/web/admin/templates/server_php_fastcgi_edit.htm +++ b/interface/web/admin/templates/server_php_fastcgi_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="php_fastcgi_binary" class="col-sm-3 control-label">{tmpl_var name='php_fastcgi_binary_txt'}</label> <div class="col-sm-9"><input type="text" name="php_fastcgi_binary" id="php_fastcgi_binary" value="{tmpl_var name='php_fastcgi_binary'}" class="form-control" /></div></div> @@ -18,4 +11,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_php_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_php_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/server_php_fpm_edit.htm b/interface/web/admin/templates/server_php_fpm_edit.htm index 4186584f0f..372b3702fc 100644 --- a/interface/web/admin/templates/server_php_fpm_edit.htm +++ b/interface/web/admin/templates/server_php_fpm_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="php_fpm_init_script" class="col-sm-3 control-label">{tmpl_var name='php_fpm_init_script_txt'}</label> <div class="col-sm-9"><input type="text" name="php_fpm_init_script" id="php_fpm_init_script" value="{tmpl_var name='php_fpm_init_script'}" class="form-control" /></div></div> @@ -21,4 +14,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_php_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_php_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/server_php_name_edit.htm b/interface/web/admin/templates/server_php_name_edit.htm index cfdaab63f9..ab1d889ef9 100644 --- a/interface/web/admin/templates/server_php_name_edit.htm +++ b/interface/web/admin/templates/server_php_name_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> diff --git a/interface/web/admin/templates/software_repo_edit.htm b/interface/web/admin/templates/software_repo_edit.htm index 3aa6c61fc6..a43ea74900 100644 --- a/interface/web/admin/templates/software_repo_edit.htm +++ b/interface/web/admin/templates/software_repo_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="repo_name" class="col-sm-3 control-label">{tmpl_var name='repo_name_txt'}</label> <div class="col-sm-9"><input type="text" name="repo_name" id="repo_name" value="{tmpl_var name='repo_name'}" class="form-control" /></div></div> @@ -30,4 +23,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/software_repo_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/software_repo_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm index 526da2502a..af0a7a25ca 100644 --- a/interface/web/admin/templates/system_config_mail_edit.htm +++ b/interface/web/admin/templates/system_config_mail_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='enable_custom_login_txt'}</label> <div class="col-sm-9"> diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 00debd66dc..95014ab809 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -1,7 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> <!-- <div class="form-group"> <label for="file" class="col-sm-3 control-label">{tmpl_var name='logo_txt'}</label> diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm index a0f95e479a..09b55fd118 100644 --- a/interface/web/admin/templates/system_config_sites_edit.htm +++ b/interface/web/admin/templates/system_config_sites_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="dbname_prefix" class="col-sm-3 control-label">{tmpl_var name='dbname_prefix_txt'}</label> <div class="col-sm-9"><input type="text" name="dbname_prefix" id="dbname_prefix" value="{tmpl_var name='dbname_prefix'}" class="form-control" /></div></div> diff --git a/interface/web/admin/templates/users_groups_edit.htm b/interface/web/admin/templates/users_groups_edit.htm index 5f09bfa8ea..112791dc4c 100644 --- a/interface/web/admin/templates/users_groups_edit.htm +++ b/interface/web/admin/templates/users_groups_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="default_group" class="col-sm-3 control-label">{tmpl_var name='default_group_txt'}</label> <div class="col-sm-9"><select name="default_group" id="default_group" class="form-control"> @@ -24,4 +17,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/users_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/users_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/admin/templates/users_user_edit.htm b/interface/web/admin/templates/users_user_edit.htm index fb9658c14b..baf5f58554 100644 --- a/interface/web/admin/templates/users_user_edit.htm +++ b/interface/web/admin/templates/users_user_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label> <div class="col-sm-9"><input type="text" name="username" id="username" value="{tmpl_var name='username'}" class="form-control" /></div></div> -- GitLab From f7e8f09b35b5abb3c6ec456f5658447d9b2567dd Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Wed, 27 May 2020 23:24:34 +0200 Subject: [PATCH 311/571] Added missing lines for title and desc --- interface/web/admin/lib/lang/bg_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/br_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/ca_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/cz_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/de_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/dk_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/el_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/en_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/es_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/fi_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/fr_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/hr_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/hu_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/id_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/it_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/ja_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/nl_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/pl_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/pt_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/ro_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/ru_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/se_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/sk_server_ip_map.lng | 2 ++ interface/web/admin/lib/lang/tr_server_ip_map.lng | 2 ++ 24 files changed, 48 insertions(+) diff --git a/interface/web/admin/lib/lang/bg_server_ip_map.lng b/interface/web/admin/lib/lang/bg_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/bg_server_ip_map.lng +++ b/interface/web/admin/lib/lang/bg_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/br_server_ip_map.lng b/interface/web/admin/lib/lang/br_server_ip_map.lng index 81a2bb4b96..51af1099ab 100644 --- a/interface/web/admin/lib/lang/br_server_ip_map.lng +++ b/interface/web/admin/lib/lang/br_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Servidor para mapeamento IP'; $wb['source_txt'] = 'Endereço IP de origem'; $wb['destination_txt'] = 'Endereço IP de destino'; diff --git a/interface/web/admin/lib/lang/ca_server_ip_map.lng b/interface/web/admin/lib/lang/ca_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/ca_server_ip_map.lng +++ b/interface/web/admin/lib/lang/ca_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/cz_server_ip_map.lng b/interface/web/admin/lib/lang/cz_server_ip_map.lng index 683451d1d8..57c5ba0108 100644 --- a/interface/web/admin/lib/lang/cz_server_ip_map.lng +++ b/interface/web/admin/lib/lang/cz_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Zdrojová IP adresa'; $wb['destination_txt'] = 'CÃlová IP adresa'; diff --git a/interface/web/admin/lib/lang/de_server_ip_map.lng b/interface/web/admin/lib/lang/de_server_ip_map.lng index 4fdb51be1a..96863c7261 100644 --- a/interface/web/admin/lib/lang/de_server_ip_map.lng +++ b/interface/web/admin/lib/lang/de_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite auf Server'; $wb['source_txt'] = 'eigentliche IP'; $wb['destination_txt'] = 'neue IP'; diff --git a/interface/web/admin/lib/lang/dk_server_ip_map.lng b/interface/web/admin/lib/lang/dk_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/dk_server_ip_map.lng +++ b/interface/web/admin/lib/lang/dk_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/el_server_ip_map.lng b/interface/web/admin/lib/lang/el_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/el_server_ip_map.lng +++ b/interface/web/admin/lib/lang/el_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/en_server_ip_map.lng b/interface/web/admin/lib/lang/en_server_ip_map.lng index 94508abb79..d47d33cf36 100644 --- a/interface/web/admin/lib/lang/en_server_ip_map.lng +++ b/interface/web/admin/lib/lang/en_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb["server_id_txt"] = 'Rewrite on Server'; $wb["source_txt"] = 'Source IP'; $wb["destination_txt"] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/es_server_ip_map.lng b/interface/web/admin/lib/lang/es_server_ip_map.lng index 4cf57cdc82..c151fb565c 100755 --- a/interface/web/admin/lib/lang/es_server_ip_map.lng +++ b/interface/web/admin/lib/lang/es_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['active_txt'] = 'Activo'; $wb['destination_ip_empty'] = 'La IP de destino está vacÃa.'; $wb['destination_txt'] = 'IP de destino'; diff --git a/interface/web/admin/lib/lang/fi_server_ip_map.lng b/interface/web/admin/lib/lang/fi_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/fi_server_ip_map.lng +++ b/interface/web/admin/lib/lang/fi_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/fr_server_ip_map.lng b/interface/web/admin/lib/lang/fr_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/fr_server_ip_map.lng +++ b/interface/web/admin/lib/lang/fr_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/hr_server_ip_map.lng b/interface/web/admin/lib/lang/hr_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/hr_server_ip_map.lng +++ b/interface/web/admin/lib/lang/hr_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/hu_server_ip_map.lng b/interface/web/admin/lib/lang/hu_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/hu_server_ip_map.lng +++ b/interface/web/admin/lib/lang/hu_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/id_server_ip_map.lng b/interface/web/admin/lib/lang/id_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/id_server_ip_map.lng +++ b/interface/web/admin/lib/lang/id_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/it_server_ip_map.lng b/interface/web/admin/lib/lang/it_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/it_server_ip_map.lng +++ b/interface/web/admin/lib/lang/it_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/ja_server_ip_map.lng b/interface/web/admin/lib/lang/ja_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/ja_server_ip_map.lng +++ b/interface/web/admin/lib/lang/ja_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/nl_server_ip_map.lng b/interface/web/admin/lib/lang/nl_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/nl_server_ip_map.lng +++ b/interface/web/admin/lib/lang/nl_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/pl_server_ip_map.lng b/interface/web/admin/lib/lang/pl_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/pl_server_ip_map.lng +++ b/interface/web/admin/lib/lang/pl_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/pt_server_ip_map.lng b/interface/web/admin/lib/lang/pt_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/pt_server_ip_map.lng +++ b/interface/web/admin/lib/lang/pt_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/ro_server_ip_map.lng b/interface/web/admin/lib/lang/ro_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/ro_server_ip_map.lng +++ b/interface/web/admin/lib/lang/ro_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/ru_server_ip_map.lng b/interface/web/admin/lib/lang/ru_server_ip_map.lng index 2b284360e5..467edf86e4 100644 --- a/interface/web/admin/lib/lang/ru_server_ip_map.lng +++ b/interface/web/admin/lib/lang/ru_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite на Ñервер'; $wb['source_txt'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ñточника'; $wb['destination_txt'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ'; diff --git a/interface/web/admin/lib/lang/se_server_ip_map.lng b/interface/web/admin/lib/lang/se_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/se_server_ip_map.lng +++ b/interface/web/admin/lib/lang/se_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/sk_server_ip_map.lng b/interface/web/admin/lib/lang/sk_server_ip_map.lng index 68b196fb23..f02bdafd84 100644 --- a/interface/web/admin/lib/lang/sk_server_ip_map.lng +++ b/interface/web/admin/lib/lang/sk_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Rewrite on Server'; $wb['source_txt'] = 'Source IP'; $wb['destination_txt'] = 'Destination IP'; diff --git a/interface/web/admin/lib/lang/tr_server_ip_map.lng b/interface/web/admin/lib/lang/tr_server_ip_map.lng index c05e19c4b1..e18a243344 100644 --- a/interface/web/admin/lib/lang/tr_server_ip_map.lng +++ b/interface/web/admin/lib/lang/tr_server_ip_map.lng @@ -1,4 +1,6 @@ <?php +$wb['server_ip_map_title'] = 'IPv4 Address mapping'; +$wb['server_ip_map_desc'] = 'Form to map IPv4-addresses for Web-Server'; $wb['server_id_txt'] = 'Sunucuda Yeniden Yazma'; $wb['source_txt'] = 'Kaynak IP'; $wb['destination_txt'] = 'Hedef IP'; -- GitLab From 8bc6a8c3afa1e19bbf796558b0e8df5e5471aad6 Mon Sep 17 00:00:00 2001 From: Ramil Valitov <ramilvalitov@gmail.com> Date: Thu, 28 May 2020 16:45:27 +0200 Subject: [PATCH 312/571] New code for backups with lots of new features --- .../sql/incremental/upd_dev_collection.sql | 12 + install/sql/ispconfig3.sql | 6 + .../lib/classes/aps_guicontroller.inc.php | 2 + .../lib/classes/plugin_backuplist.inc.php | 57 +- interface/lib/classes/remote.d/sites.inc.php | 8 +- .../lib/classes/sites_database_plugin.inc.php | 6 +- interface/lib/classes/system.inc.php | 12 + .../sites_web_vhost_domain_plugin.inc.php | 8 +- .../web/sites/form/web_vhost_domain.tform.php | 76 +- .../web/sites/lib/lang/ar_web_backup_list.lng | 32 + .../sites/lib/lang/ar_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/bg_web_backup_list.lng | 32 + .../sites/lib/lang/bg_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/br_web_backup_list.lng | 33 +- .../sites/lib/lang/br_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/ca_web_backup_list.lng | 32 + .../sites/lib/lang/ca_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/cz_web_backup_list.lng | 32 + .../sites/lib/lang/cz_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/de_web_backup_list.lng | 32 + .../sites/lib/lang/de_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/dk_web_backup_list.lng | 32 + .../sites/lib/lang/dk_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/el_web_backup_list.lng | 32 + .../sites/lib/lang/el_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/en_web_backup_list.lng | 35 +- .../sites/lib/lang/en_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/es_web_backup_list.lng | 32 + .../sites/lib/lang/es_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/fi_web_backup_list.lng | 32 + .../sites/lib/lang/fi_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/fr_web_backup_list.lng | 32 + .../sites/lib/lang/fr_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/hr_web_backup_list.lng | 32 + .../sites/lib/lang/hr_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/hu_web_backup_list.lng | 32 + .../sites/lib/lang/hu_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/id_web_backup_list.lng | 32 + .../sites/lib/lang/id_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/it_web_backup_list.lng | 32 + .../sites/lib/lang/it_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/ja_web_backup_list.lng | 32 + .../sites/lib/lang/ja_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/nl_web_backup_list.lng | 32 + .../sites/lib/lang/nl_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/pl_web_backup_list.lng | 32 + .../sites/lib/lang/pl_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/pt_web_backup_list.lng | 32 + .../sites/lib/lang/pt_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/ro_web_backup_list.lng | 32 + .../sites/lib/lang/ro_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/ru_web_backup_list.lng | 32 + .../sites/lib/lang/ru_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/se_web_backup_list.lng | 32 + .../sites/lib/lang/se_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/sk_web_backup_list.lng | 32 + .../sites/lib/lang/sk_web_vhost_domain.lng | 27 + .../web/sites/lib/lang/tr_web_backup_list.lng | 33 +- .../sites/lib/lang/tr_web_vhost_domain.lng | 27 + .../web/sites/templates/web_backup_list.htm | 18 +- .../templates/web_vhost_domain_backup.htm | 48 +- .../API-docs/sites_database_add.html | 2 + .../API-docs/sites_web_aliasdomain_add.html | 2 + .../sites_web_aliasdomain_update.html | 2 + .../API-docs/sites_web_subdomain_add.html | 2 + .../API-docs/sites_web_subdomain_update.html | 2 + .../examples/sites_database_add.php | 2 + .../examples/sites_web_aliasdomain_add.php | 2 + .../examples/sites_web_domain_add.php | 2 + .../examples/sites_web_subdomain_add.php | 2 + server/backup-now.php | 108 ++ server/lib/app.inc.php | 4 + server/lib/classes/backup.inc.php | 1452 +++++++++++++++++ server/lib/classes/cron.d/500-backup.inc.php | 364 +---- .../plugins-available/backup_plugin.inc.php | 78 +- 75 files changed, 3340 insertions(+), 417 deletions(-) create mode 100644 server/backup-now.php create mode 100644 server/lib/classes/backup.inc.php diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 29ba602bf8..d07b33d4ba 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,3 +1,15 @@ -- add new proxy_protocol column ALTER TABLE `web_domain` ADD COLUMN `proxy_protocol` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `log_retention`; + +-- backup format +ALTER TABLE `web_domain` ADD `backup_format_web` VARCHAR( 255 ) NOT NULL default 'default' AFTER `backup_copies`; +ALTER TABLE `web_domain` ADD `backup_format_db` VARCHAR( 255 ) NOT NULL default 'gzip' AFTER `backup_format_web`; +-- end of backup format + +-- backup encryption +ALTER TABLE `web_domain` ADD `backup_encrypt` enum('n','y') NOT NULL DEFAULT 'n' AFTER `backup_format_db`; +ALTER TABLE `web_domain` ADD `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `backup_encrypt`; +ALTER TABLE `web_backup` ADD `backup_format` VARCHAR( 64 ) NOT NULL DEFAULT '' AFTER `backup_mode`; +ALTER TABLE `web_backup` ADD `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `filesize`; +-- end of backup encryption diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index bfef9733e5..b64eab94c3 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1922,9 +1922,11 @@ CREATE TABLE `web_backup` ( `parent_domain_id` int(10) unsigned NOT NULL DEFAULT '0', `backup_type` enum('web','mysql','mongodb') NOT NULL DEFAULT 'web', `backup_mode` varchar(64) NOT NULL DEFAULT '', + `backup_format` varchar(64) NOT NULL DEFAULT '', `tstamp` int(10) unsigned NOT NULL DEFAULT '0', `filename` varchar(255) NOT NULL DEFAULT '', `filesize` VARCHAR(20) NOT NULL DEFAULT '', + `backup_password` VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (`backup_id`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; @@ -2055,6 +2057,10 @@ CREATE TABLE `web_domain` ( `custom_php_ini` mediumtext, `backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none', `backup_copies` INT NOT NULL DEFAULT '1', + `backup_format_web` VARCHAR( 255 ) NOT NULL default 'default', + `backup_format_db` VARCHAR( 255 ) NOT NULL default 'gzip', + `backup_encrypt` enum('n','y') NOT NULL DEFAULT 'n', + `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '', `backup_excludes` mediumtext, `active` enum('n','y') NOT NULL default 'y', `traffic_quota_lock` enum('n','y') NOT NULL default 'n', diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 8e4c17af79..b1ebf9d189 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -340,6 +340,8 @@ class ApsGUIController extends ApsBase "remote_access" => $mysql_db_remote_access, "remote_ips" => $mysql_db_remote_ips, "backup_copies" => $websrv['backup_copies'], + "backup_format_web" => $websrv['backup_format_web'], + "backup_format_db" => $websrv['backup_format_db'], "active" => 'y', "backup_interval" => $websrv['backup_interval'] ); diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php index e96be012e3..9e21dc6ba6 100644 --- a/interface/lib/classes/plugin_backuplist.inc.php +++ b/interface/lib/classes/plugin_backuplist.inc.php @@ -37,6 +37,34 @@ class plugin_backuplist extends plugin_base { var $formdef; var $options; + /** + * Process request to make a backup. This request is triggered manually by the user in the ISPConfig interface. + * @param string $message + * @param string $error + * @param string[] $wb language text + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @uses backup_plugin::make_backup_callback() this method is called later in the plugin to run the backup + */ + protected function makeBackup(&$message, &$error, $wb) + { + global $app; + + $mode = $_GET['make_backup']; + $action_type = ($mode == 'web') ? 'backup_web_files' : 'backup_database'; + $domain_id = intval($this->form->id); + + $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = ? AND action_param = ?"; + $tmp = $app->db->queryOneRecord($sql, $action_type, $domain_id); + if ($tmp['number'] == 0) { + $server_id = $this->form->dataRecord['server_id']; + $message .= $wb['backup_info_txt']; + $sql = "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) VALUES (?, UNIX_TIMESTAMP(), ?, ?, 'pending', '')"; + $app->db->query($sql, $server_id, $action_type, $domain_id); + } else { + $error .= $wb['backup_pending_txt']; + } + } + function onShow() { global $app; @@ -52,6 +80,10 @@ class plugin_backuplist extends plugin_base { $message = ''; $error = ''; + if (isset($_GET['make_backup'])) { + $this->makeBackup($message, $error, $wb); + } + if(isset($_GET['backup_action'])) { $backup_id = $app->functions->intval($_GET['backup_id']); @@ -137,7 +169,30 @@ class plugin_backuplist extends plugin_base { $rec["bgcolor"] = $bgcolor; $rec['date'] = date($app->lng('conf_format_datetime'), $rec['tstamp']); - $rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])]; + $backup_format = $rec['backup_format']; + if (empty($backup_format)) { + //We have a backup from old version of ISPConfig + switch ($rec['backup_type']) { + case 'mysql': + $backup_format = 'gzip'; + break; + case 'web': + $backup_format = ($rec['backup_mode'] == 'userzip') ? 'zip' : 'tar_gzip'; + break; + default: + $app->log('Unsupported backup type "' . $rec['backup_type'] . '" for backup id ' . $rec['backup_id'], LOGLEVEL_ERROR); + break; + } + } + $rec['backup_type'] = $wb[('backup_type_' . $rec['backup_type'])]; + $backup_format = (!empty($backup_format)) ? $wb[('backup_format_' . $backup_format . '_txt')] : $wb["backup_format_unknown_txt"]; + if (empty($backup_format)) + $backup_format = $wb["backup_format_unknown_txt"]; + + $rec['backup_format'] = $backup_format; + $rec['backup_encrypted'] = empty($rec['backup_password']) ? $wb["no_txt"] : $wb["yes_txt"]; + $backup_manual_prefix = 'manual-'; + $rec['backup_job'] = (substr($rec['filename'], 0, strlen($backup_manual_prefix)) == $backup_manual_prefix) ? $wb["backup_job_manual_txt"] : $wb["backup_job_auto_txt"]; $rec['download_available'] = true; if($rec['server_id'] != $web['server_id']) $rec['download_available'] = false; diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index d90b90bd89..9efbecc091 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -132,10 +132,12 @@ class remoting_sites extends remoting { $app->sites_database_plugin->processDatabaseInsert($this); // set correct values for backup_interval and backup_copies - if(isset($params['backup_interval']) || isset($params['backup_copies'])){ + if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){ $sql_set = array(); if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'"; if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']); + if(isset($params['backup_format_web'])) $sql_set[] = "backup_format_web = ".$app->functions->intval($params['backup_format_web']); + if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']); $this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$retval, $retval, $params); } @@ -165,10 +167,12 @@ class remoting_sites extends remoting { $retval = $this->updateQueryExecute($sql, $primary_id, $params); // set correct values for backup_interval and backup_copies - if(isset($params['backup_interval']) || isset($params['backup_copies'])){ + if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){ $sql_set = array(); if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'"; if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']); + if(isset($params['backup_format_web'])) $sql_set[] = "backup_format_web = ".$app->functions->intval($params['backup_format_web']); + if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']); $this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$primary_id, $primary_id, $params); } diff --git a/interface/lib/classes/sites_database_plugin.inc.php b/interface/lib/classes/sites_database_plugin.inc.php index 89cb7ce9c2..faf3fa30f7 100644 --- a/interface/lib/classes/sites_database_plugin.inc.php +++ b/interface/lib/classes/sites_database_plugin.inc.php @@ -45,10 +45,12 @@ class sites_database_plugin { //* The Database user shall be owned by the same group then the website $sys_groupid = $app->functions->intval($web['sys_groupid']); $backup_interval = $web['backup_interval']; + $backup_format_web = $web['backup_format_web']; + $backup_format_db = $web['backup_format_db']; $backup_copies = $app->functions->intval($web['backup_copies']); - $sql = "UPDATE web_database SET sys_groupid = ?, backup_interval = ?, backup_copies = ? WHERE database_id = ?"; - $app->db->query($sql, $sys_groupid, $backup_interval, $backup_copies, $form_page->id); + $sql = "UPDATE web_database SET sys_groupid = ?, backup_interval = ?, backup_copies = ?, backup_format_web = ?, backup_format_db = ? WHERE database_id = ?"; + $app->db->query($sql, $sys_groupid, $backup_interval, $backup_copies, $backup_format_web, $backup_format_db, $form_page->id); } } diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index 0be2b6b1e9..b6d3479694 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -97,5 +97,17 @@ class system { call_user_func_array(array($this, 'exec_safe'), func_get_args()); return implode("\n", $this->_last_exec_out); } + + //* Check if a application is installed + public function is_installed($appname) { + $this->exec_safe('which ? 2> /dev/null', $appname); + $out = $this->last_exec_out(); + $returncode = $this->last_exec_retcode(); + if(isset($out[0]) && stristr($out[0], $appname) && $returncode == 0) { + return true; + } else { + return false; + } + } } //* End Class diff --git a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php index 2d1ce3794a..3f9b0db5b6 100644 --- a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php +++ b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php @@ -249,18 +249,22 @@ class sites_web_vhost_domain_plugin { } //* Change database backup options when web backup options have been changed - if(isset($page_form->dataRecord['backup_interval']) && ($page_form->dataRecord['backup_interval'] != $page_form->oldDataRecord['backup_interval'] || $page_form->dataRecord['backup_copies'] != $page_form->oldDataRecord['backup_copies'])) { + if(isset($page_form->dataRecord['backup_interval']) && ($page_form->dataRecord['backup_interval'] != $page_form->oldDataRecord['backup_interval'] || $page_form->dataRecord['backup_copies'] != $page_form->oldDataRecord['backup_copies'] || $page_form->dataRecord['backup_format_web'] != $page_form->oldDataRecord['backup_format_web'] || $page_form->dataRecord['backup_format_db'] != $page_form->oldDataRecord['backup_format_db'])) { //* Update all databases $backup_interval = $page_form->dataRecord['backup_interval']; $backup_copies = $app->functions->intval($page_form->dataRecord['backup_copies']); + $backup_format_web = $page_form->dataRecord['backup_format_web']; + $backup_format_db = $page_form->dataRecord['backup_format_db']; $records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE parent_domain_id = ".$page_form->id); foreach($records as $rec) { - $app->db->datalogUpdate('web_database', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies), 'database_id', $rec['database_id']); + $app->db->datalogUpdate('web_database', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies, "backup_format_web" => $backup_format_web, "backup_format_db" => $backup_format_db), 'database_id', $rec['database_id']); } unset($records); unset($rec); unset($backup_copies); unset($backup_interval); + unset($backup_format_web); + unset($backup_format_db); } //* Change vhost subdomain and alias ip/ipv6 if domain ip/ipv6 has changed diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 5c3057f685..24ee6d4e62 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -96,7 +96,7 @@ if(!$app->auth->is_admin()) { if($client['limit_backup'] != 'y') $backup_available = false; } -$app->uses('getconf'); +$app->uses('getconf,system'); $web_config = $app->getconf->get_global_config('sites'); $form["tabs"]['domain'] = array ( @@ -649,6 +649,28 @@ $form["tabs"]['stats'] = array ( //* Backup if ($backup_available) { + $missing_utils = array(); + $compressors_list = array( + 'gzip', + 'gunzip', + 'zip', + 'unzip', + 'pigz', + 'tar', + 'bzip2', + 'bunzip2', + 'xz', + 'unxz', + '7z', + 'rar', + ); + foreach ($compressors_list as $compressor) { + if (!$app->system->is_installed($compressor)) { + array_push($missing_utils, $compressor); + } + } + $app->tpl->setVar("missing_utils", implode(", ",$missing_utils), true); + $form["tabs"]['backup'] = array ( 'title' => "Backup", 'width' => 100, @@ -682,6 +704,58 @@ if ($backup_available) { 'width' => '30', 'maxlength' => '255' ), + 'backup_format_web' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array( + 'default' => 'backup_format_default_txt', + 'zip' => 'backup_format_zip_txt', + 'zip_bzip2' => 'backup_format_zip_bzip2_txt', + 'tar_gzip' => 'backup_format_tar_gzip_txt', + 'tar_bzip2' => 'backup_format_tar_bzip2_txt', + 'tar_xz' => 'backup_format_tar_xz_txt', + 'tar_7z_lzma2' => 'backup_format_tar_7z_lzma2_txt', + 'tar_7z_lzma' => 'backup_format_tar_7z_lzma_txt', + 'tar_7z_ppmd' => 'backup_format_tar_7z_ppmd_txt', + 'tar_7z_bzip2' => 'backup_format_tar_7z_bzip2_txt', + 'rar' => 'backup_format_rar_txt', + ) + ), + 'backup_format_db' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array( + 'zip' => 'backup_format_zip_txt', + 'zip_bzip2' => 'backup_format_zip_bzip2_txt', + 'gzip' => 'backup_format_gzip_txt', + 'bzip2' => 'backup_format_bzip2_txt', + 'xz' => 'backup_format_xz_txt', + '7z_lzma2' => 'backup_format_7z_lzma2_txt', + '7z_lzma' => 'backup_format_7z_lzma_txt', + '7z_ppmd' => 'backup_format_7z_ppmd_txt', + '7z_bzip2' => 'backup_format_7z_bzip2_txt', + 'rar' => 'backup_format_rar_txt', + ) + ), + 'backup_encrypt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array ( + 0 => 'n', + 1 => 'y' + ) + ), + 'backup_password' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/sites/lib/lang/ar_web_backup_list.lng b/interface/web/sites/lib/lang/ar_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/ar_web_backup_list.lng +++ b/interface/web/sites/lib/lang/ar_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 f866aa7b25..f9c396616b 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_backup_list.lng b/interface/web/sites/lib/lang/bg_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/bg_web_backup_list.lng +++ b/interface/web/sites/lib/lang/bg_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 84b729eda5..1ab6c244cc 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/br_web_backup_list.lng b/interface/web/sites/lib/lang/br_web_backup_list.lng index 82883c1f29..00384c6e15 100644 --- a/interface/web/sites/lib/lang/br_web_backup_list.lng +++ b/interface/web/sites/lib/lang/br_web_backup_list.lng @@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'Já existe uma remoção de backup em andamento.'; $wb['backup_type_mongodb'] = 'MongoDB'; $wb['backup_type_mysql'] = 'MySQL'; $wb['backup_type_web'] = 'Arquivos do site'; - +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 7d021d4a32..a074b160a3 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -161,4 +161,31 @@ $wb['log_retention_txt'] = 'Tempo de retenção do log de arquivos'; $wb['log_retention_error_regex'] = 'Tempo de retenção em dias (valores permitidos: mÃnimo 0, máximo 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/ca_web_backup_list.lng b/interface/web/sites/lib/lang/ca_web_backup_list.lng index 97b04a0c05..89d40ddb05 100644 --- a/interface/web/sites/lib/lang/ca_web_backup_list.lng +++ b/interface/web/sites/lib/lang/ca_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak $wb['delete_confirm_txt'] = 'Really delete this backup?'; $wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 40fda06d11..d0a5a58bd3 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng index d30e41d961..e881afca12 100644 --- a/interface/web/sites/lib/lang/cz_web_backup_list.lng +++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Bylo zahájeno odstranÄ›nà zálohy. Tato akce může $wb['delete_confirm_txt'] = 'Opravdu chcete smazat tuto zálohu ?'; $wb['delete_pending_txt'] = 'Již existuje ÄekajÃcà úloha pro odstranÄ›nà zálohy.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 5e6ed3e756..250f98c890 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/de_web_backup_list.lng b/interface/web/sites/lib/lang/de_web_backup_list.lng index 63b27051bb..3c38207b76 100644 --- a/interface/web/sites/lib/lang/de_web_backup_list.lng +++ b/interface/web/sites/lib/lang/de_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_pending_txt'] = 'Es liegt bereits ein Backup-Lösch-Job an.'; $wb['backup_type_mysql'] = 'MySQL-Datenbank'; $wb['backup_type_web'] = 'Webseiten-Dateien'; $wb['filesize_txt'] = 'Filesize'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 b5fef5aa15..e4424799a6 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Log-Dateien Aufbewahrungszeit'; $wb['log_retention_error_regex'] = 'Aufbewahrungszeit in Tagen (Erlaubte Werte: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota kann nicht 0 sein.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/dk_web_backup_list.lng b/interface/web/sites/lib/lang/dk_web_backup_list.lng index eb45c4e89b..fb9f0e997f 100644 --- a/interface/web/sites/lib/lang/dk_web_backup_list.lng +++ b/interface/web/sites/lib/lang/dk_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak $wb['delete_confirm_txt'] = 'Really delete this backup?'; $wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 40fda06d11..d0a5a58bd3 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/el_web_backup_list.lng b/interface/web/sites/lib/lang/el_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/el_web_backup_list.lng +++ b/interface/web/sites/lib/lang/el_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 4fc9e15107..d4cb988a17 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/en_web_backup_list.lng b/interface/web/sites/lib/lang/en_web_backup_list.lng index 6ec5f5f3c7..f541108807 100644 --- a/interface/web/sites/lib/lang/en_web_backup_list.lng +++ b/interface/web/sites/lib/lang/en_web_backup_list.lng @@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Existing backups'; $wb['date_txt'] = 'Date'; $wb['backup_type_txt'] = 'Type'; $wb['filename_txt'] = 'Backup file'; -$wb['filesize_txt'] = 'Filesize'; +$wb['filesize_txt'] = 'File size'; $wb['restore_backup_txt'] = 'Restore'; $wb['download_backup_txt'] = 'Download'; $wb['download_info_txt'] = 'The backup file will be available for download in the backup folder of the website in a few minutes.'; @@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; - +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 985a1abcf2..66bfd1ca19 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -161,4 +161,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/es_web_backup_list.lng b/interface/web/sites/lib/lang/es_web_backup_list.lng index 04896d9eba..931ada712b 100644 --- a/interface/web/sites/lib/lang/es_web_backup_list.lng +++ b/interface/web/sites/lib/lang/es_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'Base de datos MySQL'; $wb['backup_type_web'] = 'Archivos del sitio web'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 d6de7b8088..504bea2aa6 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_backup_list.lng b/interface/web/sites/lib/lang/fi_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/fi_web_backup_list.lng +++ b/interface/web/sites/lib/lang/fi_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 3c9dfc5578..460fbadff7 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_backup_list.lng b/interface/web/sites/lib/lang/fr_web_backup_list.lng index 6f1c5e1348..92e44845ae 100644 --- a/interface/web/sites/lib/lang/fr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/fr_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak $wb['delete_confirm_txt'] = 'Really delete this backup?'; $wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 91a806f870..306a48aedc 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_backup_list.lng b/interface/web/sites/lib/lang/hr_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/hr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/hr_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 3874c876f1..d883532397 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_backup_list.lng b/interface/web/sites/lib/lang/hu_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/hu_web_backup_list.lng +++ b/interface/web/sites/lib/lang/hu_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 d14356efef..4d54b0a4c7 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/id_web_backup_list.lng b/interface/web/sites/lib/lang/id_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/id_web_backup_list.lng +++ b/interface/web/sites/lib/lang/id_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 0d7d7285ab..3aa65982cd 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/it_web_backup_list.lng b/interface/web/sites/lib/lang/it_web_backup_list.lng index 9aa7b0c175..d81039ea1a 100644 --- a/interface/web/sites/lib/lang/it_web_backup_list.lng +++ b/interface/web/sites/lib/lang/it_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['delete_info_txt'] = 'Delete of the backup has been started. This action tak $wb['delete_confirm_txt'] = 'Really delete this backup?'; $wb['delete_pending_txt'] = 'There is already a pending backup delete job.'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 4613d2e14e..cc890d855e 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_backup_list.lng b/interface/web/sites/lib/lang/ja_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/ja_web_backup_list.lng +++ b/interface/web/sites/lib/lang/ja_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 f4eabe51de..bfb5e8b137 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_backup_list.lng b/interface/web/sites/lib/lang/nl_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/nl_web_backup_list.lng +++ b/interface/web/sites/lib/lang/nl_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 fbd13b159d..d67cde421a 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_backup_list.lng b/interface/web/sites/lib/lang/pl_web_backup_list.lng index b9fdf3d632..a04c0bacd2 100644 --- a/interface/web/sites/lib/lang/pl_web_backup_list.lng +++ b/interface/web/sites/lib/lang/pl_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'Baza MySQL'; $wb['backup_type_web'] = 'Pliki strony'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 ce4cdaceaf..c24c319fe5 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_backup_list.lng b/interface/web/sites/lib/lang/pt_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/pt_web_backup_list.lng +++ b/interface/web/sites/lib/lang/pt_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 8c1e76af38..dc6895c3e1 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_backup_list.lng b/interface/web/sites/lib/lang/ro_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/ro_web_backup_list.lng +++ b/interface/web/sites/lib/lang/ro_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 00a9c247fc..8e27105a6a 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_backup_list.lng b/interface/web/sites/lib/lang/ru_web_backup_list.lng index 8d5b7b757b..8943d94750 100644 --- a/interface/web/sites/lib/lang/ru_web_backup_list.lng +++ b/interface/web/sites/lib/lang/ru_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'База данных MySQL'; $wb['backup_type_web'] = 'Файлы Web Ñайта'; $wb['filesize_txt'] = 'Размер файла'; $wb['backup_type_mongodb'] = 'База данных MongoDB'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 8e596defa3..c9a2a0a4ba 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/se_web_backup_list.lng b/interface/web/sites/lib/lang/se_web_backup_list.lng index 1f9073ab6d..702a46e8d2 100644 --- a/interface/web/sites/lib/lang/se_web_backup_list.lng +++ b/interface/web/sites/lib/lang/se_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL-databaser'; $wb['backup_type_web'] = 'Webbsidefiler'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 01db60b572..ec509b333a 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_txt'] = 'Logfiles retention time'; $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. 0 - max. 9999)'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_backup_list.lng b/interface/web/sites/lib/lang/sk_web_backup_list.lng index d1133334f0..056c7576ae 100644 --- a/interface/web/sites/lib/lang/sk_web_backup_list.lng +++ b/interface/web/sites/lib/lang/sk_web_backup_list.lng @@ -18,4 +18,36 @@ $wb['backup_type_mysql'] = 'MySQL Database'; $wb['backup_type_web'] = 'Website files'; $wb['filesize_txt'] = 'Filesize'; $wb['backup_type_mongodb'] = 'MongoDB Database'; +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 7d52d3edf1..0509b1a3bb 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -156,4 +156,31 @@ $wb['log_retention_error_regex'] = 'Retention time in days (allowed values: min. $wb['domain_error_acme_invalid'] = 'Domain name acme.invalid not permitted.'; $wb['limit_web_quota_not_0_txt'] = 'Harddisk Quota cannot be set to 0.'; $wb['proxy_protocol_txt'] = 'Enable PROXY Protocol'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_backup_list.lng b/interface/web/sites/lib/lang/tr_web_backup_list.lng index 31aea494ca..e304290f61 100644 --- a/interface/web/sites/lib/lang/tr_web_backup_list.lng +++ b/interface/web/sites/lib/lang/tr_web_backup_list.lng @@ -18,5 +18,36 @@ $wb['delete_pending_txt'] = 'Bekleyen bir yedek silme iÅŸlemi var.'; $wb['backup_type_mongodb'] = 'MongoDB Veritabanı'; $wb['backup_type_mysql'] = 'MySQL Veritabanı'; $wb['backup_type_web'] = 'Web sitesi dosyaları'; - +$wb['backup_pending_txt'] = 'There is already a pending backup job.'; +$wb['error_txt'] = 'Error'; +$wb['backup_info_txt'] = 'A backup process started. This action can take several minutes to complete.'; +$wb["backup_format_txt"] = 'Backup format'; +$wb["backup_format_unknown_txt"] = 'Unknown'; +$wb["backup_job_txt"] = 'Scheduler'; +$wb["backup_job_manual_txt"] = 'Manual'; +$wb["backup_job_auto_txt"] = 'Auto'; +$wb["manual_backup_title_txt"] = 'Manual backup'; +$wb["make_backup_web_txt"] = 'Make backup of web files'; +$wb["make_backup_database_txt"] = 'Make backup of databases'; +$wb["make_backup_confirm_txt"] = 'You are about to start a manual backup process. Manual backups count towards the total number of allowed backup copies: therefore if the limit will be exceeded, then oldest backups may be deleted automatically. Proceed?'; +$wb["yes_txt"] = 'Yes'; +$wb["no_txt"] = 'No'; +$wb["backup_is_encrypted_txt"] = "Encrypted"; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; +$wb["backup_format_rar_txt"] = 'RAR'; ?> 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 a190375c37..071df396e4 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -158,4 +158,31 @@ $wb['https_port_error_regex'] = 'HTTPS kapı numarası geçersiz.'; $wb['enable_pagespeed_txt'] = 'PageSpeed Kullanılsın'; $wb['log_retention_txt'] = 'Günlük Dosyalarının Silinme Sıklığı'; $wb['log_retention_error_regex'] = 'Gün cinsinden günlük dosyalarının silinme sıklığı (En küçük: 0 - En büyük: 9999)'; +$wb["backup_format_web_txt"] = 'Backup format for web files'; +$wb["backup_format_db_txt"] = 'Backup format for database'; +$wb["backup_format_web_note_txt"] = 'In "default" mode ISPConfig has the following behaviour: if backup mode is set as web user, then "zip" format is used for web files, otherwise backup mode is set as root user and "tar (gzip)" format is used; database is compressed in "gzip" format. Only "tar" based formats and "rar" preserve file ownership and permissions of web files and guarantee correct restore.'; +$wb["backup_missing_utils_txt"] = 'Note: some utils are missing in the system that may prevent you from using some compression formats. Please, install the following utils to avoid possible backup problems: '; +$wb["backup_compression_options_txt"] = 'Compression options'; +$wb["backup_encryption_note_txt"] = "Encryption is available only for the following backup formats: \"7z\", \"RAR\", \"zip\" (not secure). If any other format is used then encryption can't be applied and encryption settings are ignored. You can safely change the password at anytime: the \"Restore\" button will still work for old backups encrypted with a previous password. You don't need to type a password to restore backups using the \"Restore\" button. Password is required when you extract the archives manually. Please, don't forget your password, because it's impossible to restore it."; +$wb["backup_encryption_options_txt"] = 'Encryption options'; +$wb["backup_enable_encryption_txt"] = 'Enable encryption'; +$wb["backup_password_txt"] = 'Password'; +$wb["backup_format_default_txt"] = 'Default: zip (deflate) or tar (gzip)'; +$wb["backup_format_zip_txt"] = 'zip (deflate)'; +$wb["backup_format_gzip_txt"] = 'gzip'; +$wb["backup_format_bzip2_txt"] = 'bzip2'; +$wb["backup_format_xz_txt"] = 'xz'; +$wb["backup_format_zip_bzip2_txt"] = 'zip (bzip2)'; +$wb["backup_format_7z_lzma_txt"] = '7z (LZMA)'; +$wb["backup_format_7z_lzma2_txt"] = '7z (LZMA2)'; +$wb["backup_format_7z_ppmd_txt"] = '7z (PPMd)'; +$wb["backup_format_7z_bzip2_txt"] = '7z (BZip2)'; +$wb["backup_format_tar_gzip_txt"] = 'tar (gzip)'; +$wb["backup_format_tar_bzip2_txt"] = 'tar (bzip2)'; +$wb["backup_format_tar_xz_txt"] = 'tar (xz)'; +$wb["backup_format_rar_txt"] = 'RAR'; +$wb["backup_format_tar_7z_lzma_txt"] = 'tar + 7z (LZMA)'; +$wb["backup_format_tar_7z_lzma2_txt"] = 'tar + 7z (LZMA2)'; +$wb["backup_format_tar_7z_ppmd_txt"] = 'tar + 7z (PPMd)'; +$wb["backup_format_tar_7z_bzip2_txt"] = 'tar + 7z (BZip2)'; ?> diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm index 31028a703c..95c51d0c15 100644 --- a/interface/web/sites/templates/web_backup_list.htm +++ b/interface/web/sites/templates/web_backup_list.htm @@ -1,12 +1,18 @@ +<h3><tmpl_var name="manual_backup_title_txt"></h3> +<button class="btn btn-default formbutton-default" type="button" onclick="ISPConfig.confirm_action('sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&make_backup=database&','{tmpl_var name='make_backup_confirm_txt'}');">{tmpl_var name="make_backup_database_txt"}</button> +<button class="btn btn-default formbutton-default" type="button" onclick="ISPConfig.confirm_action('sites/web_vhost_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&make_backup=web&','{tmpl_var name='make_backup_confirm_txt'}');">{tmpl_var name="make_backup_web_txt"}</button> + <tmpl_if name="msg"> - <div id="OKMsg"><p><tmpl_var name="msg"></p></div> + <div id="OKMsg" class="tab-content bg-success text-success text-center"><p><tmpl_var name="msg"></p></div> </tmpl_if> <tmpl_if name="error"> - <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div> + <div id="errorMsg" class="tab-content bg-danger text-danger text-center"> + <h4><tmpl_var name="error_txt"></h4> + <p><tmpl_var name="error"></p> + </div> </tmpl_if> <h3><tmpl_var name="list_head_txt"></h3> - <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> <div class="table-wrapper marginTop15"> <table class="table table-auto table-striped" style="padding: 5px;"> @@ -14,6 +20,9 @@ <tr> <th data-column="date"><tmpl_var name="date_txt"></th> <th data-column="backup_type"><tmpl_var name="backup_type_txt"></th> + <th data-column="backup_format"><tmpl_var name="backup_format_txt"></th> + <th data-column="backup_job"><tmpl_var name="backup_job_txt"></th> + <th data-column="backup_encrypted"><tmpl_var name="backup_is_encrypted_txt"></th> <th data-column="filename"><tmpl_var name="filename_txt"></th> <th data-column="filesize"><tmpl_var name="filesize_txt"></th> <th class="small-col text-right">{tmpl_var name='search_limit'}</th> @@ -24,6 +33,9 @@ <tr> <td>{tmpl_var name="date"}</td> <td>{tmpl_var name="backup_type"}</td> + <td>{tmpl_var name="backup_format"}</td> + <td>{tmpl_var name="backup_job"}</td> + <td>{tmpl_var name="backup_encrypted"}</td> <td>{tmpl_var name="filename"}</td> <td>{tmpl_var name="filesize"}</td> <td class="text-center"> diff --git a/interface/web/sites/templates/web_vhost_domain_backup.htm b/interface/web/sites/templates/web_vhost_domain_backup.htm index c31a579fc2..b28b830188 100644 --- a/interface/web/sites/templates/web_vhost_domain_backup.htm +++ b/interface/web/sites/templates/web_vhost_domain_backup.htm @@ -29,7 +29,53 @@ <label for="backup_excludes" class="col-sm-3 control-label">{tmpl_var name='backup_excludes_txt'}</label> <div class="col-sm-6"><input type="text" name="backup_excludes" id="backup_excludes" value="{tmpl_var name='backup_excludes'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='backup_excludes_note_txt'} </div></div> - + + <legend>{tmpl_var name='backup_compression_options_txt'}</legend> + <div class="tab-content"> + {tmpl_var name='backup_format_web_note_txt'} + </div> + <tmpl_if name="missing_utils"> + <div class="tab-content bg-warning text-warning"> + {tmpl_var name='backup_missing_utils_txt'} {tmpl_var name='missing_utils'} + </div> + </tmpl_if> + <div class="form-group"> + <label for="backup_format_web" class="col-sm-3 control-label">{tmpl_var name='backup_format_web_txt'}</label> + <div class="col-sm-9"> + <select name="backup_format_web" id="backup_format_web" class="form-control"> + {tmpl_var name='backup_format_web'} + </select> + </div> + </div> + <div class="form-group"> + <label for="backup_format_db" class="col-sm-3 control-label">{tmpl_var name='backup_format_db_txt'}</label> + <div class="col-sm-9"> + <select name="backup_format_db" id="backup_format_db" class="form-control"> + {tmpl_var name='backup_format_db'} + </select> + </div> + </div> + + <legend>{tmpl_var name='backup_encryption_options_txt'}</legend> + <div class="tab-content"> + {tmpl_var name='backup_encryption_note_txt'} + </div> + <div class="form-group"> + <label class="col-sm-3 control-label"> + {tmpl_var name='backup_enable_encryption_txt'} + </label> + <div class="col-sm-9"> + {tmpl_var name="backup_encrypt"} + </div> + </div> + <div class="form-group"> + <label for="backup_password" class="col-sm-3 control-label"> + {tmpl_var name='backup_password_txt'} + </label> + <div class="col-sm-9"> + <input type="text" name="backup_password" id="backup_password" value="{tmpl_var name='backup_password'}" class="form-control" /> + </div> + </div> {tmpl_var name='backup_records'} diff --git a/remoting_client/API-docs/sites_database_add.html b/remoting_client/API-docs/sites_database_add.html index acf53e7bc0..143d034721 100644 --- a/remoting_client/API-docs/sites_database_add.html +++ b/remoting_client/API-docs/sites_database_add.html @@ -31,6 +31,8 @@ <p class="margin"> remote_ips (<span class="paratype">text</span>)</p> <p class="margin"> backup_interval (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> backup_copies (<span class="paratype">int(11)</span>)</p> +<p class="margin"> backup_format_web (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> backup_format_db (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> <p class="headgrp">Output: </p> <p class="margin"> Returns the ID of the newly added database.</p> diff --git a/remoting_client/API-docs/sites_web_aliasdomain_add.html b/remoting_client/API-docs/sites_web_aliasdomain_add.html index 12e313efcc..688b6cd139 100644 --- a/remoting_client/API-docs/sites_web_aliasdomain_add.html +++ b/remoting_client/API-docs/sites_web_aliasdomain_add.html @@ -59,6 +59,8 @@ <p class="margin"> custom_php_ini (<span class="paratype">mediumtext</span>)</p> <p class="margin"> backup_interval (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> backup_copies (<span class="paratype">int(11)</span>)</p> +<p class="margin"> backup_format_web (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> backup_format_db (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> traffic_quota_lock (<span class="paratype">enum('n','y')</span>)</p> <p class="headgrp">Output: </p> diff --git a/remoting_client/API-docs/sites_web_aliasdomain_update.html b/remoting_client/API-docs/sites_web_aliasdomain_update.html index 53daaa2b2b..52b118f58b 100644 --- a/remoting_client/API-docs/sites_web_aliasdomain_update.html +++ b/remoting_client/API-docs/sites_web_aliasdomain_update.html @@ -60,6 +60,8 @@ <p class="margin"> custom_php_ini (<span class="paratype">mediumtext</span>)</p> <p class="margin"> backup_interval (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> backup_copies (<span class="paratype">int(11)</span>)</p> +<p class="margin"> backup_format_web (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> backup_format_db (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> traffic_quota_lock (<span class="paratype">enum('n','y')</span>)</p> <b>Output: </b> diff --git a/remoting_client/API-docs/sites_web_subdomain_add.html b/remoting_client/API-docs/sites_web_subdomain_add.html index 3e884f4ec7..b2c5404a04 100644 --- a/remoting_client/API-docs/sites_web_subdomain_add.html +++ b/remoting_client/API-docs/sites_web_subdomain_add.html @@ -59,6 +59,8 @@ <p class="margin"> custom_php_ini (<span class="paratype">mediumtext</span>)</p> <p class="margin"> backup_interval (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> backup_copies (<span class="paratype">int(11)</span>)</p> +<p class="margin"> backup_format_web (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> backup_format_db (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> traffic_quota_lock (<span class="paratype">enum('n','y')</span>)</p> <p class="headgrp">Output: </p> diff --git a/remoting_client/API-docs/sites_web_subdomain_update.html b/remoting_client/API-docs/sites_web_subdomain_update.html index 4563912b59..a6b47245d6 100644 --- a/remoting_client/API-docs/sites_web_subdomain_update.html +++ b/remoting_client/API-docs/sites_web_subdomain_update.html @@ -59,6 +59,8 @@ <p class="margin"> custom_php_ini (<span class="paratype">mediumtext</span>)</p> <p class="margin"> backup_interval (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> backup_copies (<span class="paratype">int(11)</span>)</p> +<p class="margin"> backup_format_web (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> backup_format_db (<span class="paratype">varchar(255)</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> traffic_quota_lock (<span class="paratype">enum('n','y')</span>)</p> <b>Output: </b> diff --git a/remoting_client/examples/sites_database_add.php b/remoting_client/examples/sites_database_add.php index c63ad551eb..9de1e6674b 100644 --- a/remoting_client/examples/sites_database_add.php +++ b/remoting_client/examples/sites_database_add.php @@ -28,6 +28,8 @@ try { 'remote_ips' => '', 'backup_interval' => 'none', 'backup_copies' => 1, + 'backup_format_web' => 'default', + 'backup_format_db' => 'gzip', 'active' => 'y' ); diff --git a/remoting_client/examples/sites_web_aliasdomain_add.php b/remoting_client/examples/sites_web_aliasdomain_add.php index c459e47b87..602b273dd1 100644 --- a/remoting_client/examples/sites_web_aliasdomain_add.php +++ b/remoting_client/examples/sites_web_aliasdomain_add.php @@ -57,6 +57,8 @@ try { 'custom_php_ini' => '', 'backup_interval' => '', 'backup_copies' => 1, + 'backup_format_web' => 'default', + 'backup_format_db' => 'gzip', 'active' => 'y', 'traffic_quota_lock' => 'n' ); diff --git a/remoting_client/examples/sites_web_domain_add.php b/remoting_client/examples/sites_web_domain_add.php index 1ddd21e136..0ee462ab7a 100644 --- a/remoting_client/examples/sites_web_domain_add.php +++ b/remoting_client/examples/sites_web_domain_add.php @@ -58,6 +58,8 @@ try { 'custom_php_ini' => '', 'backup_interval' => '', 'backup_copies' => 1, + 'backup_format_web' => 'default', + 'backup_format_db' => 'gzip', 'active' => 'y', 'traffic_quota_lock' => 'n', 'http_port' => '80', diff --git a/remoting_client/examples/sites_web_subdomain_add.php b/remoting_client/examples/sites_web_subdomain_add.php index ac319388f0..c5a92b4703 100644 --- a/remoting_client/examples/sites_web_subdomain_add.php +++ b/remoting_client/examples/sites_web_subdomain_add.php @@ -57,6 +57,8 @@ try { 'custom_php_ini' => '', 'backup_interval' => '', 'backup_copies' => 1, + 'backup_format_web' => 'default', + 'backup_format_db' => 'gzip', 'active' => 'y', 'traffic_quota_lock' => 'n' ); diff --git a/server/backup-now.php b/server/backup-now.php new file mode 100644 index 0000000000..aa73a84369 --- /dev/null +++ b/server/backup-now.php @@ -0,0 +1,108 @@ +<?php + +/* +Copyright (c) 2007-2016, Till Brehm, projektfarm Gmbh +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. +*/ + +define('SCRIPT_PATH', dirname($_SERVER["SCRIPT_FILENAME"])); +require SCRIPT_PATH."/lib/config.inc.php"; +require SCRIPT_PATH."/lib/app.inc.php"; + +set_time_limit(0); +ini_set('error_reporting', E_ALL & ~E_NOTICE); + +/** + * Prints usage info + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ +function printUsageInfo(){ + echo <<<EOT +Usage: + php backup-now.php --id=<4> [--type=<all>] +Options: + --id id of the website to backup. + --type backup type: all, web or mysql. Default is all. + +EOT; +} + +/** + * Makes a backup + * @param int $domain_id id of the domain + * @param string $type type: mysql, web or all + * @return bool true if success + * @uses backup::run_backup() to make backups + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ +function makeBackup($domain_id, $type) +{ + global $app; + + echo "Making backup of website id=" . $domain_id . ", type=" . $type . ", please wait...\n"; + + // Load required class + $app->load('backup'); + + switch ($type) { + case "all": + $success = backup::run_backup($domain_id, "web", "manual"); + $success = $success && backup::run_backup($domain_id, "mysql", "manual"); + break; + case "mysql": + $success = backup::run_backup($domain_id, "mysql", "manual"); + break; + case "web": + $success = backup::run_backup($domain_id, "web", "manual"); + break; + default: + echo "Unknown format=" . $type . "\n"; + printUsageInfo(); + $success = false; + } + return $success; +} + +//** Get commandline options +$cmd_opt = getopt('', array('id::', 'type::')); +$id = filter_var($cmd_opt['id'], FILTER_VALIDATE_INT);; +if (!isset($cmd_opt['id']) || !is_int($id)) { + printUsageInfo(); + exit(1); +} + +if (isset($cmd_opt['type']) && !empty($cmd_opt['type'])) { + $type = $cmd_opt['type']; +} else + $type = "all"; + +$success = makeBackup($id, $type); + +echo "All operations finished, status " . ($success ? "success" : "failed") . ".\n"; + +exit($success ? 0 : 2); + +?> diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index 146f2465c0..ec8b1668d1 100644 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -36,6 +36,10 @@ class app { var $loaded_modules = array(); var $loaded_plugins = array(); var $_calling_script = ''; + /** + * @var db + */ + public $db; function __construct() { diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php new file mode 100644 index 0000000000..ea959a2f9c --- /dev/null +++ b/server/lib/classes/backup.inc.php @@ -0,0 +1,1452 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +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. +*/ + +/** + * Class backup + * All code that makes actual backup and restore of web files and database is here. + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup::run_backup() to run a single backup + * @see backup::run_all_backups() to run all backups + * @see backup::restoreBackupDatabase() to restore a database + * @see backup::restoreBackupWebFiles() to restore web files + */ +class backup +{ + /** + * Returns file extension for specified backup format + * @param string $format backup format + * @return string|null + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function getBackupDbExtension($format) + { + $prefix = '.sql'; + switch ($format) { + case 'gzip': + return $prefix . '.gz'; + case 'bzip2': + return $prefix . '.bz2'; + case 'xz': + return $prefix . '.xz'; + case 'zip': + case 'zip_bzip2': + return '.zip'; + case 'rar': + return '.rar'; + } + if (strpos($format, "7z_") === 0) { + return $prefix . '.7z'; + } + return null; + } + + /** + * Returns file extension for specified backup format + * @param string $format backup format + * @return string|null + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function getBackupWebExtension($format) + { + switch ($format) { + case 'tar_gzip': + return '.tar.gz'; + case 'tar_bzip2': + return '.tar.bz2'; + case 'tar_xz': + return '.tar.xz'; + case 'zip': + case 'zip_bzip2': + return '.zip'; + case 'rar': + return '.rar'; + } + if (strpos($format, "tar_7z_") === 0) { + return '.tar.7z'; + } + return null; + } + + /** + * Sets file ownership to $web_user for all files and folders except log, ssl and web/stats + * @param string $web_document_root + * @param string $web_user + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function restoreFileOwnership($web_document_root, $web_user) + { + global $app; + + $app->log('Restoring permissions for ' . $web_document_root, LOGLEVEL_DEBUG); + $app->system->exec_safe('cd ? && find . -not -path "./web/stats/*" -and -not -path "./log" -and -not -path "./log/*" -and -not -path "./ssl" -and -not -path "./ssl/*" -and -not -path "." -exec chown ?:? {} \;', $web_document_root, $web_user, $web_user); + } + + /** + * Returns default backup format used in previous versions of ISPConfig + * @param string $backup_mode + * @param string $backup_type + * @return string + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function getDefaultBackupFormat($backup_mode, $backup_type) + { + //We have a backup from old version of ISPConfig + switch ($backup_type) { + case 'mysql': + return 'gzip'; + case 'web': + return ($backup_mode == 'userzip') ? 'zip' : 'tar_gzip'; + } + return ""; + } + + /** + * Restores a database backup. + * The backup directory must be mounted before calling this method. + * @param string $backup_format + * @param string $password password for encrypted backup or empty string if archive is not encrypted + * @param string $backup_dir + * @param string $filename + * @param string $backup_mode + * @param string $backup_type + * @return bool true if succeeded + * @see backup_plugin::mount_backup_dir() + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + public static function restoreBackupDatabase($backup_format, $password, $backup_dir, $filename, $backup_mode, $backup_type) + { + global $app; + + //* Load sql dump into db + include 'lib/mysql_clientdb.conf'; + + if (empty($backup_format)) { + $backup_format = self::getDefaultBackupFormat($backup_mode, $backup_type); + } + $extension = self::getBackupDbExtension($backup_format); + if (!empty($extension)) { + //Replace dots for preg_match search + $extension = str_replace('.', '\.', $extension); + } + $success = false; + $full_filename = $backup_dir . '/' . $filename; + + $app->log('Restoring MySQL backup ' . $full_filename . ', backup format "' . $backup_format . '", backup mode "' . $backup_mode . '"', LOGLEVEL_DEBUG); + + if (file_exists($full_filename) && !empty($extension)) { + preg_match('@^(manual-)?db_(?P<db>.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}' . $extension . '$@', $filename, $matches); + if (!isset($matches['db']) || empty($matches['db'])) { + $app->log('Failed to detect database name during restore of ' . $full_filename, LOGLEVEL_ERROR); + return false; + } + $db_name = $matches['db']; + switch ($backup_format) { + case "gzip": + $command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?"; + break; + case "zip": + case "zip_bzip2": + $command = "unzip -qq -p -P " . escapeshellarg($password) . " ? | mysql -h ? -u ? -p? ?"; + break; + case "bzip2": + $command = "bunzip2 -q -c ? | mysql -h ? -u ? -p? ?"; + break; + case "xz": + $command = "unxz -q -q -c ? | mysql -h ? -u ? -p? ?"; + break; + case "rar": + //First, test that the archive is correct and we have a correct password + $options = self::getUnrarOptions($password); + $app->system->exec_safe("rar t " . $options . " ?", $full_filename); + if ($app->system->last_exec_retcode() == 0) { + $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG); + $command = "rar x " . $options. " ? | mysql -h ? -u ? -p? ?"; + } + break; + } + if (strpos($backup_format, "7z_") === 0) { + $options = self::get7zDecompressOptions($password); + //First, test that the archive is correct and we have a correct password + $app->system->exec_safe("7z t " . $options . " ?", $full_filename); + if ($app->system->last_exec_retcode() == 0) { + $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG); + $command = "7z x " . $options . " -so ? | mysql -h ? -u ? -p? ?"; + } else + $command = null; + } + if (!empty($command)) { + /** @var string $clientdb_host */ + /** @var string $clientdb_user */ + /** @var string $clientdb_password */ + $app->system->exec_safe($command, $full_filename, $clientdb_host, $clientdb_user, $clientdb_password, $db_name); + $retval = $app->system->last_exec_retcode(); + if ($retval == 0) { + $app->log('Restored MySQL backup ' . $full_filename, LOGLEVEL_DEBUG); + $success = true; + } else { + $app->log('Failed to restore web backup ' . $full_filename . ', exit code ' . $retval, LOGLEVEL_ERROR); + } + } else { + $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG); + } + } else { + $app->log('Failed to process MySQL backup ' . $full_filename, LOGLEVEL_ERROR); + } + unset($clientdb_host); + unset($clientdb_user); + unset($clientdb_password); + + return $success; + } + + /** + * Restores web files backup. + * The backup directory must be mounted before calling this method. + * @param string $backup_format + * @param string $password password for encrypted backup or empty string if archive is not encrypted + * @param string $backup_dir + * @param string $filename + * @param string $backup_mode + * @param string $backup_type + * @param string $web_root + * @param string $web_user + * @param string $web_group + * @return bool true if succeed + * @see backup_plugin::mount_backup_dir() + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + public static function restoreBackupWebFiles($backup_format, $password, $backup_dir, $filename, $backup_mode, $backup_type, $web_root, $web_user, $web_group) + { + global $app; + + if (empty($backup_format)) { + $backup_format = self::getDefaultBackupFormat($backup_mode, $backup_type); + } + $full_filename = $backup_dir . '/' . $filename; + $result = false; + + $app->log('Restoring web backup ' . $full_filename . ', backup format "' . $backup_format . '", backup mode "' . $backup_mode . '"', LOGLEVEL_DEBUG); + + if (!empty($backup_format)) { + $app->system->web_folder_protection($web_root, false); + if ($backup_mode == 'userzip' || $backup_mode == 'rootgz') { + $user_mode = $backup_mode == 'userzip'; + $filename = $user_mode ? ($web_root . '/backup/' . $filename) : $full_filename; + + if (file_exists($full_filename) && $web_root != '' && $web_root != '/' && !stristr($full_filename, '..') && !stristr($full_filename, 'etc')) { + if ($user_mode) { + if (file_exists($filename)) rename($filename, $filename . '.bak'); + copy($full_filename, $filename); + chgrp($filename, $web_group); + } + $user_prefix_cmd = $user_mode ? 'sudo -u ' . escapeshellarg($web_user) : ''; + $success = false; + $retval = 0; + switch ($backup_format) { + case "tar_gzip": + case "tar_bzip2": + case "tar_xz": + $command = $user_prefix_cmd . ' tar xf ? --directory ?'; + $app->system->exec_safe($command, $filename, $web_root); + $retval = $app->system->last_exec_retcode(); + $success = ($retval == 0 || $retval == 2); + break; + case "zip": + case "zip_bzip2": + $command = $user_prefix_cmd . ' unzip -qq -P ' . escapeshellarg($password) . ' -o ? -d ? 2> /dev/null'; + $app->system->exec_safe($command, $filename, $web_root); + $retval = $app->system->last_exec_retcode(); + /* + * Exit code 50 can happen when zip fails to overwrite files that do not + * belong to selected user, so we can consider this situation as success + * with warnings. + */ + $success = ($retval == 0 || $retval == 50); + if ($success) { + self::restoreFileOwnership($web_root, $web_user); + } + break; + case 'rar': + $options = self::getUnRarOptions($password); + //First, test that the archive is correct and we have a correct password + $command = $user_prefix_cmd . " rar t " . $options . " ? ?"; + //Rar requires trailing slash + $app->system->exec_safe($command, $filename, $web_root . '/'); + $success = ($app->system->last_exec_retcode() == 0); + if ($success) { + //All good, now we can extract + $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG); + $command = $user_prefix_cmd . " rar x " . $options . " ? ?"; + //Rar requires trailing slash + $app->system->exec_safe($command, $filename, $web_root . '/'); + $retval = $app->system->last_exec_retcode(); + //Exit code 9 can happen when we have file permission errors, in this case some + //files will be skipped during extraction. + $success = ($retval == 0 || $retval == 1 || $retval == 9); + } else { + $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG); + } + break; + } + if (strpos($backup_format, "tar_7z_") === 0) { + $options = self::get7zDecompressOptions($password); + //First, test that the archive is correct and we have a correct password + $command = $user_prefix_cmd . " 7z t " . $options . " ?"; + $app->system->exec_safe($command, $filename); + $success = ($app->system->last_exec_retcode() == 0); + if ($success) { + //All good, now we can extract + $app->log('Archive test passed for ' . $full_filename, LOGLEVEL_DEBUG); + $command = $user_prefix_cmd . " 7z x " . $options . " -so ? | tar xf - --directory ?"; + $app->system->exec_safe($command, $filename, $web_root); + $retval = $app->system->last_exec_retcode(); + $success = ($retval == 0 || $retval == 2); + } else { + $app->log('Archive test failed for ' . $full_filename, LOGLEVEL_DEBUG); + } + } + if ($user_mode) { + unlink($filename); + if (file_exists($filename . '.bak')) rename($filename . '.bak', $filename); + } + if ($success) { + $app->log('Restored web backup ' . $full_filename, LOGLEVEL_DEBUG); + $result = true; + } else { + $app->log('Failed to restore web backup ' . $full_filename . ', exit code ' . $retval, LOGLEVEL_ERROR); + } + } + } else { + $app->log('Failed to restore web backup ' . $full_filename . ', backup mode "' . $backup_mode . '" not recognized.', LOGLEVEL_DEBUG); + } + $app->system->web_folder_protection($web_root, true); + } else { + $app->log('Failed to restore web backup ' . $full_filename . ', backup format not recognized.', LOGLEVEL_DEBUG); + } + return $result; + } + + /** + * Returns a compression method, for example returns bzip2 for tar_7z_bzip2 + * @param string $format + * @return false|string + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function getCompressionMethod($format) + { + $pos = strrpos($format, "_"); + return substr($format, $pos + 1); + } + + /** + * Returns default options for compressing rar + * @param string $backup_tmp temporary directory that rar can use + * @param string|null $password backup password if any + * @return string options for rar + */ + protected static function getRarOptions($backup_tmp, $password) + { + /** + * All rar options are listed here: + * https://documentation.help/WinRAR/HELPCommands.htm + * https://documentation.help/WinRAR/HELPSwitches.htm + * Some compression profiles and different versions of rar may use different default values, so it's better + * to specify everything explicitly. + * The difference between compression methods is not big in terms of file size, but is huge in terms of + * CPU and RAM consumption. Therefore it makes sense only to use fastest the compression method. + */ + $options = array( + /** + * Start with fastest compression method (least compressive) + */ + '-m1', + + /** + * Disable solid archiving. + * Never use solid archive: it's very slow and requires to read and sort all files first + */ + '-S-', + + /** + * Ignore default profile and environment variables + * https://documentation.help/WinRAR/HELPSwCFGm.htm + */ + '-CFG-', + + /** + * Disable error messages output + * https://documentation.help/WinRAR/HELPSwINUL.htm + */ + '-inul', + + /** + * Lock archive: this switch prevents any further archive modifications by rar + * https://documentation.help/WinRAR/HELPSwK.htm + */ + '-k', + + /** + * Create archive in RAR 5.0 format + * https://documentation.help/WinRAR/HELPSwMA.htm + */ + '-ma', + + /** + * Set dictionary size to 16Mb. + * When archiving, rar needs about 6x memory of specified dictionary size. + * https://documentation.help/WinRAR/HELPSwMD.htm + */ + '-md16m', + + /** + * Use only one CPU thread + * https://documentation.help/WinRAR/HELPSwMT.htm + */ + '-mt1', + + /** + * Use this switch when archiving to save file security information and when extracting to restore it. + * It stores file owner, group, file permissions and audit information. + * https://documentation.help/WinRAR/HELPSwOW.htm + */ + '-ow', + + /** + * Overwrite all + * https://documentation.help/WinRAR/HELPSwO.htm + */ + '-o+', + + /** + * Exclude base folder from names. + * Required for correct directory structure inside archive + * https://documentation.help/WinRAR/HELPSwEP1.htm + */ + '-ep1', + + /** + * Never add quick open information. + * This information is useful only if you want to read the contents of archive (list of files). + * Besides it can increase the archive size. As we need the archive only for future complete extraction, + * there's no need to use this information at all. + * https://documentation.help/WinRAR/HELPSwQO.htm + */ + '-qo-', + + /** + * Set lowest task priority (1) and 10ms sleep time between read/write operations. + * https://documentation.help/WinRAR/HELPSwRI.htm + */ + '-ri1:10', + + /** + * Temporary folder + * https://documentation.help/WinRAR/HELPSwW.htm + */ + '-w' . escapeshellarg($backup_tmp), + + /** + * Assume Yes on all queries + * https://documentation.help/WinRAR/HELPSwY.htm + */ + '-y', + ); + + $options = implode(" ", $options); + + if (!empty($password)) { + /** + * Encrypt both file data and headers + * https://documentation.help/WinRAR/HELPSwHP.htm + */ + $options .= ' -HP' . escapeshellarg($password); + } + return $options; + } + + /** + * Returns default options for decompressing rar + * @param string|null $password backup password if any + * @return string options for rar + */ + protected static function getUnRarOptions($password) + { + /** + * All rar options are listed here: + * https://documentation.help/WinRAR/HELPCommands.htm + * https://documentation.help/WinRAR/HELPSwitches.htm + * Some compression profiles and different versions of rar may use different default values, so it's better + * to specify everything explicitly. + * The difference between compression methods is not big in terms of file size, but is huge in terms of + * CPU and RAM consumption. Therefore it makes sense only to use fastest the compression method. + */ + $options = array( + /** + * Ignore default profile and environment variables + * https://documentation.help/WinRAR/HELPSwCFGm.htm + */ + '-CFG-', + + /** + * Disable error messages output + * https://documentation.help/WinRAR/HELPSwINUL.htm + */ + '-inul', + + /** + * Use only one CPU thread + * https://documentation.help/WinRAR/HELPSwMT.htm + */ + '-mt1', + + /** + * Use this switch when archiving to save file security information and when extracting to restore it. + * It stores file owner, group, file permissions and audit information. + * https://documentation.help/WinRAR/HELPSwOW.htm + */ + '-ow', + + /** + * Overwrite all + * https://documentation.help/WinRAR/HELPSwO.htm + */ + '-o+', + + /** + * Set lowest task priority (1) and 10ms sleep time between read/write operations. + * https://documentation.help/WinRAR/HELPSwRI.htm + */ + '-ri1:10', + + /** + * Assume Yes on all queries + * https://documentation.help/WinRAR/HELPSwY.htm + */ + '-y', + ); + + $options = implode(" ", $options); + + if (!empty($password)) { + $options .= ' -P' . escapeshellarg($password); + } + return $options; + } + + /** + * Returns compression options for 7z + * @param string $format compression format used in 7z + * @param string $password password if any + * @return string + */ + protected static function get7zCompressOptions($format, $password) + { + $method = self::getCompressionMethod($format); + /** + * List of 7z options is here: + * https://linux.die.net/man/1/7z + * https://sevenzip.osdn.jp/chm/cmdline/syntax.htm + * https://sevenzip.osdn.jp/chm/cmdline/switches/ + */ + $options = array( + /** + * Use 7z format (container) + */ + '-t7z', + + /** + * Compression method (LZMA, LZMA2, etc.) + * https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm + */ + '-m0=' . $method, + + /** + * Fastest compression method + */ + '-mx=1', + + /** + * Disable solid mode + */ + '-ms=off', + + /** + * Disable multithread mode, use less CPU + */ + '-mmt=off', + + /** + * Disable multithread mode for filters, use less CPU + */ + '-mmtf=off', + + /** + * Disable progress indicator + */ + '-bd', + + /** + * Assume yes on all queries + * https://sevenzip.osdn.jp/chm/cmdline/switches/yes.htm + */ + '-y', + ); + $options = implode(" ", $options); + switch (strtoupper($method)) { + case 'LZMA': + case 'LZMA2': + /** + * Dictionary size is 5Mb. + * 7z can use 12 times more RAM + */ + $options .= ' -md=5m'; + break; + case 'PPMD': + /** + * Dictionary size is 64Mb. + * It's the maximum RAM that 7z is allowed to use. + */ + $options .= ' -mmem=64m'; + break; + } + if (!empty($password)) { + $options .= ' -mhe=on -p' . escapeshellarg($password); + } + return $options; + } + + /** + * Returns decompression options for 7z + * @param string $password password if any + * @return string + */ + protected static function get7zDecompressOptions($password) + { + /** + * List of 7z options is here: + * https://linux.die.net/man/1/7z + * https://sevenzip.osdn.jp/chm/cmdline/syntax.htm + * https://sevenzip.osdn.jp/chm/cmdline/switches/ + */ + $options = array( + /** + * Disable multithread mode, use less CPU + */ + '-mmt=off', + + /** + * Disable progress indicator + */ + '-bd', + + /** + * Assume yes on all queries + * https://sevenzip.osdn.jp/chm/cmdline/switches/yes.htm + */ + '-y', + ); + $options = implode(" ", $options); + if (!empty($password)) { + $options .= ' -p' . escapeshellarg($password); + } + return $options; + } + + /** + * Clears expired backups. + * The backup directory must be mounted before calling this method. + * @param integer $server_id + * @param integer $web_id id of the website + * @param integer $max_backup_copies number of backup copies to keep, all files beyond the limit will be erased + * @param string $backup_dir directory to scan + * @return bool + * @see backup_plugin::backups_garbage_collection() call this method first + * @see backup_plugin::mount_backup_dir() + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function clearBackups($server_id, $web_id, $max_backup_copies, $backup_dir) + { + global $app; + + $files = self::get_files($backup_dir); + usort($files, function ($a, $b) use ($backup_dir) { + $time_a = filemtime($backup_dir . '/' . $a); + $time_b = filemtime($backup_dir . '/' . $b); + return ($time_a > $time_b) ? -1 : 1; + }); + + $db_list = array($app->db); + if ($app->db->dbHost != $app->dbmaster->dbHost) + array_push($db_list, $app->dbmaster); + + //Delete old files that are beyond the limit + for ($n = $max_backup_copies; $n < sizeof($files); $n++) { + $filename = $files[$n]; + $full_filename = $backup_dir . '/' . $filename; + $app->log('Backup file ' . $full_filename . ' is beyond the limit of ' . $max_backup_copies . " copies and will be deleted from disk and database", LOGLEVEL_DEBUG); + $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; + foreach ($db_list as $db) { + $db->query($sql, $server_id, $web_id, $filename); + } + @unlink($full_filename); + } + return true; + } + + /** + * Garbage collection: deletes records from database about files that do not exist and deletes untracked files. + * The backup directory must be mounted before calling this method. + * @param int $server_id + * @param string|null $backup_type if defined then process only backups of this type + * @param string|null $domain_id if defined then process only backups that belong to this domain + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup_plugin::mount_backup_dir() + */ + protected static function backups_garbage_collection($server_id, $backup_type = null, $domain_id = null) + { + global $app; + + //First check that all records in database have related files and delete records without files on disk + $args = array(); + $args_domains = array(); + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $backup_dir = trim($server_config['backup_dir']); + $sql = "SELECT * FROM web_backup WHERE server_id = ?"; + $sql_domains = "SELECT domain_id,system_user,system_group,backup_interval FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')"; + array_push($args, $server_id); + array_push($args_domains, $server_id); + if (!empty($backup_type)) { + $sql .= " AND backup_type = ?"; + array_push($args, $backup_type); + } + if (!empty($domain_id)) { + $sql .= " AND parent_domain_id = ?"; + $sql_domains .= " AND domain_id = ?"; + array_push($args, $domain_id); + array_push($args_domains, $domain_id); + } + array_unshift($args, $sql); + array_unshift($args_domains, $sql_domains); + + $db_list = array($app->db); + if ($app->db->dbHost != $app->dbmaster->dbHost) + array_push($db_list, $app->dbmaster); + + foreach ($db_list as $db) { + $backups = call_user_func_array(array($db, "queryAllRecords"), $args); + foreach ($backups as $backup) { + $backup_file = $backup_dir . '/web' . $backup['parent_domain_id'] . '/' . $backup['filename']; + if (!is_file($backup_file)) { + $app->log('Backup file ' . $backup_file . ' does not exist on disk, deleting this entry from database', LOGLEVEL_DEBUG); + $sql = "DELETE FROM web_backup WHERE backup_id = ?"; + $db->query($sql, $backup['backup_id']); + } + } + } + + foreach ($db_list as $db) { + $domains = call_user_func_array(array($db, "queryAllRecords"), $args_domains); + foreach ($domains as $rec) { + $domain_id = $rec['domain_id']; + $domain_backup_dir = $backup_dir . '/web' . $domain_id; + $files = self::get_files($domain_backup_dir); + + //Delete files that are in backup directory, but do not exist in database + if (!empty($files)) { + $sql = "SELECT backup_id,filename FROM web_backup WHERE server_id = ? AND parent_domain_id = ?"; + $backups = $db->queryAllRecords($sql, $server_id, $domain_id); + foreach ($backups as $backup) { + if (!in_array($backup['filename'],$files)) { + $backup_file = $backup_dir . '/web' . $domain_id . '/' . $backup['filename']; + $app->log('Backup file ' . $backup_file . ' is not contained in database, deleting this file from disk', LOGLEVEL_DEBUG); + @unlink($backup_file); + } + } + } + + //Remove backupdir symlink and create as directory instead + $web_path = $rec['document_root']; + $app->system->web_folder_protection($web_path, false); + + $backup_download_dir = $web_path . '/backup'; + if (is_link($backup_download_dir)) { + unlink($backup_download_dir); + } + if (!is_dir($backup_download_dir)) { + mkdir($backup_download_dir); + chown($backup_download_dir, $rec['system_user']); + chgrp($backup_download_dir, $rec['system_group']); + } + + $app->system->web_folder_protection($web_path, true); + + // delete old files from backup download dir (/var/www/example.com/backup) + if (is_dir($backup_download_dir)) { + $dir_handle = dir($backup_download_dir); + $now = time(); + while (false !== ($entry = $dir_handle->read())) { + $full_filename = $backup_download_dir . '/' . $entry; + if ($entry != '.' && $entry != '..' && is_file($full_filename)) { + // delete files older than 3 days + if ($now - filemtime($full_filename) >= 60 * 60 * 24 * 3) { + $app->log('Backup file ' . $full_filename . ' is too old, deleting this file from disk', LOGLEVEL_DEBUG); + @unlink($full_filename); + } + } + } + $dir_handle->close(); + } + } + } + } + + /** + * Gets list of files in directory + * @param string $directory + * @param string[]|null $prefix_list filter files that have one of the prefixes. Use null for default filtering. + * @param string[]|null $endings_list filter files that have one of the endings. Use null for default filtering. + * @return string[] + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function get_files($directory, $prefix_list = null, $endings_list = null) + { + $default_prefix_list = array( + 'web', + 'manual-web', + 'db_', + 'manual-db_', + ); + $default_endings_list = array( + '.gz', + '.7z', + '.rar', + '.zip', + '.xz', + '.bz2', + ); + if (is_null($prefix_list)) + $prefix_list = $default_prefix_list; + if (is_null($endings_list)) + $endings_list = $default_endings_list; + + $dir_handle = dir($directory); + $files = array(); + while (false !== ($entry = $dir_handle->read())) { + $full_filename = $directory . '/' . $entry; + if ($entry != '.' && $entry != '..' && is_file($full_filename)) { + if (!empty($prefix_list)) { + $add = false; + foreach ($prefix_list as $prefix) { + if (substr($entry, 0, strlen($prefix)) == $prefix) { + $add = true; + break; + } + } + } else + $add = true; + if ($add && !empty($endings_list)) { + $add = false; + foreach ($endings_list as $ending) { + if (substr($entry, -strlen($ending)) == $ending) { + $add = true; + break; + } + } + } + if ($add) + array_push($files, $entry); + } + } + $dir_handle->close(); + + return $files; + } + + /** + * Generates excludes list for compressors + * @param string[] $backup_excludes + * @param string $arg + * @return string + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function generateExcludeList($backup_excludes, $arg) + { + $excludes = implode(" " . $arg, $backup_excludes); + if (!empty($excludes)) { + $excludes = $arg . $excludes; + } + return $excludes; + } + + /** + * Runs a web compression routine + * @param string $format + * @param string[] $backup_excludes + * @param string $backup_mode + * @param string $web_path + * @param string $web_backup_dir + * @param string $web_backup_file + * @param string $web_user + * @param string $web_group + * @param string $http_server_user + * @param string $backup_tmp + * @param string|null $password + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function runWebCompression($format, $backup_excludes, $backup_mode, $web_path, $web_backup_dir, $web_backup_file, $web_user, $web_group, $http_server_user, $backup_tmp, $password) + { + global $app; + + $find_user_files = 'cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null'; + $excludes = self::generateExcludeList($backup_excludes, '--exclude='); + $tar_dir = 'tar pcf - ' . $excludes . ' --directory ? .'; + $tar_input = 'tar pcf --null -T -'; + + $app->log('Performing web files backup of ' . $web_path . ' in format ' . $format . ', mode ' . $backup_mode, LOGLEVEL_DEBUG); + switch ($format) { + case 'tar_gzip': + if ($app->system->is_installed('pigz')) { + //use pigz + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | ' . $tar_input . ' | pigz > ?', $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file); + } else { + //Standard casual behaviour of ISPConfig + $app->system->exec_safe($tar_dir . ' | pigz > ?', $web_path, $web_backup_dir . '/' . $web_backup_file); + } + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + } else { + //use gzip + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | tar pczf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file); + } else { + //Standard casual behaviour of ISPConfig + $app->system->exec_safe('tar pczf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path); + } + $exit_code = $app->system->last_exec_retcode(); + // tar can return 1 and still create valid backups + return ($exit_code == 0 || $exit_code == 1); + } + case 'zip': + case 'zip_bzip2': + $zip_options = ($format === 'zip_bzip2') ? ' -Z bzip2 ' : ''; + if (!empty($password)) { + $zip_options .= ' --password ' . escapeshellarg($password); + } + if ($backup_mode == 'user_zip') { + //Standard casual behaviour of ISPConfig + $app->system->exec_safe($find_user_files . ' | zip ' . $zip_options . ' -b ? ' . $excludes . ' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir . '/' . $web_backup_file); + } else { + //Use cd to have a correct directory structure inside the archive, extra options to zip hidden (dot) files + $app->system->exec_safe('cd ? && zip ' . $zip_options . ' -b ? ' . $excludes . ' --symlinks -r ? * .* -x "../*"', $web_path, $backup_tmp, $web_backup_dir . '/' . $web_backup_file); + } + $exit_code = $app->system->last_exec_retcode(); + // zip can return 12(due to harmless warnings) and still create valid backups + return ($exit_code == 0 || $exit_code == 12); + case 'tar_bzip2': + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | tar pcjf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file); + } else { + $app->system->exec_safe('tar pcjf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path); + } + $exit_code = $app->system->last_exec_retcode(); + // tar can return 1 and still create valid backups + return ($exit_code == 0 || $exit_code == 1); + case 'tar_xz': + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | tar pcJf ? --null -T -', $web_path, $web_user, $web_group, $http_server_user, $web_backup_dir . '/' . $web_backup_file); + } else { + $app->system->exec_safe('tar pcJf ? ' . $excludes . ' --directory ? .', $web_backup_dir . '/' . $web_backup_file, $web_path); + } + $exit_code = $app->system->last_exec_retcode(); + // tar can return 1 and still create valid backups + return ($exit_code == 0 || $exit_code == 1); + case 'rar': + $options = self::getRarOptions($backup_tmp,$password); + if ($backup_mode != 'user_zip') { + //Recurse subfolders, otherwise we will pass a list of files to compress + $options .= ' -r'; + } + $excludes = self::generateExcludeList($backup_excludes, '-x'); + $zip_command = 'rar a ' . $options . ' '.$excludes.' ?'; + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | ' . $zip_command . ' ? @', $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file); + } else { + $app->system->exec_safe('cd ? && ' . $zip_command . ' .', $web_path, $web_backup_dir . '/' . $web_backup_file); + } + $exit_code = $app->system->last_exec_retcode(); + return ($exit_code == 0 || $exit_code == 1); + } + if (strpos($format, "tar_7z_") === 0) { + $options = self::get7zCompressOptions($format, $password); + $zip_command = '7z a ' . $options . ' -si ?'; + if ($backup_mode == 'user_zip') { + $app->system->exec_safe($find_user_files . ' | ' . $tar_input . ' | '. $zip_command, $web_path, $web_user, $web_group, $http_server_user, $web_path, $web_backup_dir . '/' . $web_backup_file); + } else { + $app->system->exec_safe($tar_dir . ' | ' . $zip_command, $web_path, $web_backup_dir . '/' . $web_backup_file); + } + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + } + return false; + } + + /** + * Runs a database compression routine + * @param string $format + * @param string $db_backup_dir + * @param string $db_backup_file + * @param string $compressed_backup_file + * @param string $backup_tmp + * @param string|null $password + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function runDatabaseCompression($format, $db_backup_dir, $db_backup_file, $compressed_backup_file, $backup_tmp, $password) + { + global $app; + + $app->log('Performing database backup to file ' . $compressed_backup_file . ' in format ' . $format, LOGLEVEL_DEBUG); + switch ($format) { + case 'gzip': + if ($app->system->is_installed('pigz')) { + //use pigz + $zip_cmd = 'pigz'; + } else { + //use gzip + $zip_cmd = 'gzip'; + } + $app->system->exec_safe($zip_cmd . " -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file); + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + case 'zip': + case 'zip_bzip2': + $zip_options = ($format === 'zip_bzip2') ? ' -Z bzip2 ' : ''; + if (!empty($password)) { + $zip_options .= ' --password ' . escapeshellarg($password); + } + $app->system->exec_safe('zip ' . $zip_options . ' -j -b ? ? ?', $backup_tmp, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file); + $exit_code = $app->system->last_exec_retcode(); + // zip can return 12(due to harmless warnings) and still create valid backups + return ($exit_code == 0 || $exit_code == 12); + case 'bzip2': + $app->system->exec_safe("bzip2 -q -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file); + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + case 'xz': + $app->system->exec_safe("xz -q -q -c ? > ?", $db_backup_dir . '/' . $db_backup_file, $db_backup_dir . '/' . $compressed_backup_file); + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + case 'rar': + $options = self::getRarOptions($backup_tmp, $password); + $zip_command = 'rar a ' . $options . ' ? ?'; + $app->system->exec_safe($zip_command, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file); + $exit_code = $app->system->last_exec_retcode(); + return ($exit_code == 0 || $exit_code == 1); + } + if (strpos($format, "7z_") === 0) { + $options = self::get7zCompressOptions($format, $password); + $zip_command = '7z a ' . $options . ' ? ?'; + $app->system->exec_safe($zip_command, $db_backup_dir . '/' . $compressed_backup_file, $db_backup_dir . '/' . $db_backup_file); + $exit_code = $app->system->last_exec_retcode(); + return $exit_code == 0; + } + return false; + } + + /** + * Mounts the backup directory if required + * @param int $server_id + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup_plugin::unmount_backup_dir() + */ + public static function mount_backup_dir($server_id) + { + global $app; + + $server_config = $app->getconf->get_server_config($server_id, 'server'); + if ($server_config['backup_dir_is_mount'] == 'y') + return $app->system->mount_backup_dir($server_config['backup_dir']); + return true; + } + + /** + * Unmounts the backup directory if required + * @param int $server_id + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup_plugin::mount_backup_dir() + */ + public static function unmount_backup_dir($server_id) + { + global $app; + + $server_config = $app->getconf->get_server_config($server_id, 'server'); + if ($server_config['backup_dir_is_mount'] == 'y') + return $app->system->umount_backup_dir($server_config['backup_dir']); + return true; + } + + /** + * Makes backup of database. + * The backup directory must be mounted before calling this method. + * This method is for private use only, don't call this method unless you know what you're doing. + * @param array $web_domain + * @param string $backup_job type of backup job: manual or auto + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup_plugin::run_backup() recommeneded to use if you need to make backups + */ + protected static function make_database_backup($web_domain, $backup_job) + { + global $app; + + $server_id = intval($web_domain['server_id']); + $domain_id = intval($web_domain['domain_id']); + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $backup_dir = trim($server_config['backup_dir']); + $backup_tmp = trim($server_config['backup_tmp']); + $db_backup_dir = $backup_dir . '/web' . $domain_id; + $success = false; + + if (empty($backup_job)) + $backup_job = "auto"; + + $records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ?", $server_id, $domain_id); + if (empty($records)){ + $app->log('Skipping database backup for domain ' . $web_domain['domain_id'] . ', because no related databases found.', LOGLEVEL_ERROR); + return true; + } + + self::prepare_backup_dir($server_id, $web_domain); + + include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf'; + + //* Check mysqldump capabilities + exec('mysqldump --help', $tmp); + $mysqldump_routines = (strpos(implode($tmp), '--routines') !== false) ? '--routines' : ''; + unset($tmp); + + foreach ($records as $rec) { + $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : ''; + $backup_format_db = $web_domain['backup_format_db']; + if (empty($backup_format_db)) { + $backup_format_db = 'gzip'; + } + $backup_extension_db = self::getBackupDbExtension($backup_format_db); + + if (!empty($backup_extension_db)) { + //* Do the mysql database backup with mysqldump + $db_name = $rec['database_name']; + $db_file_prefix = 'db_' . $db_name . '_' . date('Y-m-d_H-i'); + $db_backup_file = $db_file_prefix . '.sql'; + $db_compressed_file = ($backup_job == 'manual' ? 'manual-' : '') . $db_file_prefix . $backup_extension_db; + $command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M " . $mysqldump_routines . " --result-file=? ?"; + /** @var string $clientdb_host */ + /** @var string $clientdb_user */ + /** @var string $clientdb_password */ + $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir . '/' . $db_backup_file, $db_name); + $exit_code = $app->system->last_exec_retcode(); + + //* Compress the backup + if ($exit_code == 0) { + $exit_code = self::runDatabaseCompression($backup_format_db, $db_backup_dir, $db_backup_file, $db_compressed_file, $backup_tmp, $password) ? 0 : 1; + if ($exit_code !== 0) + $app->log('Failed to make backup of database ' . $rec['database_name'], LOGLEVEL_ERROR); + } else { + $app->log('Failed to make backup of database ' . $rec['database_name'] . ', because mysqldump failed', LOGLEVEL_ERROR); + } + + if ($exit_code == 0) { + if (is_file($db_backup_dir . '/' . $db_compressed_file)) { + chmod($db_backup_dir . '/' . $db_compressed_file, 0750); + chown($db_backup_dir . '/' . $db_compressed_file, fileowner($db_backup_dir)); + chgrp($db_backup_dir . '/' . $db_compressed_file, filegroup($db_backup_dir)); + + //* Insert web backup record in database + $file_size = filesize($db_backup_dir . '/' . $db_compressed_file); + $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, backup_format, tstamp, filename, filesize, backup_password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + //Making compatible with previous versions of ISPConfig: + $sql_mode = ($backup_format_db == 'gzip') ? 'sqlgz' : ('sql' . $backup_format_db); + $app->db->query($sql, $server_id, $domain_id, 'mysql', $sql_mode, $backup_format_db, time(), $db_compressed_file, $file_size, $password); + if ($app->db->dbHost != $app->dbmaster->dbHost) + $app->dbmaster->query($sql, $server_id, $domain_id, 'mysql', $sql_mode, $backup_format_db, time(), $db_compressed_file, $file_size, $password); + $success = true; + } + } else { + if (is_file($db_backup_dir . '/' . $db_compressed_file)) unlink($db_backup_dir . '/' . $db_compressed_file); + } + //* Remove the uncompressed file + if (is_file($db_backup_dir . '/' . $db_backup_file)) unlink($db_backup_dir . '/' . $db_backup_file); + + //* Remove old backups + self::backups_garbage_collection($server_id, 'mysql', $domain_id); + self::clearBackups($server_id, $domain_id, intval($rec['backup_copies']), $db_backup_dir); + } else { + $app->log('Failed to process mysql backup format ' . $backup_format_db . ' for database ' . $rec['database_name'], LOGLEVEL_ERROR); + } + } + + unset($clientdb_host); + unset($clientdb_user); + unset($clientdb_password); + + return $success; + } + + /** + * Makes backup of web files. + * The backup directory must be mounted before calling this method. + * This method is for private use only, don't call this method unless you know what you're doing + * @param array $web_domain info about domain to backup, SQL record of table 'web_domain' + * @param string $backup_job type of backup job: manual or auto + * @return bool true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @see backup_plugin::mount_backup_dir() + * @see backup_plugin::run_backup() recommeneded to use if you need to make backups + */ + protected static function make_web_backup($web_domain, $backup_job) + { + global $app; + + $server_id = intval($web_domain['server_id']); + $domain_id = intval($web_domain['domain_id']); + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $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 (empty($backup_mode)) + $backup_mode = 'userzip'; + + $web_config = $app->getconf->get_server_config($server_id, 'web'); + $http_server_user = $web_config['user']; + + if (empty($backup_dir)) { + $app->log('Failed to make backup of web files for domain id ' . $domain_id . ' on server id ' . $server_id . ', because backup directory is not defined', LOGLEVEL_ERROR); + return false; + } + if (empty($backup_job)) + $backup_job = "auto"; + + $backup_format_web = $web_domain['backup_format_web']; + //Check if we're working with data saved in old version of ISPConfig + if (empty($backup_format_web)) { + $backup_format_web = 'default'; + } + if ($backup_format_web == 'default') { + if ($backup_mode == 'userzip') + $backup_format_web = 'zip'; + else + $backup_format_web = 'gzip'; + } + $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : ''; + $backup_extension_web = self::getBackupWebExtension($backup_format_web); + if (empty($backup_extension_web)) { + $app->log('Failed to make backup of web files, because of unknown backup format ' . $backup_format_web . ' for website ' . $web_domain['domain'], LOGLEVEL_ERROR); + return false; + } + + $web_path = $web_domain['document_root']; + $web_user = $web_domain['system_user']; + $web_group = $web_domain['system_group']; + $web_id = $web_domain['domain_id']; + + self::prepare_backup_dir($server_id, $web_domain); + $web_backup_dir = $backup_dir . '/web' . $web_id; + + $backup_excludes = array(escapeshellarg('./backup\*')); + $b_excludes = explode(',', trim($web_domain['backup_excludes'])); + if (is_array($b_excludes) && !empty($b_excludes)) { + foreach ($b_excludes as $b_exclude) { + $b_exclude = trim($b_exclude); + if ($b_exclude != '') { + array_push($backup_excludes, escapeshellarg($b_exclude)); + } + } + } + + $web_backup_file = ($backup_job == 'manual' ? 'manual-' : '') . 'web' . $web_id . '_' . date('Y-m-d_H-i') . $backup_extension_web; + $full_filename = $web_backup_dir . '/' . $web_backup_file; + if (self::runWebCompression($backup_format_web, $backup_excludes, $backup_mode, $web_path, $web_backup_dir, $web_backup_file, $web_user, $web_group, $http_server_user, $backup_tmp, $password)) { + if (is_file($full_filename)) { + $backup_username = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_user : 'root'; + $backup_group = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_group : 'root'; + chown($full_filename, $backup_username); + chgrp($full_filename, $backup_group); + chmod($full_filename, 0750); + + //Insert web backup record in database + $file_size = filesize($full_filename); + $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, backup_format, tstamp, filename, filesize, backup_password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + $app->db->query($sql, $server_id, $web_id, 'web', $backup_mode, $backup_format_web, time(), $web_backup_file, $file_size, $password); + if ($app->db->dbHost != $app->dbmaster->dbHost) + $app->dbmaster->query($sql, $server_id, $web_id, 'web', $backup_mode, $backup_format_web, time(), $web_backup_file, $file_size, $password); + unset($file_size); + $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' completed successfully to file ' . $full_filename, LOGLEVEL_DEBUG); + } else { + $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' reported success, but the resulting file ' . $full_filename . ' not found.', LOGLEVEL_ERROR); + } + + } else { + if (is_file($full_filename)) + unlink($full_filename); + $app->log('Backup of web files for domain ' . $web_domain['domain'] . ' failed using path ' . $web_path . ' failed.', LOGLEVEL_ERROR); + } + + self::clearBackups($server_id, $web_id, intval($web_domain['backup_copies']), $web_backup_dir); + return true; + } + + /** + * Creates and prepares a backup dir + * @param int $server_id + * @param array $domain_data + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + protected static function prepare_backup_dir($server_id, $domain_data) + { + global $app; + + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $global_config = $app->getconf->get_global_config('sites'); + + if (isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') { + $backup_dir_permissions = 0755; + } else { + $backup_dir_permissions = 0750; + } + + $backup_dir = $server_config['backup_dir']; + + if (!is_dir($backup_dir)) { + mkdir($backup_dir, $backup_dir_permissions, true); + } else { + chmod($backup_dir, $backup_dir_permissions); + } + + $web_backup_dir = $backup_dir . '/web' . $domain_data['domain_id']; + if (!is_dir($web_backup_dir)) + mkdir($web_backup_dir, 0750); + chmod($web_backup_dir, 0750); + + $backup_username = 'root'; + $backup_group = 'root'; + + if ($global_config['backups_include_into_web_quota'] == 'y') { + $backup_username = $domain_data['system_user']; + $backup_group = $domain_data['system_group']; + } + chown($web_backup_dir, $backup_username); + chgrp($web_backup_dir, $backup_group); + } + + /** + * Makes a backup of website files or database. + * @param string|int $domain_id + * @param string $type backup type: web or mysql + * @param string $backup_job how the backup is initiated: manual or auto + * @param bool $mount if true, then the backup dir will be mounted and unmounted automatically + * @return bool returns true if success + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + public static function run_backup($domain_id, $type, $backup_job, $mount = true) + { + global $app; + + $domain_id = intval($domain_id); + + $sql = "SELECT * FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND domain_id = ?"; + $rec = $app->db->queryOneRecord($sql, $domain_id); + if (empty($rec)) { + $app->log('Failed to make backup of type ' . $type . ', because no information present about requested domain id ' . $domain_id, LOGLEVEL_ERROR); + return false; + } + $server_id = intval($rec['server_id']); + + if ($mount && !self::mount_backup_dir($server_id)) { + $app->log('Failed to make backup of type ' . $type . ' for domain id ' . $domain_id . ', because failed to mount backup directory', LOGLEVEL_ERROR); + return false; + } + $ok = false; + + switch ($type) { + case 'web': + $ok = self::make_web_backup($rec, $backup_job); + break; + case 'mysql': + $ok = self::make_database_backup($rec, $backup_job); + break; + default: + $app->log('Failed to make backup, because backup type is unknown: ' . $type, LOGLEVEL_ERROR); + break; + } + if ($mount) + self::unmount_backup_dir($server_id); + return $ok; + } + + /** + * Runs backups of all websites that have backups enabled with respect to their backup interval settings + * @param int $server_id + * @param string $backup_job backup tupe: auto or manual + * @author Ramil Valitov <ramilvalitov@gmail.com> + */ + public static function run_all_backups($server_id, $backup_job = "auto") + { + global $app; + + $server_id = intval($server_id); + + $sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y' AND backup_interval != 'none' AND backup_interval != ''"; + $domains = $app->db->queryAllRecords($sql, $server_id); + + if (!self::mount_backup_dir($server_id)) { + $app->log('Failed to run regular backups routine because failed to mount backup directory', LOGLEVEL_ERROR); + return; + } + self::backups_garbage_collection($server_id); + + $date_of_week = date('w'); + $date_of_month = date('d'); + foreach ($domains as $domain) { + if (($domain['backup_interval'] == 'daily' or ($domain['backup_interval'] == 'weekly' && $date_of_week == 0) or ($domain['backup_interval'] == 'monthly' && $date_of_month == '01'))) { + self::run_backup($domain['domain_id'], 'web', $backup_job, false); + self::run_backup($domain['domain_id'], 'mysql', $backup_job, false); + } + } + self::unmount_backup_dir($server_id); + } +} + +?> + diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php index 9329be7c2e..cf4272991e 100644 --- a/server/lib/classes/cron.d/500-backup.inc.php +++ b/server/lib/classes/cron.d/500-backup.inc.php @@ -33,11 +33,6 @@ class cronjob_backup extends cronjob { // job schedule protected $_schedule = '0 0 * * *'; - /** - * The maximum number of backups that ISPConfig can store. - */ - const max_backups = 30; - /* this function is optional if it contains no custom code */ public function onPrepare() { global $app; @@ -55,363 +50,8 @@ class cronjob_backup extends cronjob { public function onRunJob() { global $app, $conf; - $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); - $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'); - $http_server_user = $web_config['user']; - - if($backup_dir != '') { - - if(isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') { - $backup_dir_permissions = 0755; - } else { - $backup_dir_permissions = 0750; - } - - if(!is_dir($backup_dir)) { - mkdir($backup_dir, $backup_dir_permissions, true); - } else { - chmod($backup_dir, $backup_dir_permissions); - } - $run_backups = true; - //* mount backup directory, if necessary - 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'"; - $records = $app->db->queryAllRecords($sql, $conf['server_id']); - if(is_array($records)) { - foreach($records as $rec) { - - //* Do the website backup - if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) { - - $web_path = $rec['document_root']; - $web_user = $rec['system_user']; - $web_group = $rec['system_group']; - $web_id = $rec['domain_id']; - if(!in_array($web_id, $web_array)) $web_array[] = $web_id; - $web_backup_dir = $backup_dir.'/web'.$web_id; - if(!is_dir($web_backup_dir)) mkdir($web_backup_dir, 0750); - chmod($web_backup_dir, 0750); - //if(isset($server_config['backup_dir_ftpread']) && $server_config['backup_dir_ftpread'] == 'y') { - chown($web_backup_dir, $rec['system_user']); - chgrp($web_backup_dir, $rec['system_group']); - /*} else { - chown($web_backup_dir, 'root'); - chgrp($web_backup_dir, 'root'); - }*/ - - $backup_excludes = ''; - $b_excludes = explode(',', trim($rec['backup_excludes'])); - if(is_array($b_excludes) && !empty($b_excludes)){ - foreach($b_excludes as $b_exclude){ - $b_exclude = trim($b_exclude); - if($b_exclude != ''){ - $backup_excludes .= ' --exclude='.escapeshellarg($b_exclude); - } - } - } - - 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'; - $app->system->exec_safe('cd ? && sudo -u ? find . -group ? -or -user ? -print 2> /dev/null | zip -b ? --exclude=./backup\*'.$backup_excludes.' --symlinks ? -@', $web_path, $web_user, $web_group, $http_server_user, $backup_tmp, $web_backup_dir.'/'.$web_backup_file); - $retval = $app->system->last_exec_retcode(); - } else { - //* Create a tar.gz backup as root user - $web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz'; - if ($use_pigz) { - $app->system->exec_safe('tar pcf - --exclude=./backup\*'.$backup_excludes.' --directory ? . | pigz > ?', $web_path, $web_backup_dir.'/'.$web_backup_file); - $retval = $app->system->last_exec_retcode(); - } else { - $app->system->exec_safe('tar pczf ? --exclude=./backup\*'.$backup_excludes.' --directory ? .', $web_backup_dir.'/'.$web_backup_file, $web_path); - $retval = $app->system->last_exec_retcode(); - } - } - if($retval == 0 || ($backup_mode != 'userzip' && $retval == 1) || ($backup_mode == 'userzip' && $retval == 12)) { // tar can return 1, zip can return 12(due to harmless warings) and still create valid backups - if(is_file($web_backup_dir.'/'.$web_backup_file)){ - $backupusername = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_user : 'root'; - $backupgroup = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_group : 'root'; - chown($web_backup_dir.'/'.$web_backup_file, $backupusername); - chgrp($web_backup_dir.'/'.$web_backup_file, $backupgroup); - chmod($web_backup_dir.'/'.$web_backup_file, 0750); - - //* Insert web backup record in database - $filesize = filesize($web_backup_dir.'/'.$web_backup_file); - $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, tstamp, filename, filesize) VALUES (?, ?, ?, ?, ?, ?, ?)"; - $app->db->query($sql, $conf['server_id'], $web_id, 'web', $backup_mode, time(), $web_backup_file, $filesize); - if($app->db->dbHost != $app->dbmaster->dbHost) - $app->dbmaster->query($sql, $conf['server_id'], $web_id, 'web', $backup_mode, time(), $web_backup_file, $filesize); - unset($filesize); - } - } else { - if(is_file($web_backup_dir.'/'.$web_backup_file)) unlink($web_backup_dir.'/'.$web_backup_file); - $app->log('Backup of '.$web_path.' failed.', LOGLEVEL_WARN); - } - - //* Remove old backups - $backup_copies = intval($rec['backup_copies']); - - $dir_handle = dir($web_backup_dir); - $files = array(); - while (false !== ($entry = $dir_handle->read())) { - if($entry != '.' && $entry != '..' && substr($entry, 0, 3) == 'web' && is_file($web_backup_dir.'/'.$entry)) { - $files[] = $entry; - } - } - $dir_handle->close(); - - rsort($files); - - for ($n = $backup_copies; $n <= self::max_backups; $n++) { - if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) { - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; - $app->db->query($sql, $conf['server_id'], $web_id, $files[$n]); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $web_id, $files[$n]); - @unlink($web_backup_dir.'/'.$files[$n]); - } - } - - unset($files); - unset($dir_handle); - - //* Remove backupdir symlink and create as directory instead - $app->system->web_folder_protection($web_path, false); - - if(is_link($web_path.'/backup')) { - unlink($web_path.'/backup'); - } - if(!is_dir($web_path.'/backup')) { - mkdir($web_path.'/backup'); - chown($web_path.'/backup', $rec['system_user']); - chgrp($web_path.'/backup', $rec['system_group']); - } - - $app->system->web_folder_protection($web_path, true); - } - - /* If backup_interval is set to none and we have a - backup directory for the website, then remove the backups */ - if($rec['backup_interval'] == 'none' || $rec['backup_interval'] == '') { - $web_id = $rec['domain_id']; - $web_user = $rec['system_user']; - $web_backup_dir = realpath($backup_dir.'/web'.$web_id); - if(is_dir($web_backup_dir)) { - $dir_handle = opendir($web_backup_dir.'/'); - while ($file = readdir($dir_handle)) { - if(!is_dir($file)) { - unlink ("$web_backup_dir/"."$file"); - } - } - } - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ?"; - $app->db->query($sql, $conf['server_id'], $web_id); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $web_id); - } - } - } - - $records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND backup_interval != 'none' AND backup_interval != ''", $conf['server_id']); - if(is_array($records)) { - - include '/usr/local/ispconfig/server/lib/mysql_clientdb.conf'; - - //* Check mysqldump capabilities - exec('mysqldump --help',$tmp); - $mysqldump_routines = (strpos(implode($tmp),'--routines') !== false)?'--routines':''; - unset($tmp); - - foreach($records as $rec) { - - //* Do the database backup - if($rec['backup_interval'] == 'daily' or ($rec['backup_interval'] == 'weekly' && date('w') == 0) or ($rec['backup_interval'] == 'monthly' && date('d') == '01')) { - - $web_id = $rec['parent_domain_id']; - if(!in_array($web_id, $web_array)) $web_array[] = $web_id; - $db_backup_dir = $backup_dir.'/web'.$web_id; - if(!is_dir($db_backup_dir)) mkdir($db_backup_dir, 0750); - chmod($db_backup_dir, 0750); - $backupusername = 'root'; - $backupgroup = 'root'; - if ($global_config['backups_include_into_web_quota'] == 'y') { - $sql = "SELECT * FROM web_domain WHERE domain_id = ".$rec['parent_domain_id']; - $webdomain = $app->db->queryOneRecord($sql); - $backupusername = $webdomain['system_user']; - $backupgroup = $webdomain['system_group']; - } - chown($db_backup_dir, $backupusername); - chgrp($db_backup_dir, $backupgroup); - - //* Do the mysql database backup with mysqldump - $db_id = $rec['database_id']; - $db_name = $rec['database_name']; - $db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql'; - $command = "mysqldump -h ? -u ? -p? -c --add-drop-table --create-options --quick --max_allowed_packet=512M ".$mysqldump_routines." --result-file=? ?"; - $app->system->exec_safe($command, $clientdb_host, $clientdb_user, $clientdb_password, $db_backup_dir.'/'.$db_backup_file, $db_name); - $retval = $app->system->last_exec_retcode(); - - //* Compress the backup with gzip / pigz - if($retval == 0) { - $app->system->exec_safe("$zip_cmd -c ? > ?", $db_backup_dir.'/'.$db_backup_file, $db_backup_dir.'/'.$db_backup_file . '.gz'); - $retval = $app->system->last_exec_retcode(); - } - - if($retval == 0){ - if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')){ - chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750); - chown($db_backup_dir.'/'.$db_backup_file.'.gz', fileowner($db_backup_dir)); - chgrp($db_backup_dir.'/'.$db_backup_file.'.gz', filegroup($db_backup_dir)); - - //* Insert web backup record in database - $filesize = filesize($db_backup_dir.'/'.$db_backup_file.'.gz'); - $sql = "INSERT INTO web_backup (server_id, parent_domain_id, backup_type, backup_mode, tstamp, filename, filesize) VALUES (?, ?, ?, ?, ?, ?, ?)"; - $app->db->query($sql, $conf['server_id'], $web_id, 'mysql', 'sqlgz', time(), $db_backup_file.'.gz', $filesize); - if($app->db->dbHost != $app->dbmaster->dbHost) - $app->dbmaster->query($sql, $conf['server_id'], $web_id, 'mysql', 'sqlgz', time(), $db_backup_file.'.gz', $filesize); - unset($filesize); - } - } else { - if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')) unlink($db_backup_dir.'/'.$db_backup_file.'.gz'); - } - //* Remove the uncompressed file - if(is_file($db_backup_dir.'/'.$db_backup_file)) unlink($db_backup_dir.'/'.$db_backup_file); - - //* Remove old backups - $backup_copies = intval($rec['backup_copies']); - - $dir_handle = dir($db_backup_dir); - $files = array(); - while (false !== ($entry = $dir_handle->read())) { - if($entry != '.' && $entry != '..' && preg_match('/^db_('.$db_name.')_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($db_backup_dir.'/'.$entry)) { - if(array_key_exists($matches[1], $files) == false) $files[$matches[1]] = array(); - $files[$matches[1]][] = $entry; - } - } - $dir_handle->close(); - - reset($files); - foreach($files as $db_name => $filelist) { - rsort($filelist); - for ($n = $backup_copies; $n <= self::max_backups; $n++) { - if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) { - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; - $app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $web_id, $filelist[$n]); - @unlink($db_backup_dir.'/'.$filelist[$n]); - } - } - } - - unset($files); - unset($dir_handle); - } - } - - unset($clientdb_host); - unset($clientdb_user); - unset($clientdb_password); - - } - - // remove non-existing backups from database - $backups = $app->db->queryAllRecords("SELECT * FROM web_backup WHERE server_id = ?", $conf['server_id']); - if(is_array($backups) && !empty($backups)){ - foreach($backups as $backup){ - $backup_file = $backup_dir.'/web'.$backup['parent_domain_id'].'/'.$backup['filename']; - if(!is_file($backup_file)){ - $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){ - $backups = $app->dbmaster->queryAllRecords("SELECT * FROM web_backup WHERE server_id = ?", $conf['server_id']); - if(is_array($backups) && !empty($backups)){ - foreach($backups as $backup){ - $backup_file = $backup_dir.'/web'.$backup['parent_domain_id'].'/'.$backup['filename']; - if(!is_file($backup_file)){ - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; - $app->dbmaster->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']); - } - } - } - } - - // garbage collection (non-existing databases) - if(is_array($web_array) && !empty($web_array)){ - foreach($web_array as $tmp_web_id){ - $tmp_backup_dir = $backup_dir.'/web'.$tmp_web_id; - if(is_dir($tmp_backup_dir)){ - $dir_handle = dir($tmp_backup_dir); - $files = array(); - while (false !== ($entry = $dir_handle->read())) { - if($entry != '.' && $entry != '..' && preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($tmp_backup_dir.'/'.$entry)) { - - $tmp_db_name = $matches[1]; - $tmp_database = $app->db->queryOneRecord("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ? AND database_name = ?", $conf['server_id'], $tmp_web_id, $tmp_db_name); - - if(is_array($tmp_database) && !empty($tmp_database)){ - if($tmp_database['backup_interval'] == 'none' || intval($tmp_database['backup_copies']) == 0){ - @unlink($tmp_backup_dir.'/'.$entry); - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; - $app->db->query($sql, $conf['server_id'], $tmp_web_id, $entry); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $tmp_web_id, $entry); - } - } else { - @unlink($tmp_backup_dir.'/'.$entry); - $sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?"; - $app->db->query($sql, $conf['server_id'], $tmp_web_id, $entry); - if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $tmp_web_id, $entry); - } - } - } - $dir_handle->close(); - } - } - } - //* end run_backups - if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir); - } - } - - // delete files from backup download dir (/var/www/example.com/backup) - unset($records, $entry, $files); - $sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'"; - $records = $app->db->queryAllRecords($sql, $conf['server_id']); - if(is_array($records)) { - foreach($records as $rec) { - $backup_download_dir = $rec['document_root'].'/backup'; - if(is_dir($backup_download_dir)){ - $dir_handle = dir($backup_download_dir); - $files = array(); - while (false !== ($entry = $dir_handle->read())) { - if($entry != '.' && $entry != '..' && is_file($backup_download_dir.'/'.$entry)) { - // delete files older than 3 days - if(time() - filemtime($backup_download_dir.'/'.$entry) >= 60*60*24*3) @unlink($backup_download_dir.'/'.$entry); - } - } - $dir_handle->close(); - } - } - } - + $app->load("backup"); + backup::run_all_backups($conf['server_id'], "auto"); parent::onRunJob(); } diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 3308289d41..607491216d 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -54,6 +54,8 @@ class backup_plugin { $app->plugins->registerAction('backup_download', $this->plugin_name, 'backup_action'); $app->plugins->registerAction('backup_restore', $this->plugin_name, 'backup_action'); $app->plugins->registerAction('backup_delete', $this->plugin_name, 'backup_action'); + $app->plugins->registerAction('backup_web_files', $this->plugin_name, 'make_backup_callback'); + $app->plugins->registerAction('backup_database', $this->plugin_name, 'make_backup_callback'); //$app->plugins->registerAction('backup_download_mail', $this->plugin_name, 'backup_action_mail'); $app->plugins->registerAction('backup_restore_mail', $this->plugin_name, 'backup_action_mail'); $app->plugins->registerAction('backup_delete_mail', $this->plugin_name, 'backup_action_mail'); @@ -69,6 +71,7 @@ class backup_plugin { if(is_array($backup)) { $app->uses('ini_parser,file,getconf,system'); + $app->load("backup"); $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'); @@ -78,7 +81,8 @@ class backup_plugin { $backup_dir_is_ready = true; //* mount backup directory, if necessary - if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($server_config['backup_dir']) ) $backup_dir_is_ready = false; + if (!backup::mount_backup_dir($conf['server_id'])) + $backup_dir_is_ready = false; if($backup_dir_is_ready){ //* Make backup available for download @@ -121,47 +125,12 @@ class backup_plugin { //* Restore a mysql backup if($action_name == 'backup_restore' && $backup['backup_type'] == 'mysql') { - //* Load sql dump into db - include 'lib/mysql_clientdb.conf'; - - if(file_exists($backup_dir.'/'.$backup['filename'])) { - //$parts = explode('_',$backup['filename']); - //$db_name = $parts[1]; - preg_match('@^db_(.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql\.gz$@', $backup['filename'], $matches); - $db_name = $matches[1]; - $command = "gunzip --stdout ? | mysql -h ? -u ? -p? ?"; - $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $clientdb_host, $clientdb_user, $clientdb_password, $db_name); - } - unset($clientdb_host); - unset($clientdb_user); - unset($clientdb_password); - $app->log('Restored MySQL backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); + backup::restoreBackupDatabase($backup['backup_format'], trim($backup['backup_password']), $backup_dir, $backup['filename'], $backup['backup_mode'], $backup['backup_type']); } //* Restore a web backup if($action_name == 'backup_restore' && $backup['backup_type'] == 'web') { - $app->system->web_folder_protection($web['document_root'], false); - if($backup['backup_mode'] == 'userzip') { - if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) { - if(file_exists($web['document_root'].'/backup/'.$backup['filename'])) rename($web['document_root'].'/backup/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename'].'.bak'); - copy($backup_dir.'/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename']); - chgrp($web['document_root'].'/backup/'.$backup['filename'], $web['system_group']); - //chown($web['document_root'].'/backup/'.$backup['filename'],$web['system_user']); - $command = 'sudo -u ? unzip -qq -o ? -d ? 2> /dev/null'; - $app->system->exec_safe($command, $web['system_user'], $web['document_root'].'/backup/'.$backup['filename'], $web['document_root']); - unlink($web['document_root'].'/backup/'.$backup['filename']); - if(file_exists($web['document_root'].'/backup/'.$backup['filename'].'.bak')) rename($web['document_root'].'/backup/'.$backup['filename'].'.bak', $web['document_root'].'/backup/'.$backup['filename']); - $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); - } - } - if($backup['backup_mode'] == 'rootgz') { - if(file_exists($backup_dir.'/'.$backup['filename']) && $web['document_root'] != '' && $web['document_root'] != '/' && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) { - $command = 'tar xzf ? --directory ?'; - $app->system->exec_safe($command, $backup_dir.'/'.$backup['filename'], $web['document_root']); - $app->log('Restored Web backup '.$backup_dir.'/'.$backup['filename'], LOGLEVEL_DEBUG); - } - } - $app->system->web_folder_protection($web['document_root'], true); + backup::restoreBackupWebFiles($backup['backup_format'], trim($backup['backup_password']), $backup_dir, $backup['filename'], $backup['backup_mode'], $backup['backup_type'], $web['document_root'], $web['system_user'], $web['system_group']); } if($action_name == 'backup_delete') { @@ -175,7 +144,7 @@ class backup_plugin { } } - if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir); + backup::unmount_backup_dir($conf['server_id']); } else { $app->log('Backup directory not ready.', LOGLEVEL_DEBUG); } @@ -186,6 +155,37 @@ class backup_plugin { return 'ok'; } + /** + * Makes a backup of website files or database, it's triggered by action and required for the plugin to work. + * Please, don't call this function directly unless you know what you're doing. + * @param string $action_name is the backup source: web files or database + * @param string|int $domain_id + * @return string + * @author Ramil Valitov <ramilvalitov@gmail.com> + * @uses backup_plugin::run_backup() recommended to use if you need to make backups + */ + public function make_backup_callback($action_name, $domain_id) + { + global $app; + + //Load backup class + $app->load('backup'); + $app->log('Triggered backup routine for domain id ' . $domain_id . ', action name ' . $action_name, LOGLEVEL_DEBUG); + + switch ($action_name) { + case 'backup_web_files': + backup::run_backup($domain_id, 'web', "manual"); + break; + case 'backup_database': + backup::run_backup($domain_id, 'mysql', "manual"); + break; + default: + $app->log('Unknown backup action name: ' . $action_name, LOGLEVEL_ERROR); + break; + } + return 'ok'; + } + //* Restore a mail backup - florian@schaal-24.de public function backup_action_mail($action_name, $data) { global $app, $conf; -- GitLab From 0fb97725700fa1facb5006566f9b283e160650d1 Mon Sep 17 00:00:00 2001 From: Ramil Valitov <ramilvalitov@gmail.com> Date: Fri, 29 May 2020 12:18:28 +0300 Subject: [PATCH 313/571] [fix] correct default format detection --- server/lib/classes/backup.inc.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index ea959a2f9c..f996340bd5 100644 --- a/server/lib/classes/backup.inc.php +++ b/server/lib/classes/backup.inc.php @@ -110,8 +110,8 @@ class backup /** * Returns default backup format used in previous versions of ISPConfig - * @param string $backup_mode - * @param string $backup_type + * @param string $backup_mode can be 'userzip' or 'rootgz' + * @param string $backup_type can be 'web' or 'mysql' * @return string * @author Ramil Valitov <ramilvalitov@gmail.com> */ @@ -1264,10 +1264,7 @@ class backup $backup_format_web = 'default'; } if ($backup_format_web == 'default') { - if ($backup_mode == 'userzip') - $backup_format_web = 'zip'; - else - $backup_format_web = 'gzip'; + $backup_format_web = self::getDefaultBackupFormat($backup_mode, 'web'); } $password = ($web_domain['backup_encrypt'] == 'y') ? trim($web_domain['backup_password']) : ''; $backup_extension_web = self::getBackupWebExtension($backup_format_web); -- GitLab From 86811506b27c0d2191d29fe8235a51def9963f09 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 3 Apr 2020 16:29:55 -0600 Subject: [PATCH 314/571] dns import: improvements in handling dns zone file syntax --- interface/web/dns/dns_import.php | 476 ++++++++++--------- interface/web/dns/lib/lang/ar_dns_import.lng | 15 +- interface/web/dns/lib/lang/bg_dns_import.lng | 9 + interface/web/dns/lib/lang/br_dns_import.lng | 9 + interface/web/dns/lib/lang/ca_dns_import.lng | 9 + interface/web/dns/lib/lang/cz_dns_import.lng | 9 + interface/web/dns/lib/lang/de_dns_import.lng | 9 + interface/web/dns/lib/lang/dk_dns_import.lng | 9 + interface/web/dns/lib/lang/el_dns_import.lng | 15 +- interface/web/dns/lib/lang/en_dns_import.lng | 19 +- interface/web/dns/lib/lang/es_dns_import.lng | 9 + interface/web/dns/lib/lang/fi_dns_import.lng | 15 +- interface/web/dns/lib/lang/fr_dns_import.lng | 9 + interface/web/dns/lib/lang/hr_dns_import.lng | 15 +- interface/web/dns/lib/lang/hu_dns_import.lng | 15 +- interface/web/dns/lib/lang/id_dns_import.lng | 15 +- interface/web/dns/lib/lang/it_dns_import.lng | 9 + interface/web/dns/lib/lang/ja_dns_import.lng | 15 +- interface/web/dns/lib/lang/nl_dns_import.lng | 15 +- interface/web/dns/lib/lang/pl_dns_import.lng | 9 + interface/web/dns/lib/lang/pt_dns_import.lng | 15 +- interface/web/dns/lib/lang/ro_dns_import.lng | 15 +- interface/web/dns/lib/lang/ru_dns_import.lng | 9 + interface/web/dns/lib/lang/se_dns_import.lng | 11 +- interface/web/dns/lib/lang/sk_dns_import.lng | 15 +- interface/web/dns/lib/lang/tr_dns_import.lng | 9 + 26 files changed, 517 insertions(+), 262 deletions(-) diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php index 540a731ba2..143d9248a3 100644 --- a/interface/web/dns/dns_import.php +++ b/interface/web/dns/dns_import.php @@ -34,8 +34,9 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('dns'); -$msg = ''; -$error = ''; +$msg = []; +$warn = []; +$error = []; // Loading the template $app->uses('tform,tpl,validate_dns'); @@ -208,6 +209,40 @@ $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language include $lng_file; $app->tpl->setVar($wb); +/** Returns shortest name for an owner with giving $origin in effect */ +function origin_name( $owner, $origin ) { + if ($owner == "@") { return ''; } + if ($owner == "*") { return $owner; } + if ($owner == "") { return $origin; } + if ($origin == "") { return $owner; } + if (substr($owner, -1) == ".") { + if (substr($origin, -1) == ".") { + return substr_replace( $owner, '', 0 - (strlen($origin) + 1) ); + } else { + return $owner; + } + } + if ($origin == ".") { + return "${owner}."; + } + if (substr($origin, -1) != ".") { + // should be an erorr, + // only "." terminated $origin can be handled determinately + return "${owner}.${origin}"; + } + return $owner; + +} + +/** Returns full name for an owner with given $origin in effect */ +function fqdn_name( $owner, $origin ) { + if (substr($owner, -1) == ".") { + return $owner; + } + $name = origin_name( $owner, $origin ); + return $name . (strlen($name) > 0 ? "." : "") . $origin; +} + // Import the zone-file //if(1=="1") if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'])){ @@ -227,25 +262,32 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' // Remove empty lines, comments, whitespace, tabs, etc. $new_lines = array(); foreach($lines as $line){ - $line = trim($line); + $line = rtrim($line); + $line = preg_replace('/^\s+/', ' ', $line); if ($line != '' && substr($line, 0, 1) != ';'){ - if(strpos($line, ";") !== FALSE) { - if(!preg_match("/\"[^\"]+;[^\"]*\"/", $line)) { - $line = substr($line, 0, strpos($line, ";")); + if(preg_match("/\sNAPTR\s/i", $line)) { + // NAPTR contains regex strings, there's not much we can safely clean up. + // remove a comment if found after the ending period (and comment doesn't contain period) + $line = preg_replace( '/^(.+\.)(\s*;[^\.]*)$/', '\1', $line ); + } else { + if(strpos($line, ";") !== FALSE) { + if(!preg_match("/\"[^\"]+;[^\"]*\"/", $line)) { + $line = substr($line, 0, strpos($line, ";")); + } } - } - if(strpos($line, "(") !== FALSE ) { - if (!preg_match("/v=DKIM/",$line)) { - $line = substr($line, 0, strpos($line, "(")); + if(strpos($line, "(") !== FALSE ) { + if (!preg_match("/v=DKIM/",$line)) { + $line = substr($line, 0, strpos($line, "(")); + } } - } - if(strpos($line, ")") !== FALSE ) { - if (!preg_match("/v=DKIM/",$line)) { - $line = substr($line, 0, strpos($line, ")")); + if(strpos($line, ")") !== FALSE ) { + if (!preg_match("/v=DKIM/",$line)) { + $line = substr($line, 0, strpos($line, ")")); + } } } - $line = trim($line); + $line = rtrim($line); if ($line != ''){ $sPattern = '/\s+/m'; $sReplace = ' '; @@ -257,29 +299,42 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' $lines = $new_lines; unset($new_lines); - //$lines = file("apriqot.se.txt"); - $name = str_replace("txt", "", $_FILES['file']['name']); - $name = str_replace("zone", "", $name); - if ($domain !== NULL){ - $name = $domain; - } - - if (substr($name, -1) != "."){ - $name .= "."; + // SOA name will be the specified domain + $name = origin_name( $domain, '.' ); + } else { + // SOA name will be read from SOA record + $name = '.'; } $i = 0; - $origin_exists = FALSE; + $ttl = 3600; + $soa_ttl = '86400'; $soa_array_key = -1; $soa = array(); $soa['name'] = $name; + $origin = $name; + $owner = $name; $r = 0; $dns_rr = array(); + $add_default_ns = TRUE; + $found_soa = FALSE; foreach($lines as $line){ $parts = explode(' ', $line); + // leading whitespace means same owner as previous record + if ($parts[0] == '') { + // SOA is (only) read from multiple lines + if($i > ($soa_array_key) && $i <= ($soa_array_key + 5)) { + array_shift($parts); + } else { + $parts[0] = $owner; + } + } elseif (strpos( $parts[0], '$' ) !== 0) { + $owner = fqdn_name( $parts[0], $origin ); + } + // make elements lowercase $new_parts = array(); foreach($parts as $part){ @@ -297,46 +352,75 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' $parts = $new_parts; unset($new_parts); - // if ORIGIN exists, overwrite $soa['name'] + // Set current $ORIGIN (note: value in file can be a name relative to current origin) if($parts[0] == '$origin'){ - $soa['name'] = $parts[1]; - $origin_exists = TRUE; + $origin = fqdn_name( $parts[1], $origin ); } // TTL if($parts[0] == '$ttl'){ $time_format = strtolower(substr($parts[1], -1)); switch ($time_format) { case 's': - $soa['ttl'] = $app->functions->intval(substr($parts[1], 0, -1)); + $ttl = $app->functions->intval(substr($parts[1], 0, -1)); break; case 'm': - $soa['ttl'] = $app->functions->intval(substr($parts[1], 0, -1)) * 60; + $ttl = $app->functions->intval(substr($parts[1], 0, -1)) * 60; break; case 'h': - $soa['ttl'] = $app->functions->intval(substr($parts[1], 0, -1)) * 3600; + $ttl = $app->functions->intval(substr($parts[1], 0, -1)) * 3600; break; case 'd': - $soa['ttl'] = $app->functions->intval(substr($parts[1], 0, -1)) * 86400; + $ttl = $app->functions->intval(substr($parts[1], 0, -1)) * 86400; break; case 'w': - $soa['ttl'] = $app->functions->intval(substr($parts[1], 0, -1)) * 604800; + $ttl = $app->functions->intval(substr($parts[1], 0, -1)) * 604800; break; default: - $soa['ttl'] = $app->functions->intval($parts[1]); + $ttl = $app->functions->intval($parts[1]); } + $soa_ttl = $ttl; unset($time_format); } // SOA if(in_array("soa", $parts)){ - $soa['mbox'] = array_pop($parts); - //$soa['ns'] = array_pop($parts); - $soa['ns'] = $servers[0]['server_name']; - // if domain is part of SOA, overwrite $soa['name'] - if($parts[0] != '@' && $parts[0] != 'in' && $parts[0] != 'soa' && $origin_exists === FALSE){ - $soa['name'] = $parts[0]; + // Check for multiple SOA records in file + if($found_soa && $soa_array_key != -1){ + // we could just skip any SOA which doesn't match the domain name, + // which would allow concating zone files (sub1.d.tld, sub2.d.tld, d.tld) together for import + $error[] = $wb['zone_file_multiple_soa']; + $valid_zone_file = FALSE; + } else { + $soa['mbox'] = array_pop($parts); + + //$soa['ns'] = array_pop($parts); + $soa['ns'] = $servers[0]['server_name']; + + // $parts[0] will always be owner name + $soa_domain = fqdn_name( $parts[0], $origin ); + + if ($domain !== NULL){ + // domain was given, check that domain and SOA domain share some root + if ( ( strpos( $soa_domain, origin_name( $domain, '.' ) ) !== FALSE ) + || ( strpos( origin_name( $domain, '.' ), $soa_domain ) !== FALSE ) ) { + $valid_zone_file = TRUE; + } + } else { + // domain not given, use domain from SOA + if($soa_domain != ".") { + $soa['name'] = $soa_domain; + $valid_zone_file = TRUE; + } + } + + if(is_numeric($parts[1])){ + $soa['ttl'] = $app->functions->intval($parts[1]); + } else { + $soa['ttl'] = $soa_ttl; + } + + $found_soa = TRUE; + $soa_array_key = $i; } - $soa_array_key = $i; - $valid_zone_file = TRUE; } // SERIAL if($i == ($soa_array_key + 1)) $soa['serial'] = $app->functions->intval($parts[0]); @@ -438,197 +522,120 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' } // RESOURCE RECORDS if($i > ($soa_array_key + 5)){ - if(substr($parts[0], -1) == '.' || $parts[0] == '@' || ($parts[0] != 'a' && $parts[0] != 'aaaa' && $parts[0] != 'ns' && $parts[0] != 'cname' && $parts[0] != 'hinfo' && $parts[0] != 'mx' && $parts[0] != 'naptr' && $parts[0] != 'ptr' && $parts[0] != 'rp' && $parts[0] != 'srv' && $parts[0] != 'txt')){ - if(is_numeric($parts[1])){ - if($parts[2] == 'in'){ - $resource_type = $parts[3]; - $pkey = 3; - } else { - $resource_type = $parts[2]; - $pkey = 2; - } - } else { - if($parts[1] == 'in'){ - $resource_type = $parts[2]; - $pkey = 2; - } else { - $resource_type = $parts[1]; - $pkey = 1; - } - } - $dns_rr[$r]['type'] = $resource_type; - if($parts[0] == '@' || $parts[0] == '.'){ - $dns_rr[$r]['name'] = $soa['name']; - } else { - $dns_rr[$r]['name'] = $parts[0]; - } - if(is_numeric($parts[1])){ - $dns_rr[$r]['ttl'] = $app->functions->intval($parts[1]); - } else { - $dns_rr[$r]['ttl'] = $soa['ttl']; - } - switch ($resource_type) { - case 'mx': - case 'srv': - $dns_rr[$r]['aux'] = $app->functions->intval($parts[$pkey+1]); - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+2)); - break; - case 'txt': - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - if(substr($dns_rr[$r]['data'], 0, 1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 1); - if(substr($dns_rr[$r]['data'], -1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 0, -1); - break; - default: - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - } + + $dns_rr[$r]['name'] = fqdn_name( $owner, $soa['name'] ); + array_shift($parts); // shift record owner from $parts[0] + + if(is_numeric($parts[0])) { + $dns_rr[$r]['ttl'] = $app->functions->intval($parts[0]); + array_shift($parts); // shift ttl from $parts[0] } else { - // a 3600 IN A 1.2.3.4 - if(is_numeric($parts[1]) && $parts[2] == 'in' && ($parts[3] == 'a' || $parts[3] == 'aaaa' || $parts[3] == 'ns'|| $parts[3] == 'cname' || $parts[3] == 'hinfo' || $parts[3] == 'mx' || $parts[3] == 'naptr' || $parts[3] == 'ptr' || $parts[3] == 'rp' || $parts[3] == 'srv' || $parts[3] == 'txt')){ - $resource_type = $parts[3]; - $pkey = 3; - $dns_rr[$r]['type'] = $resource_type; - $dns_rr[$r]['name'] = $parts[0]; - $dns_rr[$r]['ttl'] = $app->functions->intval($parts[1]); - switch ($resource_type) { - case 'mx': - case 'srv': - $dns_rr[$r]['aux'] = $app->functions->intval($parts[$pkey+1]); - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+2)); - break; - case 'txt': - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - if(substr($dns_rr[$r]['data'], 0, 1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 1); - if(substr($dns_rr[$r]['data'], -1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 0, -1); - break; - default: - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - } - } - // a IN A 1.2.3.4 - elseif($parts[1] == 'in' && ($parts[2] == 'a' || $parts[2] == 'aaaa' || $parts[2] == 'ns'|| $parts[2] == 'cname' || $parts[2] == 'hinfo' || $parts[2] == 'mx' || $parts[2] == 'naptr' || $parts[2] == 'ptr' || $parts[2] == 'rp' || $parts[2] == 'srv' || $parts[2] == 'txt')){ - $resource_type = $parts[2]; - $pkey = 2; - $dns_rr[$r]['type'] = $resource_type; - $dns_rr[$r]['name'] = $parts[0]; - $dns_rr[$r]['ttl'] = $soa['ttl']; - switch ($resource_type) { - case 'mx': - case 'srv': - $dns_rr[$r]['aux'] = $app->functions->intval($parts[$pkey+1]); - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+2)); - break; - case 'txt': - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - if(substr($dns_rr[$r]['data'], 0, 1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 1); - if(substr($dns_rr[$r]['data'], -1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 0, -1); - break; - default: - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - } - } - // a 3600 A 1.2.3.4 - elseif(is_numeric($parts[1]) && ($parts[2] == 'a' || $parts[2] == 'aaaa' || $parts[2] == 'ns'|| $parts[2] == 'cname' || $parts[2] == 'hinfo' || $parts[2] == 'mx' || $parts[2] == 'naptr' || $parts[2] == 'ptr' || $parts[2] == 'rp' || $parts[2] == 'srv' || $parts[2] == 'txt')){ - $resource_type = $parts[2]; - $pkey = 2; - $dns_rr[$r]['type'] = $resource_type; - $dns_rr[$r]['name'] = $parts[0]; - $dns_rr[$r]['ttl'] = $app->functions->intval($parts[1]); - switch ($resource_type) { - case 'mx': - case 'srv': - $dns_rr[$r]['aux'] = $app->functions->intval($parts[$pkey+1]); - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+2)); - break; - case 'txt': - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - if(substr($dns_rr[$r]['data'], 0, 1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 1); - if(substr($dns_rr[$r]['data'], -1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 0, -1); - break; - default: - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - } - } - // A 1.2.3.4 - // MX 10 mail - // TXT "v=spf1 a mx ptr -all" - else { - $resource_type = $parts[0]; - $pkey = 0; - $dns_rr[$r]['type'] = $resource_type; - $dns_rr[$r]['name'] = $soa['name']; - $dns_rr[$r]['ttl'] = $soa['ttl']; - switch ($resource_type) { - case 'mx': - case 'srv': - $dns_rr[$r]['aux'] = $app->functions->intval($parts[$pkey+1]); - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+2)); - break; - case 'txt': - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - if(substr($dns_rr[$r]['data'], 0, 1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 1); - if(substr($dns_rr[$r]['data'], -1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'], 0, -1); - break; - default: - $dns_rr[$r]['aux'] = 0; - $dns_rr[$r]['data'] = implode(' ', array_slice($parts, $pkey+1)); - } - } + $dns_rr[$r]['ttl'] = $ttl; } - $dns_rr[$r]['type'] = strtoupper($dns_rr[$r]['type']); - if($dns_rr[$r]['type'] == 'NS' && $dns_rr[$r]['name'] == $soa['name']){ + + if($parts[0] == 'in'){ + array_shift($parts); // shift class from $parts[0] + } elseif (in_array( $parts[0], [ 'ch', 'hs', ] )) { + $warn[] = $wb['ignore_record_not_class_in'] . " ($owner " . strtoupper($parts[0]) . ")"; unset($dns_rr[$r]); + continue; } - - $valid = true; + + // A 1.2.3.4 + // MX 10 mail + // TXT "v=spf1 a mx ptr -all" + $resource_type = array_shift($parts); + switch ($resource_type) { + case 'mx': + case 'srv': + case 'naptr': + $dns_rr[$r]['aux'] = $app->functions->intval(array_shift($parts)); + $dns_rr[$r]['data'] = implode(' ', $parts); + break; + case 'txt': + $dns_rr[$r]['aux'] = 0; + $dns_rr[$r]['data'] = implode(' ', $parts); + $dns_rr[$r]['data'] = preg_replace( [ '/^\"/', '/\"$/' ], '', $dns_rr[$r]['data']); + break; + default: + $dns_rr[$r]['aux'] = 0; + $dns_rr[$r]['data'] = implode(' ', $parts); + } + + $dns_rr[$r]['type'] = strtoupper($resource_type); + + if($dns_rr[$r]['type'] == 'NS' && fqdn_name( $dns_rr[$r]['name'], $soa['name'] ) == $soa['name']){ + $add_default_ns = FALSE; + } + $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]); + + // this really breaks NAPTR .. conceivably TXT, too. + // just make sure data is encoded when saved and escaped when displayed/used + if(!in_array($dns_rr[$r]['type'],array('NAPTR','TXT',))) { + $dns_rr[$r]['data'] = strip_tags($dns_rr[$r]['data']); + } + + // regex based on https://stackoverflow.com/questions/3026957/how-to-validate-a-domain-name-using-regex-php + // probably should find something better that covers valid syntax, moreso than just valid hostnames + if(!preg_match('/^(|@|\*|(?!\-)(?:(\*|(?:[a-zA-Z\d_][a-zA-Z\d\-_]{0,61})?[a-zA-Z\d_])\.){1,126}(?!\d+)[a-zA-Z\d_]{1,63}\.?)$/',$dns_rr[$r]['name'])) { + $error[] = $wb['ignore_record_invalid_owner'] . " (" . htmlspecialchars($dns_rr[$r]['name']) . ")"; + unset( $dns_rr[$r] ); + continue; + } + + if(!in_array($dns_rr[$r]['type'],array('A','AAAA','ALIAS','CNAME','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY'))) { + $error[] = $wb['ignore_record_unknown_type'] . " (" . htmlspecialchars($dns_rr[$r]['type']) . ")"; + unset( $dns_rr[$r] ); + continue; + } $r++; } $i++; } - foreach ($servers as $server){ - $dns_rr[$r]['name'] = $soa['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++; + if ( $add_default_ns ) { + foreach ($servers as $server){ + $dns_rr[$r]['name'] = $soa['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('<pre>'); //print_r($dns_rr); //print('</pre>'); + if (!$found_soa) { + $valid_zone_file = false; + $error[] = $wb['zone_file_missing_soa']; + } + if (intval($soa['serial']) == 0 + || (intval($soa['refresh']) == 0 && intval($soa['retry']) == 0 && intval($soa['expire']) == 0 && intval($soa['minimum']) == 0 ) + ) { + $valid_zone_file = false; + $error[] = $wb['zone_file_soa_parser']; +$error[] = print_r( $soa, true ); + } + if ($settings['use_domain_module'] == 'y' && ! $app->tools_sites->checkDomainModuleDomain($soa['name']) ) { + $valid_zone_file = false; + $error[] = $wb['zone_not_allowed']; + } // Insert the soa record $sys_userid = $_SESSION['s']['user']['userid']; - $origin = $soa['name']; - $ns = $soa['ns']; - $mbox = $soa['mbox']; - $refresh = $soa['refresh']; - $retry = $soa['retry']; - $expire = $soa['expire']; - $minimum = $soa['minimum']; - $ttl = isset($soa['ttl']) ? $soa['ttl'] : '86400'; $xfer = ''; $serial = $app->functions->intval($soa['serial']+1); //print_r($soa); //die(); - if($valid_zone_file){ + $records = $app->db->queryAllRecords("SELECT id FROM dns_soa WHERE origin = ?", $soa['name']); + if (count($records) > 0) { + $error[] = $wb['zone_already_exists']; + } elseif ($valid_zone_file) { $insert_data = array( "sys_userid" => $sys_userid, "sys_groupid" => $sys_groupid, @@ -636,15 +643,15 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' "sys_perm_group" => 'riud', "sys_perm_other" => '', "server_id" => $server_id, - "origin" => $origin, - "ns" => $ns, - "mbox" => $mbox, + "origin" => $soa['name'], + "ns" => $soa['ns'], + "mbox" => $soa['mbox'], "serial" => $serial, - "refresh" => $refresh, - "retry" => $retry, - "expire" => $expire, - "minimum" => $minimum, - "ttl" => $ttl, + "refresh" => $soa['refresh'], + "retry" => $soa['retry'], + "expire" => $soa['expire'], + "minimum" => $soa['minimum'], + "ttl" => $soa['ttl'], "active" => 'Y', "xfer" => $xfer ); @@ -655,6 +662,11 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' { foreach($dns_rr as $rr) { + // ensure record name is within $soa['name'] zone + if(fqdn_name( $rr['name'], $soa['name'] ) != $soa['name'] + && (strpos( fqdn_name( $rr['name'], $soa['name'] ), ".".$soa['name'] ) === FALSE ) ){ + continue; + } $insert_data = array( "sys_userid" => $sys_userid, "sys_groupid" => $sys_groupid, @@ -663,7 +675,7 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' "sys_perm_other" => '', "server_id" => $server_id, "zone" => $dns_soa_id, - "name" => $rr['name'], + "name" => origin_name( $rr['name'], $soa['name'] ), "type" => $rr['type'], "data" => $rr['data'], "aux" => $rr['aux'], @@ -672,21 +684,39 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' ); $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); } + + $msg[] = $wb['zone_file_successfully_imported_txt']; + } elseif (is_array($dns_rr)) { + $error[] = $wb['zone_file_import_fail']; + } else { + $msg[] = $wb['zone_file_successfully_imported_txt']; } - $msg .= $wb['zone_file_successfully_imported_txt']; } else { - $error .= $wb['error_no_valid_zone_file_txt']; + $error[] = $wb['error_no_valid_zone_file_txt']; } //header('Location: /dns/dns_soa_edit.php?id='.$dns_soa_id); } else { if(isset($_FILES['file']['name'])) { - $error = $wb['no_file_uploaded_error']; + $error[] = $wb['no_file_uploaded_error']; } } +$_error=''; +if (count($error) > 0) { + // this markup should really be moved to ispconfig.js + $_error = '<div class="alert alert-danger clear">' . implode( '<br />', $error) . '</div>'; +} +if (count($warn) > 0) { + // and add a 'warn' variable to templates and ispconfig.js + $_error = '<div class="alert alert-warning clear">' . implode( '<br />', $warn) . '</div>'; +} +$app->tpl->setVar('error', $_error); -$app->tpl->setVar('msg', $msg); -$app->tpl->setVar('error', $error); +$_msg=''; +if (count($msg) > 0) { + $_msg = '<div class="alert alert-success clear">' . implode( '<br />', $msg) . '</div>'; +} +$app->tpl->setVar('msg', $_msg); $app->tpl_defaults(); $app->tpl->pparse(); diff --git a/interface/web/dns/lib/lang/ar_dns_import.lng b/interface/web/dns/lib/lang/ar_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/ar_dns_import.lng +++ b/interface/web/dns/lib/lang/ar_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_import.lng b/interface/web/dns/lib/lang/bg_dns_import.lng index 848a4f933b..7ff3498c44 100644 --- a/interface/web/dns/lib/lang/bg_dns_import.lng +++ b/interface/web/dns/lib/lang/bg_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Ðе е качен файла Ñ Ð·Ð¾Ð½Ð°Ñ‚Ð°'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng index ffcef7d743..8bcc0ddff4 100644 --- a/interface/web/dns/lib/lang/br_dns_import.lng +++ b/interface/web/dns/lib/lang/br_dns_import.lng @@ -13,4 +13,13 @@ $wb['title'] = 'Importar arquivo de zona'; $wb['no_file_uploaded_error'] = 'Nenhum arquivo de zona dns foi carregado.'; $wb['error_no_server_id'] = 'Nenhum servidor foi informado.'; $wb['error_not_allowed_server_id'] = 'O servidor selecionado não é permitido nesta conta.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_import.lng b/interface/web/dns/lib/lang/ca_dns_import.lng index feb0ba7919..78c2edbf80 100644 --- a/interface/web/dns/lib/lang/ca_dns_import.lng +++ b/interface/web/dns/lib/lang/ca_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Aucun fichier de Zone téléchargé'; $wb['zone_file_import_txt'] = 'Importer un fichier de Zone'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng index fc90d3cf3c..ed254338a5 100644 --- a/interface/web/dns/lib/lang/cz_dns_import.lng +++ b/interface/web/dns/lib/lang/cz_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Nelze odeslat DNS zonový soubor'; $wb['zone_file_import_txt'] = 'Importovat DNS zonový soubor'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'Vybraný server nenà pro tento úÄet povolen.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_import.lng b/interface/web/dns/lib/lang/de_dns_import.lng index f33d304a0d..31db13932e 100644 --- a/interface/web/dns/lib/lang/de_dns_import.lng +++ b/interface/web/dns/lib/lang/de_dns_import.lng @@ -13,4 +13,13 @@ $wb['title'] = 'Zonen Datei importieren'; $wb['no_file_uploaded_error'] = 'Keine Datei hochgeladen'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_import.lng b/interface/web/dns/lib/lang/dk_dns_import.lng index 9edbe20009..93357e1194 100644 --- a/interface/web/dns/lib/lang/dk_dns_import.lng +++ b/interface/web/dns/lib/lang/dk_dns_import.lng @@ -13,4 +13,13 @@ $wb['title'] = 'Importer Zone Filer'; $wb['no_file_uploaded_error'] = 'Ingen zone-fil overført'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_import.lng b/interface/web/dns/lib/lang/el_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/el_dns_import.lng +++ b/interface/web/dns/lib/lang/el_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_import.lng b/interface/web/dns/lib/lang/en_dns_import.lng index c80722c3c1..89227b15a5 100644 --- a/interface/web/dns/lib/lang/en_dns_import.lng +++ b/interface/web/dns/lib/lang/en_dns_import.lng @@ -5,12 +5,21 @@ $wb['client_txt'] = 'Client'; $wb["btn_save_txt"] = 'Import Zonefile'; $wb["btn_cancel_txt"] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; -$wb['no_file_uploaded_error'] = 'No zonefile uploaded'; +$wb['no_file_uploaded_error'] = 'No zonefile uploaded.'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; -?> \ No newline at end of file +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; +?> diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng index 80b5eb463b..db73b69e33 100644 --- a/interface/web/dns/lib/lang/es_dns_import.lng +++ b/interface/web/dns/lib/lang/es_dns_import.lng @@ -13,4 +13,13 @@ $wb['title'] = 'Importar Archivo de Zona'; $wb['zone_file_import_txt'] = 'Importar archivo de zona'; $wb['zone_file_successfully_imported_txt'] = 'El archivo de zona se ha importado correctamente!'; $wb['zonefile_to_import_txt'] = 'Archivo de Zona'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_import.lng b/interface/web/dns/lib/lang/fi_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/fi_dns_import.lng +++ b/interface/web/dns/lib/lang/fi_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_import.lng b/interface/web/dns/lib/lang/fr_dns_import.lng index 73bc88f824..c367f542bb 100644 --- a/interface/web/dns/lib/lang/fr_dns_import.lng +++ b/interface/web/dns/lib/lang/fr_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Aucun fichier de Zone téléchargé'; $wb['zone_file_import_txt'] = 'Importer un fichier de Zone'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_import.lng b/interface/web/dns/lib/lang/hr_dns_import.lng index 09c178e5bb..59632ed64e 100644 --- a/interface/web/dns/lib/lang/hr_dns_import.lng +++ b/interface/web/dns/lib/lang/hr_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Klijent'; $wb['btn_save_txt'] = 'Importiraj zonsku datoteku'; $wb['btn_cancel_txt'] = 'Odustani'; $wb['domain_txt'] = 'Domena'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zonska datoteka'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Importiraj zonske datoteka'; $wb['no_file_uploaded_error'] = 'Nije preneÅ¡ena zonska datoteka'; $wb['zone_file_import_txt'] = 'Importiraj zonsku datoteku'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_import.lng b/interface/web/dns/lib/lang/hu_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/hu_dns_import.lng +++ b/interface/web/dns/lib/lang/hu_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_import.lng b/interface/web/dns/lib/lang/id_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/id_dns_import.lng +++ b/interface/web/dns/lib/lang/id_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_import.lng b/interface/web/dns/lib/lang/it_dns_import.lng index 4ccee92b65..1d734ab4b0 100644 --- a/interface/web/dns/lib/lang/it_dns_import.lng +++ b/interface/web/dns/lib/lang/it_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Nessun file di zona selezionato'; $wb['zone_file_import_txt'] = 'Importa file di zona'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_import.lng b/interface/web/dns/lib/lang/ja_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/ja_dns_import.lng +++ b/interface/web/dns/lib/lang/ja_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_import.lng b/interface/web/dns/lib/lang/nl_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/nl_dns_import.lng +++ b/interface/web/dns/lib/lang/nl_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_import.lng b/interface/web/dns/lib/lang/pl_dns_import.lng index d622e03985..f6b618c87b 100644 --- a/interface/web/dns/lib/lang/pl_dns_import.lng +++ b/interface/web/dns/lib/lang/pl_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Nie zaÅ‚adowany żaden plik'; $wb['zone_file_import_txt'] = 'Import pliku strefy'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_import.lng b/interface/web/dns/lib/lang/pt_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/pt_dns_import.lng +++ b/interface/web/dns/lib/lang/pt_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_import.lng b/interface/web/dns/lib/lang/ro_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/ro_dns_import.lng +++ b/interface/web/dns/lib/lang/ro_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_import.lng b/interface/web/dns/lib/lang/ru_dns_import.lng index 752e02cc6c..95cf32c935 100644 --- a/interface/web/dns/lib/lang/ru_dns_import.lng +++ b/interface/web/dns/lib/lang/ru_dns_import.lng @@ -13,4 +13,13 @@ $wb['no_file_uploaded_error'] = 'Файл зоны не загружен.'; $wb['zone_file_import_txt'] = 'Импорт файла зоны'; $wb['error_no_server_id'] = 'Ðе указан Ñервер.'; $wb['error_not_allowed_server_id'] = 'Выбранный Ñервер не доÑтупен Ð´Ð»Ñ Ñтой учетной запиÑи.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_import.lng b/interface/web/dns/lib/lang/se_dns_import.lng index 801dd473f7..1c94966002 100644 --- a/interface/web/dns/lib/lang/se_dns_import.lng +++ b/interface/web/dns/lib/lang/se_dns_import.lng @@ -7,10 +7,19 @@ $wb['domain_txt'] = 'Domän'; $wb['zone_file_successfully_imported_txt'] = 'Zonfilimporten har lyckats!'; $wb['error_no_valid_zone_file_txt'] = 'Detta verkar inte vara en giltig zonfil'; $wb['zonefile_to_import_txt'] = 'Zonfil'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Importera zonfiler'; $wb['no_file_uploaded_error'] = 'Ingen zonfil uppladdad'; $wb['zone_file_import_txt'] = 'Zonfilsimport'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_import.lng b/interface/web/dns/lib/lang/sk_dns_import.lng index 8f67eba14c..3fc63992ed 100644 --- a/interface/web/dns/lib/lang/sk_dns_import.lng +++ b/interface/web/dns/lib/lang/sk_dns_import.lng @@ -4,13 +4,22 @@ $wb['client_txt'] = 'Client'; $wb['btn_save_txt'] = 'Import Zonefile'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['domain_txt'] = 'Domain'; -$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!'; -$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!'; +$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported.'; +$wb['error_no_valid_zone_file_txt'] = 'This zone file appears invalid.'; $wb['zonefile_to_import_txt'] = 'Zone File'; -$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.'; +$wb['domain_field_desc_txt'] = 'If empty, domain name is taken from SOA record.'; $wb['title'] = 'Import Zone Files'; $wb['no_file_uploaded_error'] = 'No zonefile uploaded'; $wb['zone_file_import_txt'] = 'Zone File Import'; $wb['error_no_server_id'] = 'No server provided.'; $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng index 0f95a3131f..8aa42a51e3 100644 --- a/interface/web/dns/lib/lang/tr_dns_import.lng +++ b/interface/web/dns/lib/lang/tr_dns_import.lng @@ -13,4 +13,13 @@ $wb['title'] = 'Bölge Dosyalarını İçe Aktar'; $wb['no_file_uploaded_error'] = 'Hiçbir bölge dosyası yüklenmedi'; $wb['error_no_server_id'] = 'Sunucu belirtilmemiÅŸ.'; $wb['error_not_allowed_server_id'] = 'SeçilmiÅŸ sunucuda bu hesap kullanılamaz.'; +$wb['zone_already_exists'] = 'This zone already exists, you must delete or rename it first.'; +$wb['zone_not_allowed'] = 'This zone is not allowed for this account.'; +$wb['zone_file_missing_soa'] = 'The zone file must contain a SOA record.'; +$wb['zone_file_multiple_soa'] = 'The zone file cannot contain multiple SOA records.'; +$wb['zone_file_soa_parser'] = 'The SOA record in this zone file could not be processed. Ensure SERIAL, REFRESH, RETRY, EXPIRE and MINIMUM are each on a separate line from other data.'; +$wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.'; +$wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.'; +$wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.'; +$wb['zone_file_import_fail'] = 'The zone file did not import.'; ?> -- GitLab From e68fbf8426bb5848eb4d8c6cf09a8468b2b69227 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 9 Apr 2020 17:38:23 -0600 Subject: [PATCH 315/571] NAPTR dns record editor/support --- interface/web/dns/dns_dkim_edit.php | 1 + interface/web/dns/dns_edit_base.php | 23 +++ interface/web/dns/dns_import.php | 1 + interface/web/dns/dns_naptr_edit.php | 100 ++++++++++ interface/web/dns/form/dns_naptr.tform.php | 174 ++++++++++++++++++ interface/web/dns/lib/lang/en_dns_naptr.lng | 21 +++ interface/web/dns/list/dns_a.list.php | 2 +- interface/web/dns/templates/dns_a_list.htm | 1 + .../web/dns/templates/dns_naptr_edit.htm | 46 +++++ server/conf/bind_pri.domain.master | 26 +-- 10 files changed, 381 insertions(+), 14 deletions(-) create mode 100644 interface/web/dns/dns_naptr_edit.php create mode 100644 interface/web/dns/form/dns_naptr.tform.php create mode 100644 interface/web/dns/lib/lang/en_dns_naptr.lng create mode 100644 interface/web/dns/templates/dns_naptr_edit.htm diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php index 5c95b2033d..520d382281 100644 --- a/interface/web/dns/dns_dkim_edit.php +++ b/interface/web/dns/dns_dkim_edit.php @@ -126,6 +126,7 @@ class page_action extends tform_actions { $this->dataRecord["stamp"] = date('Y-m-d H:i:s'); // check for duplicate entry + // Should NOT include data in this check? it must be unique for zone/name (selector)/type, regardless of data $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']); if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"]; if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"]; diff --git a/interface/web/dns/dns_edit_base.php b/interface/web/dns/dns_edit_base.php index 9cea8b6ae2..4f61b71ce5 100644 --- a/interface/web/dns/dns_edit_base.php +++ b/interface/web/dns/dns_edit_base.php @@ -44,6 +44,29 @@ class dns_page_action extends tform_actions { return false; } + protected function zoneFileEscape( $str ) { + // escape backslash and double quotes + $ret = str_replace( '\\', '\\\\', $str ); + $ret = str_replace( '"', '\\"', $ret ); + return $ret; + } + + protected function zoneFileUnescape( $str ) { + // escape sequence can be rfc 1035 '\DDD' (backslash, 3 digits) or '\X' (backslash, non-digit char) + return preg_replace_callback( '/\\\\(\d\d\d|\D)/', + function( $Matches ) { + if (preg_match( '/\d{3}/', $Matches[1] )) { + return chr( $Matches[1] ); + } elseif (preg_match( '/\D/', $Matches[1])) { + return $Matches[1]; + } else { + return $Matches[0]; + } + }, + $str + ); + } + function onShowNew() { global $app, $conf; diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php index 143d9248a3..b0c19bfff0 100644 --- a/interface/web/dns/dns_import.php +++ b/interface/web/dns/dns_import.php @@ -289,6 +289,7 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name' $line = rtrim($line); if ($line != ''){ + // this of course breaks TXT when it includes whitespace $sPattern = '/\s+/m'; $sReplace = ' '; $new_lines[] = preg_replace($sPattern, $sReplace, $line); diff --git a/interface/web/dns/dns_naptr_edit.php b/interface/web/dns/dns_naptr_edit.php new file mode 100644 index 0000000000..99001ac8c5 --- /dev/null +++ b/interface/web/dns/dns_naptr_edit.php @@ -0,0 +1,100 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +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. +*/ + +/****************************************** +* Begin Form configuration +******************************************/ + +$tform_def_file = "form/dns_naptr.tform.php"; + +/****************************************** +* End Form configuration +******************************************/ + +require_once '../../lib/config.inc.php'; +require_once '../../lib/app.inc.php'; +require_once './dns_edit_base.php'; + +// Loading classes +class page_action extends dns_page_action { + + function onSubmit() { + // Combine and escape/format fields into the data to be saved + $this->dataRecord['data'] = $this->dataRecord['pref'] .' '. + '"'. $this->zoneFileEscape( $this->dataRecord['flags'] ) .'" '. + '"'. $this->zoneFileEscape( $this->dataRecord['service'] ) .'" '. + '"'. $this->zoneFileEscape( $this->dataRecord['regexp'] ) .'" '. + $this->dataRecord['replacement'] . (substr( $this->dataRecord['replacement'], -1 ) == '.' ? '' : '.'); + + $this->dataRecord['aux'] = $this->dataRecord['order']; + + parent::onSubmit(); + } + + + function onShowEnd() { + global $app, $conf; + + // Split the parts of NAPTR record, unescape (backslashes), and unquote to edit. + // + // Examples: + // ;; order pref flags service regexp replacement + // IN NAPTR 100 10 "" "" "!^cid:.+@([^\.]+\.)(.*)$!\2!i" . + // + // ;; order pref flags service regexp replacement + // IN NAPTR 100 100 "s" "thttp+L2R" "" thttp.example.com. + // IN NAPTR 100 100 "s" "ftp+L2R" "" ftp.example.com. + // + // 'order' in stored in 'aux' column, + // all of 'pref "flags" "service" "regexp" replacement.' is here in 'data' + // + $matched = preg_match('/^\s*(\d+)\s+"([a-zA-Z0-9]*)"\s+"([^"]*)"\s+"(.*)"\s+([^\s]*\.)\s*$/', $this->dataRecord['data'], $matches); + + if ($matched === FALSE || is_array($matches) && count($matches) == 0) { + if ( isset($app->tform->errorMessage) ) { + $app->tform->errorMessage .= '<br/>' . $app->tform->wordbook["record_parse_error"]; + } + } else { + $app->tpl->setVar('pref', $matches[1], true); + $app->tpl->setVar('flags', $this->zoneFileUnescape($matches[2]), true); + $app->tpl->setVar('service', $this->zoneFileUnescape($matches[3]), true); + $app->tpl->setVar('regexp', $this->zoneFileUnescape($matches[4]), true); + $app->tpl->setVar('replacement', $matches[5], true); + } + + parent::onShowEnd(); + } + +} + +$page = new page_action; +$page->onLoad(); + +?> diff --git a/interface/web/dns/form/dns_naptr.tform.php b/interface/web/dns/form/dns_naptr.tform.php new file mode 100644 index 0000000000..24531dba2c --- /dev/null +++ b/interface/web/dns/form/dns_naptr.tform.php @@ -0,0 +1,174 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ +global $app; + +$form["title"] = "DNS NAPTR"; +$form["description"] = ""; +$form["name"] = "dns_naptr"; +$form["action"] = "dns_naptr_edit.php"; +$form["db_table"] = "dns_rr"; +$form["db_table_idx"] = "id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "dns"; +$form["list_default"] = "dns_a_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$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 + +$form["tabs"]['dns'] = array ( + 'title' => "DNS NAPTR", + 'width' => 100, + 'template' => "templates/dns_naptr_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'zone' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => @$app->functions->intval($_REQUEST["zone"]), + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER') + ), + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^((\*|[a-zA-Z0-9\-_]{1,255})(\.[a-zA-Z0-9\-_]{1,255})*\.?)?$/', + 'errmsg'=> 'name_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '1024' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'NAPTR', + 'value' => '', + 'width' => '5', + 'maxlength' => '5' + ), + 'data' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + 0 => array ( + 'type' => 'NOTEMPTY', + 'errmsg'=> 'data_error_empty'), + 1 => array ( + 'type' => 'REGEX', + // matching: 'pref "flags" "service" "regexp" replacement.' + 'regex' => '/^\s*(\d+)\s+"([a-zA-Z0-9]*)"\s+"([^"]*)"\s+"(.*)"\s+([^\s]*\.)\s*$/', + 'errmsg'=> 'naptr_error_regex'), + ), + 'default' => '100 "" "" "" .', + 'value' => '', + 'width' => '30', + 'maxlength' => '1024' + ), + 'aux' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '100', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'ttl' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'RANGE', + 'range' => '60:', + 'errmsg'=> 'ttl_range_error'), + ), + 'default' => '3600', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'active' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'Y', + 'value' => array(0 => 'N', 1 => 'Y') + ), + 'stamp' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'serial' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + //################################# + // END Datatable fields + //################################# + ) +); + + + +?> diff --git a/interface/web/dns/lib/lang/en_dns_naptr.lng b/interface/web/dns/lib/lang/en_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php index 1c6999511d..b6363b7d24 100644 --- a/interface/web/dns/list/dns_a.list.php +++ b/interface/web/dns/list/dns_a.list.php @@ -132,7 +132,7 @@ $liste["item"][] = array( 'field' => "type", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); + 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); ?> diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm index 5a4a5eeb68..b6b21f18b6 100644 --- a/interface/web/dns/templates/dns_a_list.htm +++ b/interface/web/dns/templates/dns_a_list.htm @@ -28,6 +28,7 @@ <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_hinfo_edit.php?zone={tmpl_var name='parent_id'}">HINFO</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_loc_edit.php?zone={tmpl_var name='parent_id'}">LOC</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_mx_edit.php?zone={tmpl_var name='parent_id'}">MX</button> + <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_naptr_edit.php?zone={tmpl_var name='parent_id'}">NAPTR</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_ns_edit.php?zone={tmpl_var name='parent_id'}">NS</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_ptr_edit.php?zone={tmpl_var name='parent_id'}">PTR</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_rp_edit.php?zone={tmpl_var name='parent_id'}">RP</button> diff --git a/interface/web/dns/templates/dns_naptr_edit.htm b/interface/web/dns/templates/dns_naptr_edit.htm new file mode 100644 index 0000000000..8fd928c3de --- /dev/null +++ b/interface/web/dns/templates/dns_naptr_edit.htm @@ -0,0 +1,46 @@ +<div class='page-header'> + <h1><tmpl_var name="list_head_txt"></h1> +</div> +<p><tmpl_var name="list_desc_txt"></p> + + + <div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> + <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="order" class="col-sm-3 control-label">{tmpl_var name='order_txt'}</label> + <div class="col-sm-9"><input type="text" name="order" id="order" value="{tmpl_var name='aux'}" class="form-control" placeholder="100" /></div></div> + <div class="form-group"> + <label for="pref" class="col-sm-3 control-label">{tmpl_var name='pref_txt'}</label> + <div class="col-sm-9"><input type="text" name="pref" id="pref" value="{tmpl_var name='pref'}" class="form-control" placeholder="100" /></div></div> + <div class="form-group"> + <label for="flags" class="col-sm-3 control-label">{tmpl_var name='flags_txt'}</label> + <div class="col-sm-9"><input type="text" name="flags" id="flags" value="{tmpl_var name='flags'}" class="form-control" placeholder="s" /></div></div> + <div class="form-group"> + <label for="service" class="col-sm-3 control-label">{tmpl_var name='service_txt'}</label> + <div class="col-sm-9"><input type="text" name="service" id="service" value="{tmpl_var name='service'}" class="form-control" placeholder="http+I2R" /></div></div> + <div class="form-group"> + <label for="regexp" class="col-sm-3 control-label">{tmpl_var name='regexp_txt'}</label> + <div class="col-sm-9"><input type="text" name="regexp" id="regexp" value="{tmpl_var name='regexp'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="replacement" class="col-sm-3 control-label">{tmpl_var name='replacement_txt'}</label> + <div class="col-sm-9"><input type="text" name="replacement" id="replacement" value="{tmpl_var name='replacement'}" class="form-control" placeholder="_http._tcp.foo.com." /></div></div> + <div class="form-group"> + <label for="ttl" class="col-sm-3 control-label">{tmpl_var name='ttl_txt'}</label> + <div class="col-sm-9"><input type="text" name="ttl" id="ttl" value="{tmpl_var name='ttl'}" class="form-control" /></div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='active'} + </div> + </div> + + + <input type="hidden" name="id" value="{tmpl_var name='id'}"> + <input type="hidden" name="zone" value="{tmpl_var name='zone'}"> + <input type="hidden" name="type" value="{tmpl_var name='type'}"> + + <div class="clear"><div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_naptr_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> + </div></div> diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master index fb867901dc..379d80c8df 100644 --- a/server/conf/bind_pri.domain.master +++ b/server/conf/bind_pri.domain.master @@ -9,46 +9,46 @@ $TTL {tmpl_var name='ttl'} <tmpl_loop name='zones'> <tmpl_if name="type" op='==' value='NS'> -{tmpl_var name='name'} {tmpl_var name='ttl'} NS {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} NS {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='A'> -{tmpl_var name='name'} {tmpl_var name='ttl'} A {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} A {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='AAAA'> -{tmpl_var name='name'} {tmpl_var name='ttl'} AAAA {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} AAAA {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='ALIAS'> -{tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='CAA'> -{tmpl_var name='name'} {tmpl_var name='ttl'} CAA {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} CAA {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='CNAME'> -{tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='DS'> -{tmpl_var name='name'} {tmpl_var name='ttl'} DS {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} DS {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='HINFO'> -{tmpl_var name='name'} {tmpl_var name='ttl'} HINFO {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} HINFO {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='LOC'> {tmpl_var name='name'} {tmpl_var name='ttl'} LOC {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='MX'> -{tmpl_var name='name'} {tmpl_var name='ttl'} MX {tmpl_var name='aux'} {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} MX {tmpl_var name='aux'} {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='NAPTR'> -{tmpl_var name='name'} {tmpl_var name='ttl'} NAPTR {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} NAPTR {tmpl_var name='aux'} {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='PTR'> {tmpl_var name='name'} {tmpl_var name='ttl'} PTR {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='RP'> -{tmpl_var name='name'} {tmpl_var name='ttl'} RP {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} RP {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='SRV'> -{tmpl_var name='name'} {tmpl_var name='ttl'} SRV {tmpl_var name='aux'} {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} SRV {tmpl_var name='aux'} {tmpl_var name='data'} </tmpl_if> <tmpl_if name="type" op='==' value='TLSA'> {tmpl_var name='name'} {tmpl_var name='ttl'} TLSA {tmpl_var name='data'} @@ -57,7 +57,7 @@ $TTL {tmpl_var name='ttl'} {tmpl_var name='name'} {tmpl_var name='ttl'} TXT "{tmpl_var name='data'}" </tmpl_if> <tmpl_if name="type" op='==' value='TYPE257'> -{tmpl_var name='name'} {tmpl_var name='ttl'} TYPE257 {tmpl_var name='data'} +{tmpl_var name='name'} {tmpl_var name='ttl'} TYPE257 {tmpl_var name='data'} </tmpl_if> </tmpl_loop> -- GitLab From dade9b71e76b7e0fb35ed6be5a2ce983e72f968f Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 10 Apr 2020 09:50:49 -0600 Subject: [PATCH 316/571] add naptr lang files --- interface/web/dns/lib/lang/ar_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/bg_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/br_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/ca_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/cz_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/de_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/dk_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/el_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/es_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/fi_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/fr_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/hr_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/hu_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/id_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/it_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/ja_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/nl_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/pl_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/pt_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/ro_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/ru_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/se_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/sk_dns_naptr.lng | 21 +++++++++++++++++++++ interface/web/dns/lib/lang/tr_dns_naptr.lng | 21 +++++++++++++++++++++ 24 files changed, 504 insertions(+) create mode 100644 interface/web/dns/lib/lang/ar_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/bg_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/br_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/ca_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/cz_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/de_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/dk_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/el_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/es_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/fi_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/fr_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/hr_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/hu_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/id_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/it_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/ja_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/nl_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/pl_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/pt_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/ro_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/ru_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/se_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/sk_dns_naptr.lng create mode 100644 interface/web/dns/lib/lang/tr_dns_naptr.lng diff --git a/interface/web/dns/lib/lang/ar_dns_naptr.lng b/interface/web/dns/lib/lang/ar_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/ar_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/bg_dns_naptr.lng b/interface/web/dns/lib/lang/bg_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/bg_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/br_dns_naptr.lng b/interface/web/dns/lib/lang/br_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/br_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/ca_dns_naptr.lng b/interface/web/dns/lib/lang/ca_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/ca_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/cz_dns_naptr.lng b/interface/web/dns/lib/lang/cz_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/de_dns_naptr.lng b/interface/web/dns/lib/lang/de_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/de_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/dk_dns_naptr.lng b/interface/web/dns/lib/lang/dk_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/dk_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/el_dns_naptr.lng b/interface/web/dns/lib/lang/el_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/el_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/es_dns_naptr.lng b/interface/web/dns/lib/lang/es_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/es_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/fi_dns_naptr.lng b/interface/web/dns/lib/lang/fi_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/fi_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/fr_dns_naptr.lng b/interface/web/dns/lib/lang/fr_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/fr_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/hr_dns_naptr.lng b/interface/web/dns/lib/lang/hr_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/hr_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/hu_dns_naptr.lng b/interface/web/dns/lib/lang/hu_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/hu_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/id_dns_naptr.lng b/interface/web/dns/lib/lang/id_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/id_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/it_dns_naptr.lng b/interface/web/dns/lib/lang/it_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/it_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/ja_dns_naptr.lng b/interface/web/dns/lib/lang/ja_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/ja_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/nl_dns_naptr.lng b/interface/web/dns/lib/lang/nl_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/nl_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/pl_dns_naptr.lng b/interface/web/dns/lib/lang/pl_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/pl_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/pt_dns_naptr.lng b/interface/web/dns/lib/lang/pt_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/pt_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/ro_dns_naptr.lng b/interface/web/dns/lib/lang/ro_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/ro_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/ru_dns_naptr.lng b/interface/web/dns/lib/lang/ru_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/ru_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/se_dns_naptr.lng b/interface/web/dns/lib/lang/se_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/se_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/sk_dns_naptr.lng b/interface/web/dns/lib/lang/sk_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/sk_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> diff --git a/interface/web/dns/lib/lang/tr_dns_naptr.lng b/interface/web/dns/lib/lang/tr_dns_naptr.lng new file mode 100644 index 0000000000..c63e695a86 --- /dev/null +++ b/interface/web/dns/lib/lang/tr_dns_naptr.lng @@ -0,0 +1,21 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["order_txt"] = 'Order'; +$wb["pref_txt"] = 'Pref'; +$wb["flags_txt"] = 'Flags'; +$wb["service_txt"] = 'Service'; +$wb["regexp_txt"] = 'RegExp'; +$wb["replacement_txt"] = 'Replacement'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'NAPTR record is empty.'; +$wb["naptr_error_regex"] = 'Invalid NAPTR record. The NAPTR record must include Order, Pref and either Regex or Replacement.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['record_parse_error'] = 'Could not parse the record found in database.'; +?> -- GitLab From bf382abfba59cf380f1c77f3d88774b51adf4922 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 10 Apr 2020 10:16:17 -0600 Subject: [PATCH 317/571] clarify purpose of Minimum field (negative cache TTL) --- interface/web/dns/lib/lang/ar_dns_soa.lng | 2 +- interface/web/dns/lib/lang/ca_dns_soa.lng | 2 +- interface/web/dns/lib/lang/cz_dns_soa.lng | 2 +- interface/web/dns/lib/lang/de_dns_soa.lng | 2 +- interface/web/dns/lib/lang/dk_dns_soa.lng | 2 +- interface/web/dns/lib/lang/en_dns_soa.lng | 2 +- interface/web/dns/lib/lang/fr_dns_soa.lng | 2 +- interface/web/dns/lib/lang/hu_dns_soa.lng | 2 +- interface/web/dns/lib/lang/id_dns_soa.lng | 2 +- interface/web/dns/lib/lang/it_dns_soa.lng | 2 +- interface/web/dns/lib/lang/ja_dns_soa.lng | 2 +- interface/web/dns/lib/lang/nl_dns_soa.lng | 2 +- interface/web/dns/lib/lang/pl_dns_soa.lng | 2 +- interface/web/dns/lib/lang/pt_dns_soa.lng | 2 +- interface/web/dns/lib/lang/ro_dns_soa.lng | 2 +- interface/web/dns/lib/lang/ru_dns_soa.lng | 2 +- interface/web/dns/lib/lang/se_dns_soa.lng | 2 +- interface/web/dns/lib/lang/sk_dns_soa.lng | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/interface/web/dns/lib/lang/ar_dns_soa.lng b/interface/web/dns/lib/lang/ar_dns_soa.lng index 4e93c5b41c..c9721cebc0 100644 --- a/interface/web/dns/lib/lang/ar_dns_soa.lng +++ b/interface/web/dns/lib/lang/ar_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Allow zone transfers to <br />these IPs (comma separated list)'; $wb['active_txt'] = 'Active'; diff --git a/interface/web/dns/lib/lang/ca_dns_soa.lng b/interface/web/dns/lib/lang/ca_dns_soa.lng index aaf07a0b99..0b6759f073 100644 --- a/interface/web/dns/lib/lang/ca_dns_soa.lng +++ b/interface/web/dns/lib/lang/ca_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Autoriser les transfers de zones vers <br />ces IP (liste séparée par des virgules)'; $wb['active_txt'] = 'Actif'; diff --git a/interface/web/dns/lib/lang/cz_dns_soa.lng b/interface/web/dns/lib/lang/cz_dns_soa.lng index 5e4a0c2bb3..cb35f0ef3b 100644 --- a/interface/web/dns/lib/lang/cz_dns_soa.lng +++ b/interface/web/dns/lib/lang/cz_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Povolot pÅ™enos zóny do <br />tÄ›chto IP adres (položky oddÄ›lené Äárkami)'; $wb['active_txt'] = 'AktivnÃ'; diff --git a/interface/web/dns/lib/lang/de_dns_soa.lng b/interface/web/dns/lib/lang/de_dns_soa.lng index 35d0e54ccd..76d139391d 100644 --- a/interface/web/dns/lib/lang/de_dns_soa.lng +++ b/interface/web/dns/lib/lang/de_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Seriennummer'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Zonentransfer zu diesen IP Adressen erlauben (mit Komma getrennte Liste)'; $wb['active_txt'] = 'Aktiv'; diff --git a/interface/web/dns/lib/lang/dk_dns_soa.lng b/interface/web/dns/lib/lang/dk_dns_soa.lng index 1c8c5cc53c..6a3d71d973 100644 --- a/interface/web/dns/lib/lang/dk_dns_soa.lng +++ b/interface/web/dns/lib/lang/dk_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Opfriske'; $wb['retry_txt'] = 'Prøv igen'; $wb['expire_txt'] = 'Udløber'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Tillad zone overførsler til <br />disse IP-adresser (kommasepareret liste)'; $wb['active_txt'] = 'Aktiv'; diff --git a/interface/web/dns/lib/lang/en_dns_soa.lng b/interface/web/dns/lib/lang/en_dns_soa.lng index 03dd6834c9..1729a4d0cb 100644 --- a/interface/web/dns/lib/lang/en_dns_soa.lng +++ b/interface/web/dns/lib/lang/en_dns_soa.lng @@ -7,7 +7,7 @@ $wb["serial_txt"] = 'Serial'; $wb["refresh_txt"] = 'Refresh'; $wb["retry_txt"] = 'Retry'; $wb["expire_txt"] = 'Expire'; -$wb["minimum_txt"] = 'Minimum'; +$wb["minimum_txt"] = 'Minimum (negative cache ttl)'; $wb["ttl_txt"] = 'TTL'; $wb["xfer_txt"] = 'Allow zone transfers to <br />these IPs (comma separated list)'; $wb["active_txt"] = 'Active'; diff --git a/interface/web/dns/lib/lang/fr_dns_soa.lng b/interface/web/dns/lib/lang/fr_dns_soa.lng index fa5a5202f6..da63faadbd 100644 --- a/interface/web/dns/lib/lang/fr_dns_soa.lng +++ b/interface/web/dns/lib/lang/fr_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Autoriser les transfers de zones vers <br />ces IP (liste séparée par des virgules)'; $wb['active_txt'] = 'Actif'; diff --git a/interface/web/dns/lib/lang/hu_dns_soa.lng b/interface/web/dns/lib/lang/hu_dns_soa.lng index 80388e4056..4019614088 100644 --- a/interface/web/dns/lib/lang/hu_dns_soa.lng +++ b/interface/web/dns/lib/lang/hu_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Allow zone transfers to <br />these IPs (comma separated list)'; $wb['active_txt'] = 'AktÃv'; diff --git a/interface/web/dns/lib/lang/id_dns_soa.lng b/interface/web/dns/lib/lang/id_dns_soa.lng index a8b9df0d59..c42890b71c 100644 --- a/interface/web/dns/lib/lang/id_dns_soa.lng +++ b/interface/web/dns/lib/lang/id_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Izinkan transfer zona ke <br />IP ini (daftar dipisahkan dengan koma)'; $wb['active_txt'] = 'Aktif'; diff --git a/interface/web/dns/lib/lang/it_dns_soa.lng b/interface/web/dns/lib/lang/it_dns_soa.lng index 48ba33d550..7ca3cb1cb1 100644 --- a/interface/web/dns/lib/lang/it_dns_soa.lng +++ b/interface/web/dns/lib/lang/it_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Seriale'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Consenti trasferimento zone a <br />questi IP (elenco separato da virgola)'; $wb['active_txt'] = 'Attivo'; diff --git a/interface/web/dns/lib/lang/ja_dns_soa.lng b/interface/web/dns/lib/lang/ja_dns_soa.lng index 2e0fd5515f..3964f3fcdb 100644 --- a/interface/web/dns/lib/lang/ja_dns_soa.lng +++ b/interface/web/dns/lib/lang/ja_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'ゾーン転é€ã‚’許å¯ã™ã‚‹IPアドレス<br />(, ã§åŒºåˆ‡ã£ã¦ãã ã•ã„)'; $wb['active_txt'] = '有効'; diff --git a/interface/web/dns/lib/lang/nl_dns_soa.lng b/interface/web/dns/lib/lang/nl_dns_soa.lng index b29c040df8..121339c00c 100644 --- a/interface/web/dns/lib/lang/nl_dns_soa.lng +++ b/interface/web/dns/lib/lang/nl_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serieel'; $wb['refresh_txt'] = 'Ververs'; $wb['retry_txt'] = 'Opnieuw proberen'; $wb['expire_txt'] = 'Verlopen'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Sta zone transfers toe naar <br />deze IPs (komma gescheiden waarden)'; $wb['active_txt'] = 'Actief'; diff --git a/interface/web/dns/lib/lang/pl_dns_soa.lng b/interface/web/dns/lib/lang/pl_dns_soa.lng index f2d7e1ad87..1724c4c141 100644 --- a/interface/web/dns/lib/lang/pl_dns_soa.lng +++ b/interface/web/dns/lib/lang/pl_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Klucz'; $wb['refresh_txt'] = 'OdÅ›wież'; $wb['retry_txt'] = 'Ponów'; $wb['expire_txt'] = 'WygasÅ‚'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Zezwól na przeniesienie stref do <br />tych adresów IP (adresy rozdzielaj przecinkiem)'; $wb['active_txt'] = 'Aktywny'; diff --git a/interface/web/dns/lib/lang/pt_dns_soa.lng b/interface/web/dns/lib/lang/pt_dns_soa.lng index 61ff07f0cb..bdcc1660ff 100644 --- a/interface/web/dns/lib/lang/pt_dns_soa.lng +++ b/interface/web/dns/lib/lang/pt_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Permitir transferências de zona para <br />estes IPs (lista separada por ponto e vÃrgula)'; $wb['active_txt'] = 'Activo'; diff --git a/interface/web/dns/lib/lang/ro_dns_soa.lng b/interface/web/dns/lib/lang/ro_dns_soa.lng index 134758f95e..40607318f7 100644 --- a/interface/web/dns/lib/lang/ro_dns_soa.lng +++ b/interface/web/dns/lib/lang/ro_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serial'; $wb['refresh_txt'] = 'Reincarca'; $wb['retry_txt'] = 'Reincearca'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Accepta transfer zone catre <br />aceste IP-uri (comma separated list)'; $wb['active_txt'] = 'Active'; diff --git a/interface/web/dns/lib/lang/ru_dns_soa.lng b/interface/web/dns/lib/lang/ru_dns_soa.lng index fe716cdc1b..7bd15cd638 100644 --- a/interface/web/dns/lib/lang/ru_dns_soa.lng +++ b/interface/web/dns/lib/lang/ru_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Серийный номер'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Повтор'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Xfer (IP)'; $wb['active_txt'] = 'Ðктивно'; diff --git a/interface/web/dns/lib/lang/se_dns_soa.lng b/interface/web/dns/lib/lang/se_dns_soa.lng index 034d3235a7..cfeb2f9fde 100644 --- a/interface/web/dns/lib/lang/se_dns_soa.lng +++ b/interface/web/dns/lib/lang/se_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Serienummer'; $wb['refresh_txt'] = 'Refresh'; $wb['retry_txt'] = 'Retry'; $wb['expire_txt'] = 'Expire'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'Allow zone transfers to <br />these IPs (comma separated list)'; $wb['active_txt'] = 'Aktiv'; diff --git a/interface/web/dns/lib/lang/sk_dns_soa.lng b/interface/web/dns/lib/lang/sk_dns_soa.lng index ac1f116243..79d49eee92 100644 --- a/interface/web/dns/lib/lang/sk_dns_soa.lng +++ b/interface/web/dns/lib/lang/sk_dns_soa.lng @@ -7,7 +7,7 @@ $wb['serial_txt'] = 'Seriové Äislo'; $wb['refresh_txt'] = 'ObnoviÅ¥'; $wb['retry_txt'] = 'OpakovaÅ¥'; $wb['expire_txt'] = 'ExpirovaÅ¥'; -$wb['minimum_txt'] = 'Minimum'; +$wb['minimum_txt'] = 'Minimum (negative cache ttl)'; $wb['ttl_txt'] = 'TTL'; $wb['xfer_txt'] = 'PovoliÅ¥ prenosy zóny na <br />tieto IP (comma separated list)'; $wb['active_txt'] = 'AktivovaÅ¥'; -- GitLab From 16359a85f6fc7ae563d26c8c86cb31c2ee9a61ee Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 28 Apr 2020 15:49:39 -0600 Subject: [PATCH 318/571] add 'DNS naptr function' to remote api --- interface/lib/classes/remote.d/dns.inc.php | 32 ++++++++++++++++--- .../web/admin/lib/lang/ar_remote_user.lng | 1 + .../web/admin/lib/lang/bg_remote_user.lng | 1 + .../web/admin/lib/lang/br_remote_user.lng | 1 + .../web/admin/lib/lang/ca_remote_user.lng | 1 + .../web/admin/lib/lang/cz_remote_user.lng | 1 + .../web/admin/lib/lang/de_remote_user.lng | 1 + .../web/admin/lib/lang/dk_remote_user.lng | 1 + .../web/admin/lib/lang/el_remote_user.lng | 1 + .../web/admin/lib/lang/en_remote_user.lng | 1 + .../web/admin/lib/lang/es_remote_user.lng | 1 + .../web/admin/lib/lang/fi_remote_user.lng | 1 + .../web/admin/lib/lang/fr_remote_user.lng | 1 + .../web/admin/lib/lang/hr_remote_user.lng | 1 + .../web/admin/lib/lang/hu_remote_user.lng | 1 + .../web/admin/lib/lang/id_remote_user.lng | 1 + .../web/admin/lib/lang/it_remote_user.lng | 1 + .../web/admin/lib/lang/ja_remote_user.lng | 1 + .../web/admin/lib/lang/nl_remote_user.lng | 1 + .../web/admin/lib/lang/pl_remote_user.lng | 1 + .../web/admin/lib/lang/pt_remote_user.lng | 1 + .../web/admin/lib/lang/ro_remote_user.lng | 1 + .../web/admin/lib/lang/ru_remote_user.lng | 1 + .../web/admin/lib/lang/se_remote_user.lng | 1 + .../web/admin/lib/lang/sk_remote_user.lng | 1 + .../web/admin/lib/lang/tr_remote_user.lng | 1 + interface/web/dns/lib/remote.conf.php | 3 +- 27 files changed, 54 insertions(+), 6 deletions(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 434af6a983..98589f55c4 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -213,13 +213,13 @@ class remoting_dns extends remoting { //* Add a slave zone - public function dns_slave_add($session_id, $client_id, $params) { + public function dns_slave_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } return $this->insertQuery('../dns/form/dns_slave.tform.php', $client_id, $params); - } + } //* Update a slave zone public function dns_slave_update($session_id, $client_id, $primary_id, $params) { @@ -231,14 +231,14 @@ class remoting_dns extends remoting { return $affected_rows; } - //* Delete a slave zone - public function dns_slave_delete($session_id, $primary_id) { + //* Delete a slave zone + public function dns_slave_delete($session_id, $primary_id) { if(!$this->checkPerm($session_id, 'dns_zone_delete')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } return $this->deleteQuery('../dns/form/dns_slave.tform.php', $primary_id); - } + } //* Get record id by origin public function dns_zone_get_id($session_id, $origin) { @@ -494,6 +494,28 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- + //* Get record details + public function dns_naptr_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'NAPTR'); + } + + //* Add a record + public function dns_naptr_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'NAPTR'); + } + + //* Update a record + public function dns_naptr_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'NAPTR'); + } + + //* Delete a record + public function dns_naptr_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'NAPTR'); + } + + // ---------------------------------------------------------------------------------------------------------------- + //* Get record details public function dns_ns_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'NS'); diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng index d0504005e3..7ab3696dcb 100644 --- a/interface/web/admin/lib/lang/ar_remote_user.lng +++ b/interface/web/admin/lib/lang/ar_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng index 6eac31e4fe..5f106fa85d 100644 --- a/interface/web/admin/lib/lang/bg_remote_user.lng +++ b/interface/web/admin/lib/lang/bg_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias функции'; $wb['DNS cname functions'] = 'DNS cname функции'; $wb['DNS hinfo functions'] = 'DNS hinfo функции'; $wb['DNS mx functions'] = 'DNS mx функции'; +$wb['DNS naptr functions'] = 'DNS naptr функции'; $wb['DNS ns functions'] = 'DNS ns функции'; $wb['DNS ptr functions'] = 'DNS ptr функции'; $wb['DNS rp functions'] = 'DNS rp функции'; diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index fcaa6732c8..68ea3fbd20 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -50,6 +50,7 @@ $wb['DNS cname functions'] = 'Funções de CNAME dns'; $wb['DNS hinfo functions'] = 'Funções de HINFO dns'; $wb['DNS mx functions'] = 'Funções de MX dns'; $wb['DNS ns functions'] = 'Funções de NS dns'; +$wb['DNS naptr functions'] = 'Funções de NAPTR dns'; $wb['DNS ptr functions'] = 'Funções de PTR dns'; $wb['DNS rp functions'] = 'Funções de RP dns'; $wb['DNS srv functions'] = 'Funções de SVR dns'; diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng index 2fc633b555..fb135d7555 100644 --- a/interface/web/admin/lib/lang/ca_remote_user.lng +++ b/interface/web/admin/lib/lang/ca_remote_user.lng @@ -35,6 +35,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng index aeacc442ca..e76e6d03dc 100644 --- a/interface/web/admin/lib/lang/cz_remote_user.lng +++ b/interface/web/admin/lib/lang/cz_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Funkce DNS ALIAS'; $wb['DNS cname functions'] = 'Funkce DNS CNAME'; $wb['DNS hinfo functions'] = 'Funkce DNS HINFO'; $wb['DNS mx functions'] = 'Funkce DNS MX'; +$wb['DNS naptr functions'] = 'Funkce DNS NAPTR'; $wb['DNS ns functions'] = 'Funkce DNS NS'; $wb['DNS ptr functions'] = 'Funkce DNS PTR'; $wb['DNS rp functions'] = 'Funkce DNS RP'; diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng index 164a0fb81a..b40cc5c0e0 100644 --- a/interface/web/admin/lib/lang/de_remote_user.lng +++ b/interface/web/admin/lib/lang/de_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS Alias Funktionen'; $wb['DNS cname functions'] = 'DNS cname Funktionen'; $wb['DNS hinfo functions'] = 'DNS hinfo Funktionen'; $wb['DNS mx functions'] = 'DNS mx Funktionen'; +$wb['DNS naptr functions'] = 'DNS NAPTR Funktionen'; $wb['DNS ns functions'] = 'DNS ns Funktionen'; $wb['DNS ptr functions'] = 'DNS ptr Funktionen'; $wb['DNS rp functions'] = 'DNS rp Funktionen'; diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng index 80f61c8929..2d89300d5b 100644 --- a/interface/web/admin/lib/lang/dk_remote_user.lng +++ b/interface/web/admin/lib/lang/dk_remote_user.lng @@ -35,6 +35,7 @@ $wb['DNS alias functions'] = 'DNS alias funktioner'; $wb['DNS cname functions'] = 'DNS cname funktioner'; $wb['DNS hinfo functions'] = 'DNS hinfo funktioner'; $wb['DNS mx functions'] = 'DNS mx funktioner'; +$wb['DNS naptr functions'] = 'DNS naptr funktioner'; $wb['DNS ns functions'] = 'DNS ns funktioner'; $wb['DNS ptr functions'] = 'DNS ptr funktioner'; $wb['DNS rp functions'] = 'DNS rp funktioner'; diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng index c38f1de2f0..ca20ee81f2 100644 --- a/interface/web/admin/lib/lang/el_remote_user.lng +++ b/interface/web/admin/lib/lang/el_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'ΕνÎÏγειες εγγÏαφών alias του D $wb['DNS cname functions'] = 'ΕνÎÏγειες εγγÏαφών cname του DNS'; $wb['DNS hinfo functions'] = 'ΕνÎÏγειες εγγÏαφών hinfo του DNS'; $wb['DNS mx functions'] = 'ΕνÎÏγειες εγγÏαφών mx του DNS'; +$wb['DNS naptr functions'] = 'ΕνÎÏγειες εγγÏαφών naptr του DNS'; $wb['DNS ns functions'] = 'ΕνÎÏγειες εγγÏαφών ns του DNS'; $wb['DNS ptr functions'] = 'ΕνÎÏγειες εγγÏαφών ptr του DNS'; $wb['DNS rp functions'] = 'ΕνÎÏγειες εγγÏαφών rp του DNS'; diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng index 2fc633b555..fb135d7555 100644 --- a/interface/web/admin/lib/lang/en_remote_user.lng +++ b/interface/web/admin/lib/lang/en_remote_user.lng @@ -35,6 +35,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng index 7cefa1e5db..79a1cd3f52 100644 --- a/interface/web/admin/lib/lang/es_remote_user.lng +++ b/interface/web/admin/lib/lang/es_remote_user.lng @@ -6,6 +6,7 @@ $wb['DNS alias functions'] = 'Funciones DNS para registro ALIAS'; $wb['DNS cname functions'] = 'Funciones DNS para registro CNAME'; $wb['DNS hinfo functions'] = 'Funciones DNS para registro HINFO'; $wb['DNS mx functions'] = 'Funciones DNS para registro MX'; +$wb['DNS naptr functions'] = 'Funciones DNS para registro NAPTR'; $wb['DNS ns functions'] = 'Funciones DNS para registro NS'; $wb['DNS ptr functions'] = 'Funciones DNS para registro PTR'; $wb['DNS rp functions'] = 'Funciones DNS para registro RP'; diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng index 2ae3420d62..b87d663635 100644 --- a/interface/web/admin/lib/lang/fi_remote_user.lng +++ b/interface/web/admin/lib/lang/fi_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias-tietuetoiminnot'; $wb['DNS cname functions'] = 'DNS cname-tietuetoiminnot'; $wb['DNS hinfo functions'] = 'DNS hinfo-tietuetoiminnot'; $wb['DNS mx functions'] = 'DNS mx-tietuetoiminnot'; +$wb['DNS naptr functions'] = 'DNS naptr-tietuetoiminnot'; $wb['DNS ns functions'] = 'DNS ns-tietuetoiminnot'; $wb['DNS ptr functions'] = 'DNS ptr-tietuetoiminnot'; $wb['DNS rp functions'] = 'DNS rp-tietuetoiminnot'; diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng index 1594e60fb4..943e0bb2ef 100644 --- a/interface/web/admin/lib/lang/fr_remote_user.lng +++ b/interface/web/admin/lib/lang/fr_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Fonction alias DNS'; $wb['DNS cname functions'] = 'Fonctions CNAME DNS'; $wb['DNS hinfo functions'] = 'Fonctions HINFO DNS'; $wb['DNS mx functions'] = 'Fonctions MX DNS'; +$wb['DNS naptr functions'] = 'Fonctions NAPTR DNS'; $wb['DNS ns functions'] = 'Fonctions NS DNS'; $wb['DNS ptr functions'] = 'Fonctions PTR DNS'; $wb['DNS rp functions'] = 'Fonctions RP DNS'; diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index 069177e5ed..e92ae26ed4 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias funkcije'; $wb['DNS cname functions'] = 'DNS cname funkcije'; $wb['DNS hinfo functions'] = 'DNS hinfo funkcije'; $wb['DNS mx functions'] = 'DNS mx funkcije'; +$wb['DNS naptr functions'] = 'DNS naptr funkcije'; $wb['DNS ns functions'] = 'DNS ns funkcije'; $wb['DNS ptr functions'] = 'DNS ptr funkcije'; $wb['DNS rp functions'] = 'DNS rp funkcije'; diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng index bae9d82f53..81560e3aa0 100644 --- a/interface/web/admin/lib/lang/hu_remote_user.lng +++ b/interface/web/admin/lib/lang/hu_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng index cc6efb627a..839b5fa15d 100644 --- a/interface/web/admin/lib/lang/id_remote_user.lng +++ b/interface/web/admin/lib/lang/id_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Fungsi-fungsi Alias DNS'; $wb['DNS cname functions'] = 'Fungsi-fungsi CNAME DNS'; $wb['DNS hinfo functions'] = 'Fungsi-fungsi HINFO DNS'; $wb['DNS mx functions'] = 'Fungsi-fungsi MX DNS'; +$wb['DNS naptr functions'] = 'Fungsi-fungsi NAPTR DNS'; $wb['DNS ns functions'] = 'Fungsi-fungsi NS DNS'; $wb['DNS ptr functions'] = 'Fungsi-fungsi PTR DNS'; $wb['DNS rp functions'] = 'Fungsi-fungsi RP DNS'; diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng index caef58a8c6..efbe416a41 100644 --- a/interface/web/admin/lib/lang/it_remote_user.lng +++ b/interface/web/admin/lib/lang/it_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng index 2b9ce2bbf0..fb4d27007e 100644 --- a/interface/web/admin/lib/lang/ja_remote_user.lng +++ b/interface/web/admin/lib/lang/ja_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng index f049116094..601574583c 100644 --- a/interface/web/admin/lib/lang/nl_remote_user.lng +++ b/interface/web/admin/lib/lang/nl_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functies'; $wb['DNS cname functions'] = 'DNS cname functies'; $wb['DNS hinfo functions'] = 'DNS hinfo functies'; $wb['DNS mx functions'] = 'DNS mx functies'; +$wb['DNS naptr functions'] = 'DNS naptr functies'; $wb['DNS ns functions'] = 'DNS ns functies'; $wb['DNS ptr functions'] = 'DNS ptr functies'; $wb['DNS rp functions'] = 'DNS rp functies'; diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng index 5df48fb29b..f73fd19a0c 100644 --- a/interface/web/admin/lib/lang/pl_remote_user.lng +++ b/interface/web/admin/lib/lang/pl_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Funkcje aliasów DNS'; $wb['DNS cname functions'] = 'Funkcje rekordu CNAME DNS'; $wb['DNS hinfo functions'] = 'Funkcje rekordu HINFO DNS'; $wb['DNS mx functions'] = 'Funkcje rekordu MX DNS'; +$wb['DNS naptr functions'] = 'Funkcje rekordu NAPTR DNS'; $wb['DNS ns functions'] = 'Funkcje rekordu NS DNS'; $wb['DNS ptr functions'] = 'Funkcje rekordu PTR DNS'; $wb['DNS rp functions'] = 'Funkcje rekordu RP DNS'; diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng index f23a6abd5c..a4d1ce5c1e 100644 --- a/interface/web/admin/lib/lang/pt_remote_user.lng +++ b/interface/web/admin/lib/lang/pt_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Funções de alias DNS'; $wb['DNS cname functions'] = 'Funções de cname DNS'; $wb['DNS hinfo functions'] = 'Funções de hinfo DNS'; $wb['DNS mx functions'] = 'Funções de mx DNS'; +$wb['DNS naptr functions'] = 'Funções de naptr DNS'; $wb['DNS ns functions'] = 'Funções de ns DNS'; $wb['DNS ptr functions'] = 'Funções de ptr DNS'; $wb['DNS rp functions'] = 'Funções de rp DNS'; diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng index d0504005e3..7ab3696dcb 100644 --- a/interface/web/admin/lib/lang/ro_remote_user.lng +++ b/interface/web/admin/lib/lang/ro_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng index 2d556b0800..f12fce5d64 100644 --- a/interface/web/admin/lib/lang/ru_remote_user.lng +++ b/interface/web/admin/lib/lang/ru_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'Функции DNS ALIAS'; $wb['DNS cname functions'] = 'Функции DNS CNAME'; $wb['DNS hinfo functions'] = 'Функции DNS hinfo'; $wb['DNS mx functions'] = 'Функции DNS mx'; +$wb['DNS naptr functions'] = 'Функции DNS naptr'; $wb['DNS ns functions'] = 'Функции DNS ns'; $wb['DNS ptr functions'] = 'Функции DNS ptr'; $wb['DNS rp functions'] = 'Функции DNS rp'; diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 657e5878f1..f983c1c5c8 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng index 200cd28861..2ec21c3900 100644 --- a/interface/web/admin/lib/lang/sk_remote_user.lng +++ b/interface/web/admin/lib/lang/sk_remote_user.lng @@ -34,6 +34,7 @@ $wb['DNS alias functions'] = 'DNS alias functions'; $wb['DNS cname functions'] = 'DNS cname functions'; $wb['DNS hinfo functions'] = 'DNS hinfo functions'; $wb['DNS mx functions'] = 'DNS mx functions'; +$wb['DNS naptr functions'] = 'DNS naptr functions'; $wb['DNS ns functions'] = 'DNS ns functions'; $wb['DNS ptr functions'] = 'DNS ptr functions'; $wb['DNS rp functions'] = 'DNS rp functions'; diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index a713cad0d4..8d946bb97b 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -35,6 +35,7 @@ $wb['DNS alias functions'] = 'DNS alias iÅŸlevleri'; $wb['DNS cname functions'] = 'DNS cname iÅŸlevleri'; $wb['DNS hinfo functions'] = 'DNS hinfo iÅŸlevleri'; $wb['DNS mx functions'] = 'DNS mx iÅŸlevleri'; +$wb['DNS naptr functions'] = 'DNS naptr iÅŸlevleri'; $wb['DNS ns functions'] = 'DNS ns iÅŸlevleri'; $wb['DNS ptr functions'] = 'DNS ptr iÅŸlevleri'; $wb['DNS rp functions'] = 'DNS rp iÅŸlevleri'; diff --git a/interface/web/dns/lib/remote.conf.php b/interface/web/dns/lib/remote.conf.php index 0ca556926b..376d65df7e 100644 --- a/interface/web/dns/lib/remote.conf.php +++ b/interface/web/dns/lib/remote.conf.php @@ -9,11 +9,12 @@ $function_list['dns_ds_get,dns_ds_add,dns_ds_update,dns_ds_delete'] = 'DNS ds fu $function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions'; $function_list['dns_loc_get,dns_loc_add,dns_loc_update,dns_loc_delete'] = 'DNS loc functions'; $function_list['dns_mx_get,dns_mx_add,dns_mx_update,dns_mx_delete'] = 'DNS mx functions'; -$function_list['dns_tlsa_get,dns_tlsa_add,dns_tlsa_update,dns_tlsa_delete'] = 'DNS tlsa functions'; +$function_list['dns_naptr_get,dns_naptr_add,dns_naptr_update,dns_naptr_delete'] = 'DNS naptr functions'; $function_list['dns_ns_get,dns_ns_add,dns_ns_update,dns_ns_delete'] = 'DNS ns functions'; $function_list['dns_ptr_get,dns_ptr_add,dns_ptr_update,dns_ptr_delete'] = 'DNS ptr functions'; $function_list['dns_rp_get,dns_rp_add,dns_rp_update,dns_rp_delete'] = 'DNS rp functions'; $function_list['dns_srv_get,dns_srv_add,dns_srv_update,dns_srv_delete'] = 'DNS srv functions'; +$function_list['dns_tlsa_get,dns_tlsa_add,dns_tlsa_update,dns_tlsa_delete'] = 'DNS tlsa functions'; $function_list['dns_txt_get,dns_txt_add,dns_txt_update,dns_txt_delete'] = 'DNS txt functions'; ?> -- GitLab From 8d2f2ec7a3bd159fb085abefae2557a3ddaf7420 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 28 Apr 2020 15:50:17 -0600 Subject: [PATCH 319/571] add DNS naptr functions to API docs --- remoting_client/API-docs/dns_naptr_add.html | 38 +++++++++++++++++++ .../API-docs/dns_naptr_delete.html | 29 ++++++++++++++ remoting_client/API-docs/dns_naptr_get.html | 29 ++++++++++++++ .../API-docs/dns_naptr_update.html | 38 +++++++++++++++++++ remoting_client/API-docs/navigation.html | 4 ++ 5 files changed, 138 insertions(+) create mode 100644 remoting_client/API-docs/dns_naptr_add.html create mode 100644 remoting_client/API-docs/dns_naptr_delete.html create mode 100644 remoting_client/API-docs/dns_naptr_get.html create mode 100644 remoting_client/API-docs/dns_naptr_update.html diff --git a/remoting_client/API-docs/dns_naptr_add.html b/remoting_client/API-docs/dns_naptr_add.html new file mode 100644 index 0000000000..d691d65b3a --- /dev/null +++ b/remoting_client/API-docs/dns_naptr_add.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>dns_naptr_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Adds a dns server location record if <em>type</em> is <em>naptr</em>.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> +<p class="margin"> zone (<span class="paratype">int(11)</span>)</p> +<p class="margin"> name (<span class="paratype">varchar(64)</span>)</p> +<p class="margin"> type (<span class="paratype">enum('a','aaaa','alias','cname','hinfo','mx','naptr','ns','ptr','rp','srv','txt')</span>)</p> +<p class="margin"> data (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> aux (<span class="paratype">int(11)</span>)</p> +<p class="margin"> ttl (<span class="paratype">int(11)</span>)</p> +<p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> stamp (<span class="paratype">timestamp</span>)</p> +<p class="margin"> serial (<span class="paratype">int(10)</span>)</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns the ID of the newly added naptr resource record.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/dns_naptr_delete.html b/remoting_client/API-docs/dns_naptr_delete.html new file mode 100644 index 0000000000..376bd18aa2 --- /dev/null +++ b/remoting_client/API-docs/dns_naptr_delete.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>dns_naptr_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Deletes target dns naptr resource record.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> None</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns the number of deleted records.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/dns_naptr_get.html b/remoting_client/API-docs/dns_naptr_get.html new file mode 100644 index 0000000000..eb3d6b0eda --- /dev/null +++ b/remoting_client/API-docs/dns_naptr_get.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>dns_naptr_get(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1> +<br> +<p class="headgrp">Description: </p> +<p class="margin"> Retrieves information about target dns naptr resource record.</p><br> +<p class="headgrp">Input Variables: </p> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$primary_id</span></p> +<p class="headgrp">Parameters (in <span class="var">$params</span>): </p> +<p class="margin"> None</p> +<p class="headgrp">Output: </p> +<p class="margin"> Returns all fields and values of the chosen dns naptr resource record.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/dns_naptr_update.html b/remoting_client/API-docs/dns_naptr_update.html new file mode 100644 index 0000000000..97f40f056f --- /dev/null +++ b/remoting_client/API-docs/dns_naptr_update.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html><head><title>ISPCOnfig 3 remote API documentation</title> + + + + + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="definitionen.css"> + <style type="text/css"> + </style></head> + +<body> +<div style="padding:40px"> +<h1>dns_naptr_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1> +<br> +<b>Description: </b> +<p class="margin"> Updates a dns server location record if <em>type</em> is <em>naptr</em>.</p><br> +<b>Input Variables: </b> +<p class="margin"> <span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span></p> +<b>Parameters (in <span style= "color:#A17FFF">$params</span>): </b> +<p class="margin"> server_id (<span class="paratype">int(11)</span>)</p> +<p class="margin"> zone (<span class="paratype">int(11)</span>)</p> +<p class="margin"> name (<span class="paratype">varchar(64)</span>)</p> +<p class="margin"> type (<span class="paratype">enum('a','aaaa','alias','cname','hinfo','mx','naptr','ns','ptr','rp','srv','txt')</span>)</p> +<p class="margin"> data (<span class="paratype">varchar(255)</span>)</p> +<p class="margin"> aux (<span class="paratype">int(11)</span>)</p> +<p class="margin"> ttl (<span class="paratype">int(11)</span>)</p> +<p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> stamp (<span class="paratype">timestamp</span>)</p> +<p class="margin"> serial (<span class="paratype">int(10)</span>)</p> +<b>Output: </b> +<p class="margin"> Returns the number of affected rows.</p> +<!--<b>Output:</b> +<p style="margin-left:100px">Gives a record of </p> --> +</div> + +</body></html> diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html index 02b5876b3d..89ef7bc8e4 100644 --- a/remoting_client/API-docs/navigation.html +++ b/remoting_client/API-docs/navigation.html @@ -75,6 +75,10 @@ <p><a href="dns_mx_delete.html" target="content">dns_mx_delete</a></p> <p><a href="dns_mx_get.html" target="content">dns_mx_get</a></p> <p><a href="dns_mx_update.html" target="content">dns_mx_update</a></p> +<p><a href="dns_naptr_add.html" target="content">dns_naptr_add</a></p> +<p><a href="dns_naptr_delete.html" target="content">dns_naptr_delete</a></p> +<p><a href="dns_naptr_get.html" target="content">dns_naptr_get</a></p> +<p><a href="dns_naptr_update.html" target="content">dns_naptr_update</a></p> <p><a href="dns_ns_add.html" target="content">dns_ns_add</a></p> <p><a href="dns_ns_delete.html" target="content">dns_ns_delete</a></p> <p><a href="dns_ns_get.html" target="content">dns_ns_get</a></p> -- GitLab From c169e5846574b946f72d498447830ee3bde0c564 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 28 Apr 2020 16:01:57 -0600 Subject: [PATCH 320/571] add dns_naptr_* api examples --- remoting_client/examples/dns_naptr_add.php | 58 +++++++++++++++++++ remoting_client/examples/dns_naptr_delete.php | 45 ++++++++++++++ remoting_client/examples/dns_naptr_get.php | 45 ++++++++++++++ remoting_client/examples/dns_naptr_update.php | 53 +++++++++++++++++ 4 files changed, 201 insertions(+) create mode 100644 remoting_client/examples/dns_naptr_add.php create mode 100644 remoting_client/examples/dns_naptr_delete.php create mode 100644 remoting_client/examples/dns_naptr_get.php create mode 100644 remoting_client/examples/dns_naptr_update.php diff --git a/remoting_client/examples/dns_naptr_add.php b/remoting_client/examples/dns_naptr_add.php new file mode 100644 index 0000000000..5abd220d1b --- /dev/null +++ b/remoting_client/examples/dns_naptr_add.php @@ -0,0 +1,58 @@ +<?php + +require 'soap_config.php'; + +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + $timestamp = date("Y-m-d H:i:s"); + + //* Set the function parameters. + $client_id = 1; + $params = array( + 'server_id' => 1, + 'zone' => 10, + 'name' => 'server', + 'type' => 'naptr', + 'data' => '100 "s" "thttp+L2R" "" thttp.example.com.', + 'aux' => '100', + 'ttl' => '3600', + 'active' => 'y', + 'stamp' => $timestamp, + 'serial' => '1', + ); + + $id = $client->dns_naptr_add($session_id, $client_id, $params); + + echo "ID: ".$id."<br>"; + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> diff --git a/remoting_client/examples/dns_naptr_delete.php b/remoting_client/examples/dns_naptr_delete.php new file mode 100644 index 0000000000..ca252132f0 --- /dev/null +++ b/remoting_client/examples/dns_naptr_delete.php @@ -0,0 +1,45 @@ +<?php + +require 'soap_config.php'; + +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + //* Parameters + $id = 11; + + + $affected_rows = $client->dns_naptr_delete($session_id, $id); + + echo "Number of records that have been deleted: ".$affected_rows."<br>"; + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> diff --git a/remoting_client/examples/dns_naptr_get.php b/remoting_client/examples/dns_naptr_get.php new file mode 100644 index 0000000000..db9dffde9b --- /dev/null +++ b/remoting_client/examples/dns_naptr_get.php @@ -0,0 +1,45 @@ +<?php + +require 'soap_config.php'; + + +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + //* Set the function parameters. + $id = 11; + + $dns_record = $client->dns_naptr_get($session_id, $id); + + print_r($dns_record); + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> diff --git a/remoting_client/examples/dns_naptr_update.php b/remoting_client/examples/dns_naptr_update.php new file mode 100644 index 0000000000..9b0784a69d --- /dev/null +++ b/remoting_client/examples/dns_naptr_update.php @@ -0,0 +1,53 @@ +<?php + +require 'soap_config.php'; + + +$context = stream_context_create([ + 'ssl' => [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'<br />'; + } + + //* Parameters + $id = 11; + $client_id = 1; + + + //* Get the dns record + $dns_record = $client->dns_naptr_get($session_id, $id); + + //* Change active to inactive + $dns_record['active'] = 'n'; + + $affected_rows = $client->dns_naptr_update($session_id, $client_id, $id, $dns_record); + + echo "Number of records that have been changed in the database: ".$affected_rows."<br>"; + + if($client->logout($session_id)) { + echo 'Logged out.<br />'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> -- GitLab From 8e0dbf86b4d2d2dc718b318d0b8ba9597d7f7cc2 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 27 May 2020 12:24:42 -0600 Subject: [PATCH 321/571] change to long array syntax --- remoting_client/examples/dns_naptr_add.php | 8 ++++---- remoting_client/examples/dns_naptr_delete.php | 8 ++++---- remoting_client/examples/dns_naptr_get.php | 8 ++++---- remoting_client/examples/dns_naptr_update.php | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/remoting_client/examples/dns_naptr_add.php b/remoting_client/examples/dns_naptr_add.php index 5abd220d1b..e6665a5c4b 100644 --- a/remoting_client/examples/dns_naptr_add.php +++ b/remoting_client/examples/dns_naptr_add.php @@ -2,14 +2,14 @@ require 'soap_config.php'; -$context = stream_context_create([ - 'ssl' => [ +$context = stream_context_create( array( + 'ssl' => array( // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true - ] -]); + ), +)); $client = new SoapClient(null, array('location' => $soap_location, diff --git a/remoting_client/examples/dns_naptr_delete.php b/remoting_client/examples/dns_naptr_delete.php index ca252132f0..1d794ccea7 100644 --- a/remoting_client/examples/dns_naptr_delete.php +++ b/remoting_client/examples/dns_naptr_delete.php @@ -2,14 +2,14 @@ require 'soap_config.php'; -$context = stream_context_create([ - 'ssl' => [ +$context = stream_context_create( array( + 'ssl' => array( // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true - ] -]); + ), +)); $client = new SoapClient(null, array('location' => $soap_location, diff --git a/remoting_client/examples/dns_naptr_get.php b/remoting_client/examples/dns_naptr_get.php index db9dffde9b..b9beec45f4 100644 --- a/remoting_client/examples/dns_naptr_get.php +++ b/remoting_client/examples/dns_naptr_get.php @@ -3,14 +3,14 @@ require 'soap_config.php'; -$context = stream_context_create([ - 'ssl' => [ +$context = stream_context_create( array( + 'ssl' => array( // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true - ] -]); + ), +)); $client = new SoapClient(null, array('location' => $soap_location, diff --git a/remoting_client/examples/dns_naptr_update.php b/remoting_client/examples/dns_naptr_update.php index 9b0784a69d..1f97464687 100644 --- a/remoting_client/examples/dns_naptr_update.php +++ b/remoting_client/examples/dns_naptr_update.php @@ -3,14 +3,14 @@ require 'soap_config.php'; -$context = stream_context_create([ - 'ssl' => [ +$context = stream_context_create( array( + 'ssl' => array( // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true - ] -]); + ), +)); $client = new SoapClient(null, array('location' => $soap_location, -- GitLab From eb3c7baafd7848210ba82fa75eae2e9fa8d59b98 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 27 May 2020 12:30:08 -0600 Subject: [PATCH 322/571] add dns_tlsa_* remote api functions. fixes #4360 --- interface/lib/classes/remote.d/dns.inc.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 98589f55c4..1d9ec35f54 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -604,6 +604,28 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- + //* Get record details + public function dns_tlsa_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'TLSA'); + } + + //* Add a record + public function dns_tlsa_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'TLSA'); + } + + //* Update a record + public function dns_tlsa_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'TLSA'); + } + + //* Delete a record + public function dns_tlsa_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'TLSA'); + } + + // ---------------------------------------------------------------------------------------------------------------- + //* Get record details public function dns_txt_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'TXT'); -- GitLab From 4c0c99a37ac8a7d78db906b784db6dfce2c263cc Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 27 May 2020 12:36:23 -0600 Subject: [PATCH 323/571] add dns_caa_* remote api functions. fixes #5559 --- interface/lib/classes/remote.d/dns.inc.php | 22 ++++++++++++++++++++++ interface/web/dns/lib/remote.conf.php | 1 + 2 files changed, 23 insertions(+) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 1d9ec35f54..36180ace3e 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -428,6 +428,28 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- + //* Get record details + public function dns_cname_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'CAA'); + } + + //* Add a record + public function dns_cname_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'CAA'); + } + + //* Update a record + public function dns_cname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'CAA'); + } + + //* Delete a record + public function dns_cname_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'CAA'); + } + + // ---------------------------------------------------------------------------------------------------------------- + //* Get record details public function dns_cname_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'CNAME'); diff --git a/interface/web/dns/lib/remote.conf.php b/interface/web/dns/lib/remote.conf.php index 376d65df7e..ea725de8a4 100644 --- a/interface/web/dns/lib/remote.conf.php +++ b/interface/web/dns/lib/remote.conf.php @@ -4,6 +4,7 @@ $function_list['dns_zone_get,dns_zone_get_id,dns_zone_add,dns_zone_update,dns_zo $function_list['dns_a_get,dns_a_add,dns_a_update,dns_a_delete'] = 'DNS a functions'; $function_list['dns_aaaa_get,dns_aaaa_add,dns_aaaa_update,dns_aaaa_delete'] = 'DNS aaaa functions'; $function_list['dns_alias_get,dns_alias_add,dns_alias_update,dns_alias_delete'] = 'DNS alias functions'; +$function_list['dns_caa_get,dns_caa_add,dns_caa_update,dns_caa_delete'] = 'DNS caa functions'; $function_list['dns_cname_get,dns_cname_add,dns_cname_update,dns_cname_delete'] = 'DNS cname functions'; $function_list['dns_ds_get,dns_ds_add,dns_ds_update,dns_ds_delete'] = 'DNS ds functions'; $function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions'; -- GitLab From 050e0333b8b00d85240a2b721003d451f9536232 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 29 May 2020 10:33:50 -0600 Subject: [PATCH 324/571] check AAAA and CNAME for duplicate records. fixes #5623 --- interface/web/dns/dns_aaaa_edit.php | 8 ++++++++ interface/web/dns/dns_cname_edit.php | 2 +- interface/web/dns/lib/lang/ar_dns_a.lng | 2 +- interface/web/dns/lib/lang/ar_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/bg_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/br_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/ca_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/cz_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/de_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/dk_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/el_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/en_dns_a.lng | 4 ++-- interface/web/dns/lib/lang/en_dns_aaaa.lng | 3 ++- interface/web/dns/lib/lang/es_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/fi_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/fr_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/hr_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/hu_dns_a.lng | 2 +- interface/web/dns/lib/lang/hu_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/id_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/it_dns_a.lng | 2 +- interface/web/dns/lib/lang/it_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/ja_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/nl_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/pl_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/pt_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/ro_dns_a.lng | 2 +- interface/web/dns/lib/lang/ro_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/ru_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/se_dns_a.lng | 2 +- interface/web/dns/lib/lang/se_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/sk_dns_aaaa.lng | 1 + interface/web/dns/lib/lang/tr_dns_aaaa.lng | 1 + 33 files changed, 42 insertions(+), 9 deletions(-) diff --git a/interface/web/dns/dns_aaaa_edit.php b/interface/web/dns/dns_aaaa_edit.php index 006e71cf4c..780fbcc80e 100644 --- a/interface/web/dns/dns_aaaa_edit.php +++ b/interface/web/dns/dns_aaaa_edit.php @@ -45,6 +45,14 @@ require_once './dns_edit_base.php'; // Loading classes class page_action extends dns_page_action { + protected function checkDuplicate() { + global $app; + //* Check for duplicates where IP and hostname are the same + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'AAAA' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + if($tmp['number'] > 0) return true; + return false; + } + } $page = new page_action; diff --git a/interface/web/dns/dns_cname_edit.php b/interface/web/dns/dns_cname_edit.php index 403650c1c4..1f17169e60 100644 --- a/interface/web/dns/dns_cname_edit.php +++ b/interface/web/dns/dns_cname_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/lib/lang/ar_dns_a.lng b/interface/web/dns/lib/lang/ar_dns_a.lng index 7543672a94..68e40da5e7 100644 --- a/interface/web/dns/lib/lang/ar_dns_a.lng +++ b/interface/web/dns/lib/lang/ar_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_aaaa.lng b/interface/web/dns/lib/lang/ar_dns_aaaa.lng index 0b7e38ac65..3d634780f1 100644 --- a/interface/web/dns/lib/lang/ar_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ar_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_aaaa.lng b/interface/web/dns/lib/lang/bg_dns_aaaa.lng index 37ad45726f..d4efae73db 100644 --- a/interface/web/dns/lib/lang/bg_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/bg_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Вие нÑмате право да добавÑте за $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng index 1a3cfb2d27..2f81a52a0c 100644 --- a/interface/web/dns/lib/lang/br_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns ne $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IPv6 está em branco.'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'O endereço IPv6 possui formato inválido.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_aaaa.lng b/interface/web/dns/lib/lang/ca_dns_aaaa.lng index e29a5cbf0d..c06b153dc2 100644 --- a/interface/web/dns/lib/lang/ca_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ca_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'L\'adresse IP est vide.'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng index e28e9a8b73..9c59cea715 100644 --- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['ip_error_wrong'] = 'IP - formát adresy neplatný'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_aaaa.lng b/interface/web/dns/lib/lang/de_dns_aaaa.lng index 4fe054d367..a225723f89 100644 --- a/interface/web/dns/lib/lang/de_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/de_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'IPv6 Adresse ist leer'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IPv6 Adressen Format ist ungültig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_aaaa.lng b/interface/web/dns/lib/lang/dk_dns_aaaa.lng index 664d63b41c..27a7fae538 100644 --- a/interface/web/dns/lib/lang/dk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/dk_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'IP-Adressen er tom'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_aaaa.lng b/interface/web/dns/lib/lang/el_dns_aaaa.lng index 5ca896c732..faced402b1 100644 --- a/interface/web/dns/lib/lang/el_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/el_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Δεν Îχετε δικαίωμα να Ï€ÏοσθÎσε $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'ΔιεÏθυνση IP κενή'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'ΔιεÏθυνση IP με μη ÎγκυÏη μοÏφοποίηση'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_a.lng b/interface/web/dns/lib/lang/en_dns_a.lng index dbba7fb6e8..510d04f34d 100644 --- a/interface/web/dns/lib/lang/en_dns_a.lng +++ b/interface/web/dns/lib/lang/en_dns_a.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; -$wb["data_error_duplicate"] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; -?> \ No newline at end of file +?> diff --git a/interface/web/dns/lib/lang/en_dns_aaaa.lng b/interface/web/dns/lib/lang/en_dns_aaaa.lng index 201a4d9584..1272fb8587 100644 --- a/interface/web/dns/lib/lang/en_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/en_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DN $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; -?> \ No newline at end of file +?> diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng index 8851ef84ff..957feabdb5 100644 --- a/interface/web/dns/lib/lang/es_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/es_dns_aaaa.lng @@ -1,6 +1,7 @@ <?php $wb['active_txt'] = 'Habilitado'; $wb['data_error_empty'] = 'Dirección IP vacÃa'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['data_txt'] = 'Dirección IPv6'; $wb['ip_error_wrong'] = 'La dirección IP tiene un formato incorrecto'; $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; diff --git a/interface/web/dns/lib/lang/fi_dns_aaaa.lng b/interface/web/dns/lib/lang/fi_dns_aaaa.lng index 78c65575fd..f6f99f324b 100644 --- a/interface/web/dns/lib/lang/fi_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fi_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueit $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on väärän muotoinen.'; $wb['data_error_empty'] = 'Tekstikenttä on tyhjä'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Tekstikenttä on vääränlainen'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_aaaa.lng b/interface/web/dns/lib/lang/fr_dns_aaaa.lng index 1cc3722de5..280acdcea4 100644 --- a/interface/web/dns/lib/lang/fr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fr_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'L’adresse IP est vide.'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_aaaa.lng b/interface/web/dns/lib/lang/hr_dns_aaaa.lng index d8a3419309..76fc600703 100644 --- a/interface/web/dns/lib/lang/hr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hr_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.'; $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje IPv6 adresa je prazno'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Neispravan format IPv6 adrese'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_a.lng b/interface/web/dns/lib/lang/hu_dns_a.lng index 3e52e94b9f..4820079b53 100644 --- a/interface/web/dns/lib/lang/hu_dns_a.lng +++ b/interface/web/dns/lib/lang/hu_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_aaaa.lng b/interface/web/dns/lib/lang/hu_dns_aaaa.lng index f78f42d186..5f261eeb5f 100644 --- a/interface/web/dns/lib/lang/hu_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hu_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_aaaa.lng b/interface/web/dns/lib/lang/id_dns_aaaa.lng index 68cab83271..3257ba193f 100644 --- a/interface/web/dns/lib/lang/id_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/id_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Alamat IP kosong'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_a.lng b/interface/web/dns/lib/lang/it_dns_a.lng index 122560b487..9aa9e1186f 100644 --- a/interface/web/dns/lib/lang/it_dns_a.lng +++ b/interface/web/dns/lib/lang/it_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname vuoto.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate A-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_aaaa.lng b/interface/web/dns/lib/lang/it_dns_aaaa.lng index 2746bb887d..e82ada0166 100644 --- a/interface/web/dns/lib/lang/it_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/it_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DN $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Indirizzo Ip vuoto'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_aaaa.lng b/interface/web/dns/lib/lang/ja_dns_aaaa.lng index 2c859b7416..3f10406659 100644 --- a/interface/web/dns/lib/lang/ja_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ja_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'ã“ã®DNSゾーンã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹æ¨©é™ãŒ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'IPアドレスを入力ã—ã¦ãã ã•ã„。'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IPアドレスã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_aaaa.lng b/interface/web/dns/lib/lang/nl_dns_aaaa.lng index 298193c1e8..139cc71ded 100644 --- a/interface/web/dns/lib/lang/nl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/nl_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan $wb['name_error_empty'] = 'De hostnaam is niet ingvuld'; $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.'; $wb['data_error_empty'] = 'IP-adres is niet ingevuld'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_aaaa.lng b/interface/web/dns/lib/lang/pl_dns_aaaa.lng index 867d73ab97..86d93fe71f 100644 --- a/interface/web/dns/lib/lang/pl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pl_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Nie masz uprawnieÅ„, aby dodać nowy wpis w tej strefie D $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Adres IP jest pusty.'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_aaaa.lng b/interface/web/dns/lib/lang/pt_dns_aaaa.lng index 04698ced19..9fc3798dc8 100644 --- a/interface/web/dns/lib/lang/pt_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pt_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona $wb['name_error_empty'] = 'O Hostname está em branco.'; $wb['name_error_regex'] = 'O Hostname está com formato inválido.'; $wb['data_error_empty'] = 'Endereço-IP em branco'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Endereço-IP com formato inválido'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_a.lng b/interface/web/dns/lib/lang/ro_dns_a.lng index f2f6a46c43..b8c2522432 100644 --- a/interface/web/dns/lib/lang/ro_dns_a.lng +++ b/interface/web/dns/lib/lang/ro_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname necompletat'; $wb['name_error_regex'] = 'Hostname format gresit'; $wb['data_error_empty'] = 'IP-Adresa vid'; $wb['ip_error_wrong'] = 'IP-Adresa format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_aaaa.lng b/interface/web/dns/lib/lang/ro_dns_aaaa.lng index 0b7e38ac65..3d634780f1 100644 --- a/interface/web/dns/lib/lang/ro_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ro_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_aaaa.lng b/interface/web/dns/lib/lang/ru_dns_aaaa.lng index 4620b53eaa..e8a02443d3 100644 --- a/interface/web/dns/lib/lang/ru_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ru_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту за $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ðеправильный формат имени хоÑта.'; $wb['data_error_empty'] = 'ПуÑтой IP-адреÑ'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_a.lng b/interface/web/dns/lib/lang/se_dns_a.lng index 7543672a94..68e40da5e7 100644 --- a/interface/web/dns/lib/lang/se_dns_a.lng +++ b/interface/web/dns/lib/lang/se_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_aaaa.lng b/interface/web/dns/lib/lang/se_dns_aaaa.lng index 0b7e38ac65..3d634780f1 100644 --- a/interface/web/dns/lib/lang/se_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/se_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_aaaa.lng b/interface/web/dns/lib/lang/sk_dns_aaaa.lng index 78d5cc6c4c..246ac1dd23 100644 --- a/interface/web/dns/lib/lang/sk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/sk_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnenie PridaÅ¥ záznam do tejto zóny DNS.'; $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'IP-Adresa prázdna'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP-Adresa má zlý formát'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng index 1726f80a8f..d75ff802bb 100644 --- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng @@ -11,6 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; $wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> -- GitLab From b36e2a011b5add564f39ebbcc41ccfefe98dd23d Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 1 Jun 2020 22:47:18 +0200 Subject: [PATCH 325/571] Removed double/empty titles and descriptions --- interface/web/mailuser/templates/index.htm | 3 +-- .../templates/mail_user_autoresponder_edit.htm | 12 +++--------- .../web/mailuser/templates/mail_user_cc_edit.htm | 9 +-------- .../web/mailuser/templates/mail_user_filter_edit.htm | 9 +-------- .../mailuser/templates/mail_user_password_edit.htm | 9 +-------- .../mailuser/templates/mail_user_spamfilter_edit.htm | 9 +-------- 6 files changed, 8 insertions(+), 43 deletions(-) diff --git a/interface/web/mailuser/templates/index.htm b/interface/web/mailuser/templates/index.htm index 8f87035562..5f065f9fa4 100644 --- a/interface/web/mailuser/templates/index.htm +++ b/interface/web/mailuser/templates/index.htm @@ -1,7 +1,6 @@ <div class='page-header'> <h1><tmpl_var name="page_head_txt"></h1> </div> -<p><tmpl_var name="page_desc_txt"></p> <div class="panel panel_mailuser"> @@ -33,4 +32,4 @@ </div> -</div> \ No newline at end of file +</div> diff --git a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm index 98b28cebf8..898f285e53 100644 --- a/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm +++ b/interface/web/mailuser/templates/mail_user_autoresponder_edit.htm @@ -1,13 +1,7 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="autoresponder_subject" class="col-sm-3 control-label">{tmpl_var name='autoresponder_subject_txt'}</label> - <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div></div> + <div class="col-sm-9"><input class="form-control" type="text" name="autoresponder_subject" id="autoresponder_subject" value="{tmpl_var name='autoresponder_subject'}" /></div> + </div> <div class="form-group"> <label for="autoresponder_text" class="col-sm-3 control-label">{tmpl_var name='autoresponder_text_txt'}</label> <div class="col-sm-9"><textarea class="form-control" name="autoresponder_text" id="autoresponder_text" rows='15' cols='30'>{tmpl_var name='autoresponder_text'}</textarea></div> @@ -30,4 +24,4 @@ <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_autoresponder_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mailuser/templates/mail_user_cc_edit.htm b/interface/web/mailuser/templates/mail_user_cc_edit.htm index 7c59fadf11..914f74ae3f 100644 --- a/interface/web/mailuser/templates/mail_user_cc_edit.htm +++ b/interface/web/mailuser/templates/mail_user_cc_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label> <div class="col-sm-9"><div class="checkbox">{tmpl_var name='email'}</div></div> @@ -20,4 +13,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_cc_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mailuser/templates/mail_user_filter_edit.htm b/interface/web/mailuser/templates/mail_user_filter_edit.htm index b09874263b..441ffba484 100644 --- a/interface/web/mailuser/templates/mail_user_filter_edit.htm +++ b/interface/web/mailuser/templates/mail_user_filter_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label for="rulename" class="col-sm-3 control-label">{tmpl_var name='rulename_txt'}</label> <div class="col-sm-9"><input type="text" id="rulename" name="rulename" value="{tmpl_var name='rulename'}" class="form-control"></div></div> @@ -29,4 +22,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_filter_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/mail_user_filter_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mailuser/templates/mail_user_password_edit.htm b/interface/web/mailuser/templates/mail_user_password_edit.htm index b487a1e9b2..c7a28dc48e 100644 --- a/interface/web/mailuser/templates/mail_user_password_edit.htm +++ b/interface/web/mailuser/templates/mail_user_password_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label> <div class="col-sm-9"> @@ -44,4 +37,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_password_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> diff --git a/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm b/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm index 3528daead1..6675846769 100644 --- a/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm +++ b/interface/web/mailuser/templates/mail_user_spamfilter_edit.htm @@ -1,10 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label> <div class="col-sm-9"> @@ -24,4 +17,4 @@ <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_spamfilter_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mailuser/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file + </div></div> -- GitLab From 09cf5d6507c0aea27edefe0c1e2ea17c9f7b3719 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 2 Jun 2020 17:28:23 -0600 Subject: [PATCH 326/571] update sql patch instructions. fixes #5630 --- install/sql/README.txt | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/install/sql/README.txt b/install/sql/README.txt index fe15ce5403..d1294363c1 100644 --- a/install/sql/README.txt +++ b/install/sql/README.txt @@ -9,18 +9,24 @@ then follow these steps: 1) Add the field or table in the ispconfig3.sql file. This file contains the complete database dump which is used when ISPConfig gets installed. -2) Create a new file in the "incremental" subfolder wich contains the alter - table, or if it is a complete new table then the add table, statement(s) in - MySQL syntax which is/are required to modify the current ispconfig database - during update. The naming scheme of the sql patch update files is - upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that - you choose for the new file is a +1 increment of the number of the last - existing file and that the number is formatted with 4 digits. +2) Edit the file "incremental/upd_dev_collection.sql" which contains the SQL + statements (alter table, add table, update, etc.) in MySQL syntax which + are required to modify the current ispconfig database during update. + + The upd_dev_collection.sql file contains all db schema modifications + for changes made since the last ISPConfig release. If SQL statements + are already present in the file when you make your additions, add yours + to the end of the file, and do not remove any existing statements. + + When a new ISPConfig update is released, the contents of + upd_dev_collections.sql will move to an sql patch file, using the naming + scheme upd_0001.sql, upd_0002.sql, upd_0003.sql etc. - A patch file may contain one or more alter table statements. Every patch file - gets executed once in the database, so do not modify older (already released) + A patch file may contain one or more SQL modification statements. Every patch + file gets executed once in the database, so do not modify older (already released) patch files, they will not get executed again if the update was already run - once on a system. + once on a system, and will result in missing updates on any system where they + have not run yet. After a patch has been executed, the dbversion field in the server table gets increeased to the version number of the last installed patch. -- GitLab From 8e584ee86a155a02cb29a478ef3f298af744f8ec Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 3 Jun 2020 09:10:14 +0200 Subject: [PATCH 327/571] - updated README for incremental sql files --- install/sql/README.txt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/install/sql/README.txt b/install/sql/README.txt index fe15ce5403..97a07a4863 100644 --- a/install/sql/README.txt +++ b/install/sql/README.txt @@ -9,18 +9,15 @@ then follow these steps: 1) Add the field or table in the ispconfig3.sql file. This file contains the complete database dump which is used when ISPConfig gets installed. -2) Create a new file in the "incremental" subfolder wich contains the alter - table, or if it is a complete new table then the add table, statement(s) in - MySQL syntax which is/are required to modify the current ispconfig database - during update. The naming scheme of the sql patch update files is - upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that - you choose for the new file is a +1 increment of the number of the last - existing file and that the number is formatted with 4 digits. +2) Add your ALTER TABLE, or if it is a complete new table then the add table, + statement(s) in MySQL syntax which is/are required to modify the current + ispconfig database during update to the file upd_dev_collection.sql in the + sql/incremental subfolder. - A patch file may contain one or more alter table statements. Every patch file - gets executed once in the database, so do not modify older (already released) - patch files, they will not get executed again if the update was already run - once on a system. + Please do not create new patch sql files as those will be generated on + new releases from the upd_dev_collection.sql file. Also please do not + modify older (already released) patch files, they will not get executed + again if the update was already run once on a system. After a patch has been executed, the dbversion field in the server table gets increeased to the version number of the last installed patch. -- GitLab From b34b1ad5bbc8d75db927116b517e6a23761e42bb Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 4 Jun 2020 13:53:35 +0200 Subject: [PATCH 328/571] Improved cron debug script --- server/cron_debug.php | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/server/cron_debug.php b/server/cron_debug.php index 74065f02c4..fbf59ebc26 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -39,20 +39,25 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE); $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); // Path settings $path = SCRIPT_PATH . '/lib/classes/cron.d'; //** Get commandline options -$cmd_opt = getopt('', array('cronjob::')); +$cmd_opt = getopt('', array('cronjob::', 'force', 'firstrun')); if(isset($cmd_opt['cronjob']) && is_file($path.'/'.$cmd_opt['cronjob'])) { // Cronjob that shell be run $cronjob_file = $cmd_opt['cronjob']; } else { - die('Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php'); + echo "Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php [--force] [--firstrun]\n" ; + echo "Available cronjobs:\n"; + foreach(glob($path.'/*-*.inc.php') as $cronjob) { + echo basename($cronjob)."\n"; + } + die(); } // Load and run the cronjob @@ -61,8 +66,20 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer include $path . '/' . $cronjob_file; $class_name = 'cronjob_' . $name; $cronjob = new $class_name(); -$cronjob->run(true); + +if(isset($cmd_opt['force'])) { + $app->db->query("UPDATE `sys_cron` SET `running` = 0 WHERE `name` = ?", $class_name); +} + +$cronjob->onPrepare(); +$cronjob->onBeforeRun(isset($cmd_opt['firstrun'])); +if(!$cronjob->isRunning()) { + $app->db->query("UPDATE `sys_cron` SET `running` = ? WHERE `name` = ?", ($cronjob->canBeRunInParallel() !== true ? "1" : "0"), $class_name); + $cronjob->onRunJob(); + $cronjob->onAfterRun(); + $cronjob->onCompleted(); +} die("finished.\n"); -?> +?> \ No newline at end of file -- GitLab From c798155c8fe85e102ef00e7b939ffa5bade22fd5 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sat, 6 Jun 2020 21:23:27 +0200 Subject: [PATCH 329/571] Added translations from #5477 --- interface/web/mail/lib/lang/de_mail_user.lng | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index 2c230e34ff..b60a756b09 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -57,9 +57,9 @@ $wb['daily_backup_txt'] = 'taeglich'; $wb['weekly_backup_txt'] = 'woechentlich'; $wb['monthly_backup_txt'] = 'monatlich'; $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; -$wb['sender_cc_txt'] = 'Send outgoing BCC to'; -$wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['autoresponder_start_date_is_required'] = 'Startdatum muss angegeben werden.'; +$wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)'; +$wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse'; +$wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; $wb['password_click_to_set_txt'] = 'Click to set'; ?> -- GitLab From 39c195b86a60fb1892d2836a59afe5495b434051 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sat, 6 Jun 2020 21:26:23 +0200 Subject: [PATCH 330/571] Added translations from #4962 --- interface/web/sites/lib/lang/de_web_childdomain_list.lng | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 a9bdf2861a..3ba596cbcd 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain_list.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain_list.lng @@ -10,8 +10,8 @@ $wb['domain_error_regex'] = 'Domain Name ist ungültig.'; $wb['no_redirect_txt'] = 'Keine Weiterleitung'; $wb['no_flag_txt'] = 'Keine Optionen'; $wb['none_txt'] = 'Keine'; -$wb['add_new_subdomain_txt'] = 'Add new Subdomain'; -$wb['add_new_aliasdomain_txt'] = 'Add new Aliasdomain'; +$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.'; -- GitLab From 413bc63b61f5d382d1a0c888b4002bc8e54d4236 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sat, 6 Jun 2020 22:26:58 +0200 Subject: [PATCH 331/571] Add translation for Zone File Import (#4311) --- interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/br_dns_soa_list.lng | 1 + interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/de_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/el_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/en_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/es_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/id_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/it_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/se_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng | 1 + interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng | 1 + interface/web/dns/templates/dns_soa_admin_list.htm | 2 +- 26 files changed, 26 insertions(+), 1 deletion(-) diff --git a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ar_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/bg_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_soa_list.lng b/interface/web/dns/lib/lang/br_dns_soa_list.lng index 969df1d2a9..d9fb674b87 100644 --- a/interface/web/dns/lib/lang/br_dns_soa_list.lng +++ b/interface/web/dns/lib/lang/br_dns_soa_list.lng @@ -7,4 +7,5 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'e-Mail'; $wb['add_new_record_wizard_txt'] = 'Adicionar nova zona dns através do assistente'; $wb['add_new_record_txt'] = 'Adicionar nova zona dns manualmente'; +$wb['zone_file_import_txt'] = 'Importar arquivo de zona'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng index ff6fe695ae..0f477a473a 100644 --- a/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ca_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Courriel'; $wb['add_new_record_wizard_txt'] = 'Assistant de création de zone'; $wb['add_new_record_txt'] = 'Création manuel de zone'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng index 0ec5de4f6d..a4f27d2472 100644 --- a/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/cz_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'E-mail'; $wb['add_new_record_wizard_txt'] = 'VytvoÅ™it DNS zónu pomocà průvodce'; $wb['add_new_record_txt'] = 'VytvoÅ™it DNS zónu manuálnÄ›'; +$wb['import_zone_file_txt'] = 'Importovat DNS zonový soubor'; $wb['sys_groupid_txt'] = 'Klient'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng index 363369c65b..294cd3b128 100644 --- a/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/de_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'E-Mail'; $wb['add_new_record_txt'] = 'Neue DNS Zone (SOA) hinzufügen'; $wb['add_new_record_wizard_txt'] = 'Neue DNS Zone per Assistent hinzufügen'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Kunde'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng index 32728405bb..f25d33ee67 100644 --- a/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/dk_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'E-mail'; $wb['add_new_record_wizard_txt'] = 'Tilføj ny DNS Zone med Guide'; $wb['add_new_record_txt'] = 'Tilføj ny DNS Zone manuelt'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Kunde'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/el_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng index 44cec900b9..f7f815079d 100644 --- a/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/en_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb["ns_txt"] = 'NS'; $wb["mbox_txt"] = 'Email'; $wb["add_new_record_wizard_txt"] = 'Add new DNS Zone with Wizard'; $wb["add_new_record_txt"] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb["sys_groupid_txt"] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng index aeb2618de3..087ebd80ed 100755 --- a/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/es_dns_soa_admin_list.lng @@ -2,6 +2,7 @@ $wb['active_txt'] = 'Habilitado'; $wb['add_new_record_txt'] = 'Añadir nueva Zona DNS manualmente'; $wb['add_new_record_wizard_txt'] = 'Añadir nueva Zona DNS usando el asistente'; +$wb['import_zone_file_txt'] = 'Importar archivo de zona'; $wb['list_head_txt'] = 'Zonas DNS'; $wb['mbox_txt'] = 'Email'; $wb['ns_txt'] = 'NS'; diff --git a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/fi_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng index e4d52ffee5..0e5779a0a2 100644 --- a/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/fr_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'E-mail'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng index 1dc2853bcf..f8753a3465 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Dodaj novu DNS zonu sa Äarobnjakom'; $wb['add_new_record_txt'] = 'Dodaj novu DNS zonu ruÄno'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Klijent'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/hu_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/id_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng index 5f0c730599..a7cce01001 100644 --- a/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/it_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Aggiungi un nuovo DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Aggiungi un nuovo DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Cliente'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ja_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng index 2ac184dd91..5231e47e22 100644 --- a/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/nl_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'E-mail'; $wb['add_new_record_wizard_txt'] = 'DNS Zone via wizard toevoegen'; $wb['add_new_record_txt'] = 'DNS Zone manueel toevoegen'; +$wb['import_zone_file_txt'] = 'Importeer zone bestand'; $wb['sys_groupid_txt'] = 'Klant'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/pl_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/pt_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ro_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng index 47940f9e8d..d3d7be7183 100644 --- a/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/ru_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'ÐÐ´Ñ€ÐµÑ Ñл. почты'; $wb['add_new_record_wizard_txt'] = 'Добавить новую DNS-зону Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ маÑтера'; $wb['add_new_record_txt'] = 'Добавить новую DNS-зону вручную'; +$wb['import_zone_file_txt'] = 'Импорт файла зоны'; $wb['sys_groupid_txt'] = 'Клиент'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/se_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng index 183d1a8349..74ba785900 100644 --- a/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/sk_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'NS'; $wb['mbox_txt'] = 'Email'; $wb['add_new_record_wizard_txt'] = 'Add new DNS Zone with Wizard'; $wb['add_new_record_txt'] = 'Add new DNS Zone manually'; +$wb['import_zone_file_txt'] = 'Import Zone File'; $wb['sys_groupid_txt'] = 'Client'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng index 490cdc7b4f..6f0bc7f985 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa_admin_list.lng @@ -7,5 +7,6 @@ $wb['ns_txt'] = 'Ad Sunucusu'; $wb['mbox_txt'] = 'E-posta'; $wb['add_new_record_wizard_txt'] = 'Yardımcı ile DNS Bölgesi Ekle'; $wb['add_new_record_txt'] = 'El ile DNS Bölgesi Ekle'; +$wb['import_zone_file_txt'] = 'Bölge Dosyasını İçe Aktar'; $wb['sys_groupid_txt'] = 'Müşteri'; ?> diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index 79faa645fe..646b129578 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -24,7 +24,7 @@ <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_wizard.php">{tmpl_var name="add_new_record_wizard_txt"}</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_soa_edit.php">{tmpl_var name="add_new_record_txt"}</button> - <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_import.php">Import Zone File</button> + <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_import.php">{tmpl_var name="import_zone_file_txt"}</button> -- GitLab From cab126e67f196e4c26794007d95637811ea711a2 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sat, 6 Jun 2020 23:11:55 +0200 Subject: [PATCH 332/571] Added translation function for Server Config (#2410) --- interface/web/admin/form/server_config.tform.php | 4 ++-- interface/web/admin/lib/lang/ar_server_config.lng | 1 + interface/web/admin/lib/lang/bg_server_config.lng | 1 + interface/web/admin/lib/lang/br_server_config.lng | 1 + interface/web/admin/lib/lang/ca_server_config.lng | 1 + interface/web/admin/lib/lang/cz_server_config.lng | 1 + interface/web/admin/lib/lang/de_server_config.lng | 1 + interface/web/admin/lib/lang/dk_server_config.lng | 1 + interface/web/admin/lib/lang/el_server_config.lng | 1 + interface/web/admin/lib/lang/en_server_config.lng | 1 + interface/web/admin/lib/lang/es_server_config.lng | 1 + interface/web/admin/lib/lang/fi_server_config.lng | 1 + interface/web/admin/lib/lang/fr_server_config.lng | 1 + interface/web/admin/lib/lang/hr_server_config.lng | 1 + interface/web/admin/lib/lang/hu_server_config.lng | 1 + interface/web/admin/lib/lang/id_server_config.lng | 1 + interface/web/admin/lib/lang/it_server_config.lng | 1 + interface/web/admin/lib/lang/ja_server_config.lng | 1 + interface/web/admin/lib/lang/nl_server_config.lng | 1 + interface/web/admin/lib/lang/pl_server_config.lng | 1 + interface/web/admin/lib/lang/pt_server_config.lng | 1 + interface/web/admin/lib/lang/ro_server_config.lng | 1 + interface/web/admin/lib/lang/ru_server_config.lng | 1 + interface/web/admin/lib/lang/se_server_config.lng | 1 + interface/web/admin/lib/lang/sk_server_config.lng | 1 + interface/web/admin/lib/lang/tr_server_config.lng | 1 + 26 files changed, 27 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 945e422da2..bbd6899761 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -33,7 +33,7 @@ */ -$form["title"] = "Server Config"; +$form["title"] = "server_config"; $form["description"] = ""; $form["name"] = "server_config"; $form["action"] = "server_config_edit.php"; @@ -2022,4 +2022,4 @@ if(!isset($mail_config['rspamd_available']) || $mail_config['rspamd_available'] $form['tabs']['mail']['fields']['content_filter']['default'] = 'amavisd'; unset($form['tabs']['mail']['fields']['content_filter']['value']['rspamd']); unset($form['tabs']['mail']['fields']['rspamd_password']); -}*/ \ No newline at end of file +}*/ diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 520fdb1028..bfefeec22c 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 1ca873fd2d..2003a6476d 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 79a956cfad..4fc1e043fa 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['ufw_enable_txt'] = 'Habilitar'; $wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas'; $wb['ufw_ipv6_txt'] = 'Habilitar IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index b1ac3545e7..e016135c8d 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index a4219cafa3..2a91f3af6e 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot adresář'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekce'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootované aplikace'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index aa7818f9ad..9159198579 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit Chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit Chroot Anwendungsbereiche'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit Chrooted Anwendungen'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 0020d5347a..3a5f00b7af 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Administrer Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 29ad1bf454..cd40efc993 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 9093ac6baa..e66864c846 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb["ufw_enable_txt"] = 'Enable'; $wb["ufw_manage_builtins_txt"] = 'Manage Builtin Rules'; $wb["ufw_ipv6_txt"] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 2b1ca0a221..014a3879da 100755 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios web al grupo -sshusers-'; $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de siguiente nivel'; $wb['apache_group_error_empty'] = 'El grupo de Apache está vacÃo.'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6724ea0e85..8aa91fdd8f 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot-kotikansio'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot-ohjelmaosiot'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted-ohjelmat'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index a505ceef37..7f8f48374e 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Accueil du chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Sections des applications chrootées Jailkit'; $wb['jailkit_chroot_app_programs_txt'] = 'Applications chrootées Jailkit'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index a390c29e6c..1559a484b2 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot direktorij'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcije'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootane aplikacije'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 3da2d0ad4e..46c1e11f2a 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index c79b296072..28cf2d2eb8 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Home chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Bagian app chroot'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit aplikasi yang ter-chroot'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 89491ae497..53e0c8f7e8 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 6569591233..0a8650b755 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'chroot ホーム'; $wb['jailkit_chroot_app_sections_txt'] = '利用å¯èƒ½ã‚¢ãƒ—リケーションセクション'; $wb['jailkit_chroot_app_programs_txt'] = '利用å¯èƒ½ã‚¢ãƒ—リケーション'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 1e398f9bdc..0fc75f7c6e 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app secties'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applicaties'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 87ec7fc285..3bcd924c80 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Adres roota Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Sekcje aplikacji roota Jailkit'; $wb['jailkit_chroot_app_programs_txt'] = 'Åšcieżki aplikacji roota Jailkit'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index e1df35f548..4f548697b8 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Raiz do Chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Aplicações Jailkit chroot (Sessões)'; $wb['jailkit_chroot_app_programs_txt'] = 'Aplicações Jailkit em ambiente chroot'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 6d7dc3d8ca..40cfd9caa3 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 027e41c13e..902803ea36 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Путь к домашней папке Jailkit chroot'; $wb['jailkit_chroot_app_sections_txt'] = 'Пакеты программ Jailkit chroot'; $wb['jailkit_chroot_app_programs_txt'] = 'Программы Jailkit chrooted'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index be8742f80c..6afbe56978 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 659a83e7d4..12fda6bb81 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot domov'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcia'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted aplikácia'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 76812dd90d..92e7c2dcc9 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -1,4 +1,5 @@ <?php +$wb['server_config'] = 'Server Config'; $wb['ufw_enable_txt'] = 'Etkin'; $wb['ufw_manage_builtins_txt'] = 'İç Kural Yönetimi'; $wb['ufw_ipv6_txt'] = 'IPv6 Kullanılsın'; -- GitLab From 63e091f12c22df2baeb6095bfc4c6f848478026f Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sat, 6 Jun 2020 23:13:43 +0200 Subject: [PATCH 333/571] Changed Server Config translation --- interface/web/admin/lib/lang/nl_server_config.lng | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 0fc75f7c6e..8cb0a1e140 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -1,5 +1,5 @@ <?php -$wb['server_config'] = 'Server Config'; +$wb['server_config'] = 'Server Configuratie'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app secties'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applicaties'; -- GitLab From 870f610bfc75c329581bbaeb72b7a9a40ab11e18 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 7 Jun 2020 00:03:05 +0200 Subject: [PATCH 334/571] Added translation function for User (#2410) --- interface/web/admin/form/remote_user.tform.php | 4 ++-- interface/web/admin/form/users.tform.php | 4 ++-- interface/web/admin/lib/lang/ar_remote_user.lng | 1 + interface/web/admin/lib/lang/ar_users.lng | 1 + interface/web/admin/lib/lang/bg_remote_user.lng | 1 + interface/web/admin/lib/lang/bg_users.lng | 1 + interface/web/admin/lib/lang/br_remote_user.lng | 1 + interface/web/admin/lib/lang/br_users.lng | 1 + interface/web/admin/lib/lang/ca_remote_user.lng | 1 + interface/web/admin/lib/lang/ca_users.lng | 1 + interface/web/admin/lib/lang/cz_remote_user.lng | 1 + interface/web/admin/lib/lang/cz_users.lng | 1 + interface/web/admin/lib/lang/de_remote_user.lng | 1 + interface/web/admin/lib/lang/de_users.lng | 1 + interface/web/admin/lib/lang/dk_remote_user.lng | 1 + interface/web/admin/lib/lang/dk_users.lng | 1 + interface/web/admin/lib/lang/el_remote_user.lng | 1 + interface/web/admin/lib/lang/el_users.lng | 1 + interface/web/admin/lib/lang/en_remote_user.lng | 1 + interface/web/admin/lib/lang/en_users.lng | 1 + interface/web/admin/lib/lang/es_remote_user.lng | 1 + interface/web/admin/lib/lang/es_users.lng | 1 + interface/web/admin/lib/lang/fi_remote_user.lng | 1 + interface/web/admin/lib/lang/fi_users.lng | 1 + interface/web/admin/lib/lang/fr_remote_user.lng | 1 + interface/web/admin/lib/lang/fr_users.lng | 1 + interface/web/admin/lib/lang/hr_remote_user.lng | 1 + interface/web/admin/lib/lang/hr_users.lng | 1 + interface/web/admin/lib/lang/hu_remote_user.lng | 1 + interface/web/admin/lib/lang/hu_users.lng | 1 + interface/web/admin/lib/lang/id_remote_user.lng | 1 + interface/web/admin/lib/lang/id_users.lng | 1 + interface/web/admin/lib/lang/it_remote_user.lng | 1 + interface/web/admin/lib/lang/it_users.lng | 1 + interface/web/admin/lib/lang/ja_remote_user.lng | 1 + interface/web/admin/lib/lang/ja_users.lng | 1 + interface/web/admin/lib/lang/nl_remote_user.lng | 1 + interface/web/admin/lib/lang/nl_users.lng | 1 + interface/web/admin/lib/lang/pl_remote_user.lng | 1 + interface/web/admin/lib/lang/pl_users.lng | 1 + interface/web/admin/lib/lang/pt_remote_user.lng | 1 + interface/web/admin/lib/lang/pt_users.lng | 1 + interface/web/admin/lib/lang/ro_remote_user.lng | 1 + interface/web/admin/lib/lang/ro_users.lng | 1 + interface/web/admin/lib/lang/ru_remote_user.lng | 1 + interface/web/admin/lib/lang/ru_users.lng | 1 + interface/web/admin/lib/lang/se_remote_user.lng | 1 + interface/web/admin/lib/lang/se_users.lng | 1 + interface/web/admin/lib/lang/sk_remote_user.lng | 1 + interface/web/admin/lib/lang/sk_users.lng | 1 + interface/web/admin/lib/lang/tr_remote_user.lng | 1 + interface/web/admin/lib/lang/tr_users.lng | 1 + 52 files changed, 54 insertions(+), 4 deletions(-) diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php index 3b920ccb4a..9263266a27 100644 --- a/interface/web/admin/form/remote_user.tform.php +++ b/interface/web/admin/form/remote_user.tform.php @@ -45,7 +45,7 @@ if(is_array($modules)) { } } -$form["title"] = "Remote user"; +$form["title"] = "remote_user_txt"; $form["description"] = ""; $form["name"] = "remote_user"; $form["action"] = "remote_user_edit.php"; @@ -63,7 +63,7 @@ $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete $form["tabs"]['remote_user'] = array ( - 'title' => "Remote User", + 'title' => "remote_user_txt", 'width' => 100, 'template' => "templates/remote_user_edit.htm", 'fields' => array ( diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index be77122b10..4f08de4098 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -60,7 +60,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -$form['title'] = 'Users'; +$form['title'] = 'users_txt'; $form['description'] = 'Form to edit systemusers.'; $form['name'] = 'users'; $form['action'] = 'users_edit.php'; @@ -129,7 +129,7 @@ if(is_array($tmp_records)) { } $form['tabs']['users'] = array ( - 'title' => 'Users', + 'title' => 'users_txt', 'width' => 80, 'template' => 'templates/users_user_edit.htm', 'fields' => array ( diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng index d0504005e3..8c70904102 100644 --- a/interface/web/admin/lib/lang/ar_remote_user.lng +++ b/interface/web/admin/lib/lang/ar_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/ar_users.lng b/interface/web/admin/lib/lang/ar_users.lng index dcbc4f4727..dd4ef0143d 100644 --- a/interface/web/admin/lib/lang/ar_users.lng +++ b/interface/web/admin/lib/lang/ar_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Username'; $wb['username_err'] = 'The username is too long or contains invalid characters.'; $wb['username_empty'] = 'The username is empty.'; diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng index 6eac31e4fe..35132ab452 100644 --- a/interface/web/admin/lib/lang/bg_remote_user.lng +++ b/interface/web/admin/lib/lang/bg_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'ПотребителÑко име'; $wb['password_txt'] = 'Парола'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/bg_users.lng b/interface/web/admin/lib/lang/bg_users.lng index e8dc631a59..801d9e70a6 100644 --- a/interface/web/admin/lib/lang/bg_users.lng +++ b/interface/web/admin/lib/lang/bg_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'ПотребителÑко име'; $wb['username_err'] = 'ПотребителÑкото име е твърде дълго или Ñъдържа непозволени Ñимволи.'; $wb['username_empty'] = 'Полето Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñкото име е празно.'; diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index fcaa6732c8..b698af128d 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/br_users.lng b/interface/web/admin/lib/lang/br_users.lng index 6d71a39e4c..18e6085b83 100644 --- a/interface/web/admin/lib/lang/br_users.lng +++ b/interface/web/admin/lib/lang/br_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Usuário'; $wb['username_err'] = 'O nome do usuário é muito longo ou contém caracteres inválidos.'; $wb['username_empty'] = 'O nome do usuário está em branco.'; diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng index 2fc633b555..dc39a8e798 100644 --- a/interface/web/admin/lib/lang/ca_remote_user.lng +++ b/interface/web/admin/lib/lang/ca_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/ca_users.lng b/interface/web/admin/lib/lang/ca_users.lng index dcbc4f4727..dd4ef0143d 100644 --- a/interface/web/admin/lib/lang/ca_users.lng +++ b/interface/web/admin/lib/lang/ca_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Username'; $wb['username_err'] = 'The username is too long or contains invalid characters.'; $wb['username_empty'] = 'The username is empty.'; diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng index aeacc442ca..f8d0f3d5e5 100644 --- a/interface/web/admin/lib/lang/cz_remote_user.lng +++ b/interface/web/admin/lib/lang/cz_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Uživatelské jméno:'; $wb['password_txt'] = 'Heslo:'; $wb['function_txt'] = 'Funkce:'; diff --git a/interface/web/admin/lib/lang/cz_users.lng b/interface/web/admin/lib/lang/cz_users.lng index b517d73290..9aa92402f0 100644 --- a/interface/web/admin/lib/lang/cz_users.lng +++ b/interface/web/admin/lib/lang/cz_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Uživatelské jméno'; $wb['username_err'] = 'Uživatelské jméno je pÅ™ÃliÅ¡ dlouhé nebo obsahuje neplatné znaky.'; $wb['username_empty'] = 'Uživatelské jméno je prázdné.'; diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng index 164a0fb81a..e1f932a904 100644 --- a/interface/web/admin/lib/lang/de_remote_user.lng +++ b/interface/web/admin/lib/lang/de_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Benutzername'; $wb['password_txt'] = 'Passwort'; $wb['function_txt'] = 'Funktionen'; diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng index 255e7bca0b..9bc13061c0 100644 --- a/interface/web/admin/lib/lang/de_users.lng +++ b/interface/web/admin/lib/lang/de_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Benutzername'; $wb['username_err'] = 'Der Benutzername enthält ungültige Zeichen.'; $wb['passwort_txt'] = 'Passwort'; diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng index 80f61c8929..e7f020e411 100644 --- a/interface/web/admin/lib/lang/dk_remote_user.lng +++ b/interface/web/admin/lib/lang/dk_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Brugernavn:'; $wb['password_txt'] = 'Adgangskode:'; $wb['function_txt'] = 'Funktioner:'; diff --git a/interface/web/admin/lib/lang/dk_users.lng b/interface/web/admin/lib/lang/dk_users.lng index 2e86ab4ca9..f5811d771d 100644 --- a/interface/web/admin/lib/lang/dk_users.lng +++ b/interface/web/admin/lib/lang/dk_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Brugernavn'; $wb['username_err'] = 'Brugernavnet er for langt eller indeholder ugyldige karaktere.'; $wb['username_empty'] = 'Brugernavnet er tomt.'; diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng index c38f1de2f0..72d9eb29dd 100644 --- a/interface/web/admin/lib/lang/el_remote_user.lng +++ b/interface/web/admin/lib/lang/el_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Όνομα ΧÏήστη:'; $wb['password_txt'] = 'Συνθηματικό:'; $wb['function_txt'] = 'ΕνÎÏγειες:'; diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng index f0307b95ec..e25fbe17fa 100644 --- a/interface/web/admin/lib/lang/el_users.lng +++ b/interface/web/admin/lib/lang/el_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Όνομα ΧÏήστη'; $wb['username_err'] = 'Το όνομα χÏήστη είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ ή πεÏιÎχει μη επιτÏεπόμενους χαÏακτήÏες'; $wb['username_empty'] = 'Το όνομα χÏήστη δεν Îχει οÏιστεί.'; diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng index 2fc633b555..dc39a8e798 100644 --- a/interface/web/admin/lib/lang/en_remote_user.lng +++ b/interface/web/admin/lib/lang/en_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng index 931c73e8eb..72d93eb4d2 100644 --- a/interface/web/admin/lib/lang/en_users.lng +++ b/interface/web/admin/lib/lang/en_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb["username_txt"] = 'Username'; $wb["username_err"] = 'The username is too long or contains invalid characters.'; $wb["username_empty"] = 'The username is empty.'; diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng index 7cefa1e5db..b14c4b408b 100755 --- a/interface/web/admin/lib/lang/es_remote_user.lng +++ b/interface/web/admin/lib/lang/es_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['Client functions'] = 'Funciones para clientes'; $wb['DNS a functions'] = 'Funciones DNS para registro A'; $wb['DNS aaaa functions'] = 'Funciones DNS para registro AAAA'; diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng index 65baeb666f..127d5431e2 100755 --- a/interface/web/admin/lib/lang/es_users.lng +++ b/interface/web/admin/lib/lang/es_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['active_txt'] = 'Habilitado'; $wb['app_theme_txt'] = 'Diseño'; $wb['client_not_admin_err'] = 'Un usuario que pertenece a un cliente no puede ser del tipo: admin'; diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng index 2ae3420d62..8b943d3e52 100644 --- a/interface/web/admin/lib/lang/fi_remote_user.lng +++ b/interface/web/admin/lib/lang/fi_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Käyttäjätunnus'; $wb['password_txt'] = 'Salasana'; $wb['function_txt'] = 'Toiminnot'; diff --git a/interface/web/admin/lib/lang/fi_users.lng b/interface/web/admin/lib/lang/fi_users.lng index 199601f520..3e44e56678 100755 --- a/interface/web/admin/lib/lang/fi_users.lng +++ b/interface/web/admin/lib/lang/fi_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Käyttäjätunnus'; $wb['username_err'] = 'Käyttäjätunnus on liian pitkä tai sisältää kiellettyjä merkkejä.'; $wb['username_empty'] = 'Käyttäjätunnus on tyhjä.'; diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng index 1594e60fb4..f2f8098945 100644 --- a/interface/web/admin/lib/lang/fr_remote_user.lng +++ b/interface/web/admin/lib/lang/fr_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Identifiant'; $wb['password_txt'] = 'Mot de passe'; $wb['function_txt'] = 'Fonctions'; diff --git a/interface/web/admin/lib/lang/fr_users.lng b/interface/web/admin/lib/lang/fr_users.lng index 6cc3e116b4..2f91cab83a 100644 --- a/interface/web/admin/lib/lang/fr_users.lng +++ b/interface/web/admin/lib/lang/fr_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Nom d’utilisateur'; $wb['username_err'] = 'Le nom d’utilisateur est trop long ou contient des caractères invalides.'; $wb['passwort_txt'] = 'Mot de passe'; diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index 069177e5ed..200e15544b 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'KorisniÄko ime'; $wb['password_txt'] = 'Å ifra'; $wb['function_txt'] = 'Funkcije'; diff --git a/interface/web/admin/lib/lang/hr_users.lng b/interface/web/admin/lib/lang/hr_users.lng index 7be3f968f2..c274a9498d 100644 --- a/interface/web/admin/lib/lang/hr_users.lng +++ b/interface/web/admin/lib/lang/hr_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'KorisniÄko ime'; $wb['username_err'] = 'KorisniÄko ime je predugaÄko ili sadrži nedozvoljene znakove.'; $wb['username_empty'] = 'KorisniÄko ime je prazno.'; diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng index bae9d82f53..278d2d0434 100644 --- a/interface/web/admin/lib/lang/hu_remote_user.lng +++ b/interface/web/admin/lib/lang/hu_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Felhasználónév'; $wb['password_txt'] = 'Jelszó'; $wb['function_txt'] = 'Funkciók'; diff --git a/interface/web/admin/lib/lang/hu_users.lng b/interface/web/admin/lib/lang/hu_users.lng index e2cf25fb79..5cb86c850a 100644 --- a/interface/web/admin/lib/lang/hu_users.lng +++ b/interface/web/admin/lib/lang/hu_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Felhasználónév'; $wb['username_err'] = 'A Felhasználónév túl hosszú vagy érvénytelen karaktereket tartalmaz'; $wb['username_empty'] = 'A Felhasználónév üres.'; diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng index cc6efb627a..740ed6fe71 100644 --- a/interface/web/admin/lib/lang/id_remote_user.lng +++ b/interface/web/admin/lib/lang/id_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Nama pengguna'; $wb['password_txt'] = 'Kata Sandi'; $wb['function_txt'] = 'Fungsi'; diff --git a/interface/web/admin/lib/lang/id_users.lng b/interface/web/admin/lib/lang/id_users.lng index f9e961192c..e6ed3d5bef 100644 --- a/interface/web/admin/lib/lang/id_users.lng +++ b/interface/web/admin/lib/lang/id_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Nama Pengguna'; $wb['username_err'] = 'Nama pengguna terlalu panjang atau mengandung karakter yang tidak valid.'; $wb['username_empty'] = 'Nama pengguna kosong.'; diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng index caef58a8c6..0d5e550d05 100644 --- a/interface/web/admin/lib/lang/it_remote_user.lng +++ b/interface/web/admin/lib/lang/it_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Nome Utente'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Funzioni'; diff --git a/interface/web/admin/lib/lang/it_users.lng b/interface/web/admin/lib/lang/it_users.lng index 1bde73a67b..60c80063f4 100644 --- a/interface/web/admin/lib/lang/it_users.lng +++ b/interface/web/admin/lib/lang/it_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Nome utente'; $wb['username_err'] = 'Nome utente troppo lungo o avente caratteri non validi.'; $wb['username_empty'] = 'Nome utente mancante.'; diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng index 2b9ce2bbf0..adaaf54688 100644 --- a/interface/web/admin/lib/lang/ja_remote_user.lng +++ b/interface/web/admin/lib/lang/ja_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'ユーザーå'; $wb['password_txt'] = 'パスワード'; $wb['function_txt'] = '機能'; diff --git a/interface/web/admin/lib/lang/ja_users.lng b/interface/web/admin/lib/lang/ja_users.lng index 64f8339ffa..7d77bb8ac0 100644 --- a/interface/web/admin/lib/lang/ja_users.lng +++ b/interface/web/admin/lib/lang/ja_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'ユーザーå'; $wb['username_err'] = 'ユーザーåãŒé•·ã™ãŽã‚‹ã‹ã€ã¾ãŸã¯ä¸æ£ãªæ–‡å—ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚'; $wb['username_empty'] = 'ユーザーåを入力ã—ã¦ãã ã•ã„。'; diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng index f049116094..3d2baac1fd 100644 --- a/interface/web/admin/lib/lang/nl_remote_user.lng +++ b/interface/web/admin/lib/lang/nl_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Externe Gebruiker' $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; $wb['function_txt'] = 'Funties'; diff --git a/interface/web/admin/lib/lang/nl_users.lng b/interface/web/admin/lib/lang/nl_users.lng index 1e6d4ef586..53611ff56e 100644 --- a/interface/web/admin/lib/lang/nl_users.lng +++ b/interface/web/admin/lib/lang/nl_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Gebruikers'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['username_err'] = 'De gebruikersnaam is te lang of bevat ongeldige karakters.'; $wb['username_empty'] = 'De gebruikersnaam is niet ingvuld.'; diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng index 5df48fb29b..2a6a726bcb 100644 --- a/interface/web/admin/lib/lang/pl_remote_user.lng +++ b/interface/web/admin/lib/lang/pl_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Nazwa użytkownika'; $wb['password_txt'] = 'HasÅ‚o'; $wb['function_txt'] = 'Funkcje'; diff --git a/interface/web/admin/lib/lang/pl_users.lng b/interface/web/admin/lib/lang/pl_users.lng index e6dfcb57b2..c303b1ab1e 100644 --- a/interface/web/admin/lib/lang/pl_users.lng +++ b/interface/web/admin/lib/lang/pl_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Nazwa użytkownika'; $wb['username_err'] = 'Nazwa użytkownika jest za dÅ‚uga lub zawiera niedozwolone znaki.'; $wb['username_empty'] = 'Nazwa użytkownika jest pusta.'; diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng index f23a6abd5c..b521beb5e4 100644 --- a/interface/web/admin/lib/lang/pt_remote_user.lng +++ b/interface/web/admin/lib/lang/pt_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Nome do utilizador'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/pt_users.lng b/interface/web/admin/lib/lang/pt_users.lng index 67cfe4f572..3e620e02cd 100644 --- a/interface/web/admin/lib/lang/pt_users.lng +++ b/interface/web/admin/lib/lang/pt_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Utilizador '; $wb['username_err'] = 'O Nome do utilizador é muito longo ou contém caracteres inválidos!'; $wb['username_empty'] = 'Por favor, entre com um nome de utilizador .'; diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng index d0504005e3..8c70904102 100644 --- a/interface/web/admin/lib/lang/ro_remote_user.lng +++ b/interface/web/admin/lib/lang/ro_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/ro_users.lng b/interface/web/admin/lib/lang/ro_users.lng index dcbc4f4727..dd4ef0143d 100644 --- a/interface/web/admin/lib/lang/ro_users.lng +++ b/interface/web/admin/lib/lang/ro_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Username'; $wb['username_err'] = 'The username is too long or contains invalid characters.'; $wb['username_empty'] = 'The username is empty.'; diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng index 2d556b0800..38eb3a3c33 100644 --- a/interface/web/admin/lib/lang/ru_remote_user.lng +++ b/interface/web/admin/lib/lang/ru_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Логин'; $wb['password_txt'] = 'Пароль'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/ru_users.lng b/interface/web/admin/lib/lang/ru_users.lng index 63f081f917..9ed98ca021 100644 --- a/interface/web/admin/lib/lang/ru_users.lng +++ b/interface/web/admin/lib/lang/ru_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Логин'; $wb['username_err'] = 'Ошибка в логине'; $wb['passwort_txt'] = 'Пароль'; diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 657e5878f1..39ae0ed375 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Användarnamn'; $wb['password_txt'] = 'Lösenord'; $wb['function_txt'] = 'Funktioner'; diff --git a/interface/web/admin/lib/lang/se_users.lng b/interface/web/admin/lib/lang/se_users.lng index ac56cdf083..4f8814842c 100644 --- a/interface/web/admin/lib/lang/se_users.lng +++ b/interface/web/admin/lib/lang/se_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Användarnamn'; $wb['username_err'] = 'användarnamn_fel'; $wb['passwort_txt'] = 'Lösenord'; diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng index 200cd28861..e8fac2a0b9 100644 --- a/interface/web/admin/lib/lang/sk_remote_user.lng +++ b/interface/web/admin/lib/lang/sk_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Uživateľ'; $wb['password_txt'] = 'Heslo'; $wb['function_txt'] = 'Funkcia'; diff --git a/interface/web/admin/lib/lang/sk_users.lng b/interface/web/admin/lib/lang/sk_users.lng index d71952fa3e..b037e307c0 100644 --- a/interface/web/admin/lib/lang/sk_users.lng +++ b/interface/web/admin/lib/lang/sk_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'UžÃvateľské meno'; $wb['username_err'] = 'UžÃvateľské meno je prÃliÅ¡ dlhá alebo obsahuje neplatné znaky.'; $wb['username_empty'] = 'UžÃvateľské meno je prázdne.'; diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index a713cad0d4..24fc6497f2 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -1,4 +1,5 @@ <?php +$wb['remote_user_txt'] = 'Remote User' $wb['username_txt'] = 'Kullanıcı Adı:'; $wb['password_txt'] = 'Parola:'; $wb['function_txt'] = 'Ä°ÅŸlevler:'; diff --git a/interface/web/admin/lib/lang/tr_users.lng b/interface/web/admin/lib/lang/tr_users.lng index 72aa9d1813..307cdd37b2 100644 --- a/interface/web/admin/lib/lang/tr_users.lng +++ b/interface/web/admin/lib/lang/tr_users.lng @@ -1,4 +1,5 @@ <?php +$wb['users_txt'] = 'Users'; $wb['username_txt'] = 'Kullanıcı Adı'; $wb['username_err'] = 'Kullanıcı adı çok uzun ya da geçersiz karakterler içeriyor.'; $wb['username_empty'] = 'Kullanıcı adı boÅŸ olamaz.'; -- GitLab From fab638d96b6fd31e160df66ff02dc0281f9debb4 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sun, 7 Jun 2020 22:26:50 +0200 Subject: [PATCH 335/571] - migrated changes from interface to server --- server/lib/classes/ispcmail.inc.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php index cc83c74137..fbf5f84dca 100644 --- a/server/lib/classes/ispcmail.inc.php +++ b/server/lib/classes/ispcmail.inc.php @@ -169,7 +169,7 @@ class ispcmail { $this->smtp_host = $value; break; case 'smtp_port': - $this->smtp_port = $value; + if(intval($value) > 0) $this->smtp_port = $value; break; case 'smtp_user': $this->smtp_user = $value; @@ -586,8 +586,8 @@ class ispcmail { */ private function _smtp_login() { $this->_smtp_conn = fsockopen(($this->smtp_crypt == 'ssl' ? 'tls://' : '') . $this->smtp_host, $this->smtp_port, $errno, $errstr, 30); - $response = fgets($this->_smtp_conn, 515); if(empty($this->_smtp_conn)) return false; + $response = fgets($this->_smtp_conn, 515); //Say Hello to SMTP if($this->smtp_helo == '') $this->detectHelo(); @@ -598,13 +598,20 @@ class ispcmail { if($this->smtp_crypt == 'tls') { fputs($this->_smtp_conn, 'STARTTLS' . $this->_crlf); fgets($this->_smtp_conn, 515); + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; } - stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method); + stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_host', false); + stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer', false); + stream_context_set_option($this->_smtp_conn, 'ssl', 'verify_peer_name', false); + stream_context_set_option($this->_smtp_conn, 'ssl', 'allow_self_signed', true); + if (stream_socket_enable_crypto($this->_smtp_conn, true, $crypto_method) != true) { + return false; + } } //AUTH LOGIN -- GitLab From d4b1707086848838da7151c7bf34031f27aaad0a Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Sun, 7 Jun 2020 23:14:22 +0200 Subject: [PATCH 336/571] New translations --- interface/web/admin/lib/lang/nl.lng | 14 +++++++------- .../web/admin/lib/lang/nl_directive_snippets.lng | 12 ++++++------ .../admin/lib/lang/nl_directive_snippets_list.lng | 8 ++++---- interface/web/admin/lib/lang/nl_firewall.lng | 4 ++-- interface/web/admin/lib/lang/nl_firewall_list.lng | 2 +- interface/web/admin/lib/lang/nl_groups.lng | 2 +- interface/web/admin/lib/lang/nl_language_add.lng | 8 ++++---- .../web/admin/lib/lang/nl_language_import.lng | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/interface/web/admin/lib/lang/nl.lng b/interface/web/admin/lib/lang/nl.lng index 26d231ffcd..99a4b53da1 100644 --- a/interface/web/admin/lib/lang/nl.lng +++ b/interface/web/admin/lib/lang/nl.lng @@ -1,6 +1,6 @@ <?php -$wb['1001'] = 'Username or password is empty.'; -$wb['1002'] = 'Username or password is wrong.'; +$wb['1001'] = 'Gebruikersnaam of wachtwoord is leeg.'; +$wb['1002'] = 'Gebruikersnaam of wachtwoord is incorrect.'; $wb['Groups'] = 'Groepen'; $wb['groups_description'] = 'Formulier om systeemgebruiker groepen te wijzigen.'; $wb['Servers'] = 'Servers'; @@ -12,13 +12,13 @@ $wb['Edit group'] = 'Wijzigen groep'; $wb['Edit server'] = 'Wijzigen server'; $wb['Sync. Now'] = 'Sync. nu'; $wb['DB Sync.'] = 'DB Sync.'; -$wb['User Management'] = 'User Management'; +$wb['User Management'] = 'Gebruikers beheren'; $wb['CP Users'] = 'CP Gebruikers'; $wb['Remote Users'] = 'Remote gebruikers'; -$wb['System'] = 'System'; +$wb['System'] = 'Systeem'; $wb['Server Services'] = 'Server Services'; $wb['Services'] = 'Services'; -$wb['Server Config'] = 'Server Config'; +$wb['Server Config'] = 'Server Configuratie'; $wb['Server'] = 'Server'; $wb['Mail'] = 'Mail'; $wb['Getmail'] = 'Getmail'; @@ -27,10 +27,10 @@ $wb['FastCGI'] = 'FastCGI'; $wb['Jailkit'] = 'Jailkit'; $wb['Rescue'] = 'Rescue'; $wb['Server IP addresses'] = 'Server IP adressen'; -$wb['Additional PHP Versions'] = 'Additional PHP Versions'; +$wb['Additional PHP Versions'] = 'Additionele PHP Versies'; $wb['Firewall'] = 'Firewall'; $wb['Interface'] = 'Interface'; -$wb['Interface Config'] = 'Main Config'; +$wb['Interface Config'] = 'Interface configuratie'; $wb['Domains'] = 'Domains'; $wb['Misc'] = 'Misc'; $wb['Software'] = 'Apps & addons'; diff --git a/interface/web/admin/lib/lang/nl_directive_snippets.lng b/interface/web/admin/lib/lang/nl_directive_snippets.lng index 0616afad8b..a4f610634e 100644 --- a/interface/web/admin/lib/lang/nl_directive_snippets.lng +++ b/interface/web/admin/lib/lang/nl_directive_snippets.lng @@ -1,12 +1,12 @@ <?php $wb['Directive Snippets'] = 'Directive Snippets'; -$wb['name_txt'] = 'Name of Snippet'; +$wb['name_txt'] = 'Naam van de Snippet'; $wb['type_txt'] = 'Type'; $wb['snippet_txt'] = 'Snippet'; $wb['active_txt'] = 'Active'; -$wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.'; -$wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.'; -$wb['variables_txt'] = 'Variables'; -$wb['customer_viewable_txt'] = 'Customer viewable'; -$wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['directive_snippets_name_empty'] = 'Geef de Directive Snippet een naam.'; +$wb['directive_snippets_name_error_unique'] = 'Er is al een Directive Snippet met deze naam.'; +$wb['variables_txt'] = 'Variabelen'; +$wb['customer_viewable_txt'] = 'Zichtbaar voor klanten'; +$wb['required_php_snippets_txt'] = 'Vereiste PHP Snippet'; ?> diff --git a/interface/web/admin/lib/lang/nl_directive_snippets_list.lng b/interface/web/admin/lib/lang/nl_directive_snippets_list.lng index 8e189f9f79..5c12ac4808 100644 --- a/interface/web/admin/lib/lang/nl_directive_snippets_list.lng +++ b/interface/web/admin/lib/lang/nl_directive_snippets_list.lng @@ -1,8 +1,8 @@ <?php $wb['list_head_txt'] = 'Directive Snippets'; -$wb['active_txt'] = 'Active'; -$wb['name_txt'] = 'Name of Snippet'; +$wb['active_txt'] = 'Actief'; +$wb['name_txt'] = 'Naam'; $wb['type_txt'] = 'Type'; -$wb['add_new_record_txt'] = 'Add Directive Snippet'; -$wb['customer_viewable_txt'] = 'Customer viewable'; +$wb['add_new_record_txt'] = 'Directive Snippet toevoegen'; +$wb['customer_viewable_txt'] = 'Zichtbaar voor klanten'; ?> diff --git a/interface/web/admin/lib/lang/nl_firewall.lng b/interface/web/admin/lib/lang/nl_firewall.lng index 443aca29e6..284af5c435 100644 --- a/interface/web/admin/lib/lang/nl_firewall.lng +++ b/interface/web/admin/lib/lang/nl_firewall.lng @@ -6,6 +6,6 @@ $wb['tcp_port_help_txt'] = 'Gescheiden door komma'; $wb['udp_port_help_txt'] = 'Gescheiden door komma'; $wb['active_txt'] = 'Actief'; $wb['firewall_error_unique'] = 'Er is al een firewall record voor deze server.'; -$wb['tcp_ports_error_regex'] = 'Karakter niet toegestaan in tcp port definitie. Toegestane karakters zijn nummers, : en ,.'; -$wb['udp_ports_error_regex'] = 'Karakter niet toegestaan in udp port definitie. Toegestane karakters zijn nummers, : en ,.'; +$wb['tcp_ports_error_regex'] = 'Karakter niet toegestaan in TCP port definitie. Toegestane karakters zijn nummers, : en ,.'; +$wb['udp_ports_error_regex'] = 'Karakter niet toegestaan in UDP port definitie. Toegestane karakters zijn nummers, : en ,.'; ?> diff --git a/interface/web/admin/lib/lang/nl_firewall_list.lng b/interface/web/admin/lib/lang/nl_firewall_list.lng index 394d093493..11746c6e5b 100644 --- a/interface/web/admin/lib/lang/nl_firewall_list.lng +++ b/interface/web/admin/lib/lang/nl_firewall_list.lng @@ -4,5 +4,5 @@ $wb['active_txt'] = 'Actief'; $wb['server_id_txt'] = 'Server'; $wb['tcp_port_txt'] = 'Open TCP poorten'; $wb['udp_port_txt'] = 'Open UDP poorten'; -$wb['add_new_record_txt'] = 'Toevoegen Firewall record'; +$wb['add_new_record_txt'] = 'Firewall regel toevoegen'; ?> diff --git a/interface/web/admin/lib/lang/nl_groups.lng b/interface/web/admin/lib/lang/nl_groups.lng index e3ec317a4e..cdc75880ce 100644 --- a/interface/web/admin/lib/lang/nl_groups.lng +++ b/interface/web/admin/lib/lang/nl_groups.lng @@ -1,5 +1,5 @@ <?php $wb['description_txt'] = 'Omschrijving'; $wb['name_txt'] = 'Groep'; -$wb['name_err'] = 'Groep moet min. 1, max. 30 karakters zijn.'; +$wb['name_err'] = 'Groepsnaam moet uit minimaal 1, en maximaal 30 karakters bestaan.'; ?> diff --git a/interface/web/admin/lib/lang/nl_language_add.lng b/interface/web/admin/lib/lang/nl_language_add.lng index c746351827..f1541093e6 100644 --- a/interface/web/admin/lib/lang/nl_language_add.lng +++ b/interface/web/admin/lib/lang/nl_language_add.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Toevoegen nieuwe taal'; -$wb['language_select_txt'] = 'Selecteer taal basis'; +$wb['list_head_txt'] = 'Nieuwe taal toevoegen'; +$wb['language_select_txt'] = 'Selecteer basistaal'; $wb['language_new_txt'] = 'Nieuwe taal'; -$wb['language_new_hint_txt'] = '2 karakters ISO 639-1 language-code (See http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)'; -$wb['btn_save_txt'] = 'Aanmaken nieuwe nieuw taalbestand set'; +$wb['language_new_hint_txt'] = '2 karakters ISO 639-1 taal-code (Zie http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)'; +$wb['btn_save_txt'] = 'Maak nieuwe taalbestanden aan'; $wb['btn_cancel_txt'] = 'Terug'; ?> diff --git a/interface/web/admin/lib/lang/nl_language_import.lng b/interface/web/admin/lib/lang/nl_language_import.lng index ae407efecb..bec27a9528 100644 --- a/interface/web/admin/lib/lang/nl_language_import.lng +++ b/interface/web/admin/lib/lang/nl_language_import.lng @@ -5,5 +5,5 @@ $wb['btn_save_txt'] = 'Importeer het geselecteerde taalbestand'; $wb['language_overwrite_txt'] = 'Overschrijf bestand, als dit bestaat.'; $wb['btn_cancel_txt'] = 'Terug'; $wb['ignore_version_txt'] = 'Sla ISPConfig versie controle over'; -$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.'; +$wb['list_desc_txt'] = 'Waarschuwing: Importeer geen taalbestanden van onvertrouwde bronnen.'; ?> -- GitLab From 58102c14632b827b8609056fea306f11ffdaf1e1 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 8 Jun 2020 01:09:23 +0200 Subject: [PATCH 337/571] Remove description --- interface/web/admin/form/users.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php index 4f08de4098..1aab0a4298 100644 --- a/interface/web/admin/form/users.tform.php +++ b/interface/web/admin/form/users.tform.php @@ -61,7 +61,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $form['title'] = 'users_txt'; -$form['description'] = 'Form to edit systemusers.'; +//$form['description'] = 'Form to edit systemusers.'; $form['name'] = 'users'; $form['action'] = 'users_edit.php'; $form['db_table'] = 'sys_user'; -- GitLab From 857b4eaa316a22dce7d8ac4a93593c68649f7f90 Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 8 Jun 2020 13:03:08 +0200 Subject: [PATCH 338/571] Rename Comodo to "Sectigo / Comodo CA" --- install/sql/incremental/upd_dev_collection.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index d07b33d4ba..1acc274a99 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -13,3 +13,6 @@ ALTER TABLE `web_domain` ADD `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT ALTER TABLE `web_backup` ADD `backup_format` VARCHAR( 64 ) NOT NULL DEFAULT '' AFTER `backup_mode`; ALTER TABLE `web_backup` ADD `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT '' AFTER `filesize`; -- end of backup encryption + +-- rename Comodo to "Sectigo / Comodo CA" +UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'comodoca.com'; -- GitLab From c3f4ffccc70141e979187af510b59539e4fde439 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 8 Jun 2020 14:28:35 -0600 Subject: [PATCH 339/571] default php-fpm to use ondemand mode --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 2 +- interface/web/sites/form/web_vhost_domain.tform.php | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 1acc274a99..c53f31b307 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -16,3 +16,6 @@ ALTER TABLE `web_backup` ADD `backup_password` VARCHAR( 255 ) NOT NULL DEFAULT -- rename Comodo to "Sectigo / Comodo CA" UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'comodoca.com'; + +-- default php-fpm to ondemand mode +ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index b64eab94c3..3908cf382b 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2046,7 +2046,7 @@ CREATE TABLE `web_domain` ( `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` enum('static','dynamic','ondemand') NOT NULL DEFAULT 'ondemand', `pm_max_children` int(11) NOT NULL DEFAULT '10', `pm_start_servers` int(11) NOT NULL DEFAULT '2', `pm_min_spare_servers` int(11) NOT NULL DEFAULT '1', diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 24ee6d4e62..beb952bfe6 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -861,7 +861,7 @@ if($_SESSION["s"]["user"]["typ"] == 'admin' 'pm' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'default' => 'dynamic', + 'default' => 'ondemand', 'value' => array('static' => 'static', 'dynamic' => 'dynamic', 'ondemand' => 'ondemand (PHP Version >= 5.3.9)') ), 'pm_max_children' => array ( -- GitLab From 663531068b0d44ac98884435b35a7d77909333c4 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 07:42:14 +0200 Subject: [PATCH 340/571] - add checker for mr --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ee654e1f2..cdcc6edb29 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ syntax:lint: only: - schedules - web + - merge_requests script: - composer require overtrue/phplint -- GitLab From cbc92c24b3a6ae3be640aadb6351d5d17e3b4e6b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 07:46:17 +0200 Subject: [PATCH 341/571] - fixed language syntax errors from !1010 --- interface/web/admin/lib/lang/ar_remote_user.lng | 2 +- interface/web/admin/lib/lang/bg_remote_user.lng | 2 +- interface/web/admin/lib/lang/br_remote_user.lng | 2 +- interface/web/admin/lib/lang/ca_remote_user.lng | 2 +- interface/web/admin/lib/lang/cz_remote_user.lng | 2 +- interface/web/admin/lib/lang/de_remote_user.lng | 2 +- interface/web/admin/lib/lang/dk_remote_user.lng | 2 +- interface/web/admin/lib/lang/el_remote_user.lng | 2 +- interface/web/admin/lib/lang/en_remote_user.lng | 2 +- interface/web/admin/lib/lang/es_remote_user.lng | 2 +- interface/web/admin/lib/lang/fi_remote_user.lng | 2 +- interface/web/admin/lib/lang/fr_remote_user.lng | 2 +- interface/web/admin/lib/lang/hr_remote_user.lng | 2 +- interface/web/admin/lib/lang/hu_remote_user.lng | 2 +- interface/web/admin/lib/lang/id_remote_user.lng | 2 +- interface/web/admin/lib/lang/it_remote_user.lng | 2 +- interface/web/admin/lib/lang/ja_remote_user.lng | 2 +- interface/web/admin/lib/lang/pl_remote_user.lng | 2 +- interface/web/admin/lib/lang/pt_remote_user.lng | 2 +- interface/web/admin/lib/lang/ro_remote_user.lng | 2 +- interface/web/admin/lib/lang/ru_remote_user.lng | 2 +- interface/web/admin/lib/lang/se_remote_user.lng | 2 +- interface/web/admin/lib/lang/sk_remote_user.lng | 2 +- interface/web/admin/lib/lang/tr_remote_user.lng | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng index 8c70904102..b1db64e8e6 100644 --- a/interface/web/admin/lib/lang/ar_remote_user.lng +++ b/interface/web/admin/lib/lang/ar_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng index 35132ab452..2ad534da45 100644 --- a/interface/web/admin/lib/lang/bg_remote_user.lng +++ b/interface/web/admin/lib/lang/bg_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'ПотребителÑко име'; $wb['password_txt'] = 'Парола'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index b698af128d..7fbcbdf372 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng index dc39a8e798..638882de55 100644 --- a/interface/web/admin/lib/lang/ca_remote_user.lng +++ b/interface/web/admin/lib/lang/ca_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng index f8d0f3d5e5..1c53a5c5b7 100644 --- a/interface/web/admin/lib/lang/cz_remote_user.lng +++ b/interface/web/admin/lib/lang/cz_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Uživatelské jméno:'; $wb['password_txt'] = 'Heslo:'; $wb['function_txt'] = 'Funkce:'; diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng index e1f932a904..9bfb9c43a0 100644 --- a/interface/web/admin/lib/lang/de_remote_user.lng +++ b/interface/web/admin/lib/lang/de_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Benutzername'; $wb['password_txt'] = 'Passwort'; $wb['function_txt'] = 'Funktionen'; diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng index e7f020e411..c592247b83 100644 --- a/interface/web/admin/lib/lang/dk_remote_user.lng +++ b/interface/web/admin/lib/lang/dk_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Brugernavn:'; $wb['password_txt'] = 'Adgangskode:'; $wb['function_txt'] = 'Funktioner:'; diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng index 72d9eb29dd..43d04d0e02 100644 --- a/interface/web/admin/lib/lang/el_remote_user.lng +++ b/interface/web/admin/lib/lang/el_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Όνομα ΧÏήστη:'; $wb['password_txt'] = 'Συνθηματικό:'; $wb['function_txt'] = 'ΕνÎÏγειες:'; diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng index dc39a8e798..638882de55 100644 --- a/interface/web/admin/lib/lang/en_remote_user.lng +++ b/interface/web/admin/lib/lang/en_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng index b14c4b408b..2bd9c6f2ce 100644 --- a/interface/web/admin/lib/lang/es_remote_user.lng +++ b/interface/web/admin/lib/lang/es_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['Client functions'] = 'Funciones para clientes'; $wb['DNS a functions'] = 'Funciones DNS para registro A'; $wb['DNS aaaa functions'] = 'Funciones DNS para registro AAAA'; diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng index 8b943d3e52..f225bb8416 100644 --- a/interface/web/admin/lib/lang/fi_remote_user.lng +++ b/interface/web/admin/lib/lang/fi_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Käyttäjätunnus'; $wb['password_txt'] = 'Salasana'; $wb['function_txt'] = 'Toiminnot'; diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng index f2f8098945..99a8f2e4f9 100644 --- a/interface/web/admin/lib/lang/fr_remote_user.lng +++ b/interface/web/admin/lib/lang/fr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Identifiant'; $wb['password_txt'] = 'Mot de passe'; $wb['function_txt'] = 'Fonctions'; diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index 200e15544b..e5cef6a179 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'KorisniÄko ime'; $wb['password_txt'] = 'Å ifra'; $wb['function_txt'] = 'Funkcije'; diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng index 278d2d0434..ad34bf0823 100644 --- a/interface/web/admin/lib/lang/hu_remote_user.lng +++ b/interface/web/admin/lib/lang/hu_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Felhasználónév'; $wb['password_txt'] = 'Jelszó'; $wb['function_txt'] = 'Funkciók'; diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng index 740ed6fe71..1a31ae3274 100644 --- a/interface/web/admin/lib/lang/id_remote_user.lng +++ b/interface/web/admin/lib/lang/id_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nama pengguna'; $wb['password_txt'] = 'Kata Sandi'; $wb['function_txt'] = 'Fungsi'; diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng index 0d5e550d05..967270222b 100644 --- a/interface/web/admin/lib/lang/it_remote_user.lng +++ b/interface/web/admin/lib/lang/it_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nome Utente'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Funzioni'; diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng index adaaf54688..5ffbecd22a 100644 --- a/interface/web/admin/lib/lang/ja_remote_user.lng +++ b/interface/web/admin/lib/lang/ja_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'ユーザーå'; $wb['password_txt'] = 'パスワード'; $wb['function_txt'] = '機能'; diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng index 2a6a726bcb..1e611ffbe1 100644 --- a/interface/web/admin/lib/lang/pl_remote_user.lng +++ b/interface/web/admin/lib/lang/pl_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nazwa użytkownika'; $wb['password_txt'] = 'HasÅ‚o'; $wb['function_txt'] = 'Funkcje'; diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng index b521beb5e4..b1e8e08899 100644 --- a/interface/web/admin/lib/lang/pt_remote_user.lng +++ b/interface/web/admin/lib/lang/pt_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nome do utilizador'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng index 8c70904102..b1db64e8e6 100644 --- a/interface/web/admin/lib/lang/ro_remote_user.lng +++ b/interface/web/admin/lib/lang/ro_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng index 38eb3a3c33..e1266951aa 100644 --- a/interface/web/admin/lib/lang/ru_remote_user.lng +++ b/interface/web/admin/lib/lang/ru_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Логин'; $wb['password_txt'] = 'Пароль'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 39ae0ed375..c71d09f54f 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Användarnamn'; $wb['password_txt'] = 'Lösenord'; $wb['function_txt'] = 'Funktioner'; diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng index e8fac2a0b9..4e867066c7 100644 --- a/interface/web/admin/lib/lang/sk_remote_user.lng +++ b/interface/web/admin/lib/lang/sk_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Uživateľ'; $wb['password_txt'] = 'Heslo'; $wb['function_txt'] = 'Funkcia'; diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index 24fc6497f2..aacb7f4c35 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Kullanıcı Adı:'; $wb['password_txt'] = 'Parola:'; $wb['function_txt'] = 'Ä°ÅŸlevler:'; -- GitLab From 6083f0f3ef019de211888d195955791894f85abe Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 08:19:39 +0200 Subject: [PATCH 342/571] Update upd_dev_collection.sql --- install/sql/incremental/upd_dev_collection.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index c53f31b307..259035db1e 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -19,3 +19,4 @@ UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'co -- default php-fpm to ondemand mode ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; + -- GitLab From d19d4a7f5ca68c7b3b2217afca87c469c9470dad Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 08:38:41 +0200 Subject: [PATCH 343/571] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ee654e1f2..cdcc6edb29 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ syntax:lint: only: - schedules - web + - merge_requests script: - composer require overtrue/phplint -- GitLab From e3586dea7ead3dc7e205415d1df818bc12e2fbcc Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 09:56:06 +0200 Subject: [PATCH 344/571] - backport for MR !925 --- .../web/themes/default/assets/stylesheets/ispconfig.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index f5e8c46abf..fb1c8e8d18 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -794,4 +794,8 @@ span.notification_text { color: red; background: #fdd; text-decoration: none; -} \ No newline at end of file +} +#apache_directives, #nginx_directives, #proxy_directives { + font-family: Consolas, "Courier New", Courier, monospace; +} + -- GitLab From b84d1a66b841f686db9d3b1a1fbf108e40b9f8bb Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 09:58:56 +0200 Subject: [PATCH 345/571] - missing fix for !1010 --- interface/web/admin/lib/lang/nl_remote_user.lng | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng index 3d2baac1fd..884331daa0 100644 --- a/interface/web/admin/lib/lang/nl_remote_user.lng +++ b/interface/web/admin/lib/lang/nl_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Externe Gebruiker' +$wb['remote_user_txt'] = 'Externe Gebruiker'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; $wb['function_txt'] = 'Funties'; -- GitLab From e58600a64e953fb8cd5906f0829f2712f5ce5753 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 11:54:20 +0200 Subject: [PATCH 346/571] - change phplint settings --- .phplint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.phplint.yml b/.phplint.yml index 10fd2a25af..800c8d4e5e 100644 --- a/.phplint.yml +++ b/.phplint.yml @@ -1,5 +1,5 @@ path: ./ -jobs: 10 +jobs: 2 cache: .phplint-cache extensions: - php -- GitLab From 20e52c33c00019840fe5f4828ec2152ad11e2ac0 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 12:05:07 +0200 Subject: [PATCH 347/571] - changed settings for phplint --- .phplint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.phplint.yml b/.phplint.yml index 800c8d4e5e..438e3c238d 100644 --- a/.phplint.yml +++ b/.phplint.yml @@ -1,5 +1,5 @@ path: ./ -jobs: 2 +jobs: 5 cache: .phplint-cache extensions: - php -- GitLab From c40524c469969866fa6c01face2b4be975ed5fd0 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 9 Jun 2020 13:13:59 +0200 Subject: [PATCH 348/571] purge trash and junk (Implements #5634) --- .../sql/incremental/upd_dev_collection.sql | 3 + install/sql/ispconfig3.sql | 2 + interface/web/mail/form/mail_user.tform.php | 14 +++ interface/web/mail/lib/lang/ar_mail_user.lng | 4 + interface/web/mail/lib/lang/bg_mail_user.lng | 4 + interface/web/mail/lib/lang/br_mail_user.lng | 4 + interface/web/mail/lib/lang/ca_mail_user.lng | 4 + interface/web/mail/lib/lang/cz_mail_user.lng | 4 + interface/web/mail/lib/lang/de_mail_user.lng | 4 + interface/web/mail/lib/lang/dk_mail_user.lng | 4 + interface/web/mail/lib/lang/el_mail_user.lng | 4 + interface/web/mail/lib/lang/en_mail_user.lng | 4 + interface/web/mail/lib/lang/es_mail_user.lng | 4 + interface/web/mail/lib/lang/fi_mail_user.lng | 4 + interface/web/mail/lib/lang/fr_mail_user.lng | 4 + interface/web/mail/lib/lang/hr_mail_user.lng | 4 + interface/web/mail/lib/lang/hu_mail_user.lng | 4 + interface/web/mail/lib/lang/id_mail_user.lng | 4 + interface/web/mail/lib/lang/it_mail_user.lng | 4 + interface/web/mail/lib/lang/ja_mail_user.lng | 4 + interface/web/mail/lib/lang/nl_mail_user.lng | 4 + interface/web/mail/lib/lang/pl_mail_user.lng | 4 + interface/web/mail/lib/lang/pt_mail_user.lng | 4 + interface/web/mail/lib/lang/ro_mail_user.lng | 4 + interface/web/mail/lib/lang/ru_mail_user.lng | 4 + interface/web/mail/lib/lang/se_mail_user.lng | 4 + interface/web/mail/lib/lang/sk_mail_user.lng | 4 + interface/web/mail/lib/lang/tr_mail_user.lng | 4 + .../templates/mail_user_mailfilter_edit.htm | 49 +++++++--- .../cron.d/500-clean_mailboxes.inc.php | 95 +++++++++++++++++++ 30 files changed, 250 insertions(+), 13 deletions(-) create mode 100755 server/lib/classes/cron.d/500-clean_mailboxes.inc.php diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 259035db1e..efd0f4082b 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -20,3 +20,6 @@ UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'co -- default php-fpm to ondemand mode ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; +ALTER TABLE `mail_user` + ADD `purge_trash_days` INT NOT NULL DEFAULT '0' AFTER `move_junk`, + ADD `purge_junk_days` INT NOT NULL DEFAULT '0' AFTER `purge_trash_days`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 3908cf382b..4965358bc6 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1047,6 +1047,8 @@ CREATE TABLE `mail_user` ( `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', `autoresponder_text` mediumtext NULL, `move_junk` enum('n','y') NOT NULL default 'n', + `purge_trash_days` INT NOT NULL DEFAULT '0', + `purge_junk_days` INT NOT NULL DEFAULT '0', `custom_mailfilter` mediumtext, `postfix` enum('n','y') NOT NULL default 'y', `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 0efc7f3d6b..83142f8a85 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -406,6 +406,20 @@ if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') { 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'purge_trash_days' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + ), + 'default' => '0', + ), + 'purge_junk_days' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + ), + 'default' => '0', + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index c68becf335..a67a83c07a 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 000377077b..3b9a27390e 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index ed6e35ef61..2aca5c3736 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Mensal'; $wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.'; $wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; $wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 096572b5e0..e380b55d2d 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index c697e4cffc..1946d4150f 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'TýdennÃ'; $wb['monthly_backup_txt'] = 'MÄ›sÃÄnÃ'; $wb['sender_cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.) '; $wb['password_click_to_set_txt'] = 'Pro nastavenà klikni zde'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index b60a756b09..7c1f02cd4f 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)'; $wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse'; $wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index fb846da199..8c0957d353 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -62,4 +62,8 @@ $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index a097470ad7..f735d6e7b3 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 4174081b53..82cab6d70c 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 93c2095e1c..418fd2dbfa 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -62,4 +62,8 @@ $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'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 8f94f0158f..a764e95693 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index bb54c2e0c0..732f3d8cb7 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Hebdomadaire'; $wb['monthly_backup_txt'] = 'Mensuel'; $wb['sender_cc_note_txt'] = '(Séparer les adresses e-mail multiples par des virgules)'; $wb['password_click_to_set_txt'] = 'Cliquez pour définir'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 8dcfe7a6fa..7406e2d656 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -62,4 +62,8 @@ $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 43720fbd84..db8edf775e 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index ba17e373c7..670550062c 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index e6820a0329..dad3f69654 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -62,4 +62,8 @@ $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 3cd498f270..803a278d5b 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 65d89a32af..39cd0bd0f0 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -61,4 +61,8 @@ $wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor he $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index d090fadb2a..8a35e7742e 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index aa0e9a0a05..56a1f16d30 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 3f0f8ec479..ccdcc49fdf 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 526c976ed5..fcfadd9db9 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Дата начала должн $wb['sender_cc_txt'] = 'Отправка иÑходÑщей копии на'; $wb['sender_cc_error_isemail'] = 'Поле -Отправка иÑходÑщей копии на- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; $wb['sender_cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index a427c50606..c081446557 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 92c6dea578..eb70b8eba9 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 99e9860396..c7dec33b99 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Aylık'; $wb['email_error_isascii'] = 'E-posta istemcinizde sorun yaÅŸamamak için lütfen parolanızda dile özel unikod karakterler kullanmayın.'; $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; $wb['sender_cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; +$wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; +$wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; +$wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; +$wb['tooltip_purge_junk_days_txt'] = '0 = disabled'; ?> diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm index fc40398d5d..4c7058292e 100644 --- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm +++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm @@ -1,16 +1,39 @@ - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='move_junk'} - </div> - </div> - +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label> + <div class="col-sm-9">{tmpl_var name='move_junk'}</div> +</div> - {tmpl_var name='filter_records'} +<div class="form-group"> + <label for="purge_trash_days" class="col-sm-3 control-label">{tmpl_var name='purge_trash_days_txt'}</label> + <div class="col-sm-9"> + <div class="input-group"> + <tmpl_if name="show_config_info"> + <input type="text" name="purge_trash_days" id="purge_trash_days" value="{tmpl_var name='purge_trash_days'}" class="form-control" data-toggle="tooltip" title="{tmpl_var name='tooltip_purge_trash_days_txt'}"> + <tmpl_else> + <input type="text" name="purge_trash_days" id="purge_trash_days" value="{tmpl_var name='purge_trash_days'}" class="form-control"> + </tmpl_if> + </div> + </div> +</div> - <input type="hidden" name="id" value="{tmpl_var name='id'}"> +<div class="form-group"> + <label for="purge_junk_days" class="col-sm-3 control-label">{tmpl_var name='purge_junk_days_txt'}</label> + <div class="col-sm-9"> + <div class="input-group"> + <tmpl_if name="show_config_info"> + <input type="text" name="purge_junk_days" id="purge_junk_days" value="{tmpl_var name='purge_junk_days'}" class="form-control" data-toggle="tooltip" title="{tmpl_var name='tooltip_purge_junk_days_txt'}"> + <tmpl_else> + <input type="text" name="purge_junk_days" id="purge_junk_days" value="{tmpl_var name='purge_junk_days'}" class="form-control"> + </tmpl_if> + </div> + </div> +</div> + +{tmpl_var name='filter_records'} - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> +<input type="hidden" name="id" value="{tmpl_var name='id'}"> + +<div class="clear"><div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> +</div></div> diff --git a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php new file mode 100755 index 0000000000..8617d0d76d --- /dev/null +++ b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php @@ -0,0 +1,95 @@ +<?php + +/* +Copyright (c) 2020, Florian Schaal, schaal @it UG +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. +*/ + +class cronjob_clean_mailboxes extends cronjob { + + // should run before quota notify and backup + // quota notify and backup is both '0 0 * * *' + + // job schedule + protected $_schedule = '00 22 * * *'; + + /* this function is optional if it contains no custom code */ + public function onPrepare() { + global $app; + + parent::onPrepare(); + } + + /* this function is optional if it contains no custom code */ + public function onBeforeRun() { + global $app; + + return parent::onBeforeRun(); + } + + public function onRunJob() { + global $app, $conf; + + $trash_names=array('Trash', 'Papierkorb', 'Deleted Items', 'Deleted Messages', 'INBOX.Trash', 'INBOX.Papierkorb', 'INBOX.Deleted Messages'); + $junk_names=array('Junk', 'Junk Email', 'SPAM', 'INBOX.SPAM'); + + $purge_cmd = 'doveadm expunge -u ? mailbox ? sentbefore '; + + $server_id = intval($conf['server_id']); + $records = $app->db->queryAllRecords("SELECT email, maildir, purge_trash_days, purge_junk_days FROM mail_user WHERE maildir_format = 'maildir' AND disableimap = 'n' AND server_id = ? AND (purge_trash_days > 0 OR purge_junk_days > 0)", $server_id); + + if(is_array($records) && !empty($records)) { + foreach($records as $email) { + if($email['purge_trash_days'] > 0) { + foreach($trash_names as $trash) { + if(is_dir($email['maildir'].'/Maildir/.'.$trash)) { + $app->system->exec_safe($purge_cmd.intval($email['purge_trash_days']).'d', $email['email'], $trash); + } + } + } + if($email['purge_junk_days'] > 0) { + foreach($junk_names as $junk) { + if(is_dir($email['maildir'].'/Maildir/.'.$junk)) { + $app->system->exec_safe($purge_cmd.intval($email['purge_junk_days']).'d', $email['email'], $junk); + } + } + } + } + } + + parent::onRunJob(); + } + + /* this function is optional if it contains no custom code */ + public function onAfterRun() { + global $app; + + parent::onAfterRun(); + } + +} + +?> -- GitLab From 22819ea8cec7d2f3d1613c7f469b5aee6f5e2cc4 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 13:23:57 +0200 Subject: [PATCH 349/571] - added custom ci lint script --- .git-scripts/syntax.sh | 56 ++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 34 ++++++++++++++++++++++--- 2 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 .git-scripts/syntax.sh diff --git a/.git-scripts/syntax.sh b/.git-scripts/syntax.sh new file mode 100644 index 0000000000..efc48ae4b3 --- /dev/null +++ b/.git-scripts/syntax.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +IFS=$'\n' +EX=0 +ERRS="" ; +WARNS="" ; +ERRCNT=0 ; +WARNCNT=0 ; + +CMD="find . -type f \( -name \"*.php\" -o -name \"*.lng\" \) -print" ; + +if [[ "$1" == "commit" ]] ; then + CMD="git diff-tree --no-commit-id --name-only -r ${CI_COMMIT_SHA} | grep -E '\.(php|lng)$'" ; +fi + +for F in $(eval "$CMD") ; do + if [[ ! -e "${F}" && -f "${F}" ]] ; then + continue ; + fi + echo -n "${F} ... " ; + R=$(php -d error_reporting=E_ALL -d display_errors=On -l "$F" 2>/dev/null) ; + RET=$? ; + R=$(echo "${R}" | sed "/^$/d") + if [ $RET -gt 0 ] ; then + EX=1 ; + echo "[ERROR]" ; + ERRS="${ERRS}${F}:"$'\n'"${R}"$'\n\n' ; + ERRCNT=$((ERRCNT + 1)) ; + else + if [[ "$R" == "Deprecated: "* ]] ; then + echo "[WARN]" ; + WARNS="${WARNS}${F}:"$'\n'"${R}"$'\n\n' ; + WARNCNT=$((WARNCNT + 1)) ; + else + echo "[OK]" ; + fi + fi +done + +echo "" +echo "--------------------------"; +echo "" +echo "${ERRCNT} Errors" +if [ $ERRCNT -gt 0 ] ; then + echo "${ERRS}" + echo "" +fi + +echo "${WARNCNT} Warnings" +if [ $WARNCNT -gt 0 ] ; then + echo "" + echo "${WARNS}" + echo "" +fi + +exit $EX \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdcc6edb29..4e4a201bfc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ # Defines stages which are to be executed stages: - syntax + - syntax_diff # ### Stage syntax @@ -16,8 +17,35 @@ syntax:lint: - merge_requests script: - - composer require overtrue/phplint - echo "Syntax checking PHP files" - - echo "For more information http://www.icosaedro.it/phplint/" - - vendor/bin/phplint + - bash ./.git-scripts/syntax.sh + + +syntax_diff:lint: + stage: syntax + image: edbizarro/gitlab-ci-pipeline-php:7.2 + allow_failure: false + only: + - web + - pushes + - branches + + script: + - echo "Syntax checking PHP files" + - bash ./.git-scripts/syntax.sh commit + +#syntax:lint: +# stage: syntax +# image: edbizarro/gitlab-ci-pipeline-php:7.2 +# allow_failure: false +# only: +# - schedules +# - web +# - merge_requests +# +# script: +# - composer require overtrue/phplint +# - echo "Syntax checking PHP files" +# - echo "For more information http://www.icosaedro.it/phplint/" +# - vendor/bin/phplint -- GitLab From c8db76b6f7bf85483e99733fe29de791d56727cd Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 13:41:38 +0200 Subject: [PATCH 350/571] - improved lint script --- .git-scripts/syntax.sh | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.git-scripts/syntax.sh b/.git-scripts/syntax.sh index efc48ae4b3..e584e2ef10 100644 --- a/.git-scripts/syntax.sh +++ b/.git-scripts/syntax.sh @@ -7,39 +7,50 @@ WARNS="" ; ERRCNT=0 ; WARNCNT=0 ; +OUTCNT=0 ; +FILECNT=0 ; +DONECNT=0 ; + CMD="find . -type f \( -name \"*.php\" -o -name \"*.lng\" \) -print" ; if [[ "$1" == "commit" ]] ; then CMD="git diff-tree --no-commit-id --name-only -r ${CI_COMMIT_SHA} | grep -E '\.(php|lng)$'" ; fi +FILECNT=$(eval "${CMD} | wc -l") ; + for F in $(eval "$CMD") ; do if [[ ! -e "${F}" && -f "${F}" ]] ; then continue ; fi - echo -n "${F} ... " ; R=$(php -d error_reporting=E_ALL -d display_errors=On -l "$F" 2>/dev/null) ; RET=$? ; R=$(echo "${R}" | sed "/^$/d") if [ $RET -gt 0 ] ; then EX=1 ; - echo "[ERROR]" ; + echo -n "E" ; ERRS="${ERRS}${F}:"$'\n'"${R}"$'\n\n' ; ERRCNT=$((ERRCNT + 1)) ; else if [[ "$R" == "Deprecated: "* ]] ; then - echo "[WARN]" ; + echo -n "W" ; WARNS="${WARNS}${F}:"$'\n'"${R}"$'\n\n' ; WARNCNT=$((WARNCNT + 1)) ; else - echo "[OK]" ; + echo -n "." ; fi fi + OUTCNT=$((OUTCNT + 1)) ; + DONECNT=$((DONECNT + 1)) ; + if [ $OUTCNT -ge 40 ] ; then + OUTCNT=0 ; + echo "[${DONECNT}/${FILECNT}]" ; + fi done echo "" echo "--------------------------"; -echo "" +echo "${DONECNT} Files done" echo "${ERRCNT} Errors" if [ $ERRCNT -gt 0 ] ; then echo "${ERRS}" -- GitLab From 8eca37ffd7861fe0477adaf8e3e5aed313874b9e Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Tue, 9 Jun 2020 13:51:43 +0200 Subject: [PATCH 351/571] - fixed remote functions naming (CAA/CNAME) --- interface/lib/classes/remote.d/dns.inc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 36180ace3e..612adf7186 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -429,22 +429,22 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_cname_get($session_id, $primary_id) { + public function dns_caa_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'CAA'); } //* Add a record - public function dns_cname_add($session_id, $client_id, $params, $update_serial=false) { + public function dns_caa_add($session_id, $client_id, $params, $update_serial=false) { return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'CAA'); } //* Update a record - public function dns_cname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + public function dns_caa_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'CAA'); } //* Delete a record - public function dns_cname_delete($session_id, $primary_id, $update_serial=false) { + public function dns_caa_delete($session_id, $primary_id, $update_serial=false) { return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'CAA'); } -- GitLab From 5ffe9d88ddd7af2c4464230216f2df7a9db3c67e Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 9 Jun 2020 14:02:52 +0200 Subject: [PATCH 352/571] allow the same name for every directive snippets type (Implemets #5631) --- ...validate_server_directive_snippets.inc.php | 49 +++++++++++++++++++ .../admin/form/directive_snippets.tform.php | 7 ++- 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100755 interface/lib/classes/validate_server_directive_snippets.inc.php diff --git a/interface/lib/classes/validate_server_directive_snippets.inc.php b/interface/lib/classes/validate_server_directive_snippets.inc.php new file mode 100755 index 0000000000..0272166c40 --- /dev/null +++ b/interface/lib/classes/validate_server_directive_snippets.inc.php @@ -0,0 +1,49 @@ +<?php + +/* +Copyright (c) 2020, Florian Schaal, schaal @it UG +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. +*/ + +class validate_server_directive_snippets { + + function get_error($errmsg) { + global $app; + + if(isset($app->tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."<br>\r\n"; + } else { + return $errmsg."<br>\r\n"; + } + } + + function validate_snippet($field_name, $field_value, $validator) { + global $app; + $check = $app->db->queryAllRecords('SELECT * FROM directive_snippets WHERE name = ? AND type = ?', $field_value, trim($_POST['type'])); + if(!empty($check)) return $this->get_error('directive_snippets_name_error_unique'); + } + +} diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php index d451a50795..bd9466c310 100644 --- a/interface/web/admin/form/directive_snippets.tform.php +++ b/interface/web/admin/form/directive_snippets.tform.php @@ -66,10 +66,9 @@ $form["tabs"]['directive_snippets'] = array ( 'name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'directive_snippets_name_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'directive_snippets_name_error_unique'), + 'validators' => array ( + 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'directive_snippets_name_empty'), + 1 => array ( 'type' => 'CUSTOM', 'class' => 'validate_server_directive_snippets', 'function' => 'validate_snippet'), ), 'filters' => array( 0 => array( 'event' => 'SAVE', -- GitLab From bc0d340108893913c095812eef3c82052e92237b Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 2 Jun 2020 17:06:46 -0600 Subject: [PATCH 353/571] mail_user.disabledoveadm should always = 'n' fixes #5629 --- install/sql/incremental/upd_dev_collection.sql | 3 +++ interface/web/mail/mail_user_edit.php | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index efd0f4082b..659708c685 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -23,3 +23,6 @@ ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; ALTER TABLE `mail_user` ADD `purge_trash_days` INT NOT NULL DEFAULT '0' AFTER `move_junk`, ADD `purge_junk_days` INT NOT NULL DEFAULT '0' AFTER `purge_trash_days`; + +-- doveadm should be enabled for all mailboxes +UPDATE `mail_user` set `disabledoveadm` = 'n'; diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index d291367d11..7255c6dbac 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -313,8 +313,8 @@ class page_action extends tform_actions { $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = ($this->dataRecord["disablesmtp"])?'y':'n'; - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disabledoveadm = ? WHERE mailuser_id = ?"; - $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disableimap, $this->id); + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); } } @@ -365,8 +365,8 @@ class page_action extends tform_actions { $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = (isset($this->dataRecord["disablesmtp"]) && $this->dataRecord["disablesmtp"])?'y':'n'; - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disabledoveadm = ? WHERE mailuser_id = ?"; - $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disableimap, $this->id); + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); } //** If the email address has been changed, change it in all aliases too -- GitLab From 5fe318fe3f3ca4f721f4f36791de355af3360843 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Wed, 10 Jun 2020 10:28:19 +0200 Subject: [PATCH 354/571] Update validate_server_directive_snippets.inc.php --- .../lib/classes/validate_server_directive_snippets.inc.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/lib/classes/validate_server_directive_snippets.inc.php b/interface/lib/classes/validate_server_directive_snippets.inc.php index 0272166c40..751400766c 100755 --- a/interface/lib/classes/validate_server_directive_snippets.inc.php +++ b/interface/lib/classes/validate_server_directive_snippets.inc.php @@ -42,7 +42,10 @@ class validate_server_directive_snippets { function validate_snippet($field_name, $field_value, $validator) { global $app; - $check = $app->db->queryAllRecords('SELECT * FROM directive_snippets WHERE name = ? AND type = ?', $field_value, trim($_POST['type'])); + $type=(isset($app->remoting_lib->dataRecord['type']))?$app->remoting_lib->dataRecord['type']:$_POST['type']; + $types = array('apache','nginx','php','proxy'); + if(!in_array($type,$types)) return $this->get_error('directive_snippets_invalid_type'); + $check = $app->db->queryAllRecords('SELECT * FROM directive_snippets WHERE name = ? AND type = ?', $field_value, $type); if(!empty($check)) return $this->get_error('directive_snippets_name_error_unique'); } -- GitLab From d328afafcca38a67b4c1eb3068eded60cd4fef07 Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Wed, 10 Jun 2020 11:52:53 +0200 Subject: [PATCH 355/571] add missing entry from upd_dev_collection.sql --- install/sql/ispconfig3.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 4965358bc6..b7722eac0c 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -561,7 +561,7 @@ INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `s (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'certSIGN', 'certsign.ro', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'CFCA', 'cfca.com.cn', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Chunghwa Telecom', 'cht.com.tw', 'Y', '', 0), -(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Comodo', 'comodoca.com', 'Y', '', 0), +(NULL, 1, 1, 'riud', 'riud', '', 'Y', 'Sectigo / Comodo CA', 'comodoca.com', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'D-TRUST', 'd-trust.net', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DigiCert', 'digicert.com', 'Y', '', 0), (NULL, 1, 1, 'riud', 'riud', '', 'Y', 'DocuSign', 'docusign.fr', 'Y', '', 0), -- GitLab From f9c1d4b4e428e8343d6e27bb53e5df93c93e3e64 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 9 Oct 2019 15:47:08 -0600 Subject: [PATCH 356/571] enable imap special-use flags --- install/tpl/debian6_dovecot2.conf.master | 20 ++++++++++++++++++++ install/tpl/fedora_dovecot2.conf.master | 21 +++++++++++++++++++++ install/tpl/opensuse_dovecot2.conf.master | 21 +++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 777280f044..58adf1d85c 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -10,6 +10,7 @@ ssl_dh = </etc/dovecot/dh.pem ssl_protocols = !SSLv2 !SSLv3 ssl_min_protocol = TLSv1 mail_max_userip_connections = 100 +mail_plugins = quota passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql @@ -83,3 +84,22 @@ protocol lmtp { #2.3+ } #2.3+ } +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 "Sent Messages" { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 1ba39a30d4..1f6c6eb996 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -7,6 +7,7 @@ mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 +mail_plugins = quota passdb { args = /etc/dovecot-sql.conf driver = sql @@ -77,3 +78,23 @@ mail_plugins = $mail_plugins quota #2.3+ mode = 0660 #2.3+ } #2.3+ } + +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 "Sent Messages" { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index f615cf3354..9e17d4603a 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -7,6 +7,7 @@ mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 +mail_plugins = quota passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql @@ -76,3 +77,23 @@ mail_plugins = $mail_plugins quota #2.3+ mode = 0660 #2.3+ } #2.3+ } + +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 "Sent Messages" { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } +} -- GitLab From 36e7b355ce713a8993aec76a2a6b6948bf21399c Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 9 Oct 2019 16:07:29 -0600 Subject: [PATCH 357/571] enable quota checking in RCPT stage --- install/tpl/debian6_dovecot2.conf.master | 1 + install/tpl/debian_dovecot2.conf.master | 1 + install/tpl/fedora_dovecot2.conf.master | 1 + install/tpl/opensuse_dovecot2.conf.master | 1 + 4 files changed, 4 insertions(+) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 58adf1d85c..76d168cd7d 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -50,6 +50,7 @@ service lmtp { # process_min_avail = 5 } } +lmtp_rcpt_check_quota = yes service imap-login { client_limit = 1000 process_limit = 512 diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index e1929b188d..24bf07393f 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -46,6 +46,7 @@ service lmtp { user = postfix } } +lmtp_rcpt_check_quota = yes service imap-login { client_limit = 1000 process_limit = 512 diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 1f6c6eb996..56d304a761 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -43,6 +43,7 @@ service lmtp { user = postfix } } +lmtp_rcpt_check_quota = yes service imap-login { client_limit = 1000 process_limit = 500 diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 9e17d4603a..d9f29a41e1 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -43,6 +43,7 @@ service lmtp { user = postfix } } +lmtp_rcpt_check_quota = yes service imap-login { client_limit = 1000 process_limit = 500 -- GitLab From cda1d3b20cae212570f1ff79c95abcb8100c23cb Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 9 Oct 2019 16:37:36 -0600 Subject: [PATCH 358/571] implement dovecot quota-status policy daemon (#4649) --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 1 + install/tpl/debian6_dovecot2.conf.master | 15 +++++++++++++++ install/tpl/debian_dovecot2.conf.master | 15 +++++++++++++++ install/tpl/debian_postfix.conf.master | 3 ++- install/tpl/fedora_dovecot2.conf.master | 15 +++++++++++++++ install/tpl/fedora_postfix.conf.master | 3 ++- install/tpl/gentoo_postfix.conf.master | 3 ++- install/tpl/master_cf_amavis10025.master | 1 + install/tpl/master_cf_amavis10027.master | 1 + install/tpl/opensuse_dovecot2.conf.master | 15 +++++++++++++++ install/tpl/opensuse_postfix.conf.master | 3 ++- 12 files changed, 74 insertions(+), 4 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 659708c685..91db879d0c 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -26,3 +26,6 @@ ALTER TABLE `mail_user` -- doveadm should be enabled for all mailboxes UPDATE `mail_user` set `disabledoveadm` = 'n'; + +-- add disablequota-status for quota-status policy daemon +ALTER TABLE `mail_user` ADD `disablequota-status` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disabledoveadm`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 4965358bc6..cc266ff235 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1062,6 +1062,7 @@ CREATE TABLE `mail_user` ( `disablelda` enum('n','y') NOT NULL default 'n', `disablelmtp` enum('n','y') NOT NULL default 'n', `disabledoveadm` enum('n','y') NOT NULL default 'n', + `disablequota-status` enum('n','y') NOT NULL default 'n', `last_quota_notification` date NULL default NULL, `backup_interval` VARCHAR( 255 ) NOT NULL default 'none', `backup_copies` INT NOT NULL DEFAULT '1', diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 76d168cd7d..1f51f23ad3 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -85,6 +85,21 @@ protocol lmtp { #2.3+ } #2.3+ } +service quota-status { + executable = quota-status -p postfix + inet_listener { + # separate multiple addresses with space: + address = 127.0.0.1 + port = 10060 + } + client_limit = 1 +} +plugin { + quota_status_success = DUNNO + quota_status_nouser = DUNNO + quota_status_overquota = "552 5.2.2 Mailbox is full" +} + imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 24bf07393f..b71ede7534 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -81,3 +81,18 @@ protocol lmtp { #2.3+ mode = 0660 #2.3+ } #2.3+ } + +service quota-status { + executable = quota-status -p postfix + inet_listener { + # separate multiple addresses with space: + address = 127.0.0.1 + port = 10060 + } + client_limit = 1 +} +plugin { + quota_status_success = DUNNO + quota_status_nouser = DUNNO + quota_status_overquota = "552 5.2.2 Mailbox is full" +} diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index b7dbea6300..4d03dfd005 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -15,7 +15,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service inet:127.0.0.1:10060 +smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 56d304a761..9115404d9f 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -80,6 +80,21 @@ mail_plugins = $mail_plugins quota #2.3+ } #2.3+ } +service quota-status { + executable = quota-status -p postfix + inet_listener { + # separate multiple addresses with space: + address = 127.0.0.1 + port = 10060 + } + client_limit = 1 +} +plugin { + quota_status_success = DUNNO + quota_status_nouser = DUNNO + quota_status_overquota = "552 5.2.2 Mailbox is full" +} + imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index f06af82288..8bda2b7dcc 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -11,7 +11,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service inet:127.0.0.1:10060 +smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index dc20e02c13..79a9dcd63d 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -10,7 +10,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service inet:127.0.0.1:10060 +smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/master_cf_amavis10025.master b/install/tpl/master_cf_amavis10025.master index 43f362d5c0..6dee892264 100644 --- a/install/tpl/master_cf_amavis10025.master +++ b/install/tpl/master_cf_amavis10025.master @@ -8,6 +8,7 @@ -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject + -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks diff --git a/install/tpl/master_cf_amavis10027.master b/install/tpl/master_cf_amavis10027.master index f9fdf1cf60..640902d52e 100644 --- a/install/tpl/master_cf_amavis10027.master +++ b/install/tpl/master_cf_amavis10027.master @@ -8,6 +8,7 @@ -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject + -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index d9f29a41e1..7fb51246f9 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -79,6 +79,21 @@ mail_plugins = $mail_plugins quota #2.3+ } #2.3+ } +service quota-status { + executable = quota-status -p postfix + inet_listener { + # separate multiple addresses with space: + address = 127.0.0.1 + port = 10060 + } + client_limit = 1 +} +plugin { + quota_status_success = DUNNO + quota_status_nouser = DUNNO + quota_status_overquota = "552 5.2.2 Mailbox is full" +} + imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 4192f988b5..6661bffd98 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -13,7 +13,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service inet:127.0.0.1:10060 +smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From f60d97f4313b78f7e605ef65a508d1dee4a2dc25 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 10 Oct 2019 11:20:30 -0600 Subject: [PATCH 359/571] enable managesieve daemon if installed (#3395) --- install/dist/lib/debian60.lib.php | 11 ++++++++++- install/lib/installer_base.lib.php | 11 ++++++++++- install/tpl/debian6_dovecot2.conf.master | 2 ++ install/tpl/debian_dovecot2.conf.master | 2 ++ install/tpl/fedora_dovecot2.conf.master | 2 ++ install/tpl/opensuse_dovecot2.conf.master | 2 ++ 6 files changed, 28 insertions(+), 2 deletions(-) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index cc234f132e..cd3b46e544 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -138,7 +138,7 @@ class installer extends installer_base { } //remove #2.3+ comment $content = file_get_contents($config_dir.'/'.$configfile); - $content = str_replace('#2.3+','',$content); + $content = str_replace('#2.3+ ','',$content); file_put_contents($config_dir.'/'.$configfile,$content); unset($content); @@ -155,6 +155,15 @@ class installer extends installer_base { } } + //* dovecot-managesieved + if($configure_managesieve = is_file('/usr/lib/dovecot/managesieve')) { + //remove #mangesieve+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#mangesieve+ ','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + } + //* dovecot-lmtpd if($configure_lmtp) { replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index e5ac1428d8..73995498d3 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1347,7 +1347,7 @@ class installer_base { } //remove #2.3+ comment $content = file_get_contents($config_dir.'/'.$configfile); - $content = str_replace('#2.3+','',$content); + $content = str_replace('#2.3+ ','',$content); file_put_contents($config_dir.'/'.$configfile,$content); unset($content); @@ -1358,6 +1358,15 @@ class installer_base { } } + //* dovecot-managesieved + if($configure_managesieve = is_file('/usr/lib/dovecot/managesieve')) { + //remove #mangesieve+ comment + $content = file_get_contents($config_dir.'/'.$configfile); + $content = str_replace('#mangesieve+ ','',$content); + file_put_contents($config_dir.'/'.$configfile,$content); + unset($content); + } + //* dovecot-lmtpd if($configure_lmtp) { replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 1f51f23ad3..c21ab94ad9 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -119,3 +119,5 @@ namespace inbox { special_use = \Trash } } + +#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index b71ede7534..8a204e7776 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -96,3 +96,5 @@ plugin { quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is full" } + +#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 9115404d9f..207983f86e 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -114,3 +114,5 @@ namespace inbox { special_use = \Trash } } + +#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 7fb51246f9..42230ed300 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -113,3 +113,5 @@ namespace inbox { special_use = \Trash } } + +#managesieve+ protocols = $protocols sieve -- GitLab From 2120766a264199d00580dfcbde98008bfd8e2815 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 14 Oct 2019 17:53:23 -0600 Subject: [PATCH 360/571] use lmtp by default if detected --- install/dist/lib/debian60.lib.php | 27 ++++++++++++++--------- install/lib/installer_base.lib.php | 27 ++++++++++++++--------- install/tpl/debian6_dovecot2.conf.master | 1 - install/tpl/debian_dovecot2.conf.master | 1 - install/tpl/fedora_dovecot2.conf.master | 1 - install/tpl/opensuse_dovecot2.conf.master | 1 - 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index cd3b46e544..faac52b227 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -33,11 +33,16 @@ class installer extends installer_base { public function configure_dovecot() { global $conf; - + $virtual_transport = 'dovecot'; $configure_lmtp = false; - + + // use lmtp if installed + if($configure_lmtp = is_file('/usr/lib/dovecot/lmtp')) { + $virtual_transport = 'lmtp:unix:private/dovecot-lmtp'; + } + // 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']); @@ -155,20 +160,20 @@ class installer extends installer_base { } } - //* dovecot-managesieved - if($configure_managesieve = is_file('/usr/lib/dovecot/managesieve')) { - //remove #mangesieve+ comment - $content = file_get_contents($config_dir.'/'.$configfile); - $content = str_replace('#mangesieve+ ','',$content); - file_put_contents($config_dir.'/'.$configfile,$content); - unset($content); - } + $dovecot_protocols = 'imap pop3'; //* dovecot-lmtpd if($configure_lmtp) { - replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); + $dovecot_protocols .= ' lmtp' + } + + //* dovecot-managesieved + if(is_file('/usr/lib/dovecot/managesieve')) { + $dovecot_protocols .= ' sieve' } + replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', "protocols = $dovecot_protocols", 1, 0); + //* dovecot-sql.conf $configfile = 'dovecot-sql.conf'; if(is_file($config_dir.'/'.$configfile)){ diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 73995498d3..ee9d1a6d8d 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1233,11 +1233,16 @@ class installer_base { public function configure_dovecot() { global $conf; - + $virtual_transport = 'dovecot'; $configure_lmtp = false; - + + // use lmtp if installed + if($configure_lmtp = is_file('/usr/lib/dovecot/lmtp')) { + $virtual_transport = 'lmtp:unix:private/dovecot-lmtp'; + } + // 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']); @@ -1358,20 +1363,20 @@ class installer_base { } } - //* dovecot-managesieved - if($configure_managesieve = is_file('/usr/lib/dovecot/managesieve')) { - //remove #mangesieve+ comment - $content = file_get_contents($config_dir.'/'.$configfile); - $content = str_replace('#mangesieve+ ','',$content); - file_put_contents($config_dir.'/'.$configfile,$content); - unset($content); - } + $dovecot_protocols = 'imap pop3'; //* dovecot-lmtpd if($configure_lmtp) { - replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); + $dovecot_protocols .= ' lmtp' + } + + //* dovecot-managesieved + if(is_file('/usr/lib/dovecot/managesieve')) { + $dovecot_protocols .= ' sieve' } + replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', "protocols = $dovecot_protocols", 1, 0); + //* dovecot-sql.conf $configfile = 'dovecot-sql.conf'; if(is_file($config_dir.'/'.$configfile)) { diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index c21ab94ad9..95acb721e0 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -120,4 +120,3 @@ namespace inbox { } } -#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 8a204e7776..dbacf872f5 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -97,4 +97,3 @@ plugin { quota_status_overquota = "552 5.2.2 Mailbox is full" } -#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 207983f86e..08ac94a903 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -115,4 +115,3 @@ namespace inbox { } } -#managesieve+ protocols = $protocols sieve diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 42230ed300..6e040b9745 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -114,4 +114,3 @@ namespace inbox { } } -#managesieve+ protocols = $protocols sieve -- GitLab From f78f7cc60c5ee6598c93ef8a6fcde8fb6036a288 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 14 Oct 2019 18:24:49 -0600 Subject: [PATCH 361/571] talk to amavis with lmtp if detected: closes #4792 --- install/lib/installer_base.lib.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index ee9d1a6d8d..e0bf16c6aa 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -927,17 +927,26 @@ class installer_base { //* mysql-virtual_uids.cf $this->process_postfix_config('mysql-virtual_uids.cf'); + // test if lmtp if available + $configure_lmtp = $this->get_postfix_service('lmtp','unix'); + //* postfix-dkim $filename='tag_as_originating.re'; $full_file_name=$config_dir.'/'.$filename; if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); + if($configure_lmtp) { + $content = preg_replace('/amavis:/', 'lmtp:', $content); + } wf($full_file_name, $content); $filename='tag_as_foreign.re'; $full_file_name=$config_dir.'/'.$filename; if(is_file($full_file_name)) copy($full_file_name, $full_file_name.'~'); $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); + if($configure_lmtp) { + $content = preg_replace('/amavis:/', 'lmtp:', $content); + } wf($full_file_name, $content); //* Changing mode and group of the new created config files. @@ -1423,6 +1432,8 @@ class installer_base { // TODO: chmod and chown on the config file + // test if lmtp if available + $configure_lmtp = $this->get_postfix_service('lmtp','unix'); // Adding the amavisd commands to the postfix configuration // Add array for no error in foreach and maybe future options @@ -1430,7 +1441,8 @@ class installer_base { // Check for amavisd -> pure webserver with postfix for mailing without antispam if ($conf['amavis']['installed']) { - $postconf_commands[] = 'content_filter = amavis:[127.0.0.1]:10024'; + $content_filter_service = ($configure_lmtp) ? 'lmtp' : 'amavis'; + $postconf_commands[] = "content_filter = ${content_filter_service}:[127.0.0.1]:10024"; $postconf_commands[] = 'receive_override_options = no_address_mappings'; } -- GitLab From 5353f1d9d58e3bb651323b0f7f3ccd07df2b8355 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 30 Oct 2019 10:21:26 -0600 Subject: [PATCH 362/571] use unix domain socket for quota-status (#4649) --- install/tpl/debian6_dovecot2.conf.master | 8 ++++---- install/tpl/debian_dovecot2.conf.master | 8 ++++---- install/tpl/debian_postfix.conf.master | 4 ++-- install/tpl/fedora_dovecot2.conf.master | 8 ++++---- install/tpl/fedora_postfix.conf.master | 4 ++-- install/tpl/gentoo_postfix.conf.master | 4 ++-- install/tpl/opensuse_dovecot2.conf.master | 8 ++++---- install/tpl/opensuse_postfix.conf.master | 4 ++-- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 95acb721e0..973ada2f99 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -87,10 +87,10 @@ protocol lmtp { service quota-status { executable = quota-status -p postfix - inet_listener { - # separate multiple addresses with space: - address = 127.0.0.1 - port = 10060 + unix_listener /var/spool/postfix/private/quota-status { + group = postfix + mode = 0660 + user = postfix } client_limit = 1 } diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index dbacf872f5..d4fc7ebd0f 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -84,10 +84,10 @@ protocol lmtp { service quota-status { executable = quota-status -p postfix - inet_listener { - # separate multiple addresses with space: - address = 127.0.0.1 - port = 10060 + unix_listener /var/spool/postfix/private/quota-status { + group = postfix + mode = 0660 + user = postfix } client_limit = 1 } diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 4d03dfd005..95603bac39 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -15,8 +15,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service inet:127.0.0.1:10060 -smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service unix:private/quota-status +smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 08ac94a903..dbef641fdf 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -82,10 +82,10 @@ mail_plugins = $mail_plugins quota service quota-status { executable = quota-status -p postfix - inet_listener { - # separate multiple addresses with space: - address = 127.0.0.1 - port = 10060 + unix_listener /var/spool/postfix/private/quota-status { + group = postfix + mode = 0660 + user = postfix } client_limit = 1 } diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 8bda2b7dcc..f651a02729 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -11,8 +11,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service inet:127.0.0.1:10060 -smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service unix:private/quota-status +smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 79a9dcd63d..2d562c74a9 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -10,8 +10,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service inet:127.0.0.1:10060 -smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service unix:private/quota-status +smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 6e040b9745..a1bdfa1f91 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -81,10 +81,10 @@ mail_plugins = $mail_plugins quota service quota-status { executable = quota-status -p postfix - inet_listener { - # separate multiple addresses with space: - address = 127.0.0.1 - port = 10060 + unix_listener /var/spool/postfix/private/quota-status { + group = postfix + mode = 0660 + user = postfix } client_limit = 1 } diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 6661bffd98..7517043e63 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -13,8 +13,8 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service inet:127.0.0.1:10060 -smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10060 +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination{rbl_list}, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{greylisting}, check_policy_service unix:private/quota-status +smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From e9b92aa62f3f8557d4351f649b702fe3c4cfef4d Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 31 Oct 2019 15:46:25 -0600 Subject: [PATCH 363/571] bugfixes and remove/add master.cf templates to effect changes --- install/dist/lib/debian60.lib.php | 4 +- install/lib/install.lib.php | 25 +++++++--- install/lib/installer_base.lib.php | 79 +++++++++++++++++++++++++++--- 3 files changed, 92 insertions(+), 16 deletions(-) diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index faac52b227..a8e90f189b 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -164,12 +164,12 @@ class installer extends installer_base { //* dovecot-lmtpd if($configure_lmtp) { - $dovecot_protocols .= ' lmtp' + $dovecot_protocols .= ' lmtp'; } //* dovecot-managesieved if(is_file('/usr/lib/dovecot/managesieve')) { - $dovecot_protocols .= ' sieve' + $dovecot_protocols .= ' sieve'; } replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', "protocols = $dovecot_protocols", 1, 0); diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 02ebba2850..ea4e563a6a 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -471,29 +471,38 @@ function rf($file){ } function wf($file, $content){ - mkdirs(dirname($file)); + if(!$ret_val = mkdirs(dirname($file))) return false; if(!$fp = fopen($file, 'wb')){ ilog('WARNING: could not open file '.$file); + // implicitly returned false because the following fwrite and fclose both fail, + // but to be explicit: + $ret_val = false; } - fwrite($fp, $content); - fclose($fp); + fwrite($fp, $content) or $ret_val = false; + fclose($fp) or $ret_val = false; + return $ret_val; } function af($file, $content){ - mkdirs(dirname($file)); + if(!$ret_val = mkdirs(dirname($file))) return false; if(!$fp = fopen($file, 'ab')){ ilog('WARNING: could not open file '.$file); + $ret_val = false; } - fwrite($fp, $content); - fclose($fp); + fwrite($fp, $content) or $ret_val = false; + fclose($fp) or $ret_val = false; + return $ret_val; } function aftsl($file, $content){ + $ret_val = true; if(!$fp = fopen($file, 'ab')){ ilog('WARNING: could not open file '.$file); + $ret_val = false; } - fwrite($fp, $content); - fclose($fp); + fwrite($fp, $content) or $ret_val = false; + fclose($fp) or $ret_val = false; + return $ret_val; } function unix_nl($input){ diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index e0bf16c6aa..5ca16cc674 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -864,7 +864,7 @@ class installer_base { 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"; $postfix_service = @(preg_match($regex, $content))?true:false; @@ -873,6 +873,68 @@ class installer_base { return $postfix_service; } + public function remove_postfix_service( $service, $type ) { + global $conf; + + // nothing to do if the service isn't even defined. + if (! $this->get_postfix_service( $service, $type ) ) { + return true; + } + + $postfix_version = `postconf -d mail_version 2>/dev/null`; + $postfix_version = preg_replace( '/mail_version\s*=\s*(.*)\s*/', '$1', $postfix_version ); + + if ( version_compare( $postfix_version, '2.11', '>=' ) ) { + + exec("postconf -X -M $service/$type 2> /dev/null", $out, $ret); + + # reduce 3 or more newlines to 2 + $content = rf($conf['postfix']['config_dir'].'/master.cf'); + $content = preg_replace( '/(\r?\n){3,}/', '$1$1', $content ); + wf( $conf['postfix']['config_dir'].'/master.cf', $content ); + + } else { //* fallback - Postfix < 2.11 + + if ( ! $cf = fopen( $conf['postfix']['config_dir'].'/master.cf', 'r' ) ) { + return false; + } + + $out = ""; + $reading_service = false; + + while ( !feof( $cf ) ) { + $line = fgets( $cf ); + + if ( $reading_service ) { + # regex matches a new service or "empty" (whitespace) line + if ( preg_match( '/^([^\s#]+.*|\s*)$/', $line ) && + ! preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) { + $out .= $line; + $reading_service = false; + } + + # $skipped_lines .= $line; + + # regex matches definition matching service to be removed + } else if ( preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) { + + $reading_service = true; + # $skipped_lines .= $line; + + } else { + $out .= $line; + } + } + fclose( $cf ); + + $out = preg_replace( '/(\r?\n){3,}/', '$1$1', $out ); # reduce 3 or more newlines to 2 + + return wf( $conf['postfix']['config_dir'].'/master.cf', $out ); + } + + return true; + } + public function configure_postfix($options = '') { global $conf,$autoinstall; $cf = $conf['postfix']; @@ -1376,12 +1438,12 @@ class installer_base { //* dovecot-lmtpd if($configure_lmtp) { - $dovecot_protocols .= ' lmtp' + $dovecot_protocols .= ' lmtp'; } //* dovecot-managesieved if(is_file('/usr/lib/dovecot/managesieve')) { - $dovecot_protocols .= ' sieve' + $dovecot_protocols .= ' sieve'; } replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', "protocols = $dovecot_protocols", 1, 0); @@ -1458,11 +1520,16 @@ class installer_base { $config_dir = $conf['postfix']['config_dir']; // Adding amavis-services to the master.cf file if the service does not already exists - $add_amavis = !$this->get_postfix_service('amavis','unix'); - $add_amavis_10025 = !$this->get_postfix_service('127.0.0.1:10025','inet'); - $add_amavis_10027 = !$this->get_postfix_service('127.0.0.1:10027','inet'); +// $add_amavis = !$this->get_postfix_service('amavis','unix'); +// $add_amavis_10025 = !$this->get_postfix_service('127.0.0.1:10025','inet'); +// $add_amavis_10027 = !$this->get_postfix_service('127.0.0.1:10027','inet'); //*TODO: check templates against existing postfix-services to make sure we use the template + // Or just remove the old service definitions and add them again? + $add_amavis = $this->remove_postfix_service('amavis','unix'); + $add_amavis_10025 = $this->remove_postfix_service('127.0.0.1:10025','inet'); + $add_amavis_10027 = $this->remove_postfix_service('127.0.0.1:10027','inet'); + if ($add_amavis || $add_amavis_10025 || $add_amavis_10027) { //* backup master.cf if(is_file($config_dir.'/master.cf')) copy($config_dir.'/master.cf', $config_dir.'/master.cf~'); -- GitLab From fa8183967b38dd5e751db23157c5126fe1e8c178 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 11 Nov 2019 17:30:17 -0700 Subject: [PATCH 364/571] remove quota-status policy server from smtpd_end_of_data_restrictions: closes #4649 --- install/tpl/debian_postfix.conf.master | 1 - install/tpl/fedora_postfix.conf.master | 1 - install/tpl/gentoo_postfix.conf.master | 1 - install/tpl/opensuse_postfix.conf.master | 1 - 4 files changed, 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 95603bac39..0df3ae38e8 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -16,7 +16,6 @@ smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status -smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index f651a02729..3e5646a036 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -12,7 +12,6 @@ smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status -smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 2d562c74a9..da482fc561 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -11,7 +11,6 @@ smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status -smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 7517043e63..47f582af0c 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -14,7 +14,6 @@ smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status -smtpd_end_of_data_restrictions = check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From d9a2d35574f20d5403507f50f655ac98b749787e Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 13 Nov 2019 17:20:33 -0700 Subject: [PATCH 365/571] read ISPConfig's sieve script via sieve_after: closes #3395 --- install/tpl/debian6_dovecot.conf.master | 6 +++ install/tpl/debian6_dovecot2.conf.master | 6 +++ install/tpl/debian_dovecot.conf.master | 7 +++- install/tpl/debian_dovecot2.conf.master | 6 +++ install/tpl/fedora_dovecot.conf.master | 9 ++++- install/tpl/fedora_dovecot2.conf.master | 7 ++++ install/tpl/opensuse_dovecot.conf.master | 9 ++++- install/tpl/opensuse_dovecot2.conf.master | 7 ++++ server/conf/sieve_filter.master | 5 ++- server/conf/sieve_filter_1.2.master | 3 ++ .../maildeliver_plugin.inc.php | 37 ++++++++++++------- 11 files changed, 83 insertions(+), 19 deletions(-) diff --git a/install/tpl/debian6_dovecot.conf.master b/install/tpl/debian6_dovecot.conf.master index 4286689cd4..a112712690 100644 --- a/install/tpl/debian6_dovecot.conf.master +++ b/install/tpl/debian6_dovecot.conf.master @@ -57,7 +57,13 @@ plugin { # the maildir quota does not need to be set. # You do not need: quota = maildir + # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 973ada2f99..c82ac59a38 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -24,7 +24,13 @@ userdb { } plugin { quota = dict:user::file:/var/vmail/%d/%n/.quotausage + + # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 sieve_max_redirects = 25 } service auth { diff --git a/install/tpl/debian_dovecot.conf.master b/install/tpl/debian_dovecot.conf.master index 8d6022502f..f91959a1f5 100644 --- a/install/tpl/debian_dovecot.conf.master +++ b/install/tpl/debian_dovecot.conf.master @@ -682,7 +682,7 @@ protocol managesieve { # the sieve storage directory. This must match the SIEVE setting used by # deliver (refer to http://wiki.dovecot.org/LDA/Sieve#location for more # info). Variable substitution with % is recognized. - sieve=~/.dovecot.sieve + sieve=~/.sieve # This specifies the path to the directory where the uploaded scripts must # be stored. In terms of '%' variable substitution it is identical to @@ -1144,4 +1144,9 @@ plugin { # they're moved to a 3rd namespace. The mails won't be counted in quota, # and they're not deleted automatically (use a cronjob or something). #lazy_expunge = .EXPUNGED/ .DELETED/ .DELETED/.EXPUNGED/ + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index d4fc7ebd0f..25c586118c 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -23,7 +23,13 @@ userdb { } plugin { quota = dict:user::file:/var/vmail/%d/%n/.quotausage + + # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 sieve_max_redirects = 25 } service auth { diff --git a/install/tpl/fedora_dovecot.conf.master b/install/tpl/fedora_dovecot.conf.master index cfac856414..e687954986 100644 --- a/install/tpl/fedora_dovecot.conf.master +++ b/install/tpl/fedora_dovecot.conf.master @@ -1300,11 +1300,16 @@ plugin { # # Location of the active script. When ManageSieve is used this is actually # a symlink pointing to the active script in the sieve storage directory. - #sieve=~/.dovecot.sieve - # + sieve=~/.sieve + # The path to the directory where the personal Sieve scripts are stored. For # ManageSieve this is where the uploaded scripts are stored. sieve_dir=~/sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } # Config files can also be included. deliver doesn't support them currently. diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index dbef641fdf..9fd5ed92c2 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -21,7 +21,14 @@ userdb { } plugin { quota = dict:user::file:/var/vmail/%d/%n/.quotausage + + # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } service auth { unix_listener /var/spool/postfix/private/auth { diff --git a/install/tpl/opensuse_dovecot.conf.master b/install/tpl/opensuse_dovecot.conf.master index 9d345fa911..1eacf4c3a3 100644 --- a/install/tpl/opensuse_dovecot.conf.master +++ b/install/tpl/opensuse_dovecot.conf.master @@ -1274,11 +1274,16 @@ plugin { # # Location of the active script. When ManageSieve is used this is actually # a symlink pointing to the active script in the sieve storage directory. - sieve=~/.dovecot.sieve - # + sieve=~/.sieve + # The path to the directory where the personal Sieve scripts are stored. For # ManageSieve this is where the uploaded scripts are stored. sieve_dir=~/sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } # Config files can also be included. deliver doesn't support them currently. diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index a1bdfa1f91..94e658aecc 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -21,7 +21,14 @@ userdb { } plugin { quota = dict:user::file:/var/vmail/%d/%n/.quotausage + + # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve + + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_max_script_size = 2M + sieve_max_actions = 100 + sieve_max_redirects = 25 } service auth { unix_listener /var/spool/postfix/private/auth { diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index 13c08dd56b..f72cd11d1f 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -1,3 +1,6 @@ +# This sieve script is generated by ISPConfig, any changes made will be overwritten. +# You can create and activate a per-user sieve script (manually or via managesieve), +# which will execute before this. require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="cc"> @@ -36,4 +39,4 @@ vacation :days 1 # :addresses ["test@test.int", "till@test.int"] <tmpl_var name='addresses'> "<tmpl_var name='autoresponder_text'>"; -</tmpl_if> \ No newline at end of file +</tmpl_if> diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index 5244693102..edd4060b9f 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -1,3 +1,6 @@ +# This sieve script is generated by ISPConfig, any changes made will be overwritten. +# You can create and activate a per-user sieve script (manually or via managesieve), +# which will execute before this. require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="move_junk" op="==" value="y"> diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 2c16601f50..9c9939655c 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -98,9 +98,16 @@ class maildeliver_plugin { $app->log("Mailfilter config has been changed", LOGLEVEL_DEBUG); $sieve_file = $data["new"]["maildir"].'/.sieve'; - $sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve'; - if(is_file($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); + $sieve_file_svbin = $data["new"]["maildir"].'/.sieve.svbin'; + $old_sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve'; + $sieve_file_isp = $data["new"]["maildir"].'/.ispconfig.sieve'; + $sieve_file_isp_svbin = $data["new"]["maildir"].'/.ispconfig.svbin'; + if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); + // cleanup .sieve file if it is now a broken link + if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); + if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin) or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN); if(is_file($sieve_file_isp)) unlink($sieve_file_isp) or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin) or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN); $app->load('tpl'); //* Select sieve filter file for dovecot version @@ -221,16 +228,13 @@ class maildeliver_plugin { if ( is_file($sieve_file_isp) ) { $app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false); $app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false); + + $app->system->exec_safe("sievec ?", "$sieve_file_isp"); + if ( is_file($sieve_file_isp_svbin) ) { + $app->system->chown($sieve_file_isp_svbin,$mail_config['mailuser_name'],false); + $app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false); + } } - chdir($data["new"]["maildir"]); - //* create symlink to activate sieve script - symlink("sieve/ispconfig.sieve", ".sieve") or $app->log("Unable to create symlink to active sieve filter", LOGLEVEL_WARN); - if (is_link(".sieve")) { - $app->system->chown(".sieve",$mail_config['mailuser_name'],true); - $app->system->chgrp(".sieve",$mail_config['mailuser_group'],true); - } - $app->system->chown($sieve_file,$mail_config['mailuser_name'],true); - $app->system->chgrp($sieve_file,$mail_config['mailuser_group'],true); unset($tpl); @@ -241,9 +245,16 @@ class maildeliver_plugin { global $app, $conf; $sieve_file = $data["old"]["maildir"].'/.sieve'; - $sieve_file_isp = $data["old"]["maildir"].'/sieve/ispconfig.sieve'; - if(is_file($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); + $sieve_file_svbin = $data["old"]["maildir"].'/.sieve.svbin'; + $old_sieve_file_isp = $data["old"]["maildir"].'/sieve/ispconfig.sieve'; + $sieve_file_isp = $data["old"]["maildir"].'/.ispconfig.sieve'; + $sieve_file_isp_svbin = $data["old"]["maildir"].'/.ispconfig.svbin'; + if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); + // cleanup .sieve file if it is now a broken link + if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); + if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin) or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN); if(is_file($sieve_file_isp)) unlink($sieve_file_isp) or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin) or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN); } -- GitLab From 8735bd886b43ec75e621789f513a663d0ea38ec8 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 13 Nov 2019 17:24:51 -0700 Subject: [PATCH 366/571] update to current setting names --- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 0df3ae38e8..c50d826e01 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -26,7 +26,7 @@ relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps smtpd_helo_required = yes -smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo +smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 3e5646a036..1c8326de2a 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -22,7 +22,7 @@ relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps smtpd_helo_required = yes -smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo +smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index da482fc561..51f30d914e 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -21,7 +21,7 @@ relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps smtpd_helo_required = yes -smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, check_helo_access regexp:{config_dir}/blacklist_helo +smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 47f582af0c..a1203013ef 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -24,7 +24,7 @@ relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps smtpd_helo_required = yes -smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo +smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf smtpd_client_message_rate_limit = 100 -- GitLab From 75cd4fecbf02ad68deb8554f330189082979c1f2 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 13 Nov 2019 17:33:25 -0700 Subject: [PATCH 367/571] rbl blocking should happen after whitelist lookups for whitelisting to override rbls --- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index c50d826e01..1c739a5c7e 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -15,7 +15,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 1c8326de2a..d504c6ed56 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -11,7 +11,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 51f30d914e..cad2b97c3c 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -10,7 +10,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index a1203013ef..c59d46fa97 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -13,7 +13,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting 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}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From 1bce29fdbf7fe4a72e7258e184058fb8427ddc53 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 13 Nov 2019 17:59:56 -0700 Subject: [PATCH 368/571] older dovecot requires namespace separator --- install/tpl/debian6_dovecot2.conf.master | 1 + install/tpl/fedora_dovecot2.conf.master | 1 + install/tpl/opensuse_dovecot2.conf.master | 1 + 3 files changed, 3 insertions(+) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index c82ac59a38..6f32e6d5a2 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -109,6 +109,7 @@ plugin { imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes + separator = . mailbox Drafts { special_use = \Drafts } diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 9fd5ed92c2..ee80f8c0d9 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -105,6 +105,7 @@ plugin { imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes + separator = . mailbox Drafts { special_use = \Drafts } diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 94e658aecc..070590181b 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -104,6 +104,7 @@ plugin { imap_capability=+SEPCIAL-USE XLIST namespace inbox { inbox = yes + separator = . mailbox Drafts { special_use = \Drafts } -- GitLab From 1e9c3880bb2908f82ba2b013245f132379ff9977 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 19 Nov 2019 17:27:49 -0700 Subject: [PATCH 369/571] postfix_server_plugin checks for dovecot lmtp and sieve (#3395 and #4792) --- .../postfix_server_plugin.inc.php | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index ad48e3dee8..80db1c102a 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -158,24 +158,35 @@ class postfix_server_plugin { } if($app->system->is_installed('dovecot')) { + $virtual_transport = 'dovecot'; + $configure_lmtp = false; + $dovecot_protocols = 'imap pop3'; + + //* dovecot-lmtpd + if( ($configure_lmtp = is_file('/usr/lib/dovecot/lmtp')) || + ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') ) + { + $virtual_transport = 'lmtp:unix:private/dovecot-lmtp'; + $dovecot_protocols .= ' lmtp'; + } + + //* dovecot-managesieved + if(is_file('/usr/lib/dovecot/managesieve')) { + $dovecot_protocols .= ' sieve'; + } + $out = null; exec("postconf -n virtual_transport", $out); - if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') { - // If dovecot switch to lmtp - if($out[0] != "virtual_transport = lmtp:unix:private/dovecot-lmtp") { - exec("postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'"); - exec('postfix reload'); - $app->system->replaceLine("/etc/dovecot/dovecot.conf", "protocols = imap pop3", "protocols = imap pop3 lmtp"); - exec($conf['init_scripts'] . '/' . 'dovecot restart'); - } - } else { - // If dovecot switch to dovecot - if($out[0] != "virtual_transport = dovecot") { - exec("postconf -e 'virtual_transport = dovecot'"); - exec('postfix reload'); - $app->system->replaceLine("/etc/dovecot/dovecot.conf", "protocols = imap pop3 lmtp", "protocols = imap pop3"); - exec($conf['init_scripts'] . '/' . 'dovecot restart'); - } + if($out[0] != "virtual_transport = $virtual_transport") { + exec("postconf -e 'virtual_transport = $virtual_transport'"); + exec('postfix reload'); + } + + $out = null; + exec("grep '^protocols\s' /etc/dovecot/dovecot.conf", $out); + if($out[0] != "protocols = $dovecot_protocols") { + $app->system->replaceLine("/etc/dovecot/dovecot.conf", 'REGEX:/^protocols\s=/', "protocols = $dovecot_protocols"); + exec($conf['init_scripts'] . '/' . 'dovecot restart'); } } @@ -222,7 +233,7 @@ class postfix_server_plugin { exec("postconf -X 'milter_default_action'"); exec("postconf -e 'receive_override_options = no_address_mappings'"); - exec("postconf -e 'content_filter = amavis:[127.0.0.1]:10024'"); + exec("postconf -e 'content_filter = " . ($configure_lmtp ? "lmtp" : "amavis" ) . ":[127.0.0.1]:10024'"); exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); } -- GitLab From 6adf9d2181b6fdb2ca2362124bcce88222048d4c Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 2 Jun 2020 14:46:50 -0600 Subject: [PATCH 370/571] update disablelmtp field --- interface/web/mail/mail_user_edit.php | 7 ++++--- interface/web/tools/import_vpopmail.php | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 7255c6dbac..c7f36a89e0 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -313,8 +313,9 @@ class page_action extends tform_actions { $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = ($this->dataRecord["disablesmtp"])?'y':'n'; - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ? WHERE mailuser_id = ?"; $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); } } @@ -365,8 +366,8 @@ class page_action extends tform_actions { $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = (isset($this->dataRecord["disablesmtp"]) && $this->dataRecord["disablesmtp"])?'y':'n'; - $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ? WHERE mailuser_id = ?"; - $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); + $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; + $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); } //** If the email address has been changed, change it in all aliases too diff --git a/interface/web/tools/import_vpopmail.php b/interface/web/tools/import_vpopmail.php index 3e732d3740..7ae4efb58b 100644 --- a/interface/web/tools/import_vpopmail.php +++ b/interface/web/tools/import_vpopmail.php @@ -242,6 +242,7 @@ function start_import() { "disablesmtp" => 'n', "disablesieve" => 'n', "disablelda" => 'n', + "disablelmtp" => 'n', "disabledoveadm" => 'n' ); $app->db->datalogInsert('mail_user', $sql, 'mailuser_id'); -- GitLab From 64a58f233198456564c8b1e067bb582d901f4034 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 11 Jun 2020 12:06:46 -0600 Subject: [PATCH 371/571] add mail_user.disableindexer-worker column. fixes #3108 --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 1 + 2 files changed, 4 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 91db879d0c..aebc01dcb8 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -29,3 +29,6 @@ UPDATE `mail_user` set `disabledoveadm` = 'n'; -- add disablequota-status for quota-status policy daemon ALTER TABLE `mail_user` ADD `disablequota-status` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disabledoveadm`; + +-- add disableindexer-worker for solr search +ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disablequota-status`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index cc266ff235..9d2fb74134 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1063,6 +1063,7 @@ CREATE TABLE `mail_user` ( `disablelmtp` enum('n','y') NOT NULL default 'n', `disabledoveadm` enum('n','y') NOT NULL default 'n', `disablequota-status` enum('n','y') NOT NULL default 'n', + `disableindexer-worker` enum('n','y') NOT NULL default 'n', `last_quota_notification` date NULL default NULL, `backup_interval` VARCHAR( 255 ) NOT NULL default 'none', `backup_copies` INT NOT NULL DEFAULT '1', -- GitLab From d38cca15c31ad61f20c96d2d423881b41853f41e Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Fri, 12 Jun 2020 20:06:35 +0200 Subject: [PATCH 372/571] Rename no_policy to inherit_policy (#4277) --- interface/web/mail/lib/lang/ar_mail_user.lng | 2 +- interface/web/mail/lib/lang/bg_mail_user.lng | 2 +- interface/web/mail/lib/lang/br_mail_user.lng | 2 +- interface/web/mail/lib/lang/ca_mail_user.lng | 2 +- interface/web/mail/lib/lang/cz_mail_user.lng | 2 +- interface/web/mail/lib/lang/de_mail_user.lng | 2 +- interface/web/mail/lib/lang/dk_mail_user.lng | 2 +- interface/web/mail/lib/lang/el_mail_user.lng | 2 +- interface/web/mail/lib/lang/en_mail_user.lng | 2 +- interface/web/mail/lib/lang/es_mail_user.lng | 2 +- interface/web/mail/lib/lang/fi_mail_user.lng | 2 +- interface/web/mail/lib/lang/fr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hu_mail_user.lng | 2 +- interface/web/mail/lib/lang/id_mail_user.lng | 2 +- interface/web/mail/lib/lang/it_mail_user.lng | 2 +- interface/web/mail/lib/lang/ja_mail_user.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pt_mail_user.lng | 2 +- interface/web/mail/lib/lang/ro_mail_user.lng | 2 +- interface/web/mail/lib/lang/ru_mail_user.lng | 2 +- interface/web/mail/lib/lang/se_mail_user.lng | 2 +- interface/web/mail/lib/lang/sk_mail_user.lng | 2 +- interface/web/mail/lib/lang/tr_mail_user.lng | 2 +- interface/web/mail/mail_user_edit.php | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index c68becf335..6aed9d1d1e 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 000377077b..a5ac34c577 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разреши получаване'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Разреши доÑтъп'; $wb['policy_txt'] = 'Спам филтър'; -$wb['no_policy'] = '- забранен -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'ДоÑтигнат е макÑималниÑÑ‚ брой на пощенÑките кутии за твоÑÑ‚ профил.'; $wb['limit_mailquota_txt'] = 'МакÑималното отделено мÑÑто за твоÑта ÐºÑƒÑ‚Ð¸Ñ Ðµ доÑтигнато. МакÑималното позволено мÑÑто в МБ е '; $wb['disableimap_txt'] = 'Забрани IMAP'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index ed6e35ef61..c5200273cc 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Habilitar recebimento'; $wb['greylisting_txt'] = 'Habilitar greylist'; $wb['access_txt'] = 'Habilitar acesso'; $wb['policy_txt'] = 'Filtros anti-spam'; -$wb['no_policy'] = '-desabilitado-'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.'; $wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponÃvel em MB é'; $wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 096572b5e0..ffabcf2395 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l\'accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['no_policy'] = '- inactif -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boites courriel pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boites courriel est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index c697e4cffc..909a7b2b5b 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -22,7 +22,7 @@ $wb['maildir_txt'] = 'E-mailový adresář'; $wb['postfix_txt'] = 'Povolit pÅ™Ãjem'; $wb['access_txt'] = 'Povolit pÅ™Ãstup'; $wb['policy_txt'] = 'Spamový filtr'; -$wb['no_policy'] = '- nepovoleno -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Byl dosažen maximálnà poÄet mailboxů pro Váš úÄet.'; $wb['limit_mailquota_txt'] = 'Dosažen maximálnà prostor pro mailboxy. Max. dostupné mÃsto v MB je'; $wb['disableimap_txt'] = 'Zakázat IMAP'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index b60a756b09..0eb5a3e9ad 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktiviere Empfang'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; $wb['access_txt'] = 'Aktiviere Zugriff'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- nicht aktiviert -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mailkonten für Ihr Konto wurde erreicht.'; $wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist'; $wb['disablesmtp_txt'] = 'SMTP (Mailversand) deaktivieren'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index fb846da199..b8a641651b 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -24,7 +24,7 @@ $wb['maildir_txt'] = 'Mailmappe'; $wb['postfix_txt'] = 'Aktiver modtagelse'; $wb['access_txt'] = 'Aktiver adgang'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- ikke aktiveret -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Max. antal af mailbokse for din konto er nÃ¥et.'; $wb['limit_mailquota_txt'] = 'Max. plads for postkasser er nÃ¥et. Max. tilgængelig plads i MB er'; $wb['disablesmtp_txt'] = 'Deaktiver SMTP (afsending)'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index a097470ad7..381ef2f9ad 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'ΕνεÏγοποίηση Λήψης'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'ΕνεÏγοποίηση Î Ïόσβασης'; $wb['policy_txt'] = 'ΦίλτÏο Spam'; -$wb['no_policy'] = '- ανενεÏγή -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των θυÏίδων για τον λογαÏιασμό σας.'; $wb['limit_mailquota_txt'] = 'Έχετε φτάσει στο μÎγεστο χώÏο της θυÏίδα σας.Ο μÎγιστος διαθÎσιμος χώÏος σε MB είναι'; $wb['disableimap_txt'] = 'ΑπενεÏγοποίηση IMAP'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 4174081b53..f70140bd4f 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -27,7 +27,7 @@ $wb["postfix_txt"] = 'Enable receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb["access_txt"] = 'Enable access'; $wb["policy_txt"] = 'Spamfilter'; -$wb["no_policy"] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb["limit_mailbox_txt"] = 'The max. number of mailboxes for your account is reached.'; $wb["limit_mailquota_txt"] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb["disablesmtp_txt"] = 'Disable SMTP (sending)'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 93c2095e1c..cce382fde0 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -44,7 +44,7 @@ $wb['name_optional_txt'] = '(Opcional)'; $wb['name_txt'] = 'Nombre'; $wb['no_backup_txt'] = 'Sin copia de seguridad'; $wb['no_domain_perm'] = 'Usted no tiene permisos para gestionar este dominio.'; -$wb['no_policy'] = '- deshabilitado -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['now_txt'] = 'Ahora'; $wb['password_match_txt'] = 'Las contraseñas coinciden.'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 8f94f0158f..2ede867053 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -18,7 +18,7 @@ $wb['postfix_txt'] = 'Salli vastaanotto'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Salli yhteys'; $wb['policy_txt'] = 'Roskapostisuodatin'; -$wb['no_policy'] = '- ei käytössä -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Tilisi sallittu postilaatikoiden määrä on ylitetty.'; $wb['limit_mailquota_txt'] = 'Tilisi sallittu postilaatikoiden koko on ylitetty. Vapaa tila megatavuina on'; $wb['disableimap_txt'] = 'Estä IMAP'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index bb54c2e0c0..87a1bb9570 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l’accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['no_policy'] = '- inactif -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boîtes aux lettres pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boîtes aux lettres est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 8dcfe7a6fa..4e48e3a7d7 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 43720fbd84..8f7f826c80 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'BejövÅ‘ engedélyezés'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Hozzáférés engelyezés'; $wb['policy_txt'] = 'Spam szűrÅ‘'; -$wb['no_policy'] = '- nem engelyézett -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Nincs több mailbox lehetÅ‘ség.'; $wb['limit_mailquota_txt'] = 'Mailbox tárhely elfogyott.'; $wb['disableimap_txt'] = 'IMAP Tiltás'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index ba17e373c7..01bd8f59f4 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -24,7 +24,7 @@ $wb['postfix_txt'] = 'Dapat Menerima'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Dapat Mengakses'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- tidak diaktifkan -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Jumlah maks mailbox untuk akun Anda sudah tercapai.'; $wb['limit_mailquota_txt'] = 'Ruang maks untuk mailbox sudah tercapai. Ruang maks yang tersedia dalam MB adalah'; $wb['disableimap_txt'] = 'Nonaktifkan IMAP'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index e6820a0329..779040835a 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -19,7 +19,7 @@ $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Abilita ricezione'; $wb['access_txt'] = 'Abilita indirizzo'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- non abilitato -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Hai raggiungo il numero massimo di caselle per il tuo account.'; $wb['limit_mailquota_txt'] = 'Hai raggiunto lo spazio massimo per le tue caselle di posta. Lo spazio massimo in MB è di'; $wb['disableimap_txt'] = 'Disabilita IMAP'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 3cd498f270..17e02481a8 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'メールをå—ä¿¡ã™ã‚‹'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'アクセスを許å¯ã™ã‚‹'; $wb['policy_txt'] = 'スパムフィルター'; -$wb['no_policy'] = '- 利用ã—ãªã„ -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'メールボックスãŒæœ€å¤§æ•°ã«é”ã—ãŸç‚ºã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; $wb['limit_mailquota_txt'] = 'メールボックスãŒä¸€æ¯ã§ã™ã€‚ 上é™ï¼ˆMB):'; $wb['disableimap_txt'] = 'IMAP を無効ã«ã™ã‚‹'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 65d89a32af..620725b3da 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Ontvangen inschakelen'; $wb['greylisting_txt'] = 'Greylisting inschakelen'; $wb['access_txt'] = 'Toegang inschakelen'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- niet ingeschakeld -'; +$wb['inherit_policy'] = '- Gebruik domein instelling -'; $wb['limit_mailbox_txt'] = 'Het max. aantal mailboxen voor uw account is bereikt.'; $wb['limit_mailquota_txt'] = 'De max. ruimte voor uw mailboxen is bereikt. De max. beschikbare ruimte in MB is'; $wb['disableimap_txt'] = 'Uitschakelen IMAP'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index d090fadb2a..586b823b54 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Zezwól na odbiór poczty'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Możliwy dostÄ™p'; $wb['policy_txt'] = 'Filtr spamu'; -$wb['no_policy'] = '- brak polityki -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Maksymalna ilość skrzynek pocztowych dla Twojego konta zostaÅ‚a przekroczona.'; $wb['limit_mailquota_txt'] = 'Maksymalna pojemność skrzynki pocztowej zostaÅ‚a przekroczona. Maksymalne dostÄ™pne miejsce w MB to: '; $wb['disableimap_txt'] = 'WyÅ‚Ä…cz IMAP'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index aa0e9a0a05..464a7d2de0 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Permitir Recepção'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Permitir Acesso'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- desactivado -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'O número máximo de caixas de correio para a conta foi atingido.'; $wb['limit_mailquota_txt'] = 'O espaço em disco disponÃvel para criação de contas foi atingido.'; $wb['disableimap_txt'] = 'Desactivar IMAP'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 3f0f8ec479..4143064581 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Numarul maxim de MAILBOX pe contul dumneavoastra a fost atins'; $wb['limit_mailquota_txt'] = 'Spatiul maxim pentru MAILBOX a fost atins.Acesta este '; $wb['disableimap_txt'] = 'Blocheaza IMAP'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 526c976ed5..1bc76633c0 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разрешить получение'; $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting)'; $wb['access_txt'] = 'Включить доÑтуп'; $wb['policy_txt'] = 'Спам-фильтр'; -$wb['no_policy'] = '- не включены -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'ЧиÑло почтовых Ñщиков превышено.'; $wb['limit_mailquota_txt'] = 'МеÑто под почтовые Ñщики превышено. МакÑимально доÑтупно MB'; $wb['password_strength_txt'] = 'СтойкоÑÑ‚ÑŒ паролÑ'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index a427c50606..7ac9fc62b5 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktivera mottagning'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Aktivera Ã¥tkomst'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- ej aktiverat -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Avaktivera IMAP'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 92c6dea578..c936936db2 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'PovoliÅ¥ prÃjem'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'PovoliÅ¥ PrÃstup'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- nepovolená -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Max. poÄet poÅ¡tových schránok pre váš úÄet je dosiahnutý.'; $wb['limit_mailquota_txt'] = 'Maximálny priestor pre poÅ¡tové schránky je dosiahnutý. Max. dostupné miesto v MB je'; $wb['disableimap_txt'] = 'DeaktivovaÅ¥ IMAP'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 99e9860396..4b7f493987 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Alım Etkin'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; $wb['access_txt'] = 'EriÅŸim Etkin'; $wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; -$wb['no_policy'] = '- devre dışı -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta kutusu sayısına ulaÅŸtınız.'; $wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)'; diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index d291367d11..00c70b021f 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -99,7 +99,7 @@ class page_action extends tform_actions { if (isset($_POST['policy'])) $tmp_user['policy_id'] = intval($_POST['policy']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r') . " ORDER BY policy_name"; $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->lng("no_policy")."</option>"; + $policy_select = "<option value='0'>".$app->tform->lng("inherit_policy")."</option>"; if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; -- GitLab From 28781ccfee0b8f7c02547c4c87b668f3a1e7b4a8 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 13 Jun 2020 02:19:55 +0200 Subject: [PATCH 373/571] Add a direct domain add button (4304) --- interface/web/client/lib/lang/ar.lng | 1 + interface/web/client/lib/lang/bg.lng | 1 + interface/web/client/lib/lang/br.lng | 1 + interface/web/client/lib/lang/ca.lng | 1 + interface/web/client/lib/lang/cz.lng | 1 + interface/web/client/lib/lang/de.lng | 1 + interface/web/client/lib/lang/dk.lng | 1 + interface/web/client/lib/lang/el.lng | 1 + interface/web/client/lib/lang/en.lng | 3 ++- interface/web/client/lib/lang/es.lng | 3 ++- interface/web/client/lib/lang/fi.lng | 1 + interface/web/client/lib/lang/fr.lng | 1 + interface/web/client/lib/lang/hr.lng | 1 + interface/web/client/lib/lang/hu.lng | 1 + interface/web/client/lib/lang/id.lng | 1 + interface/web/client/lib/lang/it.lng | 1 + interface/web/client/lib/lang/ja.lng | 1 + interface/web/client/lib/lang/nl.lng | 1 + interface/web/client/lib/lang/nl_domain_list.lng | 2 +- interface/web/client/lib/lang/pl.lng | 1 + interface/web/client/lib/lang/pt.lng | 1 + interface/web/client/lib/lang/ro.lng | 1 + interface/web/client/lib/lang/ru.lng | 1 + interface/web/client/lib/lang/se.lng | 1 + interface/web/client/lib/lang/sk.lng | 1 + interface/web/client/lib/lang/tr.lng | 1 + interface/web/client/lib/module.conf.php | 4 ++++ 27 files changed, 32 insertions(+), 3 deletions(-) diff --git a/interface/web/client/lib/lang/ar.lng b/interface/web/client/lib/lang/ar.lng index 245991ff9d..f129f4273f 100644 --- a/interface/web/client/lib/lang/ar.lng +++ b/interface/web/client/lib/lang/ar.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/bg.lng b/interface/web/client/lib/lang/bg.lng index c18e2e8fbd..e23521e598 100644 --- a/interface/web/client/lib/lang/bg.lng +++ b/interface/web/client/lib/lang/bg.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/br.lng b/interface/web/client/lib/lang/br.lng index 538a3e2e85..b65fba3044 100644 --- a/interface/web/client/lib/lang/br.lng +++ b/interface/web/client/lib/lang/br.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Mensagens'; $wb['Send email'] = 'Enviar e-mail'; $wb['Edit Client Circle'] = 'Editar cÃrculo de clientes'; $wb['Domains'] = 'DomÃnios'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'DomÃnio'; $wb['client_txt'] = 'Cliente'; $wb['error_domain_in dnsuse'] = 'Este domÃnio não pode ser removido pois é utilizado em uma zona dns.'; diff --git a/interface/web/client/lib/lang/ca.lng b/interface/web/client/lib/lang/ca.lng index 730bd2de99..c51dd2e839 100644 --- a/interface/web/client/lib/lang/ca.lng +++ b/interface/web/client/lib/lang/ca.lng @@ -14,6 +14,7 @@ $wb['delete_additional_template_txt'] = 'Supprimer un modèle'; $wb['Messaging'] = 'Messagerie'; $wb['Edit Client Circle'] = 'Editer les groupes clients'; $wb['Domains'] = 'Domaines'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domaine'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'Ce domaine ne peut pas être supprimé, il est utilisé par un compte courriel'; diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng index 447810f940..c8c8f50074 100644 --- a/interface/web/client/lib/lang/cz.lng +++ b/interface/web/client/lib/lang/cz.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'OdesÃlánà zpráv'; $wb['Send email'] = 'Odeslat e-mail'; $wb['Edit Client Circle'] = 'Upravit skupinu klientů'; $wb['Domains'] = 'Domény'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Doména'; $wb['client_txt'] = 'Klient'; $wb['error_domain_in mailuse'] = 'Tato doména nelze odstranit, protože je v použÃvána jako poÅ¡tovnà doména'; diff --git a/interface/web/client/lib/lang/de.lng b/interface/web/client/lib/lang/de.lng index 87b85eed71..b55397999a 100644 --- a/interface/web/client/lib/lang/de.lng +++ b/interface/web/client/lib/lang/de.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Benachrichtigungen'; $wb['Send email'] = 'E-Mail versenden'; $wb['Edit Client Circle'] = 'Kundenkreis bearbeiten'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Kunde'; $wb['error_domain_in mailuse'] = 'Diese Domain kann nicht gelöscht werden, weil sie als E-Mail Domain verwendet wird'; diff --git a/interface/web/client/lib/lang/dk.lng b/interface/web/client/lib/lang/dk.lng index 0d498a483c..920b3f8805 100644 --- a/interface/web/client/lib/lang/dk.lng +++ b/interface/web/client/lib/lang/dk.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Meddelelser'; $wb['Send email'] = 'Send E-mail'; $wb['Edit Client Circle'] = 'Rediger Kunde Cirkel'; $wb['Domains'] = 'Domæner'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domæne'; $wb['client_txt'] = 'Kunde'; $wb['error_domain_in mailuse'] = 'Dette domæne kan ikke slettes, da det er i brug som mail-domæne'; diff --git a/interface/web/client/lib/lang/el.lng b/interface/web/client/lib/lang/el.lng index 8c7463d61c..992bfdcd1c 100644 --- a/interface/web/client/lib/lang/el.lng +++ b/interface/web/client/lib/lang/el.lng @@ -15,6 +15,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng index 743516c96c..a2004196e2 100644 --- a/interface/web/client/lib/lang/en.lng +++ b/interface/web/client/lib/lang/en.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in dnsuse'] = 'This domain cannot be deleted, because it is in use as dns zone'; @@ -27,4 +28,4 @@ $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<br>'; $wb['Email-Templates'] = 'Email-Templates'; -?> \ No newline at end of file +?> diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng index 9b8b2a3edb..233b58b7ca 100644 --- a/interface/web/client/lib/lang/es.lng +++ b/interface/web/client/lib/lang/es.lng @@ -25,5 +25,6 @@ $wb['Messaging'] = 'MensajerÃa'; $wb['Resellers'] = 'Revendedores'; $wb['Send email'] = 'Enviar correo'; $wb['Templates'] = 'Plantillas'; -$wb['Email-Templates'] = 'Email-Templates'; +$wb['Add Domain'] = 'Add Domain'; +$wb['domain_txt'] = '] = 'Email-Templates'; ?> diff --git a/interface/web/client/lib/lang/fi.lng b/interface/web/client/lib/lang/fi.lng index 52dba3949f..812ff1860f 100644 --- a/interface/web/client/lib/lang/fi.lng +++ b/interface/web/client/lib/lang/fi.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/fr.lng b/interface/web/client/lib/lang/fr.lng index 4538bfb0db..d4efa24b7a 100644 --- a/interface/web/client/lib/lang/fr.lng +++ b/interface/web/client/lib/lang/fr.lng @@ -14,6 +14,7 @@ $wb['delete_additional_template_txt'] = 'Supprimer un modèle'; $wb['Messaging'] = 'Messagerie'; $wb['Edit Client Circle'] = 'Modifier les groupes clients'; $wb['Domains'] = 'Domaines'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domaine'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'Ce domaine ne peut pas être supprimé, il est utilisé par un compte e-mail'; diff --git a/interface/web/client/lib/lang/hr.lng b/interface/web/client/lib/lang/hr.lng index 48c78e2bf1..a9e293840c 100644 --- a/interface/web/client/lib/lang/hr.lng +++ b/interface/web/client/lib/lang/hr.lng @@ -16,6 +16,7 @@ $wb['Messaging'] = 'Slanje poruka'; $wb['Send email'] = 'PoÅ¡alji email'; $wb['Edit Client Circle'] = 'Promijeni krug klijenata'; $wb['Domains'] = 'Domene'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domena'; $wb['client_txt'] = 'Klijent'; $wb['error_domain_in mailuse'] = 'Ova domena ne može biti obrisana jer se koristi kao mail domena'; diff --git a/interface/web/client/lib/lang/hu.lng b/interface/web/client/lib/lang/hu.lng index 6b988dcee2..5e67398550 100644 --- a/interface/web/client/lib/lang/hu.lng +++ b/interface/web/client/lib/lang/hu.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/id.lng b/interface/web/client/lib/lang/id.lng index a393cb7747..6fe64545f4 100644 --- a/interface/web/client/lib/lang/id.lng +++ b/interface/web/client/lib/lang/id.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/it.lng b/interface/web/client/lib/lang/it.lng index ff740790b0..257dca805d 100644 --- a/interface/web/client/lib/lang/it.lng +++ b/interface/web/client/lib/lang/it.lng @@ -15,6 +15,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Dominio'; $wb['client_txt'] = 'Cliente'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/ja.lng b/interface/web/client/lib/lang/ja.lng index c5ce289f70..b34cf49559 100644 --- a/interface/web/client/lib/lang/ja.lng +++ b/interface/web/client/lib/lang/ja.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/nl.lng b/interface/web/client/lib/lang/nl.lng index cf2307e6aa..dab8ba3c3c 100644 --- a/interface/web/client/lib/lang/nl.lng +++ b/interface/web/client/lib/lang/nl.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Berichten'; $wb['Send email'] = 'Verstuur e-mail'; $wb['Edit Client Circle'] = 'Klanten collectie bewerken'; $wb['Domains'] = 'Domeinen'; +$wb['Add Domain'] = 'Domein toevoegen'; $wb['domain_txt'] = 'Domein'; $wb['client_txt'] = 'Klant'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/nl_domain_list.lng b/interface/web/client/lib/lang/nl_domain_list.lng index 130345f388..802917f923 100644 --- a/interface/web/client/lib/lang/nl_domain_list.lng +++ b/interface/web/client/lib/lang/nl_domain_list.lng @@ -1,6 +1,6 @@ <?php $wb['list_head_txt'] = 'Domeinen'; -$wb['add_new_record_txt'] = 'Toevoegen nieuw domein'; +$wb['add_new_record_txt'] = 'Domein toevoegen'; $wb['domain_txt'] = 'Domein'; $wb['user_txt'] = 'Klant'; ?> diff --git a/interface/web/client/lib/lang/pl.lng b/interface/web/client/lib/lang/pl.lng index ca1563e8b8..8c4061a795 100644 --- a/interface/web/client/lib/lang/pl.lng +++ b/interface/web/client/lib/lang/pl.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'WiadomoÅ›ci dla klientów'; $wb['Send email'] = 'WyÅ›lij email'; $wb['Edit Client Circle'] = 'Edytuj grupy klientów'; $wb['Domains'] = 'Domeny'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domena'; $wb['client_txt'] = 'Klient'; $wb['error_domain_in mailuse'] = 'Ta domena nie może zostać usuniÄ™ta ponieważ jest używana jako domena dla poczty email.'; diff --git a/interface/web/client/lib/lang/pt.lng b/interface/web/client/lib/lang/pt.lng index 1be427e820..1f837aa963 100644 --- a/interface/web/client/lib/lang/pt.lng +++ b/interface/web/client/lib/lang/pt.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/ro.lng b/interface/web/client/lib/lang/ro.lng index 245991ff9d..f129f4273f 100644 --- a/interface/web/client/lib/lang/ro.lng +++ b/interface/web/client/lib/lang/ro.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/ru.lng b/interface/web/client/lib/lang/ru.lng index c8558a3982..2dabf4c6f3 100644 --- a/interface/web/client/lib/lang/ru.lng +++ b/interface/web/client/lib/lang/ru.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Обмен ÑообщениÑми'; $wb['Send email'] = 'Отправить почту'; $wb['Edit Client Circle'] = 'Изменить клиента Группы'; $wb['Domains'] = 'Домены'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Домен'; $wb['client_txt'] = 'Клиент'; $wb['error_domain_in mailuse'] = 'Ðтот домен не может быть удален, так как он иÑпользуетÑÑ Ð² качеÑтве почтового домена.'; diff --git a/interface/web/client/lib/lang/se.lng b/interface/web/client/lib/lang/se.lng index 3845b9c57a..adceb746d6 100644 --- a/interface/web/client/lib/lang/se.lng +++ b/interface/web/client/lib/lang/se.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Meddelanden'; $wb['Send email'] = 'Skicka epost'; $wb['Edit Client Circle'] = 'Redigera kundcirkel'; $wb['Domains'] = 'Domäner'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domän'; $wb['client_txt'] = 'Kund'; $wb['error_domain_in mailuse'] = 'Den här domänen kan inte tas bort dÃ¥ den används som epostdomän'; diff --git a/interface/web/client/lib/lang/sk.lng b/interface/web/client/lib/lang/sk.lng index f3bfd3e2f6..7058583a32 100644 --- a/interface/web/client/lib/lang/sk.lng +++ b/interface/web/client/lib/lang/sk.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Messaging'; $wb['Send email'] = 'Send Email'; $wb['Edit Client Circle'] = 'Edit Client Circle'; $wb['Domains'] = 'Domains'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Domain'; $wb['client_txt'] = 'Client'; $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain'; diff --git a/interface/web/client/lib/lang/tr.lng b/interface/web/client/lib/lang/tr.lng index cc2e8aa022..6f5f55e702 100644 --- a/interface/web/client/lib/lang/tr.lng +++ b/interface/web/client/lib/lang/tr.lng @@ -17,6 +17,7 @@ $wb['Messaging'] = 'Ä°letiÅŸim'; $wb['Send email'] = 'E-posta Gönderimi'; $wb['Edit Client Circle'] = 'Müşteri Grubu Düzenleme'; $wb['Domains'] = 'Etki Alanları'; +$wb['Add Domain'] = 'Add Domain'; $wb['domain_txt'] = 'Etki Alanı'; $wb['client_txt'] = 'Müşteri'; $wb['error_domain_in dnsuse'] = 'Bu etki alanı birincil DNS bölgesi olarak kullanıldığından silinemez'; diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php index 2603550c9b..2203571381 100644 --- a/interface/web/client/lib/module.conf.php +++ b/interface/web/client/lib/module.conf.php @@ -87,6 +87,10 @@ if ($settings['use_domain_module'] == 'y') { 'target' => 'content', 'link' => 'client/domain_list.php'); + $items[] = array( 'title' => 'Add Domain', + 'target' => 'content', + 'link' => 'client/domain_edit.php'); + $module['nav'][] = array( 'title' => 'Domains', 'open' => 1, 'items' => $items); -- GitLab From fa6b3c67d0a7c276673afa97f3b2af9fc45e035b Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:30:28 +0200 Subject: [PATCH 374/571] Update de_system_config.lng --- interface/web/admin/lib/lang/de_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 76910e1db3..79048a8298 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Wildcard verwenden'; -- GitLab From ff43d3ff5e029410b486d49436962c58e0aa9f3e Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:30:46 +0200 Subject: [PATCH 375/571] Update se_system_config.lng --- interface/web/admin/lib/lang/se_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index 74ae16734f..bb0e2cac5e 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 55a33fdbfd510b32e8f66be3e32bbfdb696aafa8 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:31:04 +0200 Subject: [PATCH 376/571] Update tr_system_config.lng --- interface/web/admin/lib/lang/tr_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 3ef8e26875..3b89919129 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -84,4 +84,6 @@ $wb['reseller_can_use_options_txt'] = 'Bayi web siteleri için seçenek sekmesin $wb['custom_login_text_txt'] = 'Oturum Açma Sayfası Metni'; $wb['custom_login_link_txt'] = 'Oturum Açma Sayfası BaÄŸlantısı'; $wb['login_link_error_regex'] = 'Oturum Açma BaÄŸlantısı Geçersiz'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; ?> -- GitLab From 56ad3421ef7acef5ba022daf44a5ccabe7054030 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:31:21 +0200 Subject: [PATCH 377/571] Update ar_system_config.lng --- interface/web/admin/lib/lang/ar_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 0a830014d8..664221e728 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From ffb8eeb696dcfa53ec1a56205ebe06cd56fbeab5 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:31:34 +0200 Subject: [PATCH 378/571] Update bg_system_config.lng --- interface/web/admin/lib/lang/bg_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index 130cb596aa..83fcbaa839 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 4571bcb4e45cfe6216a452b238208462beeb8c6d Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:31:50 +0200 Subject: [PATCH 379/571] Update br_system_config.lng --- interface/web/admin/lib/lang/br_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 98bd4c9614..e405e7bb1b 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -81,6 +81,8 @@ $wb['reseller_can_use_options_txt'] = 'Revendas podem utilizar o menu sites'; $wb['custom_login_text_txt'] = 'Texto personalizado para a página de acesso'; $wb['custom_login_link_txt'] = 'Link personalizado para página de acesso'; $wb['login_link_error_regex'] = 'Link personalizado para acesso inválido'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Nome'; $wb['ca_issue_txt'] = 'Questão'; $wb['ca_wildcard_txt'] = 'Usar curingas'; -- GitLab From 27c15175f9bbb4dcdcd6e32d1c5830523ede62c6 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:32:12 +0200 Subject: [PATCH 380/571] Update ca_system_config.lng --- interface/web/admin/lib/lang/ca_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index cc3c11c6c5..267e41b65b 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -81,6 +81,8 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 5c163fd95157a8285248ef359b7afd77c5e058b5 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:32:26 +0200 Subject: [PATCH 381/571] Update cz_system_config.lng --- interface/web/admin/lib/lang/cz_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 3660e1b689..40c78c1856 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -81,6 +81,8 @@ $wb['reseller_can_use_options_txt'] = 'Distributor (prodejce) může použÃt ka $wb['custom_login_text_txt'] = 'Vlastnà text na pÅ™ihlaÅ¡ovacà stránce'; $wb['custom_login_link_txt'] = 'Vlastnà odkaz (URL) na pÅ™ihlaÅ¡ovacà stránce (vlastnà text)'; $wb['login_link_error_regex'] = 'Neplatný formát URL pro vlastnà odkaz na pÅ™ihlaÅ¡ovacà stránce'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Název vydavatele'; $wb['ca_issue_txt'] = 'Doména vydavatele'; $wb['ca_wildcard_txt'] = 'PoužÃt Wildcard (*)'; -- GitLab From 901caa6a2299258c9d43881c1af91c4dca2643ce Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:32:42 +0200 Subject: [PATCH 382/571] Update dk_system_config.lng --- interface/web/admin/lib/lang/dk_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 26b0fe7e78..ad3ecbf4db 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -81,6 +81,8 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From dd6e7deb2c51b6b0c704d82d4001fb1b497452d9 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:32:55 +0200 Subject: [PATCH 383/571] Update el_system_config.lng --- interface/web/admin/lib/lang/el_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 640d6f00a9..3276653f33 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From d9fd5475927d51047913abe0d68cfe897b398866 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:33:26 +0200 Subject: [PATCH 384/571] Update es_system_config.lng --- interface/web/admin/lib/lang/es_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 043c52cfdd..39fae409ce 100755 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -81,6 +81,8 @@ $wb['webftp_url_txt'] = 'Enlace al cliente FTP por web'; $wb['webmail_url_error_regex'] = 'Dirección del correo web inválida'; $wb['webmail_url_note_txt'] = 'Marcador de posición:'; $wb['webmail_url_txt'] = 'URL de correo web'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From b55a43a2a464a0633f7b1866a488aa40be24e6b1 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:33:39 +0200 Subject: [PATCH 385/571] Update fi_system_config.lng --- interface/web/admin/lib/lang/fi_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index c0972c49d8..be49b16ef4 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 41b9ce463aff3a04774b6c5dc5bc9e642ab8cf74 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:33:49 +0200 Subject: [PATCH 386/571] Update fr_system_config.lng --- interface/web/admin/lib/lang/fr_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 18f0dbbed4..8ef8aa64e6 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -81,6 +81,8 @@ $wb['reseller_can_use_options_txt'] = 'Reseller can use the option-tab for websi $wb['custom_login_text_txt'] = 'Custom Text on Login-Page'; $wb['custom_login_link_txt'] = 'Custom Link on Login-Page'; $wb['login_link_error_regex'] = 'Invalid Link for Custom Login'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 44ed03e7d3d9fcc0a70e8143836a3e5b8d685da4 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:33:58 +0200 Subject: [PATCH 387/571] Update hr_system_config.lng --- interface/web/admin/lib/lang/hr_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index a7735647b1..e08fdfbb3c 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 36b256bf706a38abe86d791e01d19747c0ca91da Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:34:06 +0200 Subject: [PATCH 388/571] Update hu_system_config.lng --- interface/web/admin/lib/lang/hu_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index cee497fe19..613ad88a22 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 65b8b7219f688a5dbd49edad9e15b51e21dbb1d1 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:34:15 +0200 Subject: [PATCH 389/571] Update id_system_config.lng --- interface/web/admin/lib/lang/id_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index 344185b84d..f2dfeb6734 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 1d2f3be54065b93026d4442feb33b6f803a989a0 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:34:25 +0200 Subject: [PATCH 390/571] Update ja_system_config.lng --- interface/web/admin/lib/lang/ja_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index aa5cc6a7a3..718e4302c5 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 55791026e43fce7acf80f0f98e339ec237714e80 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Sat, 13 Jun 2020 17:34:35 +0200 Subject: [PATCH 391/571] Update nl_system_config.lng --- interface/web/admin/lib/lang/nl_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 44a58b7646..fda9056d8d 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 8325db579710a886e9b3187d5275301cf5403e42 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 12:48:06 +0200 Subject: [PATCH 392/571] Implement SSHFP record (#1594) --- .../sql/incremental/upd_dev_collection.sql | 5 +- install/sql/ispconfig3.sql | 214 +++++++++--------- interface/web/dns/dns_sshfp_edit.php | 53 +++++ interface/web/dns/form/dns_sshfp.tform.php | 165 ++++++++++++++ interface/web/dns/lib/lang/ar_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/bg_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/br_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/ca_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/cz_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/de_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/dk_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/el_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/en_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/es_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/fi_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/fr_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/hr_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/hu_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/id_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/it_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/ja_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/nl_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/pl_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/pt_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/ro_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/ru_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/se_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/sk_dns_sshfp.lng | 16 ++ interface/web/dns/lib/lang/tr_dns_sshfp.lng | 16 ++ interface/web/dns/list/dns_a.list.php | 2 +- interface/web/dns/templates/dns_a_list.htm | 4 +- .../web/dns/templates/dns_sshfp_edit.htm | 25 ++ server/conf/bind_pri.domain.master | 5 +- 33 files changed, 760 insertions(+), 113 deletions(-) create mode 100644 interface/web/dns/dns_sshfp_edit.php create mode 100644 interface/web/dns/form/dns_sshfp.tform.php create mode 100644 interface/web/dns/lib/lang/ar_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/bg_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/br_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/ca_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/cz_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/de_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/dk_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/el_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/en_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/es_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/fi_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/fr_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/hr_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/hu_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/id_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/it_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/ja_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/nl_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/pl_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/pt_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/ro_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/ru_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/se_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/sk_dns_sshfp.lng create mode 100644 interface/web/dns/lib/lang/tr_dns_sshfp.lng create mode 100644 interface/web/dns/templates/dns_sshfp_edit.htm diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index aebc01dcb8..519dda220f 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -20,7 +20,7 @@ UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'co -- default php-fpm to ondemand mode ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; -ALTER TABLE `mail_user` +ALTER TABLE `mail_user` ADD `purge_trash_days` INT NOT NULL DEFAULT '0' AFTER `move_junk`, ADD `purge_junk_days` INT NOT NULL DEFAULT '0' AFTER `purge_trash_days`; @@ -32,3 +32,6 @@ ALTER TABLE `mail_user` ADD `disablequota-status` ENUM('n','y') CHARACTER SET ut -- add disableindexer-worker for solr search ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disablequota-status`; + +-- add SSHFP record +ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME', 'CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index a5fcce8c89..ef76a370d4 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -26,24 +26,24 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ --- Includes --- +-- Includes +-- -- iso_country_list.sql --- +-- -- This will create and then populate a MySQL table with a list of the names and -- ISO 3166 codes for countries in existence as of the date below. --- +-- -- For updates to this file, see http://27.org/isocountrylist/ -- For more about ISO 3166, see http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html --- +-- -- Created by getisocountrylist.pl on Sun Nov 2 14:59:20 2003. -- Wm. Rhodes <iso_country_list@27.org> --- +-- --- +-- -- ISPConfig 3 -- DB-Version: 3.0.0.9 --- +-- SET FOREIGN_KEY_CHECKS = 0; @@ -288,9 +288,9 @@ CREATE TABLE `client_circle` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `client_template` --- +-- CREATE TABLE `client_template` ( `template_id` int(11) unsigned NOT NULL auto_increment, @@ -373,9 +373,9 @@ CREATE TABLE `client_template` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `client_template_assigned` --- +-- CREATE TABLE `client_template_assigned` ( `assigned_template_id` bigint(20) NOT NULL auto_increment, @@ -426,9 +426,9 @@ CREATE TABLE `country` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `cron` --- +-- CREATE TABLE `cron` ( `id` int(11) unsigned NOT NULL auto_increment, `sys_userid` int(11) unsigned NOT NULL default '0', @@ -452,9 +452,9 @@ CREATE TABLE `cron` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `directive_snippets` --- +-- CREATE TABLE IF NOT EXISTS `directive_snippets` ( `directive_snippets_id` int(11) unsigned NOT NULL AUTO_INCREMENT, @@ -475,9 +475,9 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `dns_rr` --- +-- CREATE TABLE `dns_rr` ( `id` int(11) unsigned NOT NULL auto_increment, `sys_userid` int(11) unsigned NOT NULL DEFAULT '0', @@ -488,7 +488,7 @@ CREATE TABLE `dns_rr` ( `server_id` int(11) NOT NULL default '1', `zone` int(11) unsigned NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', - `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL, + `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') default NULL, `data` TEXT NOT NULL, `aux` int(11) unsigned NOT NULL default '0', `ttl` int(11) unsigned NOT NULL default '3600', @@ -524,9 +524,9 @@ CREATE TABLE `dns_slave` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `dns_ssl_ca` --- +-- CREATE TABLE IF NOT EXISTS `dns_ssl_ca` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, @@ -598,9 +598,9 @@ INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `s -- -------------------------------------------------------- --- +-- -- Table structure for table `dns_soa` --- +-- CREATE TABLE `dns_soa` ( `id` int(10) unsigned NOT NULL auto_increment, @@ -634,9 +634,9 @@ CREATE TABLE `dns_soa` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `dns_template` --- +-- CREATE TABLE `dns_template` ( `template_id` int(11) unsigned NOT NULL auto_increment, @@ -670,9 +670,9 @@ CREATE TABLE `domain` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `firewall` --- +-- CREATE TABLE `firewall` ( `firewall_id` int(11) unsigned NOT NULL auto_increment, @@ -690,9 +690,9 @@ CREATE TABLE `firewall` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `ftp_user` --- +-- CREATE TABLE `ftp_user` ( `ftp_user_id` int(11) unsigned NOT NULL auto_increment, @@ -728,9 +728,9 @@ CREATE TABLE `ftp_user` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `ftp_traffic` --- +-- CREATE TABLE `ftp_traffic` ( `hostname` varchar(255) NOT NULL, @@ -801,9 +801,9 @@ CREATE TABLE `iptables` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_access` --- +-- CREATE TABLE `mail_access` ( `access_id` int(11) unsigned NOT NULL auto_increment, @@ -841,9 +841,9 @@ CREATE TABLE `mail_backup` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_content_filter` --- +-- CREATE TABLE `mail_content_filter` ( `content_filter_id` int(11) unsigned NOT NULL auto_increment, @@ -863,9 +863,9 @@ CREATE TABLE `mail_content_filter` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_domain` --- +-- CREATE TABLE `mail_domain` ( `domain_id` int(11) unsigned NOT NULL auto_increment, @@ -888,9 +888,9 @@ CREATE TABLE `mail_domain` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_forwarding` --- +-- CREATE TABLE `mail_forwarding` ( `forwarding_id` int(11) unsigned NOT NULL auto_increment, @@ -913,9 +913,9 @@ CREATE TABLE `mail_forwarding` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_get` --- +-- CREATE TABLE `mail_get` ( `mailget_id` int(11) unsigned NOT NULL auto_increment, @@ -979,9 +979,9 @@ CREATE TABLE IF NOT EXISTS `mail_relay_recipient` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_traffic` --- +-- CREATE TABLE `mail_traffic` ( `traffic_id` int(11) unsigned NOT NULL auto_increment, @@ -994,9 +994,9 @@ CREATE TABLE `mail_traffic` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_transport` --- +-- CREATE TABLE `mail_transport` ( `transport_id` int(11) unsigned NOT NULL auto_increment, @@ -1017,9 +1017,9 @@ CREATE TABLE `mail_transport` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_user` --- +-- CREATE TABLE `mail_user` ( `mailuser_id` int(11) unsigned NOT NULL auto_increment, @@ -1074,9 +1074,9 @@ CREATE TABLE `mail_user` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `mail_user_filter` --- +-- CREATE TABLE `mail_user_filter` ( `filter_id` int(11) unsigned NOT NULL auto_increment, @@ -1295,9 +1295,9 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `remote_session` --- +-- CREATE TABLE `remote_session` ( `remote_session` varchar(64) NOT NULL DEFAULT '', @@ -1310,9 +1310,9 @@ CREATE TABLE `remote_session` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `remote_user` --- +-- CREATE TABLE `remote_user` ( `remote_userid` int(11) unsigned NOT NULL auto_increment, @@ -1331,9 +1331,9 @@ CREATE TABLE `remote_user` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `server` --- +-- CREATE TABLE `server` ( `server_id` int(11) unsigned NOT NULL auto_increment, @@ -1362,9 +1362,9 @@ CREATE TABLE `server` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `server_ip` --- +-- CREATE TABLE `server_ip` ( `server_ip_id` int(11) unsigned NOT NULL auto_increment, @@ -1384,9 +1384,9 @@ CREATE TABLE `server_ip` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `server_ip_map` --- +-- CREATE TABLE `server_ip_map` ( `server_ip_map_id` int(11) unsigned NOT NULL AUTO_INCREMENT, @@ -1458,9 +1458,9 @@ CREATE TABLE `shell_user` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `software_package` --- +-- CREATE TABLE `software_package` ( `package_id` int(11) unsigned NOT NULL auto_increment, @@ -1481,9 +1481,9 @@ CREATE TABLE `software_package` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `software_repo` --- +-- CREATE TABLE `software_repo` ( `software_repo_id` int(11) unsigned NOT NULL auto_increment, @@ -1502,9 +1502,9 @@ CREATE TABLE `software_repo` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `software_update` --- +-- CREATE TABLE `software_update` ( `software_update_id` int(11) unsigned NOT NULL auto_increment, @@ -1524,9 +1524,9 @@ CREATE TABLE `software_update` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `software_update_inst` --- +-- CREATE TABLE `software_update_inst` ( `software_update_inst_id` int(11) unsigned NOT NULL auto_increment, @@ -1540,9 +1540,9 @@ CREATE TABLE `software_update_inst` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `spamfilter_policy` --- +-- CREATE TABLE `spamfilter_policy` ( `id` int(11) unsigned NOT NULL auto_increment, @@ -1603,9 +1603,9 @@ CREATE TABLE `spamfilter_policy` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `spamfilter_users` --- +-- CREATE TABLE `spamfilter_users` ( `id` int(11) unsigned NOT NULL auto_increment, @@ -1626,9 +1626,9 @@ CREATE TABLE `spamfilter_users` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `spamfilter_wblist` --- +-- CREATE TABLE `spamfilter_wblist` ( `wblist_id` int(11) unsigned NOT NULL auto_increment, @@ -1648,9 +1648,9 @@ CREATE TABLE `spamfilter_wblist` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `support_message` --- +-- CREATE TABLE `support_message` ( `support_message_id` int(11) unsigned NOT NULL auto_increment, @@ -1720,9 +1720,9 @@ CREATE TABLE `sys_datalog` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_dbsync` --- +-- CREATE TABLE `sys_dbsync` ( `id` int(11) unsigned NOT NULL auto_increment, @@ -1744,9 +1744,9 @@ CREATE TABLE `sys_dbsync` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_filesync` --- +-- CREATE TABLE `sys_filesync` ( `id` int(11) unsigned NOT NULL auto_increment, @@ -1764,9 +1764,9 @@ CREATE TABLE `sys_filesync` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_group` --- +-- CREATE TABLE `sys_group` ( `groupid` int(11) unsigned NOT NULL auto_increment, @@ -1778,9 +1778,9 @@ CREATE TABLE `sys_group` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_ini` --- +-- CREATE TABLE `sys_ini` ( `sysini_id` int(11) unsigned NOT NULL auto_increment, @@ -1792,9 +1792,9 @@ CREATE TABLE `sys_ini` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_log` --- +-- CREATE TABLE `sys_log` ( `syslog_id` int(11) unsigned NOT NULL auto_increment, @@ -1861,9 +1861,9 @@ CREATE TABLE IF NOT EXISTS `sys_theme` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `sys_user` --- +-- CREATE TABLE `sys_user` ( `userid` int(11) unsigned NOT NULL auto_increment, @@ -1991,9 +1991,9 @@ CREATE TABLE IF NOT EXISTS `web_database_user` ( -- -------------------------------------------------------- --- +-- -- Table structure for table `web_domain` --- +-- CREATE TABLE `web_domain` ( `domain_id` int(11) unsigned NOT NULL auto_increment, @@ -2496,42 +2496,42 @@ INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`, `eu`) -- -------------------------------------------------------- --- +-- -- Dumping data for table `dns_template` --- +-- INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL,DKIM,DNSSEC', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=7200\nretry=540\nexpire=604800\nminimum=3600\nttl=3600\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|3600\nA|www|{IP}|0|3600\nA|mail|{IP}|0|3600\nNS|{DOMAIN}.|{NS1}.|0|3600\nNS|{DOMAIN}.|{NS2}.|0|3600\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600\nTXT|{DOMAIN}.|v=spf1 mx a ~all|0|3600', 'y'); -- -------------------------------------------------------- --- +-- -- Dumping data for table `help_faq` --- +-- INSERT INTO `help_faq` VALUES (1,1,0,'I would like to know ...','Yes, of course.',1,1,'riud','riud','r'); -- -------------------------------------------------------- --- +-- -- Dumping data for table `help_faq_sections` --- +-- INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL); -- -------------------------------------------------------- --- +-- -- Dumping data for table `software_repo` --- +-- INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n'); -- -------------------------------------------------------- --- +-- -- Dumping data for table `spamfilter_policy` --- +-- INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00); INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00); @@ -2543,34 +2543,34 @@ INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us -- -------------------------------------------------------- --- +-- -- Dumping data for table `sys_group` --- +-- INSERT INTO `sys_group` (`groupid`, `name`, `description`, `client_id`) VALUES (1, 'admin', 'Administrators group', 0); -- -------------------------------------------------------- --- +-- -- Dumping data for table `sys_ini` --- +-- INSERT INTO `sys_ini` (`sysini_id`, `config`, `default_logo`, `custom_logo`) VALUES (1, '', 'data:image/png;base64,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', ''); -- -------------------------------------------------------- --- +-- -- Dumping data for table `sys_user` --- +-- INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default', 'global', 'themes/default/images/header_logo.png'); INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default-v2', 'global', 'themes/default-v2/images/header_logo.png'); -- -------------------------------------------------------- --- +-- -- Dumping data for table `sys_user` --- +-- INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `username`, `passwort`, `modules`, `startmodule`, `app_theme`, `typ`, `active`, `language`, `groups`, `default_group`, `client_id`) VALUES (1, 1, 0, 'riud', 'riud', '', 'admin', '21232f297a57a5a743894a0e4a801fc3', 'dashboard,admin,client,mail,monitor,sites,dns,vm,tools,help', 'dashboard', 'default', 'admin', 1, 'en', '1,2', 1, 0); diff --git a/interface/web/dns/dns_sshfp_edit.php b/interface/web/dns/dns_sshfp_edit.php new file mode 100644 index 0000000000..adce9af9a1 --- /dev/null +++ b/interface/web/dns/dns_sshfp_edit.php @@ -0,0 +1,53 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +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. +*/ + +/****************************************** +* Begin Form configuration +******************************************/ + +$tform_def_file = "form/dns_sshfp.tform.php"; + +/****************************************** +* End Form configuration +******************************************/ + +require_once '../../lib/config.inc.php'; +require_once '../../lib/app.inc.php'; +require_once './dns_edit_base.php'; + +// Loading classes +class page_action extends dns_page_action { + +} + +$page = new page_action; +$page->onLoad(); + +?> diff --git a/interface/web/dns/form/dns_sshfp.tform.php b/interface/web/dns/form/dns_sshfp.tform.php new file mode 100644 index 0000000000..6a71c6da78 --- /dev/null +++ b/interface/web/dns/form/dns_sshfp.tform.php @@ -0,0 +1,165 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ +global $app; + +$form["title"] = "DNS SSHFP Record"; +$form["description"] = ""; +$form["name"] = "dns_txt"; +$form["action"] = "dns_sshfp_edit.php"; +$form["db_table"] = "dns_rr"; +$form["db_table_idx"] = "id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "dns"; +$form["list_default"] = "dns_a_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$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 + +$form["tabs"]['dns'] = array ( + 'title' => "DNS SSHFP", + 'width' => 100, + 'template' => "templates/dns_sshfp_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'zone' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => @$app->functions->intval($_REQUEST["zone"]), + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER') + ), + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^(\*\.|[a-zA-Z0-9\.\-\_]){0,255}$/', + 'errmsg'=> 'name_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'SSHFP', + 'value' => '', + 'width' => '5', + 'maxlength' => '5' + ), + 'data' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + 0 => array ( + 'type' => 'NOTEMPTY', + 'errmsg'=> 'data_error_empty' + ), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'ttl' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'RANGE', + 'range' => '60:', + 'errmsg'=> 'ttl_range_error'), + ), + 'default' => '3600', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'active' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'Y', + 'value' => array(0 => 'N', 1 => 'Y') + ), + 'stamp' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'serial' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + //################################# + // END Datatable fields + //################################# + ) +); + +if($_SESSION["s"]["user"]["typ"] == 'admin') { + unset($form["tabs"]['dns']['fields']['data']['validators']); + $form["tabs"]['dns']['fields']['data']['validators'][0]['type'] = 'NOTEMPTY'; + $form["tabs"]['dns']['fields']['data']['validators'][0]['errmsg'] = 'data_error_empty'; + $form["tabs"]['dns']['fields']['data']['maxlength'] = 512; +} +?> diff --git a/interface/web/dns/lib/lang/ar_dns_sshfp.lng b/interface/web/dns/lib/lang/ar_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/ar_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/bg_dns_sshfp.lng b/interface/web/dns/lib/lang/bg_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/bg_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/br_dns_sshfp.lng b/interface/web/dns/lib/lang/br_dns_sshfp.lng new file mode 100644 index 0000000000..f84c2af034 --- /dev/null +++ b/interface/web/dns/lib/lang/br_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Servidor'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Nome do host'; +$wb['type_txt'] = 'Tipo'; +$wb['data_txt'] = 'Texto'; +$wb['ttl_txt'] = 'TTL'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'Texto está em branco.'; +$wb['data_error_regex'] = 'Texto possui formato inválido.'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +?> diff --git a/interface/web/dns/lib/lang/ca_dns_sshfp.lng b/interface/web/dns/lib/lang/ca_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/ca_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/cz_dns_sshfp.lng b/interface/web/dns/lib/lang/cz_dns_sshfp.lng new file mode 100644 index 0000000000..4ed9018152 --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Název hostitele'; +$wb['type_txt'] = 'Typ'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'AktivnÃ'; +$wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; +$wb['name_error_empty'] = 'Název hostitele je prázdný.'; +$wb['name_error_regex'] = 'Název hostitele má chybný formát.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; +?> diff --git a/interface/web/dns/lib/lang/de_dns_sshfp.lng b/interface/web/dns/lib/lang/de_dns_sshfp.lng new file mode 100644 index 0000000000..eb2f83263a --- /dev/null +++ b/interface/web/dns/lib/lang/de_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'Typ'; +$wb['data_txt'] = 'Daten'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktiv'; +$wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.'; +$wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.'; +$wb['name_error_empty'] = 'Der Hostname ist leer.'; +$wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; +$wb['data_error_empty'] = 'Text ist leer'; +$wb['data_error_regex'] = 'Textformat ungültig'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/dk_dns_sshfp.lng b/interface/web/dns/lib/lang/dk_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/dk_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/el_dns_sshfp.lng b/interface/web/dns/lib/lang/el_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/el_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/en_dns_sshfp.lng b/interface/web/dns/lib/lang/en_dns_sshfp.lng new file mode 100644 index 0000000000..a2e3322bb6 --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["type_txt"] = 'type'; +$wb["data_txt"] = 'Data'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'Text empty'; +$wb["data_error_regex"] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/es_dns_sshfp.lng b/interface/web/dns/lib/lang/es_dns_sshfp.lng new file mode 100644 index 0000000000..58292c007a --- /dev/null +++ b/interface/web/dns/lib/lang/es_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['active_txt'] = 'Habilitado'; +$wb['data_error_empty'] = 'Datos vacÃos'; +$wb['data_error_regex'] = 'El formato de los datos no es correcto'; +$wb['data_txt'] = 'Datos'; +$wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; +$wb['name_error_empty'] = 'El nombre del host está vacÃo.'; +$wb['name_error_regex'] = 'El nombre del host tiene un formato incorrecto.'; +$wb['name_txt'] = 'Nombre del host'; +$wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.'; +$wb['server_id_txt'] = 'Servidor'; +$wb['ttl_range_error'] = 'El tiempo mÃn. de TTL es 60 segundos.'; +$wb['ttl_txt'] = 'TTL'; +$wb['type_txt'] = 'tipo'; +$wb['zone_txt'] = 'Zona'; +?> diff --git a/interface/web/dns/lib/lang/fi_dns_sshfp.lng b/interface/web/dns/lib/lang/fi_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/fi_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/fr_dns_sshfp.lng b/interface/web/dns/lib/lang/fr_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/fr_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/hr_dns_sshfp.lng b/interface/web/dns/lib/lang/hr_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/hr_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/hu_dns_sshfp.lng b/interface/web/dns/lib/lang/hu_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/hu_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/id_dns_sshfp.lng b/interface/web/dns/lib/lang/id_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/id_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/it_dns_sshfp.lng b/interface/web/dns/lib/lang/it_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/it_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/ja_dns_sshfp.lng b/interface/web/dns/lib/lang/ja_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/ja_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/nl_dns_sshfp.lng b/interface/web/dns/lib/lang/nl_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/nl_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/pl_dns_sshfp.lng b/interface/web/dns/lib/lang/pl_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/pl_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/pt_dns_sshfp.lng b/interface/web/dns/lib/lang/pt_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/pt_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/ro_dns_sshfp.lng b/interface/web/dns/lib/lang/ro_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/ro_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/ru_dns_sshfp.lng b/interface/web/dns/lib/lang/ru_dns_sshfp.lng new file mode 100644 index 0000000000..bf1a8a892a --- /dev/null +++ b/interface/web/dns/lib/lang/ru_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Сервер'; +$wb['zone_txt'] = 'Зона'; +$wb['name_txt'] = 'Ð˜Ð¼Ñ Ñ…Ð¾Ñта'; +$wb['type_txt'] = 'Тип'; +$wb['data_txt'] = 'Данные'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Ðктивно'; +$wb['limit_dns_record_txt'] = 'МакÑимальное чиÑло DNS-запиÑей Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи доÑтигнуто.'; +$wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту запиÑÑŒ.'; +$wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; +$wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; +?> diff --git a/interface/web/dns/lib/lang/se_dns_sshfp.lng b/interface/web/dns/lib/lang/se_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/se_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/sk_dns_sshfp.lng b/interface/web/dns/lib/lang/sk_dns_sshfp.lng new file mode 100644 index 0000000000..dc9ad9a006 --- /dev/null +++ b/interface/web/dns/lib/lang/sk_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Data'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Text empty'; +$wb['data_error_regex'] = 'Text format invalid'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/tr_dns_sshfp.lng b/interface/web/dns/lib/lang/tr_dns_sshfp.lng new file mode 100644 index 0000000000..25350c9aa8 --- /dev/null +++ b/interface/web/dns/lib/lang/tr_dns_sshfp.lng @@ -0,0 +1,16 @@ +<?php +$wb['server_id_txt'] = 'Sunucu'; +$wb['zone_txt'] = 'Bölge'; +$wb['name_txt'] = 'Sunucu Adı'; +$wb['type_txt'] = 'Tür'; +$wb['data_txt'] = 'Veri'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; +$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; +$wb['data_error_empty'] = 'Metin boÅŸ'; +$wb['data_error_regex'] = 'Metin biçimi geçersiz'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +?> diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php index b6363b7d24..007f76dfb3 100644 --- a/interface/web/dns/list/dns_a.list.php +++ b/interface/web/dns/list/dns_a.list.php @@ -132,7 +132,7 @@ $liste["item"][] = array( 'field' => "type", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); + 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'SSHFP'=>'SSHFP', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); ?> diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm index b6b21f18b6..46fb103b7d 100644 --- a/interface/web/dns/templates/dns_a_list.htm +++ b/interface/web/dns/templates/dns_a_list.htm @@ -34,10 +34,11 @@ <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_rp_edit.php?zone={tmpl_var name='parent_id'}">RP</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_spf_edit.php?zone={tmpl_var name='parent_id'}">SPF</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_srv_edit.php?zone={tmpl_var name='parent_id'}">SRV</button> + <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_sshfp_edit.php?zone={tmpl_var name='parent_id'}">SSHFP</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_tlsa_edit.php?zone={tmpl_var name='parent_id'}">TLSA</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_txt_edit.php?zone={tmpl_var name='parent_id'}">TXT</button> </div> - + </div> @@ -93,4 +94,3 @@ </tfoot> </table> </div> - diff --git a/interface/web/dns/templates/dns_sshfp_edit.htm b/interface/web/dns/templates/dns_sshfp_edit.htm new file mode 100644 index 0000000000..18a40a8010 --- /dev/null +++ b/interface/web/dns/templates/dns_sshfp_edit.htm @@ -0,0 +1,25 @@ +<div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> + <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> +<div class="form-group"> + <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label> + <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" class="form-control" /></div></div> +<div class="form-group"> + <label for="ttl" class="col-sm-3 control-label">{tmpl_var name='ttl_txt'}</label> + <div class="col-sm-9"><input type="text" name="ttl" id="ttl" value="{tmpl_var name='ttl'}" class="form-control" /></div></div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='active'} + </div> +</div> + + +<input type="hidden" name="id" value="{tmpl_var name='id'}"> +<input type="hidden" name="zone" value="{tmpl_var name='zone'}"> +<input type="hidden" name="type" value="{tmpl_var name='type'}"> + +<div class="clear"><div class="right"> +<button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_sshfp_edit.php">{tmpl_var name='btn_save_txt'}</button> +<button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> +</div></div> diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master index 379d80c8df..9635e445f7 100644 --- a/server/conf/bind_pri.domain.master +++ b/server/conf/bind_pri.domain.master @@ -50,6 +50,9 @@ $TTL {tmpl_var name='ttl'} <tmpl_if name="type" op='==' value='SRV'> {tmpl_var name='name'} {tmpl_var name='ttl'} SRV {tmpl_var name='aux'} {tmpl_var name='data'} </tmpl_if> +<tmpl_if name="type" op='==' value='SSHFP'> +{tmpl_var name='name'} {tmpl_var name='ttl'} SSHFP {tmpl_var name='data'} {tmpl_var name='data'} +</tmpl_if> <tmpl_if name="type" op='==' value='TLSA'> {tmpl_var name='name'} {tmpl_var name='ttl'} TLSA {tmpl_var name='data'} </tmpl_if> @@ -60,5 +63,3 @@ $TTL {tmpl_var name='ttl'} {tmpl_var name='name'} {tmpl_var name='ttl'} TYPE257 {tmpl_var name='data'} </tmpl_if> </tmpl_loop> - - -- GitLab From 7cedfde85bdfa03bcf5bee522113e6c1c2d78cbb Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 13:18:52 +0200 Subject: [PATCH 393/571] Add remote functions for SSHFP --- interface/lib/classes/remote.d/dns.inc.php | 46 ++++++++++++++++------ interface/web/dns/lib/remote.conf.php | 1 + 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 612adf7186..817953a5c7 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -57,7 +57,7 @@ class remoting_dns extends remoting { $app->uses('tform'); $app->tform->loadFormDef($tform_def_file); $app->uses('tpl,validate_dns,remoting_lib'); - + $app->remoting_lib->loadUserProfile($client_id); //* replace template placeholders @@ -197,7 +197,7 @@ class remoting_dns extends remoting { $app->remoting_lib->loadFormDef('../dns/form/dns_soa.tform.php'); return $app->remoting_lib->getDataRecord($primary_id); } - + //* Get slave zone details public function dns_slave_get($session_id, $primary_id) { global $app; @@ -211,7 +211,7 @@ class remoting_dns extends remoting { return $app->remoting_lib->getDataRecord($primary_id); } - + //* Add a slave zone public function dns_slave_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_add')) { @@ -220,7 +220,7 @@ class remoting_dns extends remoting { } return $this->insertQuery('../dns/form/dns_slave.tform.php', $client_id, $params); } - + //* Update a slave zone public function dns_slave_update($session_id, $client_id, $primary_id, $params) { if(!$this->checkPerm($session_id, 'dns_zone_update')) { @@ -296,12 +296,12 @@ class remoting_dns extends remoting { private function dns_rr_get($session_id, $primary_id, $rr_type = 'A') { global $app; - + $rr_type = strtolower($rr_type); if(!preg_match('/^[a-z]+$/', $rr_type)) { throw new SoapFault('permission denied', 'Invalid rr type'); } - + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_get')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); } @@ -309,14 +309,14 @@ class remoting_dns extends remoting { $app->remoting_lib->loadFormDef('../dns/form/dns_' . $rr_type . '.tform.php'); return $app->remoting_lib->getDataRecord($primary_id); } - + //* Add a record private function dns_rr_add($session_id, $client_id, $params, $update_serial=false, $rr_type = 'A') { $rr_type = strtolower($rr_type); if(!preg_match('/^[a-z]+$/', $rr_type)) { throw new SoapFault('permission denied', 'Invalid rr type'); } - + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_add')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); } @@ -332,7 +332,7 @@ class remoting_dns extends remoting { if(!preg_match('/^[a-z]+$/', $rr_type)) { throw new SoapFault('permission denied', 'Invalid rr type'); } - + if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_update')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; @@ -343,7 +343,7 @@ class remoting_dns extends remoting { } return $affected_rows; } - + //* Delete a record private function dns_rr_delete($session_id, $primary_id, $update_serial=false, $rr_type = 'A') { $rr_type = strtolower($rr_type); @@ -359,9 +359,9 @@ class remoting_dns extends remoting { $affected_rows = $this->deleteQuery('../dns/form/dns_' . $rr_type . '.tform.php', $primary_id); return $affected_rows; } - + // ---------------------------------------------------------------------------------------------------------------- - + //* Get record details public function dns_aaaa_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'AAAA'); @@ -626,6 +626,28 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- + //* Get record details + public function dns_sshfp_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'SSHFP'); + } + + //* Add a record + public function dns_sshfp_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'SSHFP'); + } + + //* Update a record + public function dns_sshfp_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'SSHFP'); + } + + //* Delete a record + public function dns_sshfp_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'SSHFP'); + } + + // ---------------------------------------------------------------------------------------------------------------- + //* Get record details public function dns_tlsa_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'TLSA'); diff --git a/interface/web/dns/lib/remote.conf.php b/interface/web/dns/lib/remote.conf.php index ea725de8a4..c87296a8c9 100644 --- a/interface/web/dns/lib/remote.conf.php +++ b/interface/web/dns/lib/remote.conf.php @@ -15,6 +15,7 @@ $function_list['dns_ns_get,dns_ns_add,dns_ns_update,dns_ns_delete'] = 'DNS ns fu $function_list['dns_ptr_get,dns_ptr_add,dns_ptr_update,dns_ptr_delete'] = 'DNS ptr functions'; $function_list['dns_rp_get,dns_rp_add,dns_rp_update,dns_rp_delete'] = 'DNS rp functions'; $function_list['dns_srv_get,dns_srv_add,dns_srv_update,dns_srv_delete'] = 'DNS srv functions'; +$function_list['dns_sshfp_get,dns_sshfp_add,dns_sshfp_update,dns_sshfp_delete'] = 'DNS sshfp functions'; $function_list['dns_tlsa_get,dns_tlsa_add,dns_tlsa_update,dns_tlsa_delete'] = 'DNS tlsa functions'; $function_list['dns_txt_get,dns_txt_add,dns_txt_update,dns_txt_delete'] = 'DNS txt functions'; -- GitLab From 488bbdd5fbc1292be385df6ec2949e99972f2107 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 15:08:09 +0200 Subject: [PATCH 394/571] Add translation for new DNAME record --- interface/web/dns/lib/lang/ar_dns_a.lng | 2 +- interface/web/dns/lib/lang/ar_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ar_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ar_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/bg_dns_a.lng | 2 +- interface/web/dns/lib/lang/bg_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/bg_dns_cname.lng | 2 +- interface/web/dns/lib/lang/bg_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/br_dns_a.lng | 2 +- interface/web/dns/lib/lang/br_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/br_dns_cname.lng | 2 +- interface/web/dns/lib/lang/br_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/ca_dns_a.lng | 2 +- interface/web/dns/lib/lang/ca_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ca_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ca_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/cz_dns_a.lng | 2 +- interface/web/dns/lib/lang/cz_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/cz_dns_cname.lng | 2 +- interface/web/dns/lib/lang/cz_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/de_dns_a.lng | 2 +- interface/web/dns/lib/lang/de_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/de_dns_cname.lng | 2 +- interface/web/dns/lib/lang/de_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/dk_dns_a.lng | 2 +- interface/web/dns/lib/lang/dk_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/dk_dns_cname.lng | 2 +- interface/web/dns/lib/lang/dk_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/el_dns_a.lng | 2 +- interface/web/dns/lib/lang/el_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/el_dns_cname.lng | 2 +- interface/web/dns/lib/lang/el_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/en_dns_a.lng | 2 +- interface/web/dns/lib/lang/en_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/en_dns_cname.lng | 4 ++-- interface/web/dns/lib/lang/en_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/es_dns_a.lng | 2 +- interface/web/dns/lib/lang/es_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/es_dns_cname.lng | 2 +- interface/web/dns/lib/lang/es_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/fi_dns_a.lng | 2 +- interface/web/dns/lib/lang/fi_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/fi_dns_cname.lng | 2 +- interface/web/dns/lib/lang/fi_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/fr_dns_a.lng | 2 +- interface/web/dns/lib/lang/fr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/fr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/fr_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/hr_dns_a.lng | 2 +- interface/web/dns/lib/lang/hr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/hr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/hr_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/hu_dns_a.lng | 2 +- interface/web/dns/lib/lang/hu_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/hu_dns_cname.lng | 2 +- interface/web/dns/lib/lang/hu_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/id_dns_a.lng | 2 +- interface/web/dns/lib/lang/id_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/id_dns_cname.lng | 2 +- interface/web/dns/lib/lang/id_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/it_dns_a.lng | 2 +- interface/web/dns/lib/lang/it_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/it_dns_cname.lng | 2 +- interface/web/dns/lib/lang/it_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/ja_dns_a.lng | 2 +- interface/web/dns/lib/lang/ja_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ja_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ja_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/nl_dns_a.lng | 2 +- interface/web/dns/lib/lang/nl_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/nl_dns_cname.lng | 2 +- interface/web/dns/lib/lang/nl_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/pl_dns_a.lng | 2 +- interface/web/dns/lib/lang/pl_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/pl_dns_cname.lng | 2 +- interface/web/dns/lib/lang/pl_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/pt_dns_a.lng | 2 +- interface/web/dns/lib/lang/pt_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/pt_dns_cname.lng | 2 +- interface/web/dns/lib/lang/pt_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/ro_dns_a.lng | 2 +- interface/web/dns/lib/lang/ro_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ro_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ro_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/ru_dns_a.lng | 2 +- interface/web/dns/lib/lang/ru_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ru_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ru_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/se_dns_a.lng | 2 +- interface/web/dns/lib/lang/se_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/se_dns_cname.lng | 2 +- interface/web/dns/lib/lang/se_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/sk_dns_a.lng | 2 +- interface/web/dns/lib/lang/sk_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/sk_dns_cname.lng | 2 +- interface/web/dns/lib/lang/sk_dns_dname.lng | 17 +++++++++++++++++ interface/web/dns/lib/lang/tr_dns_a.lng | 2 +- interface/web/dns/lib/lang/tr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/tr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/tr_dns_dname.lng | 17 +++++++++++++++++ 100 files changed, 501 insertions(+), 76 deletions(-) create mode 100644 interface/web/dns/lib/lang/ar_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/bg_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/br_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/ca_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/cz_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/de_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/dk_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/el_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/en_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/es_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/fi_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/fr_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/hr_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/hu_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/id_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/it_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/ja_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/nl_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/pl_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/pt_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/ro_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/ru_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/se_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/sk_dns_dname.lng create mode 100644 interface/web/dns/lib/lang/tr_dns_dname.lng diff --git a/interface/web/dns/lib/lang/ar_dns_a.lng b/interface/web/dns/lib/lang/ar_dns_a.lng index 68e40da5e7..c191ff19d3 100644 --- a/interface/web/dns/lib/lang/ar_dns_a.lng +++ b/interface/web/dns/lib/lang/ar_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_aaaa.lng b/interface/web/dns/lib/lang/ar_dns_aaaa.lng index 3d634780f1..03f18f18da 100644 --- a/interface/web/dns/lib/lang/ar_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ar_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_cname.lng b/interface/web/dns/lib/lang/ar_dns_cname.lng index 5f8363aaa8..636c4e7a7a 100644 --- a/interface/web/dns/lib/lang/ar_dns_cname.lng +++ b/interface/web/dns/lib/lang/ar_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_dname.lng b/interface/web/dns/lib/lang/ar_dns_dname.lng new file mode 100644 index 0000000000..382397abf7 --- /dev/null +++ b/interface/web/dns/lib/lang/ar_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Target Hostname'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Target hostname empty'; +$wb['data_error_regex'] = 'Target hostname format invalid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/bg_dns_a.lng b/interface/web/dns/lib/lang/bg_dns_a.lng index e397d9774e..f789a19f47 100644 --- a/interface/web/dns/lib/lang/bg_dns_a.lng +++ b/interface/web/dns/lib/lang/bg_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето за хоÑÑ‚ име е празно.'; $wb['name_error_regex'] = 'Избраното име на хоÑÑ‚ е в грешен формат.'; $wb['data_error_empty'] = 'Полето за IP-адреÑа е празно'; $wb['ip_error_wrong'] = 'Формата на IP-адреÑа е грешен'; -$wb['data_error_duplicate'] = 'Дублиран A-ЗапиÑ'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_aaaa.lng b/interface/web/dns/lib/lang/bg_dns_aaaa.lng index d4efae73db..d2ca072bec 100644 --- a/interface/web/dns/lib/lang/bg_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/bg_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Вие нÑмате право да добавÑте за $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_cname.lng b/interface/web/dns/lib/lang/bg_dns_cname.lng index d7de1f0c01..d9863d10e8 100644 --- a/interface/web/dns/lib/lang/bg_dns_cname.lng +++ b/interface/web/dns/lib/lang/bg_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_dname.lng b/interface/web/dns/lib/lang/bg_dns_dname.lng new file mode 100644 index 0000000000..4705cd73d8 --- /dev/null +++ b/interface/web/dns/lib/lang/bg_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Target Hostname'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['limit_dns_record_txt'] = 'МакÑималниÑÑ‚ брой запиÑи за DNS за твоÑÑ‚ акаунт е доÑтигнат'; +$wb['no_zone_perm'] = 'Вие намате права да добавÑте Ð·Ð°Ð¿Ð¸Ñ Ð² тази DNS зона.'; +$wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Target hostname empty'; +$wb['data_error_regex'] = 'Target hostname format invalid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/br_dns_a.lng b/interface/web/dns/lib/lang/br_dns_a.lng index f96cf551e6..7204ce11ab 100644 --- a/interface/web/dns/lib/lang/br_dns_a.lng +++ b/interface/web/dns/lib/lang/br_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IP está em branco.'; $wb['ip_error_wrong'] = 'Endereço IP inválido.'; -$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng index 2f81a52a0c..5678f2c67f 100644 --- a/interface/web/dns/lib/lang/br_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns ne $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IPv6 está em branco.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'O endereço IPv6 possui formato inválido.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_cname.lng b/interface/web/dns/lib/lang/br_dns_cname.lng index c4fb0df260..e36fb57909 100644 --- a/interface/web/dns/lib/lang/br_dns_cname.lng +++ b/interface/web/dns/lib/lang/br_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'O alvo do host está em branco.'; $wb['data_error_regex'] = 'O alvo do host possui formato inválido.'; -$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_dname.lng b/interface/web/dns/lib/lang/br_dns_dname.lng new file mode 100644 index 0000000000..4a8f98cb02 --- /dev/null +++ b/interface/web/dns/lib/lang/br_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Servidor'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Nome do host'; +$wb['type_txt'] = 'Tipo'; +$wb['data_txt'] = 'Alvo do host'; +$wb['ttl_txt'] = 'TTL'; +$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 dns nesta zona.'; +$wb['name_error_empty'] = 'O nome do host está em branco.'; +$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; +$wb['data_error_empty'] = 'O alvo do host está em branco.'; +$wb['data_error_regex'] = 'O alvo do host possui formato inválido.'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +?> diff --git a/interface/web/dns/lib/lang/ca_dns_a.lng b/interface/web/dns/lib/lang/ca_dns_a.lng index 6b3b31ae4c..e91bff2c73 100644 --- a/interface/web/dns/lib/lang/ca_dns_a.lng +++ b/interface/web/dns/lib/lang/ca_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'L\'adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_aaaa.lng b/interface/web/dns/lib/lang/ca_dns_aaaa.lng index c06b153dc2..94a7deeddb 100644 --- a/interface/web/dns/lib/lang/ca_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ca_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'L\'adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_cname.lng b/interface/web/dns/lib/lang/ca_dns_cname.lng index 3d191f703b..94d523c4e2 100644 --- a/interface/web/dns/lib/lang/ca_dns_cname.lng +++ b/interface/web/dns/lib/lang/ca_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_dname.lng b/interface/web/dns/lib/lang/ca_dns_dname.lng new file mode 100644 index 0000000000..480f1ddd4d --- /dev/null +++ b/interface/web/dns/lib/lang/ca_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Serveur'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Nom d\'hôte'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Nom d\'hôte cible'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Actif'; +$wb['limit_dns_record_txt'] = 'Le nombre maximum d\'enregistrements DNS pour votre compte a été atteint.'; +$wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistrement dans cette zone DNS.'; +$wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; +$wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; +$wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.'; +$wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/cz_dns_a.lng b/interface/web/dns/lib/lang/cz_dns_a.lng index 871f9146d4..cfc3c60854 100644 --- a/interface/web/dns/lib/lang/cz_dns_a.lng +++ b/interface/web/dns/lib/lang/cz_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; -$wb['data_error_duplicate'] = 'Duplikace A záznamu'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['ip_error_wrong'] = 'IP - formát adresy neplatný'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng index 9c59cea715..67fc7c7906 100644 --- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['ip_error_wrong'] = 'IP - formát adresy neplatný'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_cname.lng b/interface/web/dns/lib/lang/cz_dns_cname.lng index 8fed28a5a7..c41b619588 100644 --- a/interface/web/dns/lib/lang/cz_dns_cname.lng +++ b/interface/web/dns/lib/lang/cz_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'CÃlový název hostitele je prázdný'; $wb['data_error_regex'] = 'CÃlový název hostitele má chybný formát'; -$wb['data_error_duplicate'] = 'Duplikace A záznamu nebo CNAME-záznamu'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_dname.lng b/interface/web/dns/lib/lang/cz_dns_dname.lng new file mode 100644 index 0000000000..7003f707c4 --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zóna'; +$wb['name_txt'] = 'Název hostitele'; +$wb['type_txt'] = 'Typ'; +$wb['data_txt'] = 'CÃlový název hostitele'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'AktivnÃ'; +$wb['limit_dns_record_txt'] = 'Byl dosažen maximálnà poÄet DNS záznamů pro Váš úÄet.'; +$wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; +$wb['name_error_empty'] = 'Název hostitele je prázdný.'; +$wb['name_error_regex'] = 'Název hostitele má chybný formát.'; +$wb['data_error_empty'] = 'CÃlový název hostitele je prázdný'; +$wb['data_error_regex'] = 'CÃlový název hostitele má chybný formát'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; +?> diff --git a/interface/web/dns/lib/lang/de_dns_a.lng b/interface/web/dns/lib/lang/de_dns_a.lng index 564a9318de..af10bb1d19 100644 --- a/interface/web/dns/lib/lang/de_dns_a.lng +++ b/interface/web/dns/lib/lang/de_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'IPv4 Adresse ist leer'; $wb['ip_error_wrong'] = 'IPv4 Adressen Format ist ungültig'; -$wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_aaaa.lng b/interface/web/dns/lib/lang/de_dns_aaaa.lng index a225723f89..c54663a94f 100644 --- a/interface/web/dns/lib/lang/de_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/de_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'IPv6 Adresse ist leer'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IPv6 Adressen Format ist ungültig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_cname.lng b/interface/web/dns/lib/lang/de_dns_cname.lng index 6f9b0eecb4..0342276336 100644 --- a/interface/web/dns/lib/lang/de_dns_cname.lng +++ b/interface/web/dns/lib/lang/de_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'Ziel Hostname ist leer'; $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig'; -$wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_dname.lng b/interface/web/dns/lib/lang/de_dns_dname.lng new file mode 100644 index 0000000000..f2154e37ad --- /dev/null +++ b/interface/web/dns/lib/lang/de_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'Typ'; +$wb['data_txt'] = 'Ziel Hostname'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktiv'; +$wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.'; +$wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.'; +$wb['name_error_empty'] = 'Der Hostname ist leer.'; +$wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; +$wb['data_error_empty'] = 'Ziel Hostname ist leer'; +$wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig'; +$wb['data_error_duplicate'] = 'Doppelter A, CNAME oder DNAME Eintrag'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/dk_dns_a.lng b/interface/web/dns/lib/lang/dk_dns_a.lng index b10dae13ac..7506edcef5 100644 --- a/interface/web/dns/lib/lang/dk_dns_a.lng +++ b/interface/web/dns/lib/lang/dk_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'IP-Adressen er tom'; -$wb['data_error_duplicate'] = 'Dupliker A-Record eller CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_aaaa.lng b/interface/web/dns/lib/lang/dk_dns_aaaa.lng index 27a7fae538..107b28be91 100644 --- a/interface/web/dns/lib/lang/dk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/dk_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'IP-Adressen er tom'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_cname.lng b/interface/web/dns/lib/lang/dk_dns_cname.lng index 1957b5f82c..e213d6e3d9 100644 --- a/interface/web/dns/lib/lang/dk_dns_cname.lng +++ b/interface/web/dns/lib/lang/dk_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'MÃ¥l-værtsnavn er tom'; $wb['data_error_regex'] = 'MÃ¥l-værtsnavn format er ugyldigt'; -$wb['data_error_duplicate'] = 'Duplikere A-Record eller CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_dname.lng b/interface/web/dns/lib/lang/dk_dns_dname.lng new file mode 100644 index 0000000000..1815eab77a --- /dev/null +++ b/interface/web/dns/lib/lang/dk_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Værtsnavn'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'MÃ¥l Værtsnavn'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktiv'; +$wb['limit_dns_record_txt'] = 'Max. antal DNS-poster for din konto er nÃ¥et.'; +$wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne DNS zone.'; +$wb['name_error_empty'] = 'Værtsnavnet er tomt.'; +$wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; +$wb['data_error_empty'] = 'MÃ¥l-værtsnavn er tom'; +$wb['data_error_regex'] = 'MÃ¥l-værtsnavn format er ugyldigt'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; +?> diff --git a/interface/web/dns/lib/lang/el_dns_a.lng b/interface/web/dns/lib/lang/el_dns_a.lng index ca5f336d98..6202d2e88b 100644 --- a/interface/web/dns/lib/lang/el_dns_a.lng +++ b/interface/web/dns/lib/lang/el_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'Η διεÏθυνση IP είναι κενή'; $wb['ip_error_wrong'] = 'ΔιεÏθυνση IP με μη ÎγκυÏη μοÏφοποίηση'; -$wb['data_error_duplicate'] = 'Διπλή εγγÏαφή A-Record ή CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_aaaa.lng b/interface/web/dns/lib/lang/el_dns_aaaa.lng index faced402b1..5341e9022d 100644 --- a/interface/web/dns/lib/lang/el_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/el_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Δεν Îχετε δικαίωμα να Ï€ÏοσθÎσε $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'ΔιεÏθυνση IP κενή'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'ΔιεÏθυνση IP με μη ÎγκυÏη μοÏφοποίηση'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_cname.lng b/interface/web/dns/lib/lang/el_dns_cname.lng index 546d16fdae..1d19eb0c23 100644 --- a/interface/web/dns/lib/lang/el_dns_cname.lng +++ b/interface/web/dns/lib/lang/el_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'Το hostname Î ÏοοÏισμός δεν Îχει οÏιστεί'; $wb['data_error_regex'] = 'Hostname Î ÏοοÏισμός με μη ÎγκυÏη μοÏφοποίηση'; -$wb['data_error_duplicate'] = 'ΔιπλοεγγÏαφή A-Record ή CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_dname.lng b/interface/web/dns/lib/lang/el_dns_dname.lng new file mode 100644 index 0000000000..ba6404887a --- /dev/null +++ b/interface/web/dns/lib/lang/el_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Ζώνη'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'Ï„Ïπος'; +$wb['data_txt'] = 'Hostname Î ÏοοÏισμός'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'ΕνεÏγή'; +$wb['limit_dns_record_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των εγγÏαφών DNS για τον λογαÏιασμό σας.'; +$wb['no_zone_perm'] = 'Δεν Îχετε δικαίωμα να Ï€ÏοσθÎσετε εγγÏαφÎÏ‚ σε αυτή τη ζώνη DNS.'; +$wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; +$wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; +$wb['data_error_empty'] = 'Το hostname Î ÏοοÏισμός δεν Îχει οÏιστεί'; +$wb['data_error_regex'] = 'Hostname Î ÏοοÏισμός με μη ÎγκυÏη μοÏφοποίηση'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/en_dns_a.lng b/interface/web/dns/lib/lang/en_dns_a.lng index 510d04f34d..3f9f4aa047 100644 --- a/interface/web/dns/lib/lang/en_dns_a.lng +++ b/interface/web/dns/lib/lang/en_dns_a.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_aaaa.lng b/interface/web/dns/lib/lang/en_dns_aaaa.lng index 1272fb8587..d55ab7ffd3 100644 --- a/interface/web/dns/lib/lang/en_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/en_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DN $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_cname.lng b/interface/web/dns/lib/lang/en_dns_cname.lng index ea67106e7a..7ffb78e0d3 100644 --- a/interface/web/dns/lib/lang/en_dns_cname.lng +++ b/interface/web/dns/lib/lang/en_dns_cname.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'Target hostname empty'; $wb["data_error_regex"] = 'Target hostname format invalid'; -$wb["data_error_duplicate"] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; -?> \ No newline at end of file +?> diff --git a/interface/web/dns/lib/lang/en_dns_dname.lng b/interface/web/dns/lib/lang/en_dns_dname.lng new file mode 100644 index 0000000000..d9b41a012e --- /dev/null +++ b/interface/web/dns/lib/lang/en_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb["server_id_txt"] = 'Server'; +$wb["zone_txt"] = 'Zone'; +$wb["name_txt"] = 'Hostname'; +$wb["type_txt"] = 'type'; +$wb["data_txt"] = 'Target Hostname'; +$wb["ttl_txt"] = 'TTL'; +$wb["active_txt"] = 'Active'; +$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; +$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; +$wb["name_error_empty"] = 'The hostname is empty.'; +$wb["name_error_regex"] = 'The hostname has the wrong format.'; +$wb["data_error_empty"] = 'Target hostname empty'; +$wb["data_error_regex"] = 'Target hostname format invalid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng index f3ea858f1d..0f19854e2d 100644 --- a/interface/web/dns/lib/lang/es_dns_a.lng +++ b/interface/web/dns/lib/lang/es_dns_a.lng @@ -1,6 +1,6 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['data_error_duplicate'] = 'Registro A o registro CNAME duplicado.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['data_error_empty'] = 'Dirección IP vacÃa'; $wb['data_txt'] = 'Dirección IP'; $wb['ip_error_wrong'] = 'Formato inválido de dirección IP'; diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng index 957feabdb5..d9c38070f3 100644 --- a/interface/web/dns/lib/lang/es_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/es_dns_aaaa.lng @@ -1,7 +1,7 @@ <?php $wb['active_txt'] = 'Habilitado'; $wb['data_error_empty'] = 'Dirección IP vacÃa'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['data_txt'] = 'Dirección IPv6'; $wb['ip_error_wrong'] = 'La dirección IP tiene un formato incorrecto'; $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng index 73bfc671a9..cd0ed67c11 100644 --- a/interface/web/dns/lib/lang/es_dns_cname.lng +++ b/interface/web/dns/lib/lang/es_dns_cname.lng @@ -1,6 +1,6 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['data_error_duplicate'] = 'Registro A o registro CNAME duplicado.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['data_error_empty'] = 'El nombre del host de destino está vacÃo.'; $wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.'; $wb['data_txt'] = 'Nombre del host de destino'; diff --git a/interface/web/dns/lib/lang/es_dns_dname.lng b/interface/web/dns/lib/lang/es_dns_dname.lng new file mode 100644 index 0000000000..ffc748f106 --- /dev/null +++ b/interface/web/dns/lib/lang/es_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['active_txt'] = 'Habilitado'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_empty'] = 'El nombre del host de destino está vacÃo.'; +$wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.'; +$wb['data_txt'] = 'Nombre del host de destino'; +$wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; +$wb['name_error_empty'] = 'El nombre del host está vacÃo.'; +$wb['name_error_regex'] = 'El nombre del host tiene un formato incorrecto.'; +$wb['name_txt'] = 'Nombre del host'; +$wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.'; +$wb['server_id_txt'] = 'Servidor'; +$wb['ttl_range_error'] = 'El tiempo mÃn. de TTL es 60 segundos.'; +$wb['ttl_txt'] = 'TTL'; +$wb['type_txt'] = 'tipo'; +$wb['zone_txt'] = 'Zona'; +?> diff --git a/interface/web/dns/lib/lang/fi_dns_a.lng b/interface/web/dns/lib/lang/fi_dns_a.lng index a7cf6efbbb..be6b4cc42a 100644 --- a/interface/web/dns/lib/lang/fi_dns_a.lng +++ b/interface/web/dns/lib/lang/fi_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; $wb['data_error_empty'] = 'IP-osoite tyhjä'; $wb['ip_error_wrong'] = 'IP-osoite on vääränlainen'; -$wb['data_error_duplicate'] = 'A-tietue on jo olemassa'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_aaaa.lng b/interface/web/dns/lib/lang/fi_dns_aaaa.lng index f6f99f324b..3759287206 100644 --- a/interface/web/dns/lib/lang/fi_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fi_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueit $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on väärän muotoinen.'; $wb['data_error_empty'] = 'Tekstikenttä on tyhjä'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Tekstikenttä on vääränlainen'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_cname.lng b/interface/web/dns/lib/lang/fi_dns_cname.lng index 3241e1f780..202949b9f7 100644 --- a/interface/web/dns/lib/lang/fi_dns_cname.lng +++ b/interface/web/dns/lib/lang/fi_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; $wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä'; $wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_dname.lng b/interface/web/dns/lib/lang/fi_dns_dname.lng new file mode 100644 index 0000000000..d7483389d4 --- /dev/null +++ b/interface/web/dns/lib/lang/fi_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Palvelin'; +$wb['zone_txt'] = 'Alue (Zone)'; +$wb['name_txt'] = 'Verkkotunnus'; +$wb['type_txt'] = 'Tyyppi'; +$wb['data_txt'] = 'Kohteen verkkotunnus'; +$wb['ttl_txt'] = 'Elinaika (TTL)'; +$wb['active_txt'] = 'Käytössä'; +$wb['limit_dns_record_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä DNS-tietueita.'; +$wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueita tälle DNS-alueelle.'; +$wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; +$wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; +$wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä'; +$wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/fr_dns_a.lng b/interface/web/dns/lib/lang/fr_dns_a.lng index 381fd623a6..f022f0c873 100644 --- a/interface/web/dns/lib/lang/fr_dns_a.lng +++ b/interface/web/dns/lib/lang/fr_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'L’adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_aaaa.lng b/interface/web/dns/lib/lang/fr_dns_aaaa.lng index 280acdcea4..52e5ef1b33 100644 --- a/interface/web/dns/lib/lang/fr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'L’adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_cname.lng b/interface/web/dns/lib/lang/fr_dns_cname.lng index 15b4144086..8a5840a2bc 100644 --- a/interface/web/dns/lib/lang/fr_dns_cname.lng +++ b/interface/web/dns/lib/lang/fr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d’hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_dname.lng b/interface/web/dns/lib/lang/fr_dns_dname.lng new file mode 100644 index 0000000000..47779eeffe --- /dev/null +++ b/interface/web/dns/lib/lang/fr_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Serveur'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Nom d’hôte'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Nom d’hôte cible'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Actif'; +$wb['limit_dns_record_txt'] = 'Le nombre maximum d’enregistrements DNS pour votre compte a été atteint.'; +$wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistrement dans cette zone DNS.'; +$wb['name_error_empty'] = 'Le nom d’hôte est vide.'; +$wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; +$wb['data_error_empty'] = 'Le nom d’hôte cible est vide.'; +$wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/hr_dns_a.lng b/interface/web/dns/lib/lang/hr_dns_a.lng index a6be0b89fc..b4c83d6431 100644 --- a/interface/web/dns/lib/lang/hr_dns_a.lng +++ b/interface/web/dns/lib/lang/hr_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje IP adresa je prazno'; $wb['ip_error_wrong'] = 'Neispravan format A zapisa'; -$wb['data_error_duplicate'] = 'Već postoji ovaj A ili CNAME zapis'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_aaaa.lng b/interface/web/dns/lib/lang/hr_dns_aaaa.lng index 76fc600703..2e2ee87893 100644 --- a/interface/web/dns/lib/lang/hr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.'; $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje IPv6 adresa je prazno'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Neispravan format IPv6 adrese'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_cname.lng b/interface/web/dns/lib/lang/hr_dns_cname.lng index cb1f5ece00..4e8fad12ba 100644 --- a/interface/web/dns/lib/lang/hr_dns_cname.lng +++ b/interface/web/dns/lib/lang/hr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje odrediÅ¡ni host je prazno'; $wb['data_error_regex'] = 'Neispravan format odrediÅ¡nog host zapisa'; -$wb['data_error_duplicate'] = 'Duplicirani A zapis ili CNAME zapis'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_dname.lng b/interface/web/dns/lib/lang/hr_dns_dname.lng new file mode 100644 index 0000000000..ce334e750e --- /dev/null +++ b/interface/web/dns/lib/lang/hr_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Naziv hosta'; +$wb['type_txt'] = 'Vrsta'; +$wb['data_txt'] = 'OdrediÅ¡ni host'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktivno'; +$wb['limit_dns_record_txt'] = 'IskoriÅ¡ten je maksimalan broj DNS zapisa za vaÅ¡ raÄun.'; +$wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.'; +$wb['name_error_empty'] = 'Naziv hosta nije upisan.'; +$wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; +$wb['data_error_empty'] = 'Polje odrediÅ¡ni host je prazno'; +$wb['data_error_regex'] = 'Neispravan format odrediÅ¡nog host zapisa'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; +?> diff --git a/interface/web/dns/lib/lang/hu_dns_a.lng b/interface/web/dns/lib/lang/hu_dns_a.lng index 4820079b53..9c27b79139 100644 --- a/interface/web/dns/lib/lang/hu_dns_a.lng +++ b/interface/web/dns/lib/lang/hu_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_aaaa.lng b/interface/web/dns/lib/lang/hu_dns_aaaa.lng index 5f261eeb5f..a532c80ca1 100644 --- a/interface/web/dns/lib/lang/hu_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hu_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_cname.lng b/interface/web/dns/lib/lang/hu_dns_cname.lng index 9f45f5279c..36969d9984 100644 --- a/interface/web/dns/lib/lang/hu_dns_cname.lng +++ b/interface/web/dns/lib/lang/hu_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_dname.lng b/interface/web/dns/lib/lang/hu_dns_dname.lng new file mode 100644 index 0000000000..38a6415774 --- /dev/null +++ b/interface/web/dns/lib/lang/hu_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Szerver'; +$wb['zone_txt'] = 'Zóna'; +$wb['name_txt'] = 'Hosztnév'; +$wb['type_txt'] = 'tÃpus'; +$wb['data_txt'] = 'Target Hosztnév'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'AktÃv'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Target hostname empty'; +$wb['data_error_regex'] = 'Target hostname format invalid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/id_dns_a.lng b/interface/web/dns/lib/lang/id_dns_a.lng index e953380090..659091bca6 100644 --- a/interface/web/dns/lib/lang/id_dns_a.lng +++ b/interface/web/dns/lib/lang/id_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Alamat IP kosong'; $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid'; -$wb['data_error_duplicate'] = 'Record-A Ganda'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_aaaa.lng b/interface/web/dns/lib/lang/id_dns_aaaa.lng index 3257ba193f..4b17ef0e85 100644 --- a/interface/web/dns/lib/lang/id_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/id_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Alamat IP kosong'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_cname.lng b/interface/web/dns/lib/lang/id_dns_cname.lng index a12d665652..4151b241db 100644 --- a/interface/web/dns/lib/lang/id_dns_cname.lng +++ b/interface/web/dns/lib/lang/id_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Nama Host Target kosong'; $wb['data_error_regex'] = 'Format Nama Host Target tidak valid'; -$wb['data_error_duplicate'] = 'Record-A atau Record-CNAME Ganda'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_dname.lng b/interface/web/dns/lib/lang/id_dns_dname.lng new file mode 100644 index 0000000000..9413415394 --- /dev/null +++ b/interface/web/dns/lib/lang/id_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Nama Host'; +$wb['type_txt'] = 'Tipe'; +$wb['data_txt'] = 'Nama Host Target'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktif'; +$wb['limit_dns_record_txt'] = 'Jumlah maksimum record DNS untuk akun Anda telah tercapai.'; +$wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS ini.'; +$wb['name_error_empty'] = 'Nama Host kosong.'; +$wb['name_error_regex'] = 'Format Nama Host salah.'; +$wb['data_error_empty'] = 'Nama Host Target kosong'; +$wb['data_error_regex'] = 'Format Nama Host Target tidak valid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/it_dns_a.lng b/interface/web/dns/lib/lang/it_dns_a.lng index 9aa9e1186f..2e79466d7f 100644 --- a/interface/web/dns/lib/lang/it_dns_a.lng +++ b/interface/web/dns/lib/lang/it_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname vuoto.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_aaaa.lng b/interface/web/dns/lib/lang/it_dns_aaaa.lng index e82ada0166..76c540459d 100644 --- a/interface/web/dns/lib/lang/it_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/it_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DN $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Indirizzo Ip vuoto'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_cname.lng b/interface/web/dns/lib/lang/it_dns_cname.lng index 0732cbd72a..76cd9cd0e7 100644 --- a/interface/web/dns/lib/lang/it_dns_cname.lng +++ b/interface/web/dns/lib/lang/it_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Target nome host vuoto'; $wb['data_error_regex'] = 'Target nome host formato errato'; -$wb['data_error_duplicate'] = 'A-Record o CNAME-Record duplicato'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_dname.lng b/interface/web/dns/lib/lang/it_dns_dname.lng new file mode 100644 index 0000000000..6d7d135a01 --- /dev/null +++ b/interface/web/dns/lib/lang/it_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Nome Host'; +$wb['type_txt'] = 'tipo'; +$wb['data_txt'] = 'Target Nome Host'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Attivo'; +$wb['limit_dns_record_txt'] = 'Numero massimo di record DNS raggiunto per il tuo account.'; +$wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DNS.'; +$wb['name_error_empty'] = 'Nome Host vuoto.'; +$wb['name_error_regex'] = 'Formato errato per Nome Host.'; +$wb['data_error_empty'] = 'Target nome host vuoto'; +$wb['data_error_regex'] = 'Target nome host formato errato'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; +?> diff --git a/interface/web/dns/lib/lang/ja_dns_a.lng b/interface/web/dns/lib/lang/ja_dns_a.lng index 890183a927..a59aec7376 100644 --- a/interface/web/dns/lib/lang/ja_dns_a.lng +++ b/interface/web/dns/lib/lang/ja_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'IPアドレスを入力ã—ã¦ãã ã•ã„。'; $wb['ip_error_wrong'] = 'IPアドレスã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; -$wb['data_error_duplicate'] = 'AレコードãŒé‡è¤‡ã—ã¦ã„ã¾ã™ã€‚'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_aaaa.lng b/interface/web/dns/lib/lang/ja_dns_aaaa.lng index 3f10406659..cfc23b426a 100644 --- a/interface/web/dns/lib/lang/ja_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ja_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'ã“ã®DNSゾーンã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹æ¨©é™ãŒ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'IPアドレスを入力ã—ã¦ãã ã•ã„。'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IPアドレスã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_cname.lng b/interface/web/dns/lib/lang/ja_dns_cname.lng index 2e0fd3de7a..b29ead6599 100644 --- a/interface/web/dns/lib/lang/ja_dns_cname.lng +++ b/interface/web/dns/lib/lang/ja_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåを入力ã—ã¦ãã ã•ã„。'; $wb['data_error_regex'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_dname.lng b/interface/web/dns/lib/lang/ja_dns_dname.lng new file mode 100644 index 0000000000..af805c9823 --- /dev/null +++ b/interface/web/dns/lib/lang/ja_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'サーãƒãƒ¼'; +$wb['zone_txt'] = 'ゾーン'; +$wb['name_txt'] = 'ホストå'; +$wb['type_txt'] = '種別'; +$wb['data_txt'] = 'ターゲットホストå'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = '有効'; +$wb['limit_dns_record_txt'] = 'DNSレコードãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚'; +$wb['no_zone_perm'] = 'ã“ã®DNSゾーンã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。'; +$wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; +$wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; +$wb['data_error_empty'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåを入力ã—ã¦ãã ã•ã„。'; +$wb['data_error_regex'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/nl_dns_a.lng b/interface/web/dns/lib/lang/nl_dns_a.lng index b70b5c9c50..45d0501ac9 100644 --- a/interface/web/dns/lib/lang/nl_dns_a.lng +++ b/interface/web/dns/lib/lang/nl_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.'; $wb['data_error_empty'] = 'IP-adres is niet ingvuld'; $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig'; -$wb['data_error_duplicate'] = 'Duplicaat A-Record of CNAME-record'; +$wb['data_error_duplicate'] = 'Duplicaat A, CNAME, of DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_aaaa.lng b/interface/web/dns/lib/lang/nl_dns_aaaa.lng index 139cc71ded..e30766442d 100644 --- a/interface/web/dns/lib/lang/nl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/nl_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan $wb['name_error_empty'] = 'De hostnaam is niet ingvuld'; $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.'; $wb['data_error_empty'] = 'IP-adres is niet ingevuld'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_cname.lng b/interface/web/dns/lib/lang/nl_dns_cname.lng index 00057d3f15..84b904a60e 100644 --- a/interface/web/dns/lib/lang/nl_dns_cname.lng +++ b/interface/web/dns/lib/lang/nl_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; $wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.'; $wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld'; $wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig'; -$wb['data_error_duplicate'] = 'Duplicaat A-record of CNAME-record'; +$wb['data_error_duplicate'] = 'Duplicaat A, CNAME, of DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_dname.lng b/interface/web/dns/lib/lang/nl_dns_dname.lng new file mode 100644 index 0000000000..d5f63bcc13 --- /dev/null +++ b/interface/web/dns/lib/lang/nl_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostnaam'; +$wb['type_txt'] = 'type'; +$wb['data_txt'] = 'Doel Hostnaam'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Actief'; +$wb['limit_dns_record_txt'] = 'Het max. aan DNS records voor uw account is bereikt.'; +$wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan deze DNS zone.'; +$wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; +$wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.'; +$wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld'; +$wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig'; +$wb['data_error_duplicate'] = 'Duplicaat A-record, CNAME-record of DNAME-record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/pl_dns_a.lng b/interface/web/dns/lib/lang/pl_dns_a.lng index 88adb2306e..59ef056e53 100644 --- a/interface/web/dns/lib/lang/pl_dns_a.lng +++ b/interface/web/dns/lib/lang/pl_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Adres IP jest pusty.'; $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.'; -$wb['data_error_duplicate'] = 'Duplikat wpisu A.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_aaaa.lng b/interface/web/dns/lib/lang/pl_dns_aaaa.lng index 86d93fe71f..debb636d7e 100644 --- a/interface/web/dns/lib/lang/pl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pl_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nie masz uprawnieÅ„, aby dodać nowy wpis w tej strefie D $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Adres IP jest pusty.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_cname.lng b/interface/web/dns/lib/lang/pl_dns_cname.lng index 8153741f91..bee2839ae0 100644 --- a/interface/web/dns/lib/lang/pl_dns_cname.lng +++ b/interface/web/dns/lib/lang/pl_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.'; $wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.'; -$wb['data_error_duplicate'] = 'Zdublowany rekord A lub CNAME.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_dname.lng b/interface/web/dns/lib/lang/pl_dns_dname.lng new file mode 100644 index 0000000000..d4fb5ab8c8 --- /dev/null +++ b/interface/web/dns/lib/lang/pl_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Serwer'; +$wb['zone_txt'] = 'Strefa'; +$wb['name_txt'] = 'Nazwa serwera'; +$wb['type_txt'] = 'typ'; +$wb['data_txt'] = 'Docelowa nazwa serwera'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktywne'; +$wb['limit_dns_record_txt'] = 'Maksymalna ilość wpisów DNS dla Twojego konta zostaÅ‚a przekroczona.'; +$wb['no_zone_perm'] = 'Nie masz uprawnieÅ„, aby dodać nowy wpis w tej strefie DNS.'; +$wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; +$wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; +$wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.'; +$wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/pt_dns_a.lng b/interface/web/dns/lib/lang/pt_dns_a.lng index 37e949b431..0051c476bc 100644 --- a/interface/web/dns/lib/lang/pt_dns_a.lng +++ b/interface/web/dns/lib/lang/pt_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname em branco.'; $wb['name_error_regex'] = 'Hostname tem um formato inválido.'; $wb['data_error_empty'] = 'Endereço-IP em branco'; $wb['ip_error_wrong'] = 'Endereço-IP formato inválido'; -$wb['data_error_duplicate'] = 'Registo-A duplicado'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_aaaa.lng b/interface/web/dns/lib/lang/pt_dns_aaaa.lng index 9fc3798dc8..29da278ec4 100644 --- a/interface/web/dns/lib/lang/pt_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pt_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona $wb['name_error_empty'] = 'O Hostname está em branco.'; $wb['name_error_regex'] = 'O Hostname está com formato inválido.'; $wb['data_error_empty'] = 'Endereço-IP em branco'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Endereço-IP com formato inválido'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_cname.lng b/interface/web/dns/lib/lang/pt_dns_cname.lng index 6d2c7fbba4..06782a96c4 100644 --- a/interface/web/dns/lib/lang/pt_dns_cname.lng +++ b/interface/web/dns/lib/lang/pt_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname está em branco.'; $wb['name_error_regex'] = 'O hostname está em um formato inválido.'; $wb['data_error_empty'] = 'Hostname de destino está em branco'; $wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_dname.lng b/interface/web/dns/lib/lang/pt_dns_dname.lng new file mode 100644 index 0000000000..124b9e3000 --- /dev/null +++ b/interface/web/dns/lib/lang/pt_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Servidor'; +$wb['zone_txt'] = 'Zona'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'tipo'; +$wb['data_txt'] = 'Hostname de Destino'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Activo'; +$wb['limit_dns_record_txt'] = 'O número máximo de registos DNS para a conta foi atingido.'; +$wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona DNS.'; +$wb['name_error_empty'] = 'Hostname está em branco.'; +$wb['name_error_regex'] = 'O hostname está em um formato inválido.'; +$wb['data_error_empty'] = 'Hostname de destino está em branco'; +$wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/ro_dns_a.lng b/interface/web/dns/lib/lang/ro_dns_a.lng index b8c2522432..556dbea115 100644 --- a/interface/web/dns/lib/lang/ro_dns_a.lng +++ b/interface/web/dns/lib/lang/ro_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname necompletat'; $wb['name_error_regex'] = 'Hostname format gresit'; $wb['data_error_empty'] = 'IP-Adresa vid'; $wb['ip_error_wrong'] = 'IP-Adresa format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_aaaa.lng b/interface/web/dns/lib/lang/ro_dns_aaaa.lng index 3d634780f1..03f18f18da 100644 --- a/interface/web/dns/lib/lang/ro_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ro_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_cname.lng b/interface/web/dns/lib/lang/ro_dns_cname.lng index a37533fbdc..f023134100 100644 --- a/interface/web/dns/lib/lang/ro_dns_cname.lng +++ b/interface/web/dns/lib/lang/ro_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Rubrica hostname necompletata'; $wb['name_error_regex'] = 'Hostname cu format gresit'; $wb['data_error_empty'] = 'Hostname tinta necompletat'; $wb['data_error_regex'] = 'Hostname tinta cu format gresit'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_dname.lng b/interface/web/dns/lib/lang/ro_dns_dname.lng new file mode 100644 index 0000000000..c76d2587a1 --- /dev/null +++ b/interface/web/dns/lib/lang/ro_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zone'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'tip'; +$wb['data_txt'] = 'Hostname Tinta'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Activ'; +$wb['limit_dns_record_txt'] = 'Numarul maxim de inregistrari DNS a fost atins pe contul dumneavoastra .'; +$wb['no_zone_perm'] = 'NU aveti permisiunea de a adauga inregistrari la aceasta zona DNS '; +$wb['name_error_empty'] = 'Rubrica hostname necompletata'; +$wb['name_error_regex'] = 'Hostname cu format gresit'; +$wb['data_error_empty'] = 'Hostname tinta necompletat'; +$wb['data_error_regex'] = 'Hostname tinta cu format gresit'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/ru_dns_a.lng b/interface/web/dns/lib/lang/ru_dns_a.lng index 0af3014657..2a55aa4d64 100644 --- a/interface/web/dns/lib/lang/ru_dns_a.lng +++ b/interface/web/dns/lib/lang/ru_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; $wb['data_error_empty'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð¿ÑƒÑтой'; $wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; -$wb['data_error_duplicate'] = 'Дубликат запиÑи'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_aaaa.lng b/interface/web/dns/lib/lang/ru_dns_aaaa.lng index e8a02443d3..a1b63edf53 100644 --- a/interface/web/dns/lib/lang/ru_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ru_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту за $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ðеправильный формат имени хоÑта.'; $wb['data_error_empty'] = 'ПуÑтой IP-адреÑ'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_cname.lng b/interface/web/dns/lib/lang/ru_dns_cname.lng index e7a0abcf3f..cb20700fe6 100644 --- a/interface/web/dns/lib/lang/ru_dns_cname.lng +++ b/interface/web/dns/lib/lang/ru_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; $wb['data_error_empty'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° пуÑтое'; $wb['data_error_regex'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат'; -$wb['data_error_duplicate'] = 'Дубликат запиÑи'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_dname.lng b/interface/web/dns/lib/lang/ru_dns_dname.lng new file mode 100644 index 0000000000..8fbddd6799 --- /dev/null +++ b/interface/web/dns/lib/lang/ru_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Сервер'; +$wb['zone_txt'] = 'Зона'; +$wb['name_txt'] = 'ИмÑ'; +$wb['type_txt'] = 'Тип'; +$wb['data_txt'] = 'Ð˜Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ хоÑта'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Ðктивно'; +$wb['limit_dns_record_txt'] = 'МакÑимальное чиÑло DNS-запиÑей Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи доÑтигнуто.'; +$wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту запиÑÑŒ.'; +$wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; +$wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; +$wb['data_error_empty'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° пуÑтое'; +$wb['data_error_regex'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; +?> diff --git a/interface/web/dns/lib/lang/se_dns_a.lng b/interface/web/dns/lib/lang/se_dns_a.lng index 68e40da5e7..c191ff19d3 100644 --- a/interface/web/dns/lib/lang/se_dns_a.lng +++ b/interface/web/dns/lib/lang/se_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_aaaa.lng b/interface/web/dns/lib/lang/se_dns_aaaa.lng index 3d634780f1..03f18f18da 100644 --- a/interface/web/dns/lib/lang/se_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/se_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_cname.lng b/interface/web/dns/lib/lang/se_dns_cname.lng index b7ceb5d9c9..6530e927f6 100644 --- a/interface/web/dns/lib/lang/se_dns_cname.lng +++ b/interface/web/dns/lib/lang/se_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_dname.lng b/interface/web/dns/lib/lang/se_dns_dname.lng new file mode 100644 index 0000000000..0d42cac595 --- /dev/null +++ b/interface/web/dns/lib/lang/se_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zon'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'typ'; +$wb['data_txt'] = 'Target Hostname'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Aktiv'; +$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; +$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; +$wb['name_error_empty'] = 'The hostname is empty.'; +$wb['name_error_regex'] = 'The hostname has the wrong format.'; +$wb['data_error_empty'] = 'Target hostname empty'; +$wb['data_error_regex'] = 'Target hostname format invalid'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/sk_dns_a.lng b/interface/web/dns/lib/lang/sk_dns_a.lng index d1fff2cdea..3f048c2857 100644 --- a/interface/web/dns/lib/lang/sk_dns_a.lng +++ b/interface/web/dns/lib/lang/sk_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'IP Adresa je prázdna'; $wb['ip_error_wrong'] = 'IP Adresa má zlý formát.'; -$wb['data_error_duplicate'] = 'Duplikátny A-záznam'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_aaaa.lng b/interface/web/dns/lib/lang/sk_dns_aaaa.lng index 246ac1dd23..f719fe6bc2 100644 --- a/interface/web/dns/lib/lang/sk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/sk_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnenie PridaÅ¥ záznam do tejto zóny DNS.'; $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'IP-Adresa prázdna'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP-Adresa má zlý formát'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_cname.lng b/interface/web/dns/lib/lang/sk_dns_cname.lng index 1f415fac3b..a6a8685c8f 100644 --- a/interface/web/dns/lib/lang/sk_dns_cname.lng +++ b/interface/web/dns/lib/lang/sk_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'Cieľový hostname je prázdny'; $wb['data_error_regex'] = 'Target hostname má zlý format'; -$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_dname.lng b/interface/web/dns/lib/lang/sk_dns_dname.lng new file mode 100644 index 0000000000..c155285234 --- /dev/null +++ b/interface/web/dns/lib/lang/sk_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Server'; +$wb['zone_txt'] = 'Zóna'; +$wb['name_txt'] = 'Hostname'; +$wb['type_txt'] = 'typ'; +$wb['data_txt'] = 'Cieľový Hostname'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'AktivovaÅ¥'; +$wb['limit_dns_record_txt'] = 'Max. poÄet záznamov DNS pre váš úÄet je dosiahnutý.'; +$wb['no_zone_perm'] = 'Nemáte oprávnenie PridaÅ¥ záznam do tejto zóny DNS.'; +$wb['name_error_empty'] = 'Hostname je prázdny.'; +$wb['name_error_regex'] = 'Hostname má zlý formát.'; +$wb['data_error_empty'] = 'Cieľový hostname je prázdny'; +$wb['data_error_regex'] = 'Target hostname má zlý format'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +?> diff --git a/interface/web/dns/lib/lang/tr_dns_a.lng b/interface/web/dns/lib/lang/tr_dns_a.lng index 905ff04744..34eba9c0b5 100644 --- a/interface/web/dns/lib/lang/tr_dns_a.lng +++ b/interface/web/dns/lib/lang/tr_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; -$wb['data_error_duplicate'] = 'Bu A DNS kaydı zaten var'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; $wb['ip_error_wrong'] = 'IP adresi biçimi geçersiz'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng index d75ff802bb..80a4c64d51 100644 --- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; -$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; $wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_cname.lng b/interface/web/dns/lib/lang/tr_dns_cname.lng index fa9a497e12..008e4962eb 100644 --- a/interface/web/dns/lib/lang/tr_dns_cname.lng +++ b/interface/web/dns/lib/lang/tr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; $wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz'; -$wb['data_error_duplicate'] = 'Çift A ya da CNAME kaydı var.'; +$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_dname.lng b/interface/web/dns/lib/lang/tr_dns_dname.lng new file mode 100644 index 0000000000..cc8ce3005c --- /dev/null +++ b/interface/web/dns/lib/lang/tr_dns_dname.lng @@ -0,0 +1,17 @@ +<?php +$wb['server_id_txt'] = 'Sunucu'; +$wb['zone_txt'] = 'Bölge'; +$wb['name_txt'] = 'Sunucu Adı'; +$wb['type_txt'] = 'Tür'; +$wb['data_txt'] = 'Hedef Sunucu Adı'; +$wb['ttl_txt'] = 'TTL Süresi'; +$wb['active_txt'] = 'Etkin'; +$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; +$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; +$wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; +$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; +$wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; +$wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +?> -- GitLab From 59f88481a0686f1c4b0299edc795dc48baa0ecbb Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 15:08:43 +0200 Subject: [PATCH 395/571] Add DNAME record (#1848) --- .../sql/incremental/upd_dev_collection.sql | 4 +- install/sql/ispconfig3.sql | 2 +- interface/lib/classes/remote.d/dns.inc.php | 22 +++ interface/web/dns/dns_a_edit.php | 2 +- interface/web/dns/dns_aaaa_edit.php | 2 +- interface/web/dns/dns_cname_edit.php | 2 +- interface/web/dns/dns_dname_edit.php | 60 ++++++ interface/web/dns/form/dns_dname.tform.php | 178 ++++++++++++++++++ interface/web/dns/lib/remote.conf.php | 1 + interface/web/dns/list/dns_a.list.php | 2 +- interface/web/dns/templates/dns_a_list.htm | 1 + .../web/dns/templates/dns_dname_edit.htm | 25 +++ server/conf/bind_pri.domain.master | 3 + 13 files changed, 297 insertions(+), 7 deletions(-) create mode 100644 interface/web/dns/dns_dname_edit.php create mode 100644 interface/web/dns/form/dns_dname.tform.php create mode 100644 interface/web/dns/templates/dns_dname_edit.htm diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 519dda220f..8e924a62b0 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -33,5 +33,5 @@ ALTER TABLE `mail_user` ADD `disablequota-status` ENUM('n','y') CHARACTER SET ut -- add disableindexer-worker for solr search ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disablequota-status`; --- add SSHFP record -ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME', 'CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; +-- add SSHFP and DNAME record +ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index ef76a370d4..c54f0ac345 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -488,7 +488,7 @@ CREATE TABLE `dns_rr` ( `server_id` int(11) NOT NULL default '1', `zone` int(11) unsigned NOT NULL DEFAULT '0', `name` varchar(255) NOT NULL DEFAULT '', - `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') default NULL, + `type` enum('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') default NULL, `data` TEXT NOT NULL, `aux` int(11) unsigned NOT NULL default '0', `ttl` int(11) unsigned NOT NULL default '3600', diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 817953a5c7..4bf6906147 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -472,6 +472,28 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- + //* Get record details + public function dns_cname_get($session_id, $primary_id) { + return $this->dns_rr_get($session_id, $primary_id, 'DNAME'); + } + + //* Add a record + public function dns_dname_add($session_id, $client_id, $params, $update_serial=false) { + return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'DNAME'); + } + + //* Update a record + public function dns_dname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) { + return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'DNAME'); + } + + //* Delete a record + public function dns_dname_delete($session_id, $primary_id, $update_serial=false) { + return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'DNAME'); + } + + // ---------------------------------------------------------------------------------------------------------------- + //* Get record details public function dns_hinfo_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'HINFO'); diff --git a/interface/web/dns/dns_a_edit.php b/interface/web/dns/dns_a_edit.php index 595ebcc92c..19cb7d1c01 100644 --- a/interface/web/dns/dns_a_edit.php +++ b/interface/web/dns/dns_a_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/dns_aaaa_edit.php b/interface/web/dns/dns_aaaa_edit.php index 780fbcc80e..7d6972854f 100644 --- a/interface/web/dns/dns_aaaa_edit.php +++ b/interface/web/dns/dns_aaaa_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'AAAA' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'AAAA' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/dns_cname_edit.php b/interface/web/dns/dns_cname_edit.php index 1f17169e60..4013b72ea8 100644 --- a/interface/web/dns/dns_cname_edit.php +++ b/interface/web/dns/dns_cname_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/dns_dname_edit.php b/interface/web/dns/dns_dname_edit.php new file mode 100644 index 0000000000..c33c0cce71 --- /dev/null +++ b/interface/web/dns/dns_dname_edit.php @@ -0,0 +1,60 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +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. +*/ + +/****************************************** +* Begin Form configuration +******************************************/ + +$tform_def_file = "form/dns_dname.tform.php"; + +/****************************************** +* End Form configuration +******************************************/ + +require_once '../../lib/config.inc.php'; +require_once '../../lib/app.inc.php'; +require_once './dns_edit_base.php'; + +// Loading classes +class page_action extends dns_page_action { + + protected function checkDuplicate() { + global $app; + //* Check for duplicates where IP and hostname are the same + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + if($tmp['number'] > 0) return true; + return false; + } +} + +$page = new page_action; +$page->onLoad(); + +?> diff --git a/interface/web/dns/form/dns_dname.tform.php b/interface/web/dns/form/dns_dname.tform.php new file mode 100644 index 0000000000..c78f2dcae0 --- /dev/null +++ b/interface/web/dns/form/dns_dname.tform.php @@ -0,0 +1,178 @@ +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ +global $app; + +$form["title"] = "DNS DNAME"; +$form["description"] = ""; +$form["name"] = "dns_dname"; +$form["action"] = "dns_dname_edit.php"; +$form["db_table"] = "dns_rr"; +$form["db_table_idx"] = "id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "dns"; +$form["list_default"] = "dns_a_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$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 + +$form["tabs"]['dns'] = array ( + 'title' => "DNS DNAME", + 'width' => 100, + 'template' => "templates/dns_dname_edit.htm", + 'fields' => array ( + //################################# + // Begin Datatable fields + //################################# + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'zone' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => @$app->functions->intval($_REQUEST["zone"]), + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'name' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER') + ), + 'validators' => array ( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\*\_]{0,255}$/', + 'errmsg'=> 'name_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'DNAME', + 'value' => '', + 'width' => '5', + 'maxlength' => '5' + ), + 'data' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'filters' => array( 0 => array( 'event' => 'SAVE', + 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', + 'type' => 'TOLOWER') + ), + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'data_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_]{1,255}$/', + 'errmsg'=> 'data_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + /* + 'aux' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '0', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + */ + 'ttl' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'RANGE', + 'range' => '60:', + 'errmsg'=> 'ttl_range_error'), + ), + 'default' => '3600', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'active' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'Y', + 'value' => array(0 => 'N', 1 => 'Y') + ), + 'stamp' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'serial' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + //################################# + // END Datatable fields + //################################# + ) +); + + + +?> diff --git a/interface/web/dns/lib/remote.conf.php b/interface/web/dns/lib/remote.conf.php index c87296a8c9..fb52f8973e 100644 --- a/interface/web/dns/lib/remote.conf.php +++ b/interface/web/dns/lib/remote.conf.php @@ -6,6 +6,7 @@ $function_list['dns_aaaa_get,dns_aaaa_add,dns_aaaa_update,dns_aaaa_delete'] = 'D $function_list['dns_alias_get,dns_alias_add,dns_alias_update,dns_alias_delete'] = 'DNS alias functions'; $function_list['dns_caa_get,dns_caa_add,dns_caa_update,dns_caa_delete'] = 'DNS caa functions'; $function_list['dns_cname_get,dns_cname_add,dns_cname_update,dns_cname_delete'] = 'DNS cname functions'; +$function_list['dns_dname_get,dns_dname_add,dns_dname_update,dns_dname_delete'] = 'DNS dname functions'; $function_list['dns_ds_get,dns_ds_add,dns_ds_update,dns_ds_delete'] = 'DNS ds functions'; $function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions'; $function_list['dns_loc_get,dns_loc_add,dns_loc_update,dns_loc_delete'] = 'DNS loc functions'; diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php index 007f76dfb3..169ec4af06 100644 --- a/interface/web/dns/list/dns_a.list.php +++ b/interface/web/dns/list/dns_a.list.php @@ -132,7 +132,7 @@ $liste["item"][] = array( 'field' => "type", 'prefix' => "", 'suffix' => "", 'width' => "", - 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'SSHFP'=>'SSHFP', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); + 'value' => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DNAME'=>'DNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'SSHFP'=>'SSHFP', 'TLSA'=>'TLSA', 'TXT'=>'TXT')); ?> diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm index 46fb103b7d..da8a8aaf06 100644 --- a/interface/web/dns/templates/dns_a_list.htm +++ b/interface/web/dns/templates/dns_a_list.htm @@ -22,6 +22,7 @@ <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_alias_edit.php?zone={tmpl_var name='parent_id'}">ALIAS</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_caa_edit.php?zone={tmpl_var name='parent_id'}">CAA</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_cname_edit.php?zone={tmpl_var name='parent_id'}">CNAME</button> + <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dname_edit.php?zone={tmpl_var name='parent_id'}">DNAME</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dkim_edit.php?zone={tmpl_var name='parent_id'}">DKIM</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_ds_edit.php?zone={tmpl_var name='parent_id'}">DS</button> <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dmarc_edit.php?zone={tmpl_var name='parent_id'}">DMARC</button> diff --git a/interface/web/dns/templates/dns_dname_edit.htm b/interface/web/dns/templates/dns_dname_edit.htm new file mode 100644 index 0000000000..32a1a396dd --- /dev/null +++ b/interface/web/dns/templates/dns_dname_edit.htm @@ -0,0 +1,25 @@ +<div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> + <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> +<div class="form-group"> + <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label> + <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" class="form-control" /></div></div> +<div class="form-group"> + <label for="ttl" class="col-sm-3 control-label">{tmpl_var name='ttl_txt'}</label> + <div class="col-sm-9"><input type="text" name="ttl" id="ttl" value="{tmpl_var name='ttl'}" class="form-control" /></div></div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='active'} + </div> +</div> + + +<input type="hidden" name="id" value="{tmpl_var name='id'}"> +<input type="hidden" name="zone" value="{tmpl_var name='zone'}"> +<input type="hidden" name="type" value="{tmpl_var name='type'}"> + +<div class="clear"><div class="right"> +<button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_dname_edit.php">{tmpl_var name='btn_save_txt'}</button> +<button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> +</div></div> diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master index 9635e445f7..e5af0ca311 100644 --- a/server/conf/bind_pri.domain.master +++ b/server/conf/bind_pri.domain.master @@ -26,6 +26,9 @@ $TTL {tmpl_var name='ttl'} <tmpl_if name="type" op='==' value='CNAME'> {tmpl_var name='name'} {tmpl_var name='ttl'} CNAME {tmpl_var name='data'} </tmpl_if> +<tmpl_if name="type" op='==' value='DNAME'> +{tmpl_var name='name'} {tmpl_var name='ttl'} DNAME {tmpl_var name='data'} +</tmpl_if> <tmpl_if name="type" op='==' value='DS'> {tmpl_var name='name'} {tmpl_var name='ttl'} DS {tmpl_var name='data'} </tmpl_if> -- GitLab From 6f7cff40f73ff9c59b78ca6a6ea3a0f98d674b3e Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 17:08:25 +0200 Subject: [PATCH 396/571] Add get template function (#3635) --- interface/lib/classes/remote.d/dns.inc.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 4bf6906147..9b5e6b74ad 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -736,6 +736,24 @@ class remoting_dns extends remoting { + //* Get All DNS Zones Templates by etruel + public function dns_templatezone_get_all($session_id) { + global $app, $conf; + if(!$this->checkPerm($session_id, 'dns_templatezone_add')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $sql ="SELECT * FROM dns_template"; + $result = $app->db->queryAllRecords($sql); + if(isset($result)) { + return $result; + } + else { + this->server->fault('template_id_error', 'There is no DNS templates.'); + return false; + } + } + /** * Get all dns records for a zone * @param int session id -- GitLab From 52034380b7374d0972c0323444c74ad25de3d9fe Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 20:12:14 +0200 Subject: [PATCH 397/571] Fix column amount (#5637) --- interface/web/dns/templates/dns_slave_list.htm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm index 799f14ba28..e59470a191 100644 --- a/interface/web/dns/templates/dns_slave_list.htm +++ b/interface/web/dns/templates/dns_slave_list.htm @@ -21,12 +21,12 @@ </div> </tmpl_if> <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - + <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_slave_edit.php">{tmpl_var name="add_new_record_txt"}</button> - - - + + + <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> <div class="table-wrapper marginTop15"> <table class="table"> @@ -62,16 +62,14 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td colspan="6"><tmpl_var name="paging"></td> + <td colspan="4"><tmpl_var name="paging"></td> </tr> </tfoot> </table> </div> - - \ No newline at end of file -- GitLab From 269542cada42933dc374a6ee1baa175bf7d5abf2 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 21:46:21 +0200 Subject: [PATCH 398/571] Fix records page width (#5580) --- .../web/themes/default/assets/stylesheets/ispconfig.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index fb1c8e8d18..534d2390f8 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -1,5 +1,6 @@ body { - overflow-y: scroll; } + overflow-y: scroll; + overflow-x: hidden; } .left { float: left; } @@ -421,7 +422,7 @@ ul.gs-resultbox li.gs-cheader p.gs-cheader-limit { ul.df-resultbox li.df-cdata img, ul.gs-resultbox li.gs-cdata img { margin-right: 12px; } - + ul.df-resultbox li.df-cdata p span.df-cdata-title, ul.gs-resultbox li.gs-cdata p span.gs-cdata-title { font-weight: bold; } @@ -798,4 +799,3 @@ span.notification_text { #apache_directives, #nginx_directives, #proxy_directives { font-family: Consolas, "Courier New", Courier, monospace; } - -- GitLab From 2e51c20a32cece66061ac3eaa060593b485a332e Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 14 Jun 2020 22:21:23 +0200 Subject: [PATCH 399/571] Fix checkbox (#4592) --- interface/web/dns/templates/dns_dmarc_edit.htm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm index 668b29f8df..4e966d36ed 100644 --- a/interface/web/dns/templates/dns_dmarc_edit.htm +++ b/interface/web/dns/templates/dns_dmarc_edit.htm @@ -129,7 +129,7 @@ <select name="dmarc_sp" id="dmarc_sp" class="form-control">{tmpl_var name='dmarc_sp'}</select> </div> </div> - + <div class="form-group"> <label for="ttl" class="col-sm-2 control-label">{tmpl_var name='ttl_txt'}</label> <div class="col-sm-3"> @@ -140,7 +140,7 @@ <div class="form-group"> <label class="col-sm-2 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-3"> - {tmpl_var name='active'} + <input type="checkbox" value="1" id="active" name="active" {tmpl_var name='active'} /> </div> </div> @@ -149,9 +149,8 @@ <input type="hidden" name="type" value="{tmpl_var name='type'}"> <input type="hidden" name="name" value="{tmpl_var name='name'}"> </div> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_dmarc_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> </div></div> - -- GitLab From a193d8ea8f047322606608499d8b06f90cc18516 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 00:05:23 +0200 Subject: [PATCH 400/571] Add read only serial (#2732) --- interface/web/dns/templates/dns_soa_edit.htm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index ce8154c857..c34e8a3416 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -119,29 +119,33 @@ <label for="update_acl" class="col-sm-3 control-label">{tmpl_var name='update_acl_txt'}</label> <div class="col-sm-9"><input type="text" name="update_acl" id="update_acl" value="{tmpl_var name='update_acl'}" class="form-control" /></div></div> </tmpl_if> + <div class="form-group"> + <label for="serial" class="col-sm-3 control-label">{tmpl_var name='serial_txt'}</label> + <div class="col-sm-9"><textarea readonly="true" rows="1" id="serial" name="serial" class="form-control">{tmpl_var name='serial'}</textarea></div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> <div class="col-sm-9"> {tmpl_var name='active'} </div> </div> - + <tmpl_if name="show_dnssec"> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='dnssec_wanted_txt'}</label> <div class="col-sm-9"> {tmpl_var name='dnssec_wanted'}<br /><small>({tmpl_var name='dnssec_wanted_info'})</small> - </div> + </div> </div> <div class="form-group"> <label for="update_acl" class="col-sm-3 control-label">{tmpl_var name='dnssec_info_txt'}</label> <div class="col-sm-9"><textarea readonly="true" rows="5" id="dnssec_info" name="dnssec_info" class="form-control">{tmpl_var name='dnssec_info'}</textarea></div> </div> -</tmpl_if> +</tmpl_if> <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input name="serial" type="hidden" value="{tmpl_var name='serial'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_soa_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_list.php">{tmpl_var name='btn_cancel_txt'}</button> -- GitLab From 32795453d002b4bf20f1d8a60f8702dc3525bd29 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 13:05:11 +0200 Subject: [PATCH 401/571] Add empty option for domain module (#4305) --- interface/web/dns/dns_slave_edit.php | 2 +- interface/web/dns/dns_soa_edit.php | 2 +- interface/web/dns/dns_wizard.php | 2 +- .../web/mail/mail_domain_catchall_edit.php | 2 +- interface/web/mail/mail_domain_edit.php | 2 +- interface/web/mail/mail_mailinglist_edit.php | 2 +- interface/web/mail/xmpp_domain_edit.php | 2 +- interface/web/sites/web_childdomain_edit.php | 2 +- interface/web/sites/web_vhost_domain_edit.php | 92 +++++++++---------- 9 files changed, 54 insertions(+), 54 deletions(-) diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php index 117b101b87..020a044593 100644 --- a/interface/web/dns/dns_slave_edit.php +++ b/interface/web/dns/dns_slave_edit.php @@ -124,7 +124,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains("dns_slave", $this->dataRecord["origin"]); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ foreach( $domains as $domain) { diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php index 9b36daee15..ec5ba67c79 100644 --- a/interface/web/dns/dns_soa_edit.php +++ b/interface/web/dns/dns_soa_edit.php @@ -192,7 +192,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains("dns_soa", $this->dataRecord["origin"]); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ foreach( $domains as $domain) { diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php index 17d767550c..a02ee0a80f 100644 --- a/interface/web/dns/dns_wizard.php +++ b/interface/web/dns/dns_wizard.php @@ -197,7 +197,7 @@ if ($domains_settings['use_domain_module'] == 'y') { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains("dns_soa", 'domain'); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ foreach( $domains as $domain) { diff --git a/interface/web/mail/mail_domain_catchall_edit.php b/interface/web/mail/mail_domain_catchall_edit.php index 4ef18d45e7..1f37164224 100644 --- a/interface/web/mail/mail_domain_catchall_edit.php +++ b/interface/web/mail/mail_domain_catchall_edit.php @@ -77,7 +77,7 @@ class page_action extends tform_actions { // Getting Domains of the user $sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r'); $domains = $app->db->queryAllRecords($sql); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains)) { foreach( $domains as $domain) { $domain['domain'] = $app->functions->idn_decode($domain['domain']); diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 28d4f40917..51d55ef2de 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -159,7 +159,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains("mail_domain", $this->dataRecord["domain"]); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ foreach( $domains as $domain) { diff --git a/interface/web/mail/mail_mailinglist_edit.php b/interface/web/mail/mail_mailinglist_edit.php index 57d9c77f2e..913611323d 100644 --- a/interface/web/mail/mail_mailinglist_edit.php +++ b/interface/web/mail/mail_mailinglist_edit.php @@ -112,7 +112,7 @@ 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'; $domains = $app->db->queryAllRecords($sql); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains)) { foreach( $domains as $domain) { $selected = ($domain["domain"] == $this->dataRecord["domain"])?'SELECTED':''; diff --git a/interface/web/mail/xmpp_domain_edit.php b/interface/web/mail/xmpp_domain_edit.php index a89d27c452..500757c159 100644 --- a/interface/web/mail/xmpp_domain_edit.php +++ b/interface/web/mail/xmpp_domain_edit.php @@ -182,7 +182,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains("xmpp_domain", $this->dataRecord["domain"]); - $domain_select = ''; + $domain_select = "<option value=''></option>"; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ foreach( $domains as $domain) { diff --git a/interface/web/sites/web_childdomain_edit.php b/interface/web/sites/web_childdomain_edit.php index 2da58a4661..019057b3be 100644 --- a/interface/web/sites/web_childdomain_edit.php +++ b/interface/web/sites/web_childdomain_edit.php @@ -106,7 +106,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain"); - $domain_select = ''; + $domain_select = "<option value=''></option>"; $selected_domain = ''; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 81415f194a..82da18ae1e 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -79,7 +79,7 @@ class page_action extends tform_actions { $_SESSION['s']['var']['vhostdomain_type'] = $show_type; $this->_vhostdomain_type = $show_type; - + parent::onLoad(); } @@ -143,7 +143,7 @@ class page_action extends tform_actions { $read_limits = array('limit_cgi', 'limit_ssi', 'limit_perl', 'limit_ruby', 'limit_python', 'force_suexec', 'limit_hterror', 'limit_wildcard', 'limit_ssl', 'limit_ssl_letsencrypt', 'limit_directive_snippets'); if($this->_vhostdomain_type != 'domain') $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ?", @$this->dataRecord["parent_domain_id"]); - + $is_admin = false; //* Client: If the logged in user is not admin and has no sub clients (no reseller) @@ -164,7 +164,7 @@ class page_action extends tform_actions { $client['web_servers_ids'][] = $this->dataRecord['server_id']; $client['web_servers_ids'] = array_unique($client['web_servers_ids']); } - + $only_one_server = count($client['web_servers_ids']) === 1; $app->tpl->setVar('only_one_server', $only_one_server); @@ -195,7 +195,7 @@ class page_action extends tform_actions { } else { $server_id = (isset($web_servers[0])) ? intval($web_servers[0]['server_id']) : 0; } - + if($app->functions->intval($this->dataRecord["server_id"]) > 0) { // check if server is in client's servers or add it. $chk_sid = explode(',', $client['web_servers']); @@ -204,7 +204,7 @@ class page_action extends tform_actions { $client['web_servers'] .= $app->functions->intval($this->dataRecord["server_id"]); } } - + //* Fill the IPv4 select field with the IP addresses that are allowed for this client on the current server $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; $ips = $app->db->queryAllRecords($sql, $server_id); @@ -312,7 +312,7 @@ class page_action extends tform_actions { $app->tpl->setVar("server_id", $options_web_servers); unset($options_web_servers); - + if($this->id > 0) { if(!isset($this->dataRecord["server_id"])){ $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ?", $this->id); @@ -352,7 +352,7 @@ class page_action extends tform_actions { $client['web_servers'] .= $app->functions->intval($this->dataRecord["server_id"]); } } - + //* Fill the IPv4 select field with the IP addresses that are allowed for this client $sql = "SELECT ip_address FROM server_ip WHERE server_id = ? AND ip_type = 'IPv4' AND virtualhost = 'y' AND (client_id = 0 OR client_id=?)"; $ips = $app->db->queryAllRecords($sql, $server_id, $_SESSION['s']['user']['client_id']); @@ -438,7 +438,7 @@ class page_action extends tform_actions { } $php_directive_snippets_txt .= '<br><br>'; } - + $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){ $php_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -461,7 +461,7 @@ class page_action extends tform_actions { } $apache_directive_snippets_txt .= '<br><br>'; } - + $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){ $apache_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -485,7 +485,7 @@ class page_action extends tform_actions { } $nginx_directive_snippets_txt .= '<br><br>'; } - + $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){ $nginx_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -508,7 +508,7 @@ class page_action extends tform_actions { } $proxy_directive_snippets_txt .= '<br><br>'; } - + $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ $proxy_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -523,7 +523,7 @@ class page_action extends tform_actions { //* Admin: If the logged in user is admin } else { - + $is_admin = true; if($this->_vhostdomain_type == 'domain') { @@ -657,7 +657,7 @@ class page_action extends tform_actions { } $php_directive_snippets_txt .= '<br><br>'; } - + $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){ $php_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -680,7 +680,7 @@ class page_action extends tform_actions { } $apache_directive_snippets_txt .= '<br><br>'; } - + $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){ $apache_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -704,7 +704,7 @@ class page_action extends tform_actions { } $nginx_directive_snippets_txt .= '<br><br>'; } - + $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){ $nginx_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -727,7 +727,7 @@ class page_action extends tform_actions { } $proxy_directive_snippets_txt .= '<br><br>'; } - + $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y' AND master_directive_snippets_id = 0 ORDER BY name"); if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ $proxy_directive_snippets_txt .= $app->tform->wordbook["select_directive_snippet_txt"].'<br>'; @@ -789,7 +789,7 @@ class page_action extends tform_actions { * The domain-module is in use. */ $domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain"); - $domain_select = ''; + $domain_select = "<option value=''></option>"; $selected_domain = ''; if(is_array($domains) && sizeof($domains) > 0) { /* We have domains in the list, so create the drop-down-list */ @@ -815,16 +815,16 @@ class page_action extends tform_actions { $domain_select .= "<option value=''></option>\r\n"; } $app->tpl->setVar("domain_option", $domain_select); - + // remove the parent domain part of the domain name before we show it in the text field. if($this->dataRecord["type"] == 'vhostsubdomain') $this->dataRecord["domain"] = str_replace('.'.$selected_domain, '', $this->dataRecord["domain"]); - + } else { // remove the parent domain part of the domain name before we show it in the text field. 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"], true); // check for configuration errors in sys_datalog @@ -837,13 +837,13 @@ class page_action extends tform_actions { } } } - + $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) { $tmp_web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", intval($this->id)); $tmp_sys_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE groupid = ?", intval($tmp_web['sys_groupid'])); @@ -856,11 +856,11 @@ class page_action extends tform_actions { if($sys_config['use_combobox'] == 'y') { $app->tpl->setVar('use_combobox', 'y'); } - + $directive_snippets_id_select = '<option value="0"'.($this->dataRecord['directive_snippets_id'] == 0? ' selected="selected"' : '').'>-</option>'; $server_type = $app->getconf->get_server_config($server_id, 'web'); $server_type = $server_type['server_type']; - + $m_directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id > 0 AND type = ? ORDER BY name ASC", $server_type); if(is_array($m_directive_snippets) && !empty($m_directive_snippets)){ $directive_snippets_id_select .= '<optgroup label="'.$app->tform->wordbook["select_master_directive_snippet_txt"].'">'; @@ -883,7 +883,7 @@ class page_action extends tform_actions { $directive_snippets_id_select .= '</optgroup>'; } $app->tpl->setVar("directive_snippets_id", $directive_snippets_id_select); - + // folder_directive_snippets if(isset($_POST['folder_directive_snippets']) && !isset($this->dataRecord['folder_directive_snippets'])){ $this->dataRecord['folder_directive_snippets'] = ''; @@ -894,10 +894,10 @@ class page_action extends tform_actions { } $this->dataRecord['folder_directive_snippets'] = trim($this->dataRecord['folder_directive_snippets']); } - + $master_directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND snippet LIKE '%{FOLDER}%' AND master_directive_snippets_id > 0 AND type = ? ORDER BY name ASC", $server_type); $c_directive_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND snippet LIKE '%{FOLDER}%' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type); - + $folder_directive_snippets = array(); $this->dataRecord['folder_directive_snippets'] = str_replace("\r\n", "\n", $this->dataRecord['folder_directive_snippets']); $this->dataRecord['folder_directive_snippets'] = str_replace("\r", "\n", $this->dataRecord['folder_directive_snippets']); @@ -920,7 +920,7 @@ class page_action extends tform_actions { } $folder_directive_snippets[$i]['folder_directive_snippets_id'] .= '</optgroup>'; } - + if(is_array($c_directive_snippets) && !empty($c_directive_snippets)){ $folder_directive_snippets[$i]['folder_directive_snippets_id'] .= '<optgroup label="'.$app->tform->wordbook["select_directive_snippet_txt"].'">'; foreach($c_directive_snippets as $c_directive_snippet){ @@ -938,7 +938,7 @@ class page_action extends tform_actions { } $folder_directive_snippets[$i]['folder_directive_snippets_id'] .= '</optgroup>'; } - + if(is_array($c_directive_snippets) && !empty($c_directive_snippets)){ $folder_directive_snippets[$i]['folder_directive_snippets_id'] .= '<optgroup label="'.$app->tform->wordbook["select_directive_snippet_txt"].'">'; foreach($c_directive_snippets as $c_directive_snippet){ @@ -1007,7 +1007,7 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("subdomain_error_empty")."<br />"; } } - + /* check if the domain module is used - and check if the selected domain can be used! */ $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); @@ -1073,13 +1073,13 @@ class page_action extends tform_actions { } else { $old_web_values = array(); } - + if($this->_vhostdomain_type == 'domain') { //* ensure that quota value is not 0 when vhost type = domain if(isset($_POST["hd_quota"]) && $_POST["hd_quota"] == 0) { $app->tform->errorMessage .= $app->tform->lng("limit_web_quota_not_0_txt")."<br>"; } - + //* Check the website quota of the client if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) { $tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ? AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'), $this->id); @@ -1174,7 +1174,7 @@ class page_action extends tform_actions { if($this->dataRecord['ssl'] == 'n') $this->dataRecord['ssl'] = $tmp['ssl']; if($this->dataRecord['ssl_letsencrypt'] == 'n') $this->dataRecord['ssl_letsencrypt'] = $tmp['ssl_letsencrypt']; if($this->dataRecord['directive_snippets_id'] == 0) $this->dataRecord['directive_snippets_id'] = $tmp['directive_snippets_id']; - + unset($tmp); // When the record is inserted } else { @@ -1296,7 +1296,7 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>'; } } - + // check custom php.ini settings if(isset($this->dataRecord['custom_php_ini']) && trim($this->dataRecord['custom_php_ini']) != '') { $custom_php_ini_settings = trim($this->dataRecord['custom_php_ini']); @@ -1330,7 +1330,7 @@ class page_action extends tform_actions { unset($app->tform->formDef["tabs"]['ssl']['fields']['enable_spdy']); } // 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']); if(isset($_POST['folder_directive_snippets'])){ @@ -1354,7 +1354,7 @@ class page_action extends tform_actions { } $this->dataRecord['folder_directive_snippets'] = trim($this->dataRecord['folder_directive_snippets']); } - + // Check custom PHP version if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') { // Check php-fpm mode @@ -1380,15 +1380,15 @@ class page_action extends tform_actions { $this->dataRecord['fastcgi_php_version'] = ''; } } - + $this->validateDefaultFastcgiPhpVersion(); - + parent::onSubmit(); } - + function onBeforeInsert() { global $app, $conf; - + // Letsencrypt can not be activated before the website has been created // So we deactivate it here and add a datalog update in onAfterInsert if(isset($this->dataRecord['ssl_letsencrypt']) && $this->dataRecord['ssl_letsencrypt'] == 'y' && isset($this->dataRecord['ssl']) && $this->dataRecord['ssl'] == 'y') { @@ -1401,7 +1401,7 @@ class page_action extends tform_actions { $this->_letsencrypt_on_insert = true; } } - + function onAfterInsert() { global $app, $conf; @@ -1421,7 +1421,7 @@ 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) { @@ -1495,7 +1495,7 @@ class page_action extends tform_actions { $new_data_record['ssl'] = 'y'; $app->db->datalogUpdate('web_domain', $new_data_record, 'domain_id', $this->id); } - + } function onBeforeUpdate () { @@ -1547,13 +1547,13 @@ class page_action extends tform_actions { } } - + function onAfterUpdate() { global $app, $conf; 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); } - + function validateDefaultFastcgiPhpVersion() { global $app; @@ -1575,7 +1575,7 @@ class page_action extends tform_actions { $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_invalid_txt')); return; } - + // If the default PHP version is now hidden but this vhost was using it, we don't want to implicitly // switch the user to some random Additional PHP version. So we show a warning instead. $old_fastcgi_php_version = null; -- GitLab From 9f1e3e1f980bfcf3e39d31d52e01a21ab66aaab8 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 13:47:38 +0200 Subject: [PATCH 402/571] Translated invalid --- interface/web/sites/lib/lang/nl_web_domain.lng | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index 8b4f6ff855..aa57c6e012 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -89,8 +89,8 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive $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['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; -$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; +$wb['hd_quota_error_regex'] = 'Harddisk quota is ongeldig.'; +$wb['traffic_quota_error_regex'] = 'Traffic quota is ongeldig.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; $wb['fastcgi_php_version_txt'] = 'PHP Versie'; -- GitLab From 41364d2f28f11df3098d2f569f7f7bda5e8fa69f Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 14:26:56 +0200 Subject: [PATCH 403/571] Fix major typo --- interface/web/client/lib/lang/es.lng | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng index 233b58b7ca..9dc7ad813f 100644 --- a/interface/web/client/lib/lang/es.lng +++ b/interface/web/client/lib/lang/es.lng @@ -26,5 +26,5 @@ $wb['Resellers'] = 'Revendedores'; $wb['Send email'] = 'Enviar correo'; $wb['Templates'] = 'Plantillas'; $wb['Add Domain'] = 'Add Domain'; -$wb['domain_txt'] = '] = 'Email-Templates'; +$wb['domain_txt'] = 'Email-Templates'; ?> -- GitLab From 10c55a8c904f932aea657a9a2dd5558548fdc13e Mon Sep 17 00:00:00 2001 From: Thom Pol <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 14:38:26 +0200 Subject: [PATCH 404/571] Revert "Merge branch 'inherit-spampolicy' of git.ispconfig.org:thom/ispconfig3 into add-domain-button" This reverts commit a2cf4b73057674533f7e1fcf52e46a98b2cfb1bb --- interface/web/mail/lib/lang/ar_mail_user.lng | 2 +- interface/web/mail/lib/lang/bg_mail_user.lng | 2 +- interface/web/mail/lib/lang/br_mail_user.lng | 2 +- interface/web/mail/lib/lang/ca_mail_user.lng | 2 +- interface/web/mail/lib/lang/cz_mail_user.lng | 2 +- interface/web/mail/lib/lang/de_mail_user.lng | 2 +- interface/web/mail/lib/lang/dk_mail_user.lng | 2 +- interface/web/mail/lib/lang/el_mail_user.lng | 2 +- interface/web/mail/lib/lang/en_mail_user.lng | 2 +- interface/web/mail/lib/lang/es_mail_user.lng | 2 +- interface/web/mail/lib/lang/fi_mail_user.lng | 2 +- interface/web/mail/lib/lang/fr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hu_mail_user.lng | 2 +- interface/web/mail/lib/lang/id_mail_user.lng | 2 +- interface/web/mail/lib/lang/it_mail_user.lng | 2 +- interface/web/mail/lib/lang/ja_mail_user.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pt_mail_user.lng | 2 +- interface/web/mail/lib/lang/ro_mail_user.lng | 2 +- interface/web/mail/lib/lang/ru_mail_user.lng | 2 +- interface/web/mail/lib/lang/se_mail_user.lng | 2 +- interface/web/mail/lib/lang/sk_mail_user.lng | 2 +- interface/web/mail/lib/lang/tr_mail_user.lng | 2 +- interface/web/mail/mail_user_edit.php | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index 9d4828b557..a67a83c07a 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- not enabled -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 0901e0a0fd..3b9a27390e 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разреши получаване'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Разреши доÑтъп'; $wb['policy_txt'] = 'Спам филтър'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- забранен -'; $wb['limit_mailbox_txt'] = 'ДоÑтигнат е макÑималниÑÑ‚ брой на пощенÑките кутии за твоÑÑ‚ профил.'; $wb['limit_mailquota_txt'] = 'МакÑималното отделено мÑÑто за твоÑта ÐºÑƒÑ‚Ð¸Ñ Ðµ доÑтигнато. МакÑималното позволено мÑÑто в МБ е '; $wb['disableimap_txt'] = 'Забрани IMAP'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 2abe1931f6..2aca5c3736 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Habilitar recebimento'; $wb['greylisting_txt'] = 'Habilitar greylist'; $wb['access_txt'] = 'Habilitar acesso'; $wb['policy_txt'] = 'Filtros anti-spam'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '-desabilitado-'; $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.'; $wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponÃvel em MB é'; $wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 08c9bc78ec..e380b55d2d 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l\'accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- inactif -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boites courriel pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boites courriel est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index fb09f0c0a0..1946d4150f 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -22,7 +22,7 @@ $wb['maildir_txt'] = 'E-mailový adresář'; $wb['postfix_txt'] = 'Povolit pÅ™Ãjem'; $wb['access_txt'] = 'Povolit pÅ™Ãstup'; $wb['policy_txt'] = 'Spamový filtr'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- nepovoleno -'; $wb['limit_mailbox_txt'] = 'Byl dosažen maximálnà poÄet mailboxů pro Váš úÄet.'; $wb['limit_mailquota_txt'] = 'Dosažen maximálnà prostor pro mailboxy. Max. dostupné mÃsto v MB je'; $wb['disableimap_txt'] = 'Zakázat IMAP'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index e653fbe288..7c1f02cd4f 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktiviere Empfang'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; $wb['access_txt'] = 'Aktiviere Zugriff'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- nicht aktiviert -'; $wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mailkonten für Ihr Konto wurde erreicht.'; $wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist'; $wb['disablesmtp_txt'] = 'SMTP (Mailversand) deaktivieren'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index 34bf076359..8c0957d353 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -24,7 +24,7 @@ $wb['maildir_txt'] = 'Mailmappe'; $wb['postfix_txt'] = 'Aktiver modtagelse'; $wb['access_txt'] = 'Aktiver adgang'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- ikke aktiveret -'; $wb['limit_mailbox_txt'] = 'Max. antal af mailbokse for din konto er nÃ¥et.'; $wb['limit_mailquota_txt'] = 'Max. plads for postkasser er nÃ¥et. Max. tilgængelig plads i MB er'; $wb['disablesmtp_txt'] = 'Deaktiver SMTP (afsending)'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index 76c266d591..f735d6e7b3 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'ΕνεÏγοποίηση Λήψης'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'ΕνεÏγοποίηση Î Ïόσβασης'; $wb['policy_txt'] = 'ΦίλτÏο Spam'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- ανενεÏγή -'; $wb['limit_mailbox_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των θυÏίδων για τον λογαÏιασμό σας.'; $wb['limit_mailquota_txt'] = 'Έχετε φτάσει στο μÎγεστο χώÏο της θυÏίδα σας.Ο μÎγιστος διαθÎσιμος χώÏος σε MB είναι'; $wb['disableimap_txt'] = 'ΑπενεÏγοποίηση IMAP'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 69ac0a00a9..82cab6d70c 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -27,7 +27,7 @@ $wb["postfix_txt"] = 'Enable receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb["access_txt"] = 'Enable access'; $wb["policy_txt"] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb["no_policy"] = '- not enabled -'; $wb["limit_mailbox_txt"] = 'The max. number of mailboxes for your account is reached.'; $wb["limit_mailquota_txt"] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb["disablesmtp_txt"] = 'Disable SMTP (sending)'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index be329c304a..418fd2dbfa 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -44,7 +44,7 @@ $wb['name_optional_txt'] = '(Opcional)'; $wb['name_txt'] = 'Nombre'; $wb['no_backup_txt'] = 'Sin copia de seguridad'; $wb['no_domain_perm'] = 'Usted no tiene permisos para gestionar este dominio.'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- deshabilitado -'; $wb['now_txt'] = 'Ahora'; $wb['password_match_txt'] = 'Las contraseñas coinciden.'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 45ea1d9b8b..a764e95693 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -18,7 +18,7 @@ $wb['postfix_txt'] = 'Salli vastaanotto'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Salli yhteys'; $wb['policy_txt'] = 'Roskapostisuodatin'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- ei käytössä -'; $wb['limit_mailbox_txt'] = 'Tilisi sallittu postilaatikoiden määrä on ylitetty.'; $wb['limit_mailquota_txt'] = 'Tilisi sallittu postilaatikoiden koko on ylitetty. Vapaa tila megatavuina on'; $wb['disableimap_txt'] = 'Estä IMAP'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 8df58233a3..732f3d8cb7 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l’accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- inactif -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boîtes aux lettres pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boîtes aux lettres est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 170aaa6b61..7406e2d656 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- not enabled -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 65962cd21c..db8edf775e 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'BejövÅ‘ engedélyezés'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Hozzáférés engelyezés'; $wb['policy_txt'] = 'Spam szűrÅ‘'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- nem engelyézett -'; $wb['limit_mailbox_txt'] = 'Nincs több mailbox lehetÅ‘ség.'; $wb['limit_mailquota_txt'] = 'Mailbox tárhely elfogyott.'; $wb['disableimap_txt'] = 'IMAP Tiltás'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 3bedbd9b93..670550062c 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -24,7 +24,7 @@ $wb['postfix_txt'] = 'Dapat Menerima'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Dapat Mengakses'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- tidak diaktifkan -'; $wb['limit_mailbox_txt'] = 'Jumlah maks mailbox untuk akun Anda sudah tercapai.'; $wb['limit_mailquota_txt'] = 'Ruang maks untuk mailbox sudah tercapai. Ruang maks yang tersedia dalam MB adalah'; $wb['disableimap_txt'] = 'Nonaktifkan IMAP'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index a1a0f8cfd5..dad3f69654 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -19,7 +19,7 @@ $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Abilita ricezione'; $wb['access_txt'] = 'Abilita indirizzo'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- non abilitato -'; $wb['limit_mailbox_txt'] = 'Hai raggiungo il numero massimo di caselle per il tuo account.'; $wb['limit_mailquota_txt'] = 'Hai raggiunto lo spazio massimo per le tue caselle di posta. Lo spazio massimo in MB è di'; $wb['disableimap_txt'] = 'Disabilita IMAP'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index b58b9d13dd..803a278d5b 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'メールをå—ä¿¡ã™ã‚‹'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'アクセスを許å¯ã™ã‚‹'; $wb['policy_txt'] = 'スパムフィルター'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- 利用ã—ãªã„ -'; $wb['limit_mailbox_txt'] = 'メールボックスãŒæœ€å¤§æ•°ã«é”ã—ãŸç‚ºã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; $wb['limit_mailquota_txt'] = 'メールボックスãŒä¸€æ¯ã§ã™ã€‚ 上é™ï¼ˆMB):'; $wb['disableimap_txt'] = 'IMAP を無効ã«ã™ã‚‹'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 9a75a9fd7a..39cd0bd0f0 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Ontvangen inschakelen'; $wb['greylisting_txt'] = 'Greylisting inschakelen'; $wb['access_txt'] = 'Toegang inschakelen'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Gebruik domein instelling -'; +$wb['no_policy'] = '- niet ingeschakeld -'; $wb['limit_mailbox_txt'] = 'Het max. aantal mailboxen voor uw account is bereikt.'; $wb['limit_mailquota_txt'] = 'De max. ruimte voor uw mailboxen is bereikt. De max. beschikbare ruimte in MB is'; $wb['disableimap_txt'] = 'Uitschakelen IMAP'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 593f83531e..8a35e7742e 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Zezwól na odbiór poczty'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Możliwy dostÄ™p'; $wb['policy_txt'] = 'Filtr spamu'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- brak polityki -'; $wb['limit_mailbox_txt'] = 'Maksymalna ilość skrzynek pocztowych dla Twojego konta zostaÅ‚a przekroczona.'; $wb['limit_mailquota_txt'] = 'Maksymalna pojemność skrzynki pocztowej zostaÅ‚a przekroczona. Maksymalne dostÄ™pne miejsce w MB to: '; $wb['disableimap_txt'] = 'WyÅ‚Ä…cz IMAP'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 0b7ffe3d37..56a1f16d30 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Permitir Recepção'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Permitir Acesso'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- desactivado -'; $wb['limit_mailbox_txt'] = 'O número máximo de caixas de correio para a conta foi atingido.'; $wb['limit_mailquota_txt'] = 'O espaço em disco disponÃvel para criação de contas foi atingido.'; $wb['disableimap_txt'] = 'Desactivar IMAP'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 97dfdafd88..ccdcc49fdf 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- not enabled -'; $wb['limit_mailbox_txt'] = 'Numarul maxim de MAILBOX pe contul dumneavoastra a fost atins'; $wb['limit_mailquota_txt'] = 'Spatiul maxim pentru MAILBOX a fost atins.Acesta este '; $wb['disableimap_txt'] = 'Blocheaza IMAP'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 07bab6fd4f..fcfadd9db9 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разрешить получение'; $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting)'; $wb['access_txt'] = 'Включить доÑтуп'; $wb['policy_txt'] = 'Спам-фильтр'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- не включены -'; $wb['limit_mailbox_txt'] = 'ЧиÑло почтовых Ñщиков превышено.'; $wb['limit_mailquota_txt'] = 'МеÑто под почтовые Ñщики превышено. МакÑимально доÑтупно MB'; $wb['password_strength_txt'] = 'СтойкоÑÑ‚ÑŒ паролÑ'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index da0282e118..c081446557 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktivera mottagning'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Aktivera Ã¥tkomst'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- ej aktiverat -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Avaktivera IMAP'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index d9a68404ae..eb70b8eba9 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'PovoliÅ¥ prÃjem'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'PovoliÅ¥ PrÃstup'; $wb['policy_txt'] = 'Spamfilter'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- nepovolená -'; $wb['limit_mailbox_txt'] = 'Max. poÄet poÅ¡tových schránok pre váš úÄet je dosiahnutý.'; $wb['limit_mailquota_txt'] = 'Maximálny priestor pre poÅ¡tové schránky je dosiahnutý. Max. dostupné miesto v MB je'; $wb['disableimap_txt'] = 'DeaktivovaÅ¥ IMAP'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 9e964e5e8a..c7dec33b99 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Alım Etkin'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; $wb['access_txt'] = 'EriÅŸim Etkin'; $wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; -$wb['inherit_policy'] = '- Inherit domain setting -'; +$wb['no_policy'] = '- devre dışı -'; $wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta kutusu sayısına ulaÅŸtınız.'; $wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)'; diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index ac4607e76a..c7f36a89e0 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -99,7 +99,7 @@ class page_action extends tform_actions { if (isset($_POST['policy'])) $tmp_user['policy_id'] = intval($_POST['policy']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r') . " ORDER BY policy_name"; $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->lng("inherit_policy")."</option>"; + $policy_select = "<option value='0'>".$app->tform->lng("no_policy")."</option>"; if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; -- GitLab From a504ec4a30f8ee08ed7c53d00b7191c8cdc4e17d Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 14:45:19 +0200 Subject: [PATCH 405/571] Fix fault for DNS Zone template --- interface/lib/classes/remote.d/dns.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index 9b5e6b74ad..f4c75ba25b 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -736,7 +736,7 @@ class remoting_dns extends remoting { - //* Get All DNS Zones Templates by etruel + //* Get All DNS Zones Templates by etruel and thom public function dns_templatezone_get_all($session_id) { global $app, $conf; if(!$this->checkPerm($session_id, 'dns_templatezone_add')) { @@ -749,7 +749,7 @@ class remoting_dns extends remoting { return $result; } else { - this->server->fault('template_id_error', 'There is no DNS templates.'); + throw new SoapFault('template_id_error', 'There is no DNS templates.'); return false; } } -- GitLab From 3681d6a16680dca4bc1e5173b04735b1a2fb20bb Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 14:52:19 +0200 Subject: [PATCH 406/571] Fix major typo --- interface/web/admin/lib/lang/ar_remote_user.lng | 2 +- interface/web/admin/lib/lang/bg_remote_user.lng | 2 +- interface/web/admin/lib/lang/br_remote_user.lng | 2 +- interface/web/admin/lib/lang/ca_remote_user.lng | 2 +- interface/web/admin/lib/lang/cz_remote_user.lng | 2 +- interface/web/admin/lib/lang/de_remote_user.lng | 2 +- interface/web/admin/lib/lang/dk_remote_user.lng | 2 +- interface/web/admin/lib/lang/el_remote_user.lng | 2 +- interface/web/admin/lib/lang/en_remote_user.lng | 2 +- interface/web/admin/lib/lang/es_remote_user.lng | 2 +- interface/web/admin/lib/lang/fi_remote_user.lng | 2 +- interface/web/admin/lib/lang/fr_remote_user.lng | 2 +- interface/web/admin/lib/lang/hr_remote_user.lng | 2 +- interface/web/admin/lib/lang/hu_remote_user.lng | 2 +- interface/web/admin/lib/lang/id_remote_user.lng | 2 +- interface/web/admin/lib/lang/it_remote_user.lng | 2 +- interface/web/admin/lib/lang/ja_remote_user.lng | 2 +- interface/web/admin/lib/lang/nl_remote_user.lng | 2 +- interface/web/admin/lib/lang/pl_remote_user.lng | 2 +- interface/web/admin/lib/lang/pt_remote_user.lng | 2 +- interface/web/admin/lib/lang/ro_remote_user.lng | 2 +- interface/web/admin/lib/lang/ru_remote_user.lng | 2 +- interface/web/admin/lib/lang/se_remote_user.lng | 2 +- interface/web/admin/lib/lang/sk_remote_user.lng | 2 +- interface/web/admin/lib/lang/tr_remote_user.lng | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/interface/web/admin/lib/lang/ar_remote_user.lng b/interface/web/admin/lib/lang/ar_remote_user.lng index 8c70904102..b1db64e8e6 100644 --- a/interface/web/admin/lib/lang/ar_remote_user.lng +++ b/interface/web/admin/lib/lang/ar_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/bg_remote_user.lng b/interface/web/admin/lib/lang/bg_remote_user.lng index 35132ab452..2ad534da45 100644 --- a/interface/web/admin/lib/lang/bg_remote_user.lng +++ b/interface/web/admin/lib/lang/bg_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'ПотребителÑко име'; $wb['password_txt'] = 'Парола'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/br_remote_user.lng b/interface/web/admin/lib/lang/br_remote_user.lng index b698af128d..7fbcbdf372 100644 --- a/interface/web/admin/lib/lang/br_remote_user.lng +++ b/interface/web/admin/lib/lang/br_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Usuário'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/ca_remote_user.lng b/interface/web/admin/lib/lang/ca_remote_user.lng index dc39a8e798..638882de55 100644 --- a/interface/web/admin/lib/lang/ca_remote_user.lng +++ b/interface/web/admin/lib/lang/ca_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng index f8d0f3d5e5..1c53a5c5b7 100644 --- a/interface/web/admin/lib/lang/cz_remote_user.lng +++ b/interface/web/admin/lib/lang/cz_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Uživatelské jméno:'; $wb['password_txt'] = 'Heslo:'; $wb['function_txt'] = 'Funkce:'; diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng index e1f932a904..9bfb9c43a0 100644 --- a/interface/web/admin/lib/lang/de_remote_user.lng +++ b/interface/web/admin/lib/lang/de_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Benutzername'; $wb['password_txt'] = 'Passwort'; $wb['function_txt'] = 'Funktionen'; diff --git a/interface/web/admin/lib/lang/dk_remote_user.lng b/interface/web/admin/lib/lang/dk_remote_user.lng index e7f020e411..c592247b83 100644 --- a/interface/web/admin/lib/lang/dk_remote_user.lng +++ b/interface/web/admin/lib/lang/dk_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Brugernavn:'; $wb['password_txt'] = 'Adgangskode:'; $wb['function_txt'] = 'Funktioner:'; diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng index 72d9eb29dd..43d04d0e02 100644 --- a/interface/web/admin/lib/lang/el_remote_user.lng +++ b/interface/web/admin/lib/lang/el_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Όνομα ΧÏήστη:'; $wb['password_txt'] = 'Συνθηματικό:'; $wb['function_txt'] = 'ΕνÎÏγειες:'; diff --git a/interface/web/admin/lib/lang/en_remote_user.lng b/interface/web/admin/lib/lang/en_remote_user.lng index dc39a8e798..638882de55 100644 --- a/interface/web/admin/lib/lang/en_remote_user.lng +++ b/interface/web/admin/lib/lang/en_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng index b14c4b408b..2bd9c6f2ce 100644 --- a/interface/web/admin/lib/lang/es_remote_user.lng +++ b/interface/web/admin/lib/lang/es_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['Client functions'] = 'Funciones para clientes'; $wb['DNS a functions'] = 'Funciones DNS para registro A'; $wb['DNS aaaa functions'] = 'Funciones DNS para registro AAAA'; diff --git a/interface/web/admin/lib/lang/fi_remote_user.lng b/interface/web/admin/lib/lang/fi_remote_user.lng index 8b943d3e52..f225bb8416 100644 --- a/interface/web/admin/lib/lang/fi_remote_user.lng +++ b/interface/web/admin/lib/lang/fi_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Käyttäjätunnus'; $wb['password_txt'] = 'Salasana'; $wb['function_txt'] = 'Toiminnot'; diff --git a/interface/web/admin/lib/lang/fr_remote_user.lng b/interface/web/admin/lib/lang/fr_remote_user.lng index f2f8098945..99a8f2e4f9 100644 --- a/interface/web/admin/lib/lang/fr_remote_user.lng +++ b/interface/web/admin/lib/lang/fr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Identifiant'; $wb['password_txt'] = 'Mot de passe'; $wb['function_txt'] = 'Fonctions'; diff --git a/interface/web/admin/lib/lang/hr_remote_user.lng b/interface/web/admin/lib/lang/hr_remote_user.lng index 200e15544b..e5cef6a179 100644 --- a/interface/web/admin/lib/lang/hr_remote_user.lng +++ b/interface/web/admin/lib/lang/hr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'KorisniÄko ime'; $wb['password_txt'] = 'Å ifra'; $wb['function_txt'] = 'Funkcije'; diff --git a/interface/web/admin/lib/lang/hu_remote_user.lng b/interface/web/admin/lib/lang/hu_remote_user.lng index 278d2d0434..ad34bf0823 100644 --- a/interface/web/admin/lib/lang/hu_remote_user.lng +++ b/interface/web/admin/lib/lang/hu_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Felhasználónév'; $wb['password_txt'] = 'Jelszó'; $wb['function_txt'] = 'Funkciók'; diff --git a/interface/web/admin/lib/lang/id_remote_user.lng b/interface/web/admin/lib/lang/id_remote_user.lng index 740ed6fe71..1a31ae3274 100644 --- a/interface/web/admin/lib/lang/id_remote_user.lng +++ b/interface/web/admin/lib/lang/id_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nama pengguna'; $wb['password_txt'] = 'Kata Sandi'; $wb['function_txt'] = 'Fungsi'; diff --git a/interface/web/admin/lib/lang/it_remote_user.lng b/interface/web/admin/lib/lang/it_remote_user.lng index 0d5e550d05..967270222b 100644 --- a/interface/web/admin/lib/lang/it_remote_user.lng +++ b/interface/web/admin/lib/lang/it_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nome Utente'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Funzioni'; diff --git a/interface/web/admin/lib/lang/ja_remote_user.lng b/interface/web/admin/lib/lang/ja_remote_user.lng index adaaf54688..5ffbecd22a 100644 --- a/interface/web/admin/lib/lang/ja_remote_user.lng +++ b/interface/web/admin/lib/lang/ja_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'ユーザーå'; $wb['password_txt'] = 'パスワード'; $wb['function_txt'] = '機能'; diff --git a/interface/web/admin/lib/lang/nl_remote_user.lng b/interface/web/admin/lib/lang/nl_remote_user.lng index 3d2baac1fd..884331daa0 100644 --- a/interface/web/admin/lib/lang/nl_remote_user.lng +++ b/interface/web/admin/lib/lang/nl_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Externe Gebruiker' +$wb['remote_user_txt'] = 'Externe Gebruiker'; $wb['username_txt'] = 'Gebruikersnaam'; $wb['password_txt'] = 'Wachtwoord'; $wb['function_txt'] = 'Funties'; diff --git a/interface/web/admin/lib/lang/pl_remote_user.lng b/interface/web/admin/lib/lang/pl_remote_user.lng index 2a6a726bcb..1e611ffbe1 100644 --- a/interface/web/admin/lib/lang/pl_remote_user.lng +++ b/interface/web/admin/lib/lang/pl_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nazwa użytkownika'; $wb['password_txt'] = 'HasÅ‚o'; $wb['function_txt'] = 'Funkcje'; diff --git a/interface/web/admin/lib/lang/pt_remote_user.lng b/interface/web/admin/lib/lang/pt_remote_user.lng index b521beb5e4..b1e8e08899 100644 --- a/interface/web/admin/lib/lang/pt_remote_user.lng +++ b/interface/web/admin/lib/lang/pt_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Nome do utilizador'; $wb['password_txt'] = 'Senha'; $wb['function_txt'] = 'Funções'; diff --git a/interface/web/admin/lib/lang/ro_remote_user.lng b/interface/web/admin/lib/lang/ro_remote_user.lng index 8c70904102..b1db64e8e6 100644 --- a/interface/web/admin/lib/lang/ro_remote_user.lng +++ b/interface/web/admin/lib/lang/ro_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Username'; $wb['password_txt'] = 'Password'; $wb['function_txt'] = 'Functions'; diff --git a/interface/web/admin/lib/lang/ru_remote_user.lng b/interface/web/admin/lib/lang/ru_remote_user.lng index 38eb3a3c33..e1266951aa 100644 --- a/interface/web/admin/lib/lang/ru_remote_user.lng +++ b/interface/web/admin/lib/lang/ru_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Логин'; $wb['password_txt'] = 'Пароль'; $wb['function_txt'] = 'Функции'; diff --git a/interface/web/admin/lib/lang/se_remote_user.lng b/interface/web/admin/lib/lang/se_remote_user.lng index 39ae0ed375..c71d09f54f 100644 --- a/interface/web/admin/lib/lang/se_remote_user.lng +++ b/interface/web/admin/lib/lang/se_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Användarnamn'; $wb['password_txt'] = 'Lösenord'; $wb['function_txt'] = 'Funktioner'; diff --git a/interface/web/admin/lib/lang/sk_remote_user.lng b/interface/web/admin/lib/lang/sk_remote_user.lng index e8fac2a0b9..4e867066c7 100644 --- a/interface/web/admin/lib/lang/sk_remote_user.lng +++ b/interface/web/admin/lib/lang/sk_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Uživateľ'; $wb['password_txt'] = 'Heslo'; $wb['function_txt'] = 'Funkcia'; diff --git a/interface/web/admin/lib/lang/tr_remote_user.lng b/interface/web/admin/lib/lang/tr_remote_user.lng index 24fc6497f2..aacb7f4c35 100644 --- a/interface/web/admin/lib/lang/tr_remote_user.lng +++ b/interface/web/admin/lib/lang/tr_remote_user.lng @@ -1,5 +1,5 @@ <?php -$wb['remote_user_txt'] = 'Remote User' +$wb['remote_user_txt'] = 'Remote User'; $wb['username_txt'] = 'Kullanıcı Adı:'; $wb['password_txt'] = 'Parola:'; $wb['function_txt'] = 'Ä°ÅŸlevler:'; -- GitLab From 8fe45d1d00e1e280bd28851718047b2bcdefce9d Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 14:55:58 +0200 Subject: [PATCH 407/571] Fix typo for DNAME --- interface/lib/classes/remote.d/dns.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php index f4c75ba25b..3129c6a3a2 100644 --- a/interface/lib/classes/remote.d/dns.inc.php +++ b/interface/lib/classes/remote.d/dns.inc.php @@ -473,7 +473,7 @@ class remoting_dns extends remoting { // ---------------------------------------------------------------------------------------------------------------- //* Get record details - public function dns_cname_get($session_id, $primary_id) { + public function dns_dname_get($session_id, $primary_id) { return $this->dns_rr_get($session_id, $primary_id, 'DNAME'); } -- GitLab From e64c6f93b77c3cf00426225cb3cbaf95c0882a86 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 17:57:12 +0200 Subject: [PATCH 408/571] Add Font Awesome (fixes #5443) --- .../font-awesome-4.7.0/HELP-US-OUT.txt | 7 + .../font-awesome-4.7.0/css/font-awesome.css | 2337 ++++++++++++++ .../css/font-awesome.min.css | 4 + .../font-awesome-4.7.0/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 +++++++++++++++++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../font-awesome-4.7.0/less/animated.less | 34 + .../less/bordered-pulled.less | 25 + .../font-awesome-4.7.0/less/core.less | 12 + .../font-awesome-4.7.0/less/fixed-width.less | 6 + .../font-awesome-4.7.0/less/font-awesome.less | 18 + .../font-awesome-4.7.0/less/icons.less | 789 +++++ .../font-awesome-4.7.0/less/larger.less | 13 + .../font-awesome-4.7.0/less/list.less | 19 + .../font-awesome-4.7.0/less/mixins.less | 60 + .../font-awesome-4.7.0/less/path.less | 15 + .../less/rotated-flipped.less | 20 + .../less/screen-reader.less | 5 + .../font-awesome-4.7.0/less/stacked.less | 20 + .../font-awesome-4.7.0/less/variables.less | 800 +++++ .../font-awesome-4.7.0/scss/_animated.scss | 34 + .../scss/_bordered-pulled.scss | 25 + .../font-awesome-4.7.0/scss/_core.scss | 12 + .../font-awesome-4.7.0/scss/_fixed-width.scss | 6 + .../font-awesome-4.7.0/scss/_icons.scss | 789 +++++ .../font-awesome-4.7.0/scss/_larger.scss | 13 + .../font-awesome-4.7.0/scss/_list.scss | 19 + .../font-awesome-4.7.0/scss/_mixins.scss | 60 + .../font-awesome-4.7.0/scss/_path.scss | 15 + .../scss/_rotated-flipped.scss | 20 + .../scss/_screen-reader.scss | 5 + .../font-awesome-4.7.0/scss/_stacked.scss | 20 + .../font-awesome-4.7.0/scss/_variables.scss | 800 +++++ .../font-awesome-4.7.0/scss/font-awesome.scss | 18 + .../web/themes/default/templates/main.tpl.htm | 1 + 38 files changed, 8692 insertions(+) create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.min.css create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/FontAwesome.otf create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.eot create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.svg create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss create mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt new file mode 100644 index 0000000000..83d083dd77 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt @@ -0,0 +1,7 @@ +I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, +Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, +comprehensive icon sets or copy and paste your own. + +Please. Check it out. + +-Dave Gandy diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css new file mode 100644 index 0000000000..ee906a8196 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.min.css b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.min.css new file mode 100644 index 0000000000..540440ce89 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/FontAwesome.otf b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..401ec0f36e4f73b8efa40bd6f604fe80d286db70 GIT binary patch literal 134808 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ፈ|NFLGVp8C|9vt}4Pu%W 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�L| z-OeTJZGAC)8wq-$mi=V#8Sq%@=z0*xC+V2bsOZp8sIVzXvjH8S2RI*(;TR(6N#ez) za{wR}l5ICh-Ywy88)PdS@4!p-g0!%1bnqN86+HpXAjj9zDly!HRie{kVu!$>NXfhL z-JSS*!i&<8IF5cs?YNG|Vrn;f1a(x-Mm?Yd9E&hJ3wfc};HUz`@*j#SB<S~Z!Zz}? z6Mc=;=+gLN@LdVS6`2BY1^BMM{)g`hh$Rp58eCVPP3eSK0*>Orj#eZlrl+U?a|B*G zHc1^7C5tpimnI?g11nPU3)2hbLdQ(UECd-t7q}dAiZ(DZfZdE26677MdE^yK&1E37 z3#P!5Eme>&05T=xzgEVQ4@ER;0^o81G)+ctkOHuT-2h!@C>c+Z?{fT-zgX(|F^%R| zi7M6MMPYK=DsdcOO-OTdwoMXylf9zn>U-Zl>&$YQF?Y=u(HzXP2!r}XM}>=jR()ub z9Eci{Vha&PnztoXV|47~q6gfxGkv4Y>OtBt0M51kOfuk{>Td1Drc=AmApJLxE@D7# zJA^t9>L>ql**Wsg8f75q7D(*z%8+;be9mo_rv$}pS*cup_2i-Bhff@I{rb|Wrk1S7 zdB+!3(4JLPQ9M2m>GY!7+NF*1ZOtvW4=NAbsyUUpo4J%5+O$+29IQ#&sysnv{q>j( zOC#d+6Q67700uWts307!ClPdAqyT{m2aY9N8Z6xfpf->xbc}d_0$@i^T++-~CHjhg zIsJrxG6(3oF+ikclI~8#|B7fBmf)wvI~yS$3Nh~jHr4CA3ou8W0C0f7oo!v<Z`>ZQ z$$Z>D^z~NZ26`<{>D2q~gtGl#0O6Q#-?~=<Mwg`*$N(Y7hEYiirFSiM{212yoA`F& z)%*i_4Do2Xbg4<!H1`r{ZaA;J+4<87nYX`*Tfg|Ex-a--<`z2ntW`?eV=`m261b__ z#ffpUxHE}&wVd>BdO`;5`L#tpW!$B?-~xL6b9L)=rS&fi1NR$6Z9#QwJ!PK3Yc~XO zpEin`sw#KvlI@Dz;a|l`3*Y`uE7=Xx28R!j2Z?{OZ4&Lch^hI-%S}y9%BCjVgJWL2 zVDw0>a^^_NUJ|%l4}xPJNB-*9@C~<>R=rqH19#Juy&S?*FZ9YGFEDnE@o!?9{6Xt2 z*MF%G;D({v9=%C3m|SoJy|ftE__&O;cqN^%v@fpq$P=Pd<%f=4klmYoW=ed5HXZ%Z zIFGN$Skc+2rLFVilfRrZIW99UJ6?GL;P{Jumm%14F3MxiJo%)#|K4&O*6PTwM2n&} zE}bu%bYa20l9J5q5{`^G@tR(tBmTYR)AI}OmzHJ;TRu5{l8zTGtT?&pqWs>atKXJn zl%y3aJ;(%d@y$s(5nE1S%XgQqd{?3swk$;krTbaYxyl{wmt+s-otwyYG}B_XFS$Z4 z{{0%H6g~LxOL$I90y^Iz%&F;ZTUV}c$1Skn3vja8l5MeN5!>Q_n)}<5pXM@t2haGN zm6LCs&Yo%6aZvfwrC-nde4)Cyvb?;KAqvNpixzGQ;YKYQwPe&{CUo;WFE6>*yaP3x zm7~v$I63+(v%Y@m*%LBvOpI=cPqnUDCJ>mK+K4YwUtZ#QZR0ck<b%j4eruZpkqYzn z(_|(s0aEh=&Ia_lXx)&oKGZ?xCSvxmzxZ7VJj!jl<bC|2?B<EfcQ`?YU5?&dLBG5! zpoXg;l+A(TSD`E`g*2W1zJa_?wmFd<9k<A2-axyP`y%~@tW8<m`poQ$dovg!O}>K& zwEms}aWCw+z2oXP#3X9^yY8DSGFv7D?qfSfi6XDxQr(e1eOOX|PpQq+BG-rECtI(v zS)s;|t+FXmV>b!Pmq{I;ibxD`g)>1<cFBm$mwd30bmKb4@zpFrO7?BAa#;pB+WdKu zg7@eBL1`*1Ko99`^T%)J64wW*I7p0aB{dG#o20^t)=*cGn{}52u!jqKz$`ok&|$KS zcq8Fz&k>HeOKfw#qTkbGx(AaE@;BA;>oy=p4I2)*ts|`qSlW9s?e!h~^c0<6<x1Tp zZ=zpp`PPemG{J?hqGE_%G-5IY`^_0MUw~;7kX+<}hTnR?d<;}be76Vf=G;Voi+68t zXhuFIo?Ng>P^2oE7D+Y-AoqA~tKyQRIiO)Px5xsJe}_pBCj38_;2xj!)&ukuPU6l& zn1D!BM5_>r_23&l6>k4Rut)s6Wf5z;iFCBIICya(%WKSzQ`&BlIWhFQi1tY#hY&J; zBPVajp>n4bB`?I0fwN4^=H8;?6Qvt6^sw&r>D~LkMc*e%OiNBmkR_Os3gH`i)NlS6 z=zgctf4Ods2;Q(twr1O==5TJYZKe(o?i`J)rYp$fAvT$^a&we9xtS)NX)!<3rFq-7 zJ?*lCp{<*%xI7|nCEZT9TYA$CE?LOF%|vQrR`>o^q5Z;aQ$Z0}3ic{2Bgjez%S$j7 zfSGh1{@0Rs$lB}VUsp)?dl-21_(GGtH>GWs`}ky=kiabi*Y!x6iV-UfWGoqwK2AmG z$H1icY}R<oy?t`96EdwXkm*QlTtIIpb}V<vX>QJLmbWygrS8N~0G4O+11aU-AuV{s z+rgk@NoHv&9%(9yfy*n1o|eP^;YR{7U8^L*vX~5dIoIQ~l58ekB0Nem`uR6>que$H zNP!o&DYhxV54_-~@Cz}uyUc%iG;OzLkFsM61aL^heyD)V0{7Ksd;SgH1dv${)_c5& zP035pr=&36-cyr2<Q`KBcKIl~RwXCv6HF=0lGCJHT9dqqbjv<{T4~DD7bOE4dydRu zk8Eu9T)A=MO3&7fM-I2P9tLw`FRWYX*|qNQ5n&z4BHh{5!5cS4aoI7(sAw5oLjCA4 z5bT!V)P|8IkPXc$<2F`oZ9OEra^m=vo!b+_tGN58h+PZmo_(EMcFD{~q%DJlc)Bzc zH&!;wkF;*^^xU`s?X(_-f>irFWYWExPV9Z|FLkY|YAo6*zjETMIZ9#;WV4(`Adi{c z--X0JsK?^GfpNywK8I-QFu;(8VR_EM`WZh2`9n}aOkn~7W~+dsnw`HrK-slQqtPej zY8cPMKd0Br>wnHVd{~*At1r+XpQwb4fUt`bdDcsK_5YLI81CyA%VotGLGKM`?L6ut z*czC?x{&cD#?s7UZcAxcbDQiGB0&wcNm1q8^+P{x|1;|xsdPcIQm#3JEMD(YTUcA# zDBs)cyMDbd{<rMht5ed?_AI06e`fp~aATEgd3kL?z5Mh6#G}YL-m|v?@Pb=p$WLU@ zPh>Fu$WsT)-<J98!g|pONo{0hXh>va2uF8FdXF00o7#_lOzb&0H_5v)2zGZDhg3w? z)>c;5a->D_=IIY_-aH-GhXXH5It^v9_ZUzN*^PSqH%H!+oZI@eRz%;Egj7b>bQS4I z221F>ohYEEgoBrd3>xMpI*5yW9}m)Z|NP%~upYErX32*O$nrBHfNn?}U5<2y1gOES zz;%k@I_xA%yw)sT>eY^zSuyyJX^B1qh$OYZGz1525-iunB$4BJ39jC$Q#g4JBwjzU zv|fUkmr(E&2VrZvd@=p-yogpxXc7qimk<>Sd*D}%Q_dtMFlC%Cg)1<u3a^+uAOj10 zG#`BgP?0U%;?d#3!)fvUOR#`(e7Hb121dS1Ru3>mHrA5y4*;DPkqP<-@NcgNSZy6X z3Cr~laHd#DUmlmPu_O209G|gt553<ppKq}GOQZpIbX~_ea>I%2Arn}#zGFUJFShzS zlJ#Qga%`jPC8TvC+c94veR7=KpGfc1@qDB8b1_|SYZQvLqF4v=sVCBV*wSGAT=LHr zoX?Mz_se;n%*I7OKzwks`H)q}DX(_0Zs!ZxM`X3)p%NW~JNpoCA1V2>w&^VFUOAjj zpRU`KQ|Jq|FbVb9AhNtKxtDdP<<$9Iduk69A7zY%g$BgEKSc`G06I&k1A0hZ1t+cF zlw0t>1@Dsul5P7A7ao>lPSdqFZzZ#F)hco$_mzOty%$N?pLr1(SG{`j2VrRZ(V`(A zN^jV?Ii7{LUssuakT@;QBk#Db3>A^lU+igwRKSY$sp=KV%xIzGSevvVz@NJoElO3T ztCD2W_f?;hK^J?==E5B_VBS__#(dsv;0z_?%T`fERzYbwsI*HW5~;#JErKi4L~oBk z(kW6;mD0f~|K!hfI~Lkv`?y4>C&fg|BFked>-lNF7oOrws$5lm3bXPC+!e+%@*jxP zx7Q9R^O5#dt~IWrjx*BynDjt{Z-6XbkLR4zY^%<wkzc)BrM;>wzEyQA<Bo2JOBxK7 z;t4m>v(mEDvvaas%tjG8PaQj?g6JFwn2r%eJF&Yu@W+WaW`a5234W{oNY^S<Gv`PW zn+s+60vQzLN;fp5?d0}U95(DT6ZL6i`bgi9(8~Q42aJa`$u1w$&*Qwn%I{1afUxkO zy;dTErHU|!zL6y9JTv0YZK-zsa{8K?Lw(l9hQ&l|V4AMo&c7r7dV8j-TDeVK8nI^$ z16U&sdHV@lO-G6}ZF|%A%71uJ((tXaIrd93(oa5zj`Z{KP|_5Ooc)1rxphc{7N|X$ zDdJb!YS{$we8U%U^EJ8aT()Nu_p(|U)G&3~oXyL^u(`<bO_Ya6s<h$CoLCXrZ?m#P zC2a-j??sm1-9$H8gG7g6Rqv=x*JT)uB11N7Fu*=c{{95%`6bfN$UAt*9=SOt9+%cg zPa_LuC2Q1Vs*{o!X-!JXlx4${N2JjAQ>R@^D#$9$%Vly+phT6MwfgjIWysE>;lxf( z?7rDvvr{R(RZ;+_u!h-0By4W1MxCHZO4Vg1RWVgb>Z(QZMbVMrLCURRsuYBFq&4cI z%);{0^3uk-24s;p6l?3`bq(6Y3Z?XLMM6PfZY%?}#GUL{v7c;Q$Zc2@8nG&CK^Bt8 zmrluKG6z9aWD}h%9~e-yZHrP`v!Xfdq~W#^Pvv`<;Epg5Pb1(np1&j2?;&P|pWc&8 zcRbuSdbv{Qh`?d=kgQ#{gBx{fT-CT!%bP!cxZoC!NJanUyK24PxLM00-8VAx{OC_~ zjcvBfHivhhxA~zk%>O2bc@M5f74fq)6MuWSLHsN`!SZB1iEK`!jt!+_Vd)H^Ljwan zJtyfs54(CE(cL?8I6vP-*qW3ydUPOtzk!NeM?}t^I9Nu-&xaGyZx60LujGg$aBhuH z9yd0+5bP^ha3W}<O=ZVCqVH~}4k661apUjwms8R3;Z!{6+QjEkN?-b~divq>5siT^ znBJmYpkc=dr3G6KpN0lCcplc@KYZBr@Zo#<!=436P$eNlMV6Mgt?XY@AAVHC)f2}6 z^4^%oL5(g#fv$phHwN#Jr`s5K*i%2r)6=!<e3A-qB6Mhe5{}z-D`8q(^^#A@zn}3E za)ZyG6R}cjMINMh_;V`iH+JerFbJ8Qv{%rG5kY~d9=|v~5e^k^g%cDGrm?Z>*j&3B zO2Q$cg@S@-&l(8pM<lK<i@tsI7e*A*ZtD<qUzhFmdn{k>=WpzBu=M5Eu*N*qfmCCv zk-l>zHZLJ}OHo{I`;GeJS$Vm|hki!%I>%52E!XT=byx}$ma--=CL=a|X=IQ(NWCmB zA~hm4N|%(*7-F+h^|H*gg2cj%qV#PBb7sD=405~1tc-%JtgOtFg%vrKx!={9bs0(X zXwS&aOw?w;`#uc~iVF8y5|@;vZGax~j>;3)$|{eYKXAF_BxbX@8K+kltBciV{RCpP z!{J8EX4dnuY+(lSUgc_CU`l*iLV7@QVn$*{P*ysAO}+(*RS{(wCLL2z1L0+5aZXL4 zx!jnQotsh0fCYkOKcn-Bay@{gfwmj0wM1h1k|c=UmP+{j4_R*v3O<+D&~5{^lK_6l z%K$Q`V}Qu^${NA)H^>SwzDQ`X8#S`~J`acuiuQ|l^`zo)ar6WEK-#mdeWWrcadkto zT%D4l(jfMqrd;p?SvK#D{0DKvj+~qZB|ML<_m8#CaXEo|lkBtJ1uXZVh#w~@OwLm! zcXXrvS`BAA2^}Vzvt(S*f~X8#Dzt-BHCnAMO_#yEy(rNcbUJwGa?|qUX0U^#<(4P` zUA7caoqz&{J4i6Qgg?AH)G7N49xh=;8=^RPIj^A3UF@sG+0zN3LnXu!)`3WpjF%h_ zxb3}*6YgTsF7IjEzmj*1xg-Qnd=!?~Vkpd5Op>3MfB)Hjt|R<y$V|BQI-LLg`T~H@ zx6Xp;M8`ZphL2bfw}(Ff281&ybprD;UZuzW5a=l?0Eqivvg;9Wjzl|k+@fvlG=+3p z<=ms-({TLCNjmcQbVb((5X^V3#P+ohg}2Ty6+3mY=61<qUFuTBy40C94Q77FiSRFi z8jqcXDJMQir;Z?|x3~UZW#ERT8aMGGK`0^|kw>^-YplWSuHE``-n%#NTBzUb4Txd1 zi_K9?qe*nv8dvYl`h~kTlXlwf(s5acNIHW;3rovogw#m8h~6a=5RvTd2@Y8YOQrQN zOL`9`xa5>w4Dv%q+WR*M5{)D58Cd$T`hT%Sv19-=C|05?v|m18FdYC%iWPX+yB+=G zSB~fESgNHzz#9jtg-3qBDiIYC{|JY=GqD><Wb#*kRUkuIMSmb~s8$K$D<6n_{Dz4i zU=E9kD`n~U!I;WHXZ8$rC9IO40Y~Z>`Y*bY4j6oNAR;YeU|Oyq1AblpirOoIMMPTk zC4ni-!>U34J>2>=UC}A{5lnRTWBMWKv5H&MaY5v(trNJuJjBg)4b58R8p{O{>2c^W z!d|OEwbLaoLg0Cc71WTOhp`q7M2PYDb-XXZjJA;NSU_?uo&Pi!UVSZlV#}eGWn6~` zJSf=-@tN`R`1p*p1Z9T@^8Q!GY+1ET2GXR}wd>j<I6-_@q$;mWLvDX%Hfa7W9*AGJ zRn_i0D1$Q~H_{$1XE|W@uiy<ILR_3I?i~^=I(~xfM=HR^PbP?Hxdd7JeynXiS<H9- z)5Ri-ykj|gH1NQxO3wBLSpdkV<Y>Tw)%b)NyC^p<7ATI`*bEJv3a|o1t0M!vfI{dm zv3)@o{QJ`w$*Q_F`y&P4c({lZI%NV&Vl=uMwMJd0PFU%Jm7@KXb?t{>>Njf1B7_qB zfC(OzOO|NK;=hSMrWuX=R|M!|()fU6Nt^B5Boo{mcfu~P<&pO#q`)?nB|R@rqwnT} z@>fi{=iR$Qy30#!575m_eMAN-Ed#}dVnay@a>$?|9D%9-cDfketvb33NrKDKJp_?H zzmd)0*$oj-2^+NGGr61f!Vy;bm5RJ1CnYcfNRPWKa0^L?Z=@n6J<RW9Va69qr0%Mh zPq$L0_sn%4D{UwF90V?$c>wWaV7zuiPcX_IH}UZON+LRO_5sMlq&wZg39#@y4S=i0 zg#^;+H-9HR3}jx`U7V;h0<q1s87{_YNBOH@5e+yV=G39KIk2D){?}$Ya<cb|nOl@E zwjTWaV;OE<*(}<Rv-Pypi^(f`lfAIN?&_^2rSp}7c`Jqm_k_K9y87O|RXaXY;)Dam zmT&yogXe1xAvKEwpVj)&3#dXa&9y^J-4Ry!7tr*62Y2l>pulM#IvH6bI<?X^Ts-2? zvge#sZKvkDvF<BZyQe8huK12-)4?fnX>WI^HkGqe$=7!!LPEw<KI7>!GMN9H4DRVB z_9KI(?QY^>aGqh1=|=3~7m-7e%pR{`M8j-Vh>2l6k;AXuk>3%^LV4N&zseyKPJFi> zRJ3hzZLw`}uhtXhNZYHnS1XBRKwH1PE?H$|#xj91wR2~s<tDH}2)8L9m^oQkcA|^G za);k3s2cNg$U)J`N;0??_-?b%_pGB?a1^aWB-^Ov=q}q3kwKMYNRrQ66dSNY2|Ue6 zk!_lU#10pMmG6@sC@&%7<Vc+uh=X=7QSx(;3<4j@Iyj^NHb$R6=H^L0{s`aeATA?x zcW#^|pC9Hw6h46q+3`E;yKL_<<PXK;F?~4O-?oP=={EWa?UoR)%}C@P_}%y4Gu(fY ztKX-?H%)5tEAlV&D`e*FxU%jWIqCM~2{cBnZkBWGU?;LpVe^%cBlI0nb?d>xBXYAz zuY(X&1i2$3D~(`87(-Udp*k}b(<UJdIhKxt<P80dW{ap>B9-)}y#>O0yJzIx5G8eo zH}De)Of(jp5u-V)$3O+u3+g;F@Hq&wbgqJrL0ICG9Xe|n5@fN&z^jei4fpeksGcQm z;)l{;%U#}qwaqA*TA-H&j#^H;wGJy^yU+7jIzJ)E#aLC$JBn-{^53(znWd!nSkYwq zf$u!{jD6?rS<I0o)FMK{*;1T_nIj(!7g<{<$Li_S5%hT*rvVbdhaz{{=8%F8i+r4Y zGZ#g_&Z&jQ(;`Ae9ktdG?A+_qfBnehnLRIV>so-bc$e}da)T}ufobDk2QMH&svkYa zMyn7Z0I_MD&3@+$z3gcX>0WW-huXa*7lXk&OZZ2uH2d@akFocFi{fhAhgZYQZZ^gk zmm#pj&Zw~)V=S>p(b!F5Lu1E=Ac7#hvvgP%SlFfa-ocK&ml!ogi6$l*O;6OACzdnI zS$zK2pn2Z+`G4Q{`+ctLPC4hynRd#3U-xwpZp$Yq-~GbuM8P%;0rP%o;85%dPK|2< z9r3O-A%yrzFUuBRytGiSmEBQc>NZ$<T+~FO9axdQhNRDshp=6c8g-Y2CB4ywv!~Uh zO^q*m5~L;#2&)D4K|h#Ykp@ptAUi~j_O%1cN~B+i<d-@v3zhgGE7TG;J}=R^v!5;S zf{v_|0_7vFlvjF#p|S}!6WC4eT#{w#21`R^L;9aDmR4a27ITQUya6<kz0KaDCaYN6 zVA~KZguPghHnAxS<L52Vde!>12w>1^sjY3k9RFF$B~jY6O%1Xz@G=o4tQoPLH-Xdc zq~s>&8x-On9iN#UBYY;mxova^KXH;i;yp1XCL$@0_X(}4ZYnLTG>PSZ{GR`Smsv5~ zr=br9Rf*nLdyj1AymtC+i_m9h>4mT8>vYC3x|AP2Au4pXm>e0O9L0P2)iyU5RWw<| zs=Ggy$V|!W$ck0(kdb0_WKO7`{6reLjoW<OBVsenQNnGsA>N1R7Jk5hSij+7iashS zlHcUrv~Pb+6@q}9(A@Mcl-=>cBzEm!GDED2Dhl1Ig-v)EjASyot23*I9G|n@mmE2R znA6l$KVJk24xlw|K8!8XHkLH8RX+5L?OTSPA*Yn->9uu69-y9@_67zD<zs0R8_)<B zQG+D?@lDC+r9GrQhfkj%{IT7?JpS?}Yc&i;(T3RAXg($ulr3TuNi2}cnEc$_y!;$} zv{5Lsl`*85dU6J6UZf->CJ9MN2>5_}Qf79dn2ecxmbN=8P)}my7``0ohB1rDF<Hze z!IWWwSeYr+)N7zQ3Cif&Jlk#N**?N?CPPYQ5}%X;ZXz+9+85KlOp-Ap*~FVNGEGLY z3`%!b5P4!Uz&OGuB_}5#?l6#U7Axs`CNVSFWXeP`p@z6IB%2x#{s&LWV$fV?Cz%ox zQ9*+cOjFBgER$$7C1vqhCNLmYlUN3Nm7Lj-XiDI5Ch=l0HI>s8fU}aav$ITQqfkjw zn5)38nGIlu;^Pw%;>8deT}BNIXu{3r>}-osC?^I6EMbYykGkL5gUg9G$HgXqI}66c zv@lyAp#&LXjoI-z(0(%K0RJxM>5#T^xpC%LJ!U7}DI;v22uDm|^hR?$ED{!TE>f1F z1~(-WmuHB}iQ)CJu`yzVEu)AgF)>C<TrQtyvE&(%u7o5plA7vK3wZK?1fi>~(OiK( zH!4c6j}oG6*#$J7i8AKs3;2TE+yZ1NB=OAmxJX3?eI7<~F)<MaF~+9Pqk1ONm={yX z7v|*^B3%K|Gi0?xlvM*LT~3_IDI+;CJqcF>w@XYwkcuHrm7<L4>XSuZ&Vsio+*lA* z%oi6F6eF{oJ%Z`HU&;Y0q#+vm&X%q5QQHJ!4umOxEiK>|ei#$vDh9<T#)oU4y`c;% zh%QbQ<T+Fgv>Y{ftKUK7zlE4}-D2Hvcv!eBv|4sqXm#)fLSvgO2&<(1!H|n@f@QKt z4e1$~7_>jVPn5Q)f;|7RKjjrns!!H^Dh2+omWnTA9r0;Hb7xPy_sTz-HcNk<rca7A zj<w~&*tz(~$9Fs*=Y3(kVEj~-lLl0tMx~OOSTh7!r{0*6)s#{ZQ=me=ocI`1B(yDq z*^tOc{{%5?eh#&3qCEm8c#d5^dh=wD1>P%FMngI{ijvH+8SzQ9&w}OCV%MdFWa>>x z-8%M$su;&43xL`Dg`0QDtiQ#lyU5^1A{MILzQ4cY5`VI=tRw><Rb!ffz)&EcbE|-r z%2Dm}A8($=du&Nf+9-OL_?GyWsWAAnb=XF6g)N7#TtByP@P-XOQ7UOb=UXt98Pl~I zyM9>-S$bob5n6dhLu!fv)HW)Ool9y=N>pliYIJHOkhLfz{!H4DoH}5cRJ2dmFs`t+ zu&xlReN=5%>n@jm(lWDs(a{aqZD)zkNyv$p6AlX-<~!C?Wz`mO#_p-H0q-gr+Vwdl zt3}eICNv2H5}7s?0#efCZ1O7!QTNy3iaWyqhQ8)xztQZUwgqs8fM?JtJ($U4Gs`pb zjm4QoPGq38A55Yw8ED%tC&-9)GA5+QCu%d<^m1c<x}4@uX#q3(DT<lR(urNe7&?~4 zxHl}R$WWA0;FMCuB(w1be1y~p1VKcCttHG+PBYOujF~M@k~=MUG;Tf`{pfRIze1-W z-IaUh(bdR(&cd0{2JXjdX6{pRpx<=%2_0*WGbLmuIHjkgrx=q}>8!z0m{%(NO~x`a zo|2}1^H_k=TH%bSVLtEAYA9`ga)a$h-c86!%t|&p!PT4rS92<xk{B5pBMzkRGS~al zmhQ=VG)&?MRwqfQPbtZZ?ygRk{&{@@QJ-I>6QiC=cI=@;$&tIo+n%Q;&>mXaW7*rI zy@hBz4;y6uhAF@Gry#F*A~|qifN88T<&=y2%gYX&(Vh(1=TR=?1^Z=zAi5VV?>;D$ zuBHcf+W)SGI1SGJMEB8fkvcex96IE#*+<7{zDHEJD@27lEy}JA$-+Ikd-n-MQsf)k z{W^uJ<r#wox&vusq`Zux?(c#qnVp_2MiRWui!qMq{*l)>P4TX;bgXqT$>->0a`}a| z<C#6I9Ws9oIjnnb3b8FFDO_=4F&bZTg<f%lR6}@HIO4-tP5*wFFy59e8H;5sQ@qXw zy9b`DE+sv~)y4al?%<~ak*xuf^-Pzc^oQUNfpZL((JJ6TR!oNFb0|@KM_wvP0mYht z;?jaHjwgE|2jfEf+uXTXOY2)(&(>ePdUl7W=h7Xs<dek_Ez<LgwGb!VfhOcw_Z8F3 z?5d|*ImGg%#Ku8%d5R-_W1^0{0a_(G<poRVbB<7HpE5r_FUBND?{>}RqM}SWF`{op z^4`ii)#YznA3V}N@_ex1TOqJ6b8lT`ZN<Li3SZUjL5DEobJSADb(EWk5cKG<_)r+i zzzPu=k(C=Q`d6jytFBQsx0N0`sy!Nd$g558uSwrmT~$-H&rr2fb!JiHv`N}Y-qV&X z5~8ES!5sMF!N*-+D4zySq_g`(K;3B1+3X?sVE;nN$36@O73EE}=BcDl<&4S6#$;Yn zKt`>EmNKK2ME*e_C1_AzoM6X`6O<p0LBXAl|E(N14&}qwc`9C?7Gc&q5iI6Lm8BHq zIvw9#kegAaFK`0SR5B*s$+-n7Wl_0KD|bibhG5|2WIaGnAul<lF9^wq(mSnmkJ6`v z<VHDxataVmnyin?2r1Az9d|F#mu2J@pm1`^oSRk@pX=16ux;c%jV(?o&dn%sB7*f= zMzOv)EW_!899R$ZDPc}j=(?5?o*NFj?cP!(*)07?GJ06UND-z1<rv6*V_n6?Zrqr> zm4_<yc+9-a<n<$$zqov034LW=*o^26;$_N^S*>Z>-M7n#;twq`Bc63AFdV5sUoHli z(Ey~Q2U#*gm`cYEqW$~#r^`qrok>2OCH<wMZ7gwk7AI+G$KM~G_dJ$<vf=x~n9`YG zH9D+1_hoj`mxv-=q$Y1$M?U|v_k)QP^YIG6$$y~GC8Nr&k<tN<<SOCO<QOa41*0Om z#ved~R6*x4T~py~tj3k?{-X<+uIccLBD?fZ8Z2kGvh)iMFcglVxk{L?;MYZ724zSO zZG#!&?NA+E9b6!EU62ki=IBWDfRT|&@zG+}1=|58I4auTUu!#{^w0M%j}ol%w)k#9 zc448(oG)7CT;&D%)zz|r#YiGCNKFEDy9y8yrOJvCk1;P#OTI@HE9lR-qg!AiTR%)_ zTeGNQAy41IXdDrxJ2L&um@2+HYch49!?e^NH-9<_j2296I%|YB+#xnQ+hB&Y2cWfc z;NF}x5K7L2E{M*Zmnp_1lZfsQNLG-`XJI4U#$P{k^y@F@AD+K-z5kZYqIa9muI;U= zFTU)k!`xsDaT<<yc_MWjM&A)>$65sB`tfr<S~GLTCu^^sJ6OGUpV;8h<XP{bnmcQj z_b@qb$>|UBp4j_|y3-z3)^~K7cu%1F>p))fT1pfmLYP-DB`aKW7V}G%#fGiG2C{-V zi#fw<%>>aYlb>~QNaqC~kOShoo5^d~ClEPT*os)!#o8q~%Su)VQmE|#htq$p`7D^1 z&`DwU$uqI%`17Z8N={+}(l5nC`86+uykN`(fw=oR;#q<AOGjOH=|m|Mv=1dGbIzR8 zo{K#bb`pn>>p>L=wxkYV+3}*Up#a&S9Y_LuG?BnmL?Zyna|hEyX%4yuY8!V^prJ6Z zE+&3ZjlHOq0}}9g@=svGMdAl7`h({M5~{R~`;c}}YMZ0A?UdfY%zGz3Z{V{Nhj3=* zhg5|0EhWLALXE^<m?l(nu+%!7vn54JyltYC#!GpUo%D)S2?kSXE<o-x=zQX+O7qXD z2ochxk+vY4lHL*0U}KmLyY0Ke5Te^h{LcQZO1lhwqb5NUI*=%tw0?_MO%&2hr1w{k z1bBz$!yd7aNxMarDgA`Bx&IowTX>Tq8R1;pMgv9PA9gvB&PTa}!0kDY%!Pa``Iq#% zw7k4bWy(lQ#YC)x&IB5@IF{}KPM%uY+W`fFC1Pzz^Og4YzG>|T$VfT9ZRCM=4LNCj zHi+9~++^C4U3}M(4z8#6H%2~Pu+-77(Z4yk6%Lmr+X!S#z?AnEX^nTX{UQCv1zw51 z_LcUlyla(Lgh_Szdy03LwmL0sW<I2>2Y@4@R-WZLUZkvWwmGydVpr52r`vTP=KhJ! z=7K%_z5KivoOK)tv9RfMFe1)gRusRxC1F$2CW8}P$Mcn>)eLOgTd-aQsi?bjhYR|2 z+u03ALDVze5s>?>2Ua#N&O1U99J9T>GPd#CyiyXp#UnIfam-5Zts9)+%Nf66^|qx! zA2^YyDNLMSlCO`}$K-2)Vr%4-@()^;9sngW67AY>+~<6Z(;Aw{BsMlDOE0N2vl_)U zB=LOS@rGRokcN&waJ1!Y`KL}a@>|AIYpQF|HYC->L8&(CTgH}#KzGdXTH~n!{yUKd zpY?LAXsv3lZMeM5@%N|1{stLb7k<}qk9l9_KBLNd4fZ=C0_E@_VTGk$rJlv^`CFVO z`7)LB^WLAKoe}+h;C$h>Z`78Et)U)HXT6w<gl&WO71y(uGzF$V^h^f$@mkHQ`O1BU zeaU;`!{2ozgMEqp^xykkKI2&HQ{`3RdA1pt9orPn=4I=PkC*%_^_9Hv>Hd|8Ww0pk z65Aaz)mVQAitn(mEPRT&P6wI!_z$$-sj`2jFJ?!J;QO3>kvLu;pFvNn>kbqNL%CCn zvNyUdk8@piDdB)DSJ!?t@093)+2rBC{VSJ-xPSa{#rD$}!YEFawH_16<m+5SQh0Ji zvMMV)6XTr$3#JYV5xkSaqP(=8M?&h7gxit7_zcm~{v*~>`~LLRHlq3J;DOI8gbd}5 z;+WcIZBy2srUI;eSib4*MGzAF{5@g!?2Zj>77iWCFFJsbdF6TA1TLdG4UM_vtgK9{ zPN@{2<B=Me78t0ty`l6=^G){?Bvla?=H;G<KGQMc5gI_^lb)`Ok2fYjfIig#KIE4# z99EVZN>UKU){jlvmcDJ9_Az~#4GT{X<39$~=2r9igH=`81!V$#RS6pT72G<H4QtkH z-GBH<+kvA;Tiw<I>T?9-Kp0!jKrqyLDFHaT>12N2&tX+v4zxs1peo-)K;{s#9__3b z{Bk~;-|k4iR&e9q3!6D-VD8U9{ZM%I^ZPMlfpkpfCU0LhZmh?N+ut{R^6Txkxh?|w z*RMIhIWt0B_{QZQ7Ikx24Z=Ws(cmjo{A-(-to%4o|G`S_@^ZIBz5-bGdw9&8LwjlI zCi3x8n6bBzQP)YBpt0AJR@=}w$w=*~`toBiEKY8GL^$%Ewmz{gwpOUks>!agsL0i> zDO~cwwDyBq$%^N0ziFR9{aMpS!-fr7+Y{ybG`HmS&|GAt2k4%Iw!7=M@H3*XofkE6 z3aQ5(WnF!8Jr4`!bfqRme>(NF8JamEtZ9eQ$49Ffpr1ZM3FA3ks>~=Y%P7kOsRfU8 z$*J^_QnP#momoxaBVHFi$*Dgn*gBl;Lb&V8u1%e?WcIY_=jYrMG#mPTeeTQaV(-K1 zpMZgnk(7UTE`8MZ?4y;BI(3gUUu%A|-tJt<Jso$qf4_I%?dNCOnHwN%bX&iC{XFz5 z3-Q)|y2rLa<(E+zQj=~>OXuq{%BxfBeaJUoko~~=r0zMl_h{Q5RZ!FJ=zRzoee%N( zPekc;Jx8w70#ZP))2{$^#P6tzQTrzg`8yk9Yx3b<Zj7!`ZTmc|<7+J`hPPuozVS=9 z13p-cZ~S^}g=bpu&GHLN@JsY9_N_}$#T{r*YUjyyf|AKsV(-W55@+_imq?{`2ZzCi zdIUh5YqeV~J_TMvYF0|TnK!cMvQC_?IIc3KXB1}hrj)|>@6(xIL|`(=q!`i+2EmY& zY)IlgQUk-i6IEM0Vj`BIFC~YQZrmlqN<RBUs7YzdtV&RABg#LwLx<&8GBWq>S<##e zijUmzKSm`jJ$?CN>o-leO_`2}D>fL#odpNp+QXkICB0k8nD>bAF42I3EYX}^RZ?54 zJ+<@1j&{gSts*fi$Okm$Pp6hiBg)4DU_lk(s|Sj7$`lMeqv(g)kZ}D9Fam@JhpqS3 zh8e@N!-02fFb7-vlLOC(VA9u}7r5mf9<Iw>+fJQ6jlVVzSHT)#%jC9VtA|J1t~UI` zRu6&drA#^Pa@XZZcd8Bl<+QKKX}5Y{$MdwOcFAc=WgU!zAJQvuF`+kqlis9NZ~&}< z%Vi>ZV2$`b=%BKQh6(%STG%gqWrZ=lQj9zje;f>KUtp-3L+)2q8qmB*KiST4<N!SY z*Xm7_Pz7YTyoO)$;95s%Nrynz&>pU2K7-MD54`My$OH^E7lCr--x$06<jg$bvSXnG z2ZUEjVyrB-{meBuCMM7r;FRuP7+e`AiRkq@Pj!y&di<=Nq5o3)6$ezu2`SlTLpEPp zVlK=Rp+9;=T7_=!WoS42SJ5E_e#YSF?m``dW1<7o16~yBO_w{`Rw{QE1yq9#9%Y%k zLljZgaq_KHMYp3Y`iC<}^=x`XBl%l*cRd0I>?Z<XK%o`ze&{=6jwW?LBqIbdvE9>9 z&37l@P|~S1_u*g?n9tSZfll)sc(w);@4+ODCyRArmrUD!Sxp~<6j^hB8uk-ckjH@Y z4eDfY1X(R$@rRzoMm3NHUG~>>P$5&3SJ9Z-BOt90>4QIw^eq`H)so(QaVIjY<s@CR z-kHtDEUq<wU;PhMv1w(KxV<d(hi0v2nxXT3rp@?wONDT(@o%>uv<*>vJ%o4PO?Y?g z*zB>qN7QDY@elVN^ATHv(*|wT8W5$VhhtAKq(n!j#qeE=SWPLGGNMI8Zdy*RR<qtf zI+(V!zgx?Nqm6%Vy!*Vs3F8wcjCwnJ6z>_mX~*cNM~-=m2mKQ0+iSF4r<BH}jHlt< z?LoroZKK-8X?+Xbn}s`fvhV!*Tf%RAYr)=zpQ(EN$4%nainK?&wMI$F;84aK!GuW3 zV%|D|Eh;f46^TZ89Q9hGjb}X5CU^x4A8#A7dyIBR(bg8>#~-tQ{OPBJA9<h^ob6&r zP7kSqgrkoMhiC1XGxI*z;#a#(um!L{td5ECcM+%f&0ev1s%ptppAm?Ac&lRE{%Jz{ zluL`g-*VaecF6sBl`VlBMcCeH@}@JLhDF#v%2TUMr9x&=UT#sQDzmsOrI>H2Jr6`U z1e@UU2<+@2f%bRg&|nTg1bgzB#j<5TkROsg*M%)Wj6lp5djqjI5J>%g&#(h4)<E`| zEU^MOyS+`$(IHRCpQp0g+r7w(0B+Fn!qzikn%9b@BDIluj4{`kmj+cSLtbvLK}6oN z;_TO6-}7WP&i+k&|5x0s-WX%lBO_*>CznoZp1{9|r$uDqn}9IP{{HLclK`p9`we<S zj9&ZCj{mDT0nfiQolKLa@0QJo7W+GRcz@^U%OgerGoc=FkGyOK@2Od!iKG|f>Ao^( z8IPTRAbwSS?+^0wnd3p8yG0`JG~hipYst$9DpKS7d47B^TUpWOj{LM2W5nPjEj}&Y zkPwe^l()3)K3;JKPH!ZarAe)27;SW7UJ03HL@B}IHOblT2pMI%WP%J6Jg=G#>GRIH zT!B}_R<9^(w|?~K^$5K5*9S)K<m2PhGvY<B{K#GT&F8?{j0jFL@SIAspgDh6WWJZG zb0(2EOnp=4e(qnrDb3&CY2iZV%wYO*GaybjFfSlP)9D|61#n`3i2>iQdy$uy{Uu(y zR9&66&%fG9<39Iu#Hl4S?*HQQ^U}(r^G5&T7~QQa7!#cqk{A8UXmDRa;fgn#$y_K@ z(s1s%`rtc1JI3S(r^Q5*-*i8}<EWVl9VfFnBP(0nM;0#CjX-GI2(@^RL?a-vTi0#` zr25E+eJ`><KgQ^H9Fbl1zmD+B&+t!<Qxh&2kFGr#qn4gnx4`F2e_{v-tb0IKZ!g)x zNRREhr_9p7ojVV6K8W4Exfz3o<3u%w@pqXVHG!WnxuDtw$k;D1K0i)x?)9OL%t&JI z3dg}TBgiea{~7~&zrYX44a&#-0RVyXUu4WNrxj?(_QJ2cmyBHjbmf>;#Ch-^^bIGf z&HI4ffQnz>zkXum9$ZVOxzcw=QhUrx5m1G?%6}`!NOA}x^o6oY(f`YTO=mrvu7Rt7 zo02+Ksih9;x(d|mI!%INyc%&Xk2y)hw$<0SiG;J|g1^_Je#b5Wh*jIZRcg&e#s8h{ z2bb|^<E8uDXF!X7(^b?}414W2^Mq(AH%Gav=@R+d2(q&Drg>Ynu~M$mCfd2;&`Qlo zQ-e-AU?(4f#Ua`R$)45t4edTMT;#xu$-t_POT==CblCe@UGau<wyEHhj{~PXP49xF zngxntQU|;^h#c*J=LI1@u8^%p?2ju))2&@#qK~#j@wTaOBacyob`xP(x@Y^G*>d8i zvyKDk%}>|+0J_|75lyw~*yOZTt89a81050M6fF&u1|2(^c5Br!r&UL>XSHphZIB}! zPKE<PGLHIEUvC(kCQ_plg$NIWIX>p6vO<p$Lxmq2Va)M$0-|7?oI@HU4Lo`*?Yq^- zoMaP1)o(qX-g9Px?!IL0vhD(F<nW(CeEx%)ymBA(y@F(LAa)~uMzk0<^|~i-B0+Q> zhgbd$x}}0LrimHep2@Bug&{@3Wyu*S_=J`ESk@ZoOUcwN2=N7dRMvOl2yfhtyq)*i zC%e{DrPwt}NhX-MrX!xmS8Pp4l0Pcz0_DB;zZnB@+&9=U@4q)f>{_5qFvXh^Oe=PI zu54O!X)5VGoP0E$uId_Vo!n1P?yC}w@FKsdElDm+E=*C;0Y<tkORJ~%t&^Y9Ro1cO zqZ_36{Yy7tVfcw;b+(W}Jsx7nG>FW<hA(*mf53BrNQDjpLTV5z4Up#ivrKQ=*#@xG zhx#xWg5B(FakgvhYEzOyoi3bn=etmvp!<Qw43`E_AL64#01*=2WTiRM9K5xn8l?3r zUa}UzVq|OxtMkhD%JYa1@mDRLZAb&j!8#fjr%#GXiBF9)#-+mmo})hu<ix~ldDW(p z0&}@3AKfcyRgu@z(h;XIjAU}@ZJ~`md8+Zv7~^V*njVPBisXZgA^NDG9qXd$klbMz z+q3-45qUvn(G><&fhGMesSru8J#emS8!Tlt>8&d3XY?4CSrcC#R-m_l*rVb{6;<y6 zi>`J@&i1$<zd+v<j}qU*(;V@%<mZLu#T7?YrdC=$uSIOrlALR*u5s30Tq1eZLuyN| zPOJ<o^3Qs&jGma_x-={-G0+sOO3MkC>}=l%XU4YY7i1Qi+VhhhsjS1Pg6nQ);;#dA z_wj<pz}&#JP$-ne>tQDhRLvL+P9SYqfWfQOr_`q<s==%>q{`JUG}UGw%_Zl)%FE0% zm*!i_Q>(#-2+)N+KB;h-OosafLpu%qt6OS7_PijN5b{o4=(X+9YumG(_I7DqShv~( zv?rVCE%0<%SQz;Jzm`}HqeluLNV_^XvIVj>@Q~sV&s>#zbq-*Fm+yaeS!P9rwzFfg z`dJ5#C$|aCRt2j`G|3(tr6zR4vkr1l2RZ;9d4}O*gJciiY>)lU%4YjJotAvA1}5r$ zwMVIat-Cw5_gn2p0PCp{NhPV`s_<|Qtg?_U^^<;d=6O1l$FyqZ;{N@}U0sz>`1B#X zFhfX>Aq70CA=O+Z`ow`%W+Vq3ZZ56-lV(EGfmRO1%3Klri1G2-00QmFN+B0xE>Cir zM~s>{9sTYkF&UA5F#J~Gu$BKgEbvuXwjQvmJ>}_BTMu+6*nopqn$4Lea6Y<`2$BxJ z8>DeAlXT3Sut7{h=V<18lT6$c^jMK<sHiy*AN3$LP%CqFR*TJkt_)y#@%6vfF^;xy zvzIKH4MWfDCFj0`{vnz$U7GUCb4z9e>H;ALs|DH649oN>@Lv5a!*utlQ+0)ETy5H6 zHweRXtNqX5deZ+TgMXj<VFGp6b@|x#H!0|Aac2HRG>BS*hVNl#Z!YGF_i5LC38s|v z)R_47F>aA=UL#jem^pXy^kHsP5imJyV)FY&m2u@}!)87pB03;N45M~o^rh}^yKs5g zPUV|i5?IHROtz)2x+PmoFFZ~D%q(SEvargxvjl{x=&EmD77MOtd=Y&C#!Apcv~uLF z_dql;;IvRPZ)oWT-u4H(W!nySh>1lycg|pTBv<Tg;K>ozoRN`j6pJ37CQl1)s4nI0 zYr4!|xL`0|5bqlA<b799-a7MuC{B<OU`(sMQToj-Ehgk`@`POa(E6COz0B^6@Chyw z$$My|)HM5B+NhG2vI|HPg~SF}ZsS!&F(El2ymW?Ixd~)5V1(X)285*0QIT}mPC$6o zbjcmM@+5UXMj*ZYMl<16f5N9@o6C|~+bm+RWi;DR=*R3D=_vJ=O!S2Gj><Y8u26D# z3)wTBR0_2TJ4=0e2(JW3h6J0$lk}rDy0VzAhri_k>20%Xx3Q{ENz!h>jvHmnD+2B~ zXXU?T%$>3wu9>uiCT}uQh&de}5b16-I(<wBL~TveHs4IE0nT&nWo|A=HAXz79~@54 zcO>O(TVwPlvv`gkVGxt}FNm<Rw4e*#nfF=BOWF6f+<CY4ZKvWfWIUYUMC@|l9$6h2 zGMRm|%YmVj(P>**E|7|mW}kx1xyubs3w(V2d|HFg?GXQ1chGgFHWi3EW*nVqRJqJ5 zD%m39^{db`{wLewKjROdC_PXYT)v=D{Gf5-apSLO!Hop6C=>ZhC!(U8Md`gF0Q2Mn zz0F2`l?0ZK0Qz29D4&)P?mJbWGg)Gg?lAj{8}jz@2roudYR49})POgYPcF!B_P#yw zu6I){fX-`ktVg;%$G3>`)A~;vY8t+)Yx!kQXl3Z(hHH&qHZ(L`PTliGedBj^d+IMY zd|TfhotsfuMs8^m?u}U9`N-L>iKC@-N2+ZU*hqG$Tqh3m8NzFNo>C}ii;NP-liQ4M z{EFRK9zO7Ky)8Bez)?osj5Yz@i}hf(SZ|aBklwhdnya|ew;wbhAf$x=Y)+eDTT?wR z3~Mbzhc=v^C|d=6lBIWO3E82thIMV_!c&S9AU*)Lzl`D(Wkonws7#6m_#iQ#iA*Uo zDYK%p@)=VI8)N%`>&A4T_cZV+DH&`xft>uMjk8NOF@~g+{47=z*V9Fj4nzfS#JKeN z$IxpKmQwl5Bt|o!r(WSqU;CU3C=9I;G<FIXMO9HrbyY-Z0IG|;J0nA})Cb!opLR~u zS5dAAiHQzP5s|i^;!CzXB|0~hM}mF|BDu-MR98PQz~3KPh3>4R+999_y!qWFRu!ZC zaJl?`ilGYs2)X=z;M*i)-sfP=Ga4aMi+?gB9)475SOazi2pA*kot`G6LvSvsMpgF@ z`pMK@17!+5gF%HK17wrr^8_g*&Jj7})B-Z&5*Xy-@q(Pl<gP0#WAj4<uqXCYghs^# zh%P&xZwiTy2@qU-2(Rp}UPA<1m|I{f;L8i+A}wNRUWuugZ#I+%Z`UHPonpL_I6D+8 zA?=Y6%DeAq*e7DMO0loLVRvakd`yl|q{M}?Q`FC6yVK8Al41L}oq=Inf<m%#BZT}) zCLyOVp^S&!l~I&I&^|jMGdx4os1!XE(dmqLW<-94d?-dyTT$FnQJNH2AjAYPrnrc# zFg_wKF)l7AB|lX*+cJuRRHi<;BqjhZzipf*PXAJDVq9c$4DT6J+9-bFTU)oUVbc-6 zH6JOFTHz9%8CQrqqEPfRTV%czvp>_l{Vv3ich~ILC?=;RCu;|@0jA=(QoIOAm|vJ> z$rTHNn5c-*q!78zihi4S)EyAzy?yrA)$b9=SO<BtD$8t0$rj^$8Pr|TGb1t4n8=63 zMF)w~acvuv@>W$u_fOBf>|Ap(-!O~YSJ%)ECeI!{dzKX>=?lcD0LHA>!_KDB<9!GS z58t`7IJ`>ChhjjkS%wcO6a@h|0DfblqLNXe1Vtacn=kGHNuA5#8Y=X-H*wwf#;0N5 zzJ}*_#UkRapaS}adF)(ecc#CI$jO`fWLXR;S#rIfS2;8mRhA3tGkpi)>z~)S&+{5% zcp`Go%ManVJ}-Y)8Sc78yo&PsC=~UyHx6*Lj7x|17v4ZT#0D^S4pjisWdwpsB?GCt zAJtU(QN_cHhgj1CjGo<#1{Gw$(z^e84McK$y7%_Pa=NiwQcQj`($dp=4FWzZ-6(YD zmEWFpqYCQ)aN3;hetzCwUXp&iavXE?ATY@X4!%F*tG;PZE|USDHC*0Lww05dQtRM) z^1*@2mblww#3jvF|8^l)tZBH4ClyW6je%uCS@6#6jeI!uD`xlCnoAI$h%}Yu`Hf9l zXZEklNcobYDX4gp5Hh%w-Ct3HcG7O5i?emv0&aECTKDaOrk|t2Z~IpLDqi047P<Qe z`=n#eFtLG7=E&X4^sbVa|Kb*`T|alVM_Id%uzxS3>B}m16jnzzB8x&_UtU&QkeC;3 z786X-CVz|Sql)0FL)udZ_nmKRiSe%!wz)C5S^CoO2y+PU8xj#5mK(b#O8m;NB4CA< zG>+z?b_68(@<XTHcyRyb*AMEd5~J$GY06r^z+7+sqctlR&O5Z`N_}N+O%1j>+kIjC zt9x{1{T@0`WV&<#_S10>RkkW+*RR%8Zph@xL*zD7KV<TE4<CLf|4kkuBBXBy=gER* z{SQWCr&3&Hf1-gulR)MwTMq>ha+iFtl)f^9D3?*?X!6Q3CE4sSnm93W)M){^%gW{5 zXRjad_+X`<*Xmdi%(jZhv>(D#t?zMPExs^QaF$f;%*Bglh|aW^a>n^Z9fGq`Vmr=X zfcHUaAXRN1=bBHiJ-zPq$ET0LlD+!OsUOFZVF_oJ5fxP-U}P)VN?p#lo!<TV(zAWj zuFm>~yjOAR@}bg8mm<p!UpaD_e0X`qr9<SUfn|HXSaNOd<+97`uQZi~TyY~a>FZbL zUVa1750{CqvhuS<@QuyC{8@F#=jJO*KR^7`^|WU8EYWM_FXgE1A6z?89Ha_Hs<%~g zbnGcI;4~UReNQ`;st+A-6jIAyPGvNT1V=^B0p;HtxIdpV5THTW{b&v>$O<%33jZ*D zprBEt^hA@QnE1u_Y(+_2fJpXda(=;xv!2W%A>K2E;*(p-vWjGXkv77exwCuUg<IHb z+TwzDw|kf5HV5V6hTtE<q1#cjXN_bOw)L5XM2G}nr_m3_lMk5wGzVGxb=LuYzZ_-+ zR?)~P?4V#ktDw_YeF2<zY&CHBj>MDwoqB@E>v!VGP|qt$=_K9FeZHm~JY$MJE^<D) z8Tql;Q=ynNX39?t&8Jn*w_qoXBDa73b~G-8d<68OeScxUBCmvjQjNCD_Q|*8q<Z<_ zr^wLLbm&p?mhzwTIE(3c6(-xx%v4(%9`0=^+j%;*iVX|&NZi5OYJOmIQ;o4gJmyOO zVq<oA8+`a+R<p5B5416gG1No(@p(L>xI$QUUCf}%>t00UeQ)wF_SlkBU{8qtPlnn9 zsUhWJ1#wr_wI-n<t{`71HCf2oU!e$6Y8GQjp;wfYwq#cG|7<6-gV^HA22&jmm_T>o zq?dIv+p+kQe;(wIW{Ngm`3-^E#CvQ7Uf}-yT}Gp%cARBT7nL5DXf=Ca_<{S3RmIlS zCWn=Y71*UxbnkKr!sY3yP`M}+CCz&>ckv{htwbT%FW<j*0*ZqdX{+6sb~4Y_TdA3? zz`rF5x`5qwj#&b}bpKD7Wvu^4%-k{hmId9tnL_cpB9JyIH8b=``?}(;GTV?HC&U_< zp|;(J5hjJLC^uv+LmBp;0z(fm>*x--H0Tz8#L$<zCbKiofAr4_`bme_Wk7uNC0ENz z0jwldm*t%Dtx)`lEBQL^0<PqN!uWOK`pc)3tqD~g`9ecpQA2~4Hb@@GXZ~2ABaIBL zy7b^n<+aGoON=7Qc=6<%RJJ8nZp{}o>h4!!aeZEKL!(xzu{}XVwvqYg=^1ebL~K>W zTWOnS4d&+4sw*sJC$DqFflht*ytbk=qgWuXoTU!zs*O7ljL(rN-!9Pxhb2b{wC@tq zmp#{BaS7pwh$h1Wjei?9oubU@Bif3R47lIbXJIv5wc$n1n@iy{OhV4rmyp-lrd`=} zr6QeVU5eu_W+_V+GefBbrX$1!4rfQvZOjh#V|~-1-!4XeZV=CZpd7Vn?K|W4uKP*6 z-u=#L*_!Tm&JCd_6nEK0FF#X@e`V#kgneXaA$b{wbbHC2yw&LqGzumJnn-JuRW0?> z)duf6x@Xr>0r2o)2#7i0p1w^8V-u2+6A(JkugS=qXv@1Gl1FqH64wRqIwB`_?yQIJ z{g{sSWb}sEcs<1G$Qd07?#2<LdJY?x3>JWNOL~^*>%Tt2gMV-J@o)aPe)qxdmc(t9 zA~~m)hNp8WX{o6Q$1>aOm_%q?B=FPNgv6}uysN+E7K#bw?~!1WHajajTe!~VSQ6qg z#CAIT33-Rf%FNEp=D%jMvl0?Ssn1cl8Y(6sH8C-spTuhBp(42u;6z0<DKDy$VKJgA z0qY~Sc2`BzES77t2eqjXP#btehH?vRBfHNfmY>hYCuV1h#`Me5I3~-OWy<2e!qF1r z;nGx5o;zjPmbIP_WnnMrzDCVProAQWxLI^ohD!PJs6vXli%_{S4}Lp@dfdaM*OEWJ zB+*An?k+O?Jg8wHLfi<`Oi$1O*=tTbc4ptRzRG<Yy5BuMFvV}DpjoP*fy%_Zf|NoC zIp<g8i3Qc!t%tPIf;R3-YFHD1LSf$Xl10)Jyi&iTN-M*+Z1WQWyxpRg^K%!JmwAdM zgkb{qeHyx(Z!FF&D-X;6xKx}}zpCw)_F&QOrW&ETVSoN{{@RI<m}=Qv!4z#@2kowa zsJQTus_6CzL>k=oIqo?@i)Up!H;t}hx8+CF7nGaQEdo_5lfwfOw(zSwa?1S09aWKg z&T5J8hsxr=51C7FZd^G-`FnEUnlqOk3vUna;TInWY2x#AI7qzSQ06RS_U5-#?B^{O zLn`Q!MddDpFk;tm+jgboP13p1A#*pm3F|hx#%|?<12VG%MLI%Bhx;>DCnYWzab(SF zncZ!>OAhddcZGY_iVg0CA5GEPJjq|2o2Q2x#>@6@o^9>zt*!X;bQ3|bY31~WZH5Ga z8rckQOHfg?3MEAslqJ^lM-Jqc?GlRyGX7f^M=s=NFE81(Rn(NLHtr3+^u3n6b@O*( zfAMJ0#%7^uW6@$4#3Eb8Er{x(mT$?*;ELeBR?D~F5?4?uvkq1lPV+@qW7iCDZyCXM z&XWGTW*5TCC0Ag5U)HH?ja`3n57b1d>x>3XFE`<yz985bt#`7Gr~hU&2eZ|TW><cm z5nx@}h$$aq7GT|=zl37Fr7yzXiGBCcZg*DGaU5Br9zONveG7tT1kG_vc0%0L%L{JG zzoO>0twr+XekJc81T@E@1t6w30`CezYOESE;Fuu!J)6s+O7x}Sju0ET4qV(z^mSEN zDocj};`%@Je^L9p&Ws=Tys~m#9kbQXtLX$z#XYdw!PFM7>q{oV6{0zz`ChVsOk=Xn z>beHd_e&t;h7;v`VsV&^RjccCdA)n>#j<T*XW;j0&G$z`7VTZZQ?TnT+PpeMoDGOK zy*L!n^$U@Gu=?J!4_Mms+UOqzl+wZec<pyNVsaj$?7-;^O(N?gyj9~!KOL^x1gRL_ z4;|jPT)b${^l%DEn>b5+cDz7eVG(~6C(c%WK%M>GN7$@0Or?l61Dq7vXt&6#J3bI* zD*=tiW$n@v^)G7DLy6eHyw;%rM{K~S3WTkjs5=Op`;(v(1hJldJI4ays}pgkjcVb4 zy#AtG!mBz|a1j`7dJ)b#2#~<xawP|okx(QXOdg<uxAmG6`pym3bdGKUIyW5Ve}@@& z$S^_ky`Gc-Z#xMrKz*;jO9$fI_0lKwRZemPz1c;Z8!42Vu^AVkLgg%EXJwj=Pzz5n zCuMIs>Igu0dQ^<+ZSa{5T#1mqe=wv^;IUhS%HGz)%b7_t;Q_6ue!g>4#Z3{prwWXP znWgXxNS#KL!JLxel$ny0oy1c$n~)F-MI!yO)KKQms*%U&%RH^5J7MU#MkC2<2p`>! zE2y~f%|$W8E7!L)NafjhH0)x5NoFxxng!_a%jA+AFK-XFYqCuZ@JOXIgR$`IU{iB5 z0*2g|2GAhKHy;sJ?F2aZ)?ai^j|bQu+8#0i0nyvHX{no1HlBkL6aGVnxUnrw`BhaS zfYuKm4|oD$T(b3FIw#~00yeuZ>0=;na^X(SbiH#YWJnR$&Pp9Xe7GX+;yKRb8EUZz zpyJi*g0_2#U43mgn8nMz-kYMOQ*p-zlK1XhYdH(HcZ5U|5bJ(JhN`L#mjgxf$Ar({ z5uWvbhGK(asnh21)L#`C7aZl!LvHHt>a8MZ+J?|dMCR-vt3f-kJ5exPr9JE4y7BQ} z@U6jAZRtTas_p$EfEnQ=R=0|Ls>aVseq~Uo&o<F><4U(-{Lq!{t((LK&!Ezk*ln|q z&?&91cBHpXSSY!IwH|-}{ku?Rl84vwcx7ori`csFc>ACHgA?SO4lDbQw?E+jJdTyt zfA$=A^V}!;v{r;3=V3JO+{fL}Nfw6}U%iPF4hd=vn?3EY;kwyeZ5@oQW3LW@;9&oh zwUS^A)pFJh8R4>xtoQ+MgeX!f?c${UwgZg3`U76AZCV6&T+?+~K(!&4iug-r1H^~t zvc8eqg3Cn+M7(O-V%q`?a+G}YZMST<<eMaolg5!K8udhHebxG^oQf$AZYiw8Q<O#~ zBFb_C{0I{}KgJ94Gns&Jf?n1R?z2-zFE<=822}|LWp!vlV4*MJ{&Wnk4{7nMRvFpZ z7guDAg-*^86TB80I#jDS>eKbYMH`QJ@9{KFOM8x*_a<dsh~if_Fd@?M0n!+oKTr38 z!@h*>20e2yEhDGl@)BCf%YTUmV{v&=Rc^J@1oBqU1|N5CPmtfZEF2p077vizC_p1O zgF1UA8sF6<;5$s2R(~zhgx?<81ah6n#hDC8&l<9lj`@jBIV`%Ae^BgqOO=`(UzgP_ zT{pm)Q9r_|<x8O)aA&;+quP=0lU>ARo<QDQw&XS)$D`4(M*ufEOW?oy0b<|li$hP& zh!<!N=#z$nfIm$+{{12Thzbt|Vsi=cN)U}ovJs$8bPJn#a=(P0pz%Z{&Tl&T-Yx$6 zXGgv@h)@*&YJBaYV%ocP&i)|KgTKIe^!W4c<BRPH8xO-7QyNwXh}YY*9QEaKMWF?_ zyhUN&h9G{eyXTr@Q>ZaXEL(Ii`gEj<^x8()g|xr+k+lz6zXlQn>SQuU_Y$ah?K$A3 z2C7M`44I&<Xg?i3)d@BS7Wjjg|AjibYl-_H08p_iNZ9-$As99tKnAiGAcQ9Z9OrWT z_8cpZEqlomj9w8;)$I<%vFv-uESi940lAMBP);Bq!9N9v|EmBoP-nAn|Eo%*QH>$B z>{hfO5=$Oa!|gvur@5iGW&ju@v1&lX4yn=eB<PMF(ueF95t@?8Y~0?k=p;`*V<FmR z&!LGP%4mMo@7h$eGH;oR9Co0S*r*5Vf1G#aPvYnZ<~u9iF!Uq;6eghjAKPx8JtvSf zo#vjNOhBW31LxoXDEm6Hj;7675aGK-pk>lPrZ^@fH<-ul0VMwZ>>bF{+vb8W+WtAI zKMo6U?Lww?;mk5{I^58&QMc<zFs|(s;?pQ1OuVerQVi_e6KUJ!Vaz*|5PpNuC}cyj zG<1)7YN2-;afNC(#v%8*0Xp_+fbF2~$JNkSW!KwW+){@@>UB~-ZgaMe$7Wvh^x0u{ zvrpUJZ1EaMOB%9jDjNCD;cR0~kWZF)4a6oiSdw782=)`8fuXVP3@Wd!tthV%;g_u~ z5B3wKfnD3UTS=dUeJc!*Rx@NA90&L4?>zmTHjkj=LdAi$)lArwgpVd^Z4YsKPRXN@ zQ)p4q%rv0Gbs?9?^zVtw_n5X^A}&2}Cexi6Co&x`RJ+xcJM6w^jnK7}UE{uG?b_X2 zj)>N!?2+Aj4uk*S0T`=8^dO})2B70UWD!*go&B(P_mRWyyVr=%yx7Ro@n_C!0oghP z*OZM!%K|mPnk$88{ZOL&nzg&#kBFUKY@w@p*<!5(dmeWLSp`h?$ZkZM>;?7Q9p1La z#@JZf>LpoAb1}hml(Vi~BWEQ`Sh^eIlD%{_xywtdB}QVU)#nn=>Q9S^f<sjfi!!;7 z1$ZZs^r=LrJ&wG(nAk~Gq}OD^_RS?M*f+gN&r9T$Jwzo<BFb^3m*z@f=ZDUAN!)>g z3uM6=zQOG6KacV@#%Gd9U&bK*Lnwr`=vz}-6Ly9M1_t@ZHpJBH>s9n%r#)Ah*HnAr z99`g^FQ7es#H0uKWdy(+sR|EEjgJ!D{{pz?>c6y8yVAJY_QSQe{-B%Z)d-fL%B6wY zu<#%_8Tz`+1no~n2mB~{=m7o5ooKoJDHs;1$NF%;n5gBeF7MePgw_OChg7RVLZZWc z&>{odrXh+iFQ4py^iXQHkY8lT$P+W)szY!X8?Va9t}uSG_2fnEpEvG(eMYD&Z_01Z zYsqgbtf@&YOD>HrQsJBnV&Y7p{BU|B3IO4>(ma!xlUrqki<}|5eP?_xwr@6!0kU|k z8+_>s+Do8zgQ)!yidK9JM6g)$@l-LoIi|Hut7#ZVS<uCLfPnd9vh;lch5KE*9(jY8 zMk9XhQ)wU>5dc+$sr!KMVu6Xf{Y0x#yZq+*4I-YXVB1K0x(N@r(Xk*}?#FA!rO+NL zrwqoKyh?xEPhSzuK>^tT{G`EyCV3aT<?evZ!E@ES2q2OlX?r}uDzaAE2>OqyWGTA8 z6_C{14w_B3v-r`2tYkECeaTuQRdZA0w=bFlGL{g4c9mqz!EdjBzJK-jY!Tl10RW`p zb@3<_rF4g>@m}5OLjRNQvjeNgLr`UdoUYgNbO39;g0Qw|`tk>pgqV<^`0!}e+7IZV zu;*{%h0;SGieUx8=BQHDN4KL;#|kYe&nGWmgu;1oMNUb+>d-}Up_u&6li$gq@O7Vx z#WCgj{BYI92?gjA%eBN6<6mb<0pC1=*I2YRft`SV;S2*YtpCs7OPzt8136NQ5H){V zE7-OSg*X4?LmlQw)k+MldqenoxM)jw2sA)vH*x$>^)oxnA+a5M1X^vifP+KkjDO}j z5IQ^XQ)6iAPikQ<t|mKhJckEl^?kDT!4D6}xj#u?G!>$C0oN2-wjHV{?Dmk5?ILBB z+si_l1hSrODlKagZP8T4MJ6Of39f8pLUy4@!j;__h9f=smu@*5nfPLB2#OiWdWB-E zD;w3FHbZ&!$l)&q;=mqk4)rP#n@gHY5Awu`y?S`<ERkj?rMvgI*=yF!66i8^y-!gM z=G60)k%@_sI9yab_~4|s<sz;Mq?o;WM9%ZJlJu2q&=!945ny-E&LVvK%{QsN`0Ol( z(2w2(`+FzE7VIBABKGJaZ|Z(hcMg$OfKW*~LWkInFi@qq&P^nr*);SsCXHTFlCL{0 zj0D!9ub){M+?qg+i~$PYfsPTLxw3eV9q<_=0s{jICM=UNV47hu6hRs?M(&2G{u}bN z!P)Mp%!DMHidh8YsVMtkQA4MOsE7RtlnM*m2&=if3r~QR<7z`I{Y?T|)UTOLbA}~H z+u&dAV-)CS(#fP}fdfO^w6oefEHXYCat#C6{Mbly7%#8FPjJ}9){o8C%Uis6`fpE6 zPe@M^!3p(mCIm9vfvLvSR4rXY?=yZ$A%VVHztX@Oh(m0m5|aw0x`gfxAi`cwf5e8= zgaqyO8vn+ULUUe@Aic@P<P^n|duptqi-H;7q=(zGh;OQ{X#@plD#W#ylb@LyQ)y+b zHVa~#fW&Mh5`#0VF_l%;X`lIY?d2@7QQ3&~j7o?@eNXGDjU|7Orwn-$zw{}X%+Fd+ za(KUg0+Kodl1Au)RxtFTQe$<&@M29;dQwIbKz&<?jY&79nM_(!8W`6F>oaRL2iB29 zFi+%X<>ZK@nYA595Z_X=mg&6VOlNV^+2Wg*=BB2A{4?39zk_Wv`@to06wJ&fgdNkK zHXkm@kerGDmb>JhqcojeKtE-kO>*NBvl24nGLo|#$&b>@vefod#v9`wvQvpxXEM1+ zzgjq-vHj{`$V|lt4b*H$x<m<9fGZrCc%GpZN(2$jW=!UcoZN1woo0&y%CsB_xdoLS zJv~N0qa#7flqpe8vvF6Z%no5B%jh~sx^V_Wij|$3azHC>%jq@}WbFYjlI<-U0$Dx< zFYi%$fnEY(lY0gSiYN%w?@~(PHgFocG2>aOx8%%8J*C$ec+As;j3nyVWyd_RikwYh z>rFpJ#K3%Mvs`PF!HIa=0BQ!1KnoEnQ#{~AuA~p><rX8DrWKezUpv~Sgz|hF;sNhC z+yc=SG)Kuaa*Rt##V2LjEyxCf5_md23fw_zQld7=m~2c!Y={W-_ZMW=OV;~#U5!cv zDGPKcnI%}uSqvQoSO#Z`&dhNopy!=TS2zn*Z(#c<Tw8WubR}_Jx$H-)PkbUudgUia zkAH%IRrZskD?bu#?<srd2ICE$?96y^d9F*dm-4nLxI6c3Qx<10&R-%zHef0|ZNErU z$h&Bn=_{NqhrR`z=ukS$mV4mClgrPqBSWPkX_zzuLc}B1UT{6};Q>|GPUp@~xr;k5 zhkq7_a0Q-x3TAUH85j3i*cHEvHXl0Lrn0H&+csZS=kX=ncJjJA>9d}^dg5;DgMx>k z(Hla8Fyk0ZYyK|$bJvfjNw4+fH6+>IZQrsd6C#PO(;b>ea=5a_&spj2Y!}LXhgr_d zLv#`d#Hi@|9{AY40f0=bqdX5uo0;n-(>F!PHH~tH`Pan$bgR7WJ5l3z7E^SG79z+b zJ#VZX{FnIGUj)ot19)6lhiyyA>&WB&{kNgN@fyD_f$Zim9)8txCRK?Y=zd;pr8*w$ z=ngAqQ5U2neLAz4<4{R=swJ=Sn4rDkHvDh#{@>({cG8bWyXE8u$#0Cgo@FstsS9;D z4niZ1-`*B(vynPxpvR`nY^N_#Z?1_t@`!hK+VUYCArcnwtpkrpuS#OaqqllxO~1$D zUw;$!C>fX`UzK;rCTF|fLVA#$ux70L<;DNy#Ef3(J2Hv$3k>uV-e&y*D{DpTPGwzX zWv%cVTU!|jS<78rJIMl_R7XBi(}T7;d3nb3<r!E8;P)fw5vNdZ4pB`SOm*kA3psl; z_wCb?(+J8m(9_fextbX?Wsz`T)xxUzJVHWW!)HW5hJSW|Nc+uy2MkFNY(fw?;&yie zYyBOIiq1!<r9X%qg26AXoI-|r66MZc!O$A?-A<z1Mx5th^kLU_>>*LN9e&t1?P2>a z55gWM${NJ+Yl!kNVJDDv7-0b?g&{lE<xL*D+8=5fPYheRSZ(LrX;NB^^cQO}`31tm ze##-vonLZY6X@ZtVdOB=ImVfpsC<ZIpOAG}1PO|h4Z2kS)_K{1Z+eiTd+EQvG+)h7 zC~ADU$Lk842OP%8Yoxr`GT;zHdi~Ght8a6U))uzBiLF!DafRC+AC7Eh8Vcm4Ly;{^ z<A0VK^0`8<?rqP21CAw<j*M@^G-N#aMhAb}O>hlk)tSzrXSr|Mz_Fv;#R5^Ul#{e^ zlw~!`H?IByR|QB>OkQ;4^{L!05~}m~hNU57w+>|Y|Bo-*uTwY#X96UOZx_t^`{UMu zWCI@;=)3jD78f{|q}RD0{;K%m-2RZ@6N1kYCWUPY`XF~J?>#GVy*LAas~&Wc7A*52 z^FCai)3j1({FKRHH<n+B+s`-L$~-9k1Qggy<gM<(XMbl_i}BHQXC{(df64ktGID61 zV3on>3cnaq4#PA3pI>>qV10x{!@Cm=lYg;$IFkM67kh@m5Mn*XonLcgkzjkDUA%hD zVv)Yvl|<fEo?m@rvAk{38f<g!JgQuLWX%OQ_=mC=jvP5Jk1F<pvaJ_+TUtgGKjYPZ z=Me@MF3ya@V{(Q}*2Fk7xt$*(#94+s0T!K4H*oG-l49M(j0z+0xuCgPhHf<*L&Lsn zMokuCqN5|jv>`<iWkTIujNGU3#Dh$Lb8?%wIeg1jtzT7Ot+4ydE<~>MeJ}#%Bi&%I zG>SGr7_4=+pLxv*S_6OLdRj;8U?y4u>n#jFw=k}GLo6xU-&U<HjVKBY_1F>}CQPM0 z>8PdDnWvlSIGE_YL`@7#MMJQ-UXV&3bnTUZ9NmImbQCJF8esiFbOlb?5wv9|VduK3 z1KS+n$5IcqvQn*C`753rKmrqWQ0^f^bWj_yb!^Zfd8!Vn!xJK6VjzAAhEXt7k$Ro< zx{is-ODHPVy6B3F5@PZM%}Q7-K}c~(DVK3biK+~i`s%Wac`{E9dqZIjm|p93GPwlt zL>L3P!IG0*BN?)!A2cbg`Hb}=w(Eu*JoP6__F>9T3R!8pGX+)aNh^}wz^fS}n?g3o z`)XOT0X6_K$bojR7b1^r6Og%(i(^79A+Sm6*^tn<@EDoS&Jr4s?pYq_)ai;5Xmnn2 zLWvykm!Btgx^`O1E7My;tDNLvrUj354>H6ZC)0!AamD}cC1|$5R3ZCO@be9#^6WK+ zvzqL)&H!U`ngM4gPMmlfqKN-LevnB{HF`8IeYO8ygljt;2A|J@v$w%qD5$af_U+pf zfBxA=hw?OOvz)CrcXNkz&-ebXT@xowyoD5@Ve&Ocd;eKwYs8VwplX>7puq{HCT$+> zu*PtZ*rx!+{2Vu)HW2Jwn#5UHJHgV~OEyPEtf};L0*K`^2KQ{?!tNq*W^&=(HDpkO z=e1NxL!e^EY0?JbInfyE;Ti@KT|NrFXW?X6n0sL}g7FAKnLS9y1L^ATFG(E^c%Y`K z7v95mG7cuH5t8dY`B}TfG)XLH0C5>)J>!!yl4De}cE-4lrd%6&Wg{QMZft`YiQ`Ad zoW8nKgd}fDqB#{hF$POFO>8<y<F6SD`Lm#{IU{0PpOy`AkL+FpbI+VIpXCd$84@g_ zOzLG!RY~KXfs|#AHwG_re-mzzAclIeB`2~^C7n|3F_TeEXSC<(w5H8wA^7?#!md28 zstoZj@Lsg$!$phMTwKI^`$q+ah$|Pb0?OD$wK<+n+rC)4jEvg8CtffhSW>TbGjAx^ zB%suvsUJf>8oeDf74u1??z!Pl=3Kj{-h)>T&YS1PzdF5UyWUyVC8cmdm?sQFOvJL* zA*CZDCT{^fjEf_{#b?xm+3@g$m>5hL!RV%`)6ahVkEJe)_4Wz!P7*gKG<xm<u}Zhi zjw)H3h1KlUx2*#QJPibmCk%L(Skm{eO>@2$1J*OeYgXp0;Q!lv_XR9*Y+GGJ8=3Vj z2I74mi&y(G8V~)TQH!Xqh`yylMJqrPHwU9{uP7C&L7Kuq9I4+<T2#)`8JmjxANyrf zLsERbh@o49KExQ18|oCAR~}O#TQOng4AeQiNZD<e6k(WzRT3skv`eGq2uk~xkOa05 zw@Y+dz2KSU6`1Im=vnF2nn*TzoLiO=tMZ7Yu5a7aJO+-gzqQ1Q8F}Z<kWFo^S(VL+ zt%<E(m7a+zI&BAaTS%R?6i?+8_)vb8dcYeh*z93}BJJ=>u%0@!38Qo}C-r$u^)Df^ zYJ}ASLh5qpBPkWK;;)4Z2r4MoL+Q(o4z`6ce)0aHzC7_%@9;0Jg(q;Sb<}Ly!uTfa z3;{ZbVRK{53F!u_o$XJ@n7pFIBEG07D=$y9z9ijGPd8`h<vW4D$c1ZFQ{}M%C#Q(g z6c#qMElgc@by+>%P#x-L7RkykaEnSavui4fYcrgx(`%w~1L0lW=_oPm$#0K6CQ2<# zcDPV@i0ozV<`7Wtb-HroH#iom=wDj|TIqu>Bp`@Z`$HZu5>!HGyi@>51^Pms6)LR| zsS6~5%2_%ZNb=bZ-7|~BZ1oy7L<WW4XLK@Q26J;5ef=<cmaAaNU5mlQ0};F#8ip3m zQcL4P)z9n^1u+WB(LS=-1Zudu)X-PH>TGwGd;H0*d;5q=Rc?-`2;x6tgZ1$-m^X_{ zsBSn#4E$KCyHCU=VqTKo9L>*RgCc^0&Eh_)x;5hQM=H8>B*;@%{vW#D10ag4Z5sw< zcGpcF+p-3B*%?jj-H2Ud?_IHCK|rNT?;REvmbS3;4uT4(s9?i_(ZqsX)WpQZ5>2AU z_!#4v<qSOEHJIdi-~ao5S9W&J%$(`>Ip@Bw`?_eLip-I3kt1B+3NJIXV%O7Ezp^y5 zWBn*ZYq3v3jx#qvJ_|_~kDh3#<T)LBnvM^)rWGFI$p?xje-ojfa`L5{Y`vzeb1TrF z!|LGAh#YQg#=xQ0t4VA@ZD=q1X+yYG=bydK%}Xwe%(1oypdA$ck=Elz^uw6i+Eqgv z#>r{J963=*aYHOVrP8R#l)$`b>!z)F(WNQ4y>Cd@vul}YL+oiUJbO3=>=<{-#^Peo zH)uI<$lElEw>FZFwm7`<d#Dex-Kwi--+cPXj(&6c-KL+^)4mb3+6Ph5fB?GZ|Ns8+ zM(U3v`5*U@oUa3SQ@Jm>CF|&oyx{Q~#S7YfBkeMEGD};5^-#RU9p)6TNVWWK;LfY$ zt>!DLdD)-cxoBqKR5gNgV(Jneh+ngx?7w&V-i9ZxzsAT~FmRnZv+N*HTyI~#{fabe zuHGfcpBO^3h(f&gI6d*xI|V7}mbfDyX3;eM*t|mC_U?&h^c~8apgj%N0hc{4IGsip zKg){rlD`I6;cPRNcHXyf!L-T)*t_5mS{+EgMZ(W+ax?4+O(h0coWn<mZa-pQs~bT; z24=_~o4=O}M!{AoR^X2z-BRifGKi9-l2V8TBb2w4xYx0%!KuMPDy-aL*(XDT_yZWW z#vrL~%q^CdZ$uP6iXKn}r39r0v(#%J2sW0JKvkO^GP39*ItIzFW9D+C{1kkcQRINC zG`TdXge6{{$aGnb$I~9+46+Y#c_pYck&@qL3ECJC*lX5`{Q^XJo_Age#Sf2;{C^)c zIqkA@*(ezF`}DJVI>Mi(YzGDNCRdue3FKaJw1HfAk!_Jn6lWe0D=F?q-M!N?R751x z$!9yr@Cu?mh<G5bM*Kc9dn1`J1jEU{uBzhnqjqD*Z@Bq?-}-hVf$yYRelKt*5>z!` zQ_Tz9^2IZ7%R3*3A0D-dL8GZN$__5(UcCJpcev#q?(lgHh#*}>f~wEt7#+-*Htqjm z6ux}`&~`tvPm`OgFOABx#*m>e!nkh#x1rF%Nd0ZDOqOjum2ltLiYCaGOcJ$9{#(Ts zvKd_(^nf>$Jk8HPGq}IDFkH5xlKOc!C{C5{rnk!RfZ#1B6`nHk#u-fOmE;!{IYs>; z=GIWlF7C(xn}Qf`!!!9<ZX@*s8!XJ@$q!l7)?2n96I$dpTFRi*U)1pQr&dxoQ2Ca_ zVBYejy8{3v@bIJ+GFViY)sy5GH5^<ztlUt`AqDy`GkQ{rr*ElP+wm>Ak!5<(#$!LC zTDDEw9U(?ElF-`z%SL*OmYV1h=aUOOOersI)qo+?PFzb*E<pFy$hRu(<+L+ANAz<= z?$kb{Q&^qez76|ahL34Ev~E2~xVa6}i^O4EUrUC<hg~Dtgt!j|IW<zmjZU&Azw>fl zEjcL$d5|kAMbK%JsHh7+&Lq=+IwRjpO@EN^u5HsT=qG0}j`_?1tR<OA8S1){pR2f< zsn>`SK6tzVt3ccmM5co6Fow>ZLm$!5iE}PKW=Zd-zy<YDJ=oGRflB65%Ymyim+oHA zZl)VY&?f4jT4G#kSi%}(@-r|93Dq9IPtI9SYxr{;xC!0^;r1IsYCqD$xRcl6Y<f<E z1%~TBg7l6CQ<seN?!AZfhA)HkRs^?s@?R@`HVpLy+ihBUJhyt!#=V=5Z9ll}T);`0 z4*t@Nikn9dsj}A-oA@HODkdSzJ2EOQN*x#$7ZJ|cZ}Hodv``i&O`f-Z-l5fxsp2OL zNk3a83p)CGTa)_2F9*+8aK?(PJ-b!udP7nMn;TCjJPK7Sj?=9IR3*C8f7M?fz|n*+ z9zc{~+WT#I)2&qGHR8wz@Qo=wKwsn2Ifa1Z4hz8+=kpxjntH0fO}lZ_Mi{~<g86Yo z1*q0ic!qkr6NMV_w&!rG0j5AP6>K3&sed`_ZzFmT5Q)Ao6;XJ8@QIao7}12p%J~Mo zu|?qIe1xazpIP2$Q6zr}`-L=7^lt$43DbzlshzX``=>a{0SU=VVto11+#jebXjmYM zUM}CJ!C;7@i}a3Y(Y=z)({S)5zLQS)Aa8pZ&!e612aQ{@NZ!#({gnh@tPTzFleDaw zQ9E88799_2<QYSTZ=$``wD<6n_lA%env0k751!&kEK(^u(=TxVVlRvQ&;4GetxDv4 zrZNUYT9#3jrOVP9Sb(c+7(gh~L}qK9772{0;zwKyg|T36=q$9MHjGxQLmFyqTAV1- z+_@G_?JSIiE=*@(=UN7GSz`ou0>V?MMqCj*nOQoKbfL4bbB8#BEEQl-ID+;lzzW5j zcgC+WvTnbssjRB5mQ4>v^YYipP9HX8Gwr3Oy@s5)KMW^ZP>_<E&rSTHbAvk7{=B-% zO0l&l3na!vpdn~MV`1zH%2K1!WLFNa&J45{M$o19((rb{piYe@tzja~2Q?}&!&^#z z1{Mwp#TueRKUsty0sZuo92Bn5ECp=ge!Gzox?^fGGMFcJg2)OBr*pOBOANW_LjYk$ zNr<Vvm6%Me3=c>NeJJ@-gg{k`C>e>+iu71e_ZvYbDd}Dw$lt*(9*W&@JD6>|t_2#} zD$2(68~6Cnml^<sL=aTxu^AKOlI|(+y>AJGj;cR4g8RglZ-C`(MJFJ#K-1n})As11 z29J1yQfS~YI61>NNce`12C&n27Pj(6z7;Z;6yC*GIt~A8+waO05b~z5LKY4wGa@1@ zOzj=z?~4qL6sc$V&OH$<znw-f3E4TiT=o8fy)|4*+XbcYO3K$D{=olg`bjC&cbM}_ zF%pZ*FHAs=SxH45r?auhQKltfM92z<NClG~7n>TZ4us4-2vNQfDtT3Vcjib7pKtmu zT?IBR{$I$%7vqU5aFP&kP1}9?%=*jz#BEb^%^61oI|m(gKIYb#e&q1En@4uuBlbsr zJWrN<|HG5sPn+*I+=qAaUv;rHX<r_!CYpNkSpx|=Nj#g#!?QVO)Az;h|M8;Zq4J~t zPZhi8zil6kTtI-Yd0!+!<y3_?xoh3DU#w2`03Wnip6Ykh|3L2U?7e%l%Vdf!)@EJ$ z+A!1lL{}9w)oAOq->%kqB>Qdkcg^+5_Szd;CTk+*%D|%szx^^^_LY|O8oN;Cu+nQ; z5xXUKPIJgXnN8caKIKPuerp#mTdAd;i@)-^RKy<7z13WNP-gOi+SZ?srwkrEZc4v? z<G*`dkeZj4&-oVa3)!ze(|`s=VWu{kMc4b(y5z9g6;&D4YPie1lo6zq(mf*)QkwLP zOmjy&IY4HLwE=5>f+0#Dkq})RUKC!KQIuSONRS~sDJ(8DH!wFaTUM;ikIP`A4FQQE zA%SUu`e1MuM8!wN%2F!zmAh3LnJFn5+|``hCyMT6>`tkQ-xqy)+g_(aUAb?Kx53*G z?57QqB_P929h&5o5D^B1xGq^2l!~fSvoo^|Iq9YQ_h*5C5HiMTDgf<~JaH%WN$HW} zC(mR)iMtlt;(gEVut)jE;Kc1oA-Yvzv9e?_b!fDi*{<+)poZN3bnQ0_F3=p}L;n*% z4=$HM6s513S!?Kn@S9#kV~4oeZe8uQZ2RV|n>Jg0nRPbj%Y>al?!KO2c5KG&lX)e3 zrH2^9jJmIqiV_cREcOVrbM~GQw+JNO;^NqaS+*zE%RW2;N47i*ZcUOQ*#;RG$%)X| zRUJvHjVp1>NzB$7<Aag{bwNqVso<<m#Y!^(*pDni?cz*dq)>q8J5jAI3#r@{?;G#! zsSDU1=HL|taY6H*$R^Qx>AelUg)?q%xf%tGSccx9_SO6OsiKULnUQJ18G-shT}W|Y zdX!ccmyi$<qWW+c0Wm>Qp-}EKn`1W7EG#Q5HD0UL>ci7R!^0xNqJkqbBK3*dgm^<p zc4%T`Qe<*O68Ju+(2w6IVw?VER%R_pEp;{L`3WKX#58_l!M@ckt}SWAEFJKnk9DNm zUp43J@)D77VQvxaVwPQGC{BQ|*`Br~%JSV=)!uA_Lw?^x=kU{R7Z&f9rRN|Hs+u-P z35xyVv~rBI@A&VZnm#o#CLWakfdM<ioj`<+Gj=d5d=UQ9{wr|$Xg<`uBT*?{Hw&{f zTPp?zjFBaUhbJQ`67N|Tv-s~r9`3p?OU^IU=c{c@KTT359?pB;cvMzZT@@Fg^3MQK zJiFM}ZB_UN*}(xyF~i5gEIvz{osgaJpzgt)3Yo$v|6IEuH>zA)4ApBHI0o=#zcPGS z;Z&!ro%w+kGBS6KGCVvbHIxgznSHPNtSni2yrej@II|?(+Ig1ml-NnKwsp?RQ^}|F zO}gZTzErxxGax!XBe5dpTEex+YhsT70Ytaq)>Q!VItrMO57SX_GJ&RFEXQ;dM}pfG z%CwLi`bm)1A@Wn5V`+F!62yc`u*X{|xAnJ@ft#TAO8dxuN%m!a+1X@J=KkBMxAk|B z4J=Lf$f9FIV`YFDu2ddRJCS-E*~8M<RY{-4yC?ca>4S`u4+j2P+A0(Gu7q4udQ#fn z^u1|&(+vJuc&TN$IOfr2^-D<adFg*v*b&R@vl(Ay?9=Bood~;;aw@$s?LcyVO?q&e zUv}`3slVMlK)TCnb#;k#I@yO*Z1Kt^i>&yG<h?v8JU^;99udu1h=L5GX>(}gH)xhW z1L^au(#*n~q+;2Gc9}9_;exFT(~!+7W-QG~8+dWkofw3VW)O=Xe8sm7IW}L0H4P~n zhbobRk`&9Pk?G3V@~Ena-FRLs@H!=()}Kx}4Jab)24o^C4V8IW1(^j=xuMx9kf2UU z!=~BkIq6v$I7M?iv$9Uv8}otWv+2}k8?{<ad(PH1MjeZ)10m96r5FfiQ>3C82S@sR zM>JQ-kfTR~8^ex8Wa;$!thDBWvn6LL$Vdmm&LlQdg<g?D?<Apjfy~CD?1Yk9-=UgI zwEt1k?=I=}1{i4btOR3Xj!p)q`;;U$G$txCGdwGzGNLlU7?T~Fqm`{sUZ1oc>I4yf z(Y|p3)=_SeTXfrGyp6wd)9iuE=jayd795MXCW9vxY;I+bPyKeT@W<U4<RKqVDucVS zZ4ns{`aw}7oO$P~d_L>$=+QH0jvjq?*7N7Bt<Tx^m_E;EqHGq*T2XdaEGx8O?m^Cm zF1tbBf`6^Z#-hHs-J5<-UBSM<zcShKz9gZeRgF&Lz7wQ{Hg)RLx3mBQXj#kq!x=29 z`eGJ;=sNIr;xDl0K(7X1b-tU>P1uUhKU2ONN>MIOxt0$MRYHGsf88a>kP!SoAn<FS z%XxpPUe5PltaQ<As&YIOfRQ&mClcwQ@~VcDDmVj8#t+IBuK)~~3e}2NP^}=Z_^HFh z&aZ$TZi$8+c1DiGlul`#zvPBdVtUtZDJHabSUwZoQ4OG%F8CYg2_+oB)X{72i+(Qp z?-+|J+VHCleL7P#M&)H1bmEj`mE4AJ9<EUcZOC@8k<M5pSG2(eU@2H4lqW(Xj$!O8 ziV^b7kS9bUgfRBb?5Bue&De+qctg-5OhykLI)ez)7y-hTC<N?h@lefQ#ch@*V+Y0q z|GN~DghtU*{7)%<$)elrhJrv8Fav!8;Pn=se2lWg2;5FyRG1-D9T%IVi|71e!u)+y zHf?>0w;bdwSIKH&eZG5rSRI(%=iaN$FRYKKv!<JQZ-(zJ5xEe%w@2x4k%4zLUkjzb zR*Y6#h~;7lM8&MujhM~-I-6RZr3=*10*0g7g_zBtLpZ^f{3;h3q=*Y*-i7_JZ~?J8 z`|BNU#2sR_jx11rsK$kw-6KP|&Q7N}{FC4WASiJW``kJ)R`cOMv3w!=W;*}({pT0D z;<!m7DpzqJw@hI^V+Dd!fUNW49YCt=3_#7PnN(r!VkX`cv9KS=6)Zb&?aBt55kaGv zA)6t3W2K5RvlSRtfgT8)zW`LXVHGSptO1HjqUb9#6T>9f7%q7{0*GQM%&{vh!d@VV zfPI*uB6wDn;`W|UNT_mMf#q<B;}8&CX%i0>d-8<K7L|~44fGq@MVGdM#WRMx+-~G8 zsZqS+Qj8qn(G!&?1tUcKFqUY?#yC2-`tgqcePIrxHi%*4&-lNtjCfi8x^A7n#5F7x znN_QBi5Qp$lTrECC5pC$Fok%nX7m(kjLcRH79U)31Zwsvu0n@cwh`y~;o^0fgP$T+ zS1#|oc>TLXi>r&5rp$as=jAj*)>4}|Z^ry}IR|v<(n+<1OR4D61r<mXsHgLqnawh5 zx5P+F+?g1F!eL;iSU#gCE}9rB6lcWSAyxD@`&7JaxOZa1Z6U5UL)@8o*nQ1rBx(9! zl`=ecQia@XFx=v(5ac1zV(>~_$K1@K4claW<mRctPI1d{PNIfJk{H%mAy*hSj_}lg zRZi1^Iz90Wbsm4`7j7rG8*v94lshymZ`)=|eg<z)GZ~?2v&AvtRTp|mn~dkG_U(hV z{SvEv`>M_vn`DTi;Z|G_zd%>R1miu|hQ@}*$BTX^tN3{Q*2+i<Ns-bzob6f%hqWAS z=)hBwgrk5B!H&j?2uE>8MoIJCn)-T9+yPTxUvsxvq{HDiA^NnC^nE~-7`%bt?wo1x zU9tnA<V4)^2pefBe?WP_uiDeVrX<FuAeCnX9DO4s8OD^9bZ(!avg)8Jgt%grO0Nu7 z7cZ_M=DBi`j7)tB$TxI*Gb$?%sBFMBJW)wMo;j3evfxtJ(~s+*PAuJd_Z$Cj)jyv( ze~%-V!0mELYT81VDEoR3OaznJyRbpPCJ#`N0l#DVE{xT`Nqi3)a|`L(>P5RJ8DzA7 z&bYa>r;7G`JeTy(VILZ<Rh_MtDIzE%HTgm^T2VfE_PU`gh><gSdx<e8*`R)ucxCH! z)e498)4*~nRYW}2UbCMmX6L1W;E9I`b=;*v?mwJ}uPy-<8%s*?=guq0tFETkqzOFa z&4ZDv^tp<B{u)#69NWH7%BPUmO8WU=iql`if^Uv+YhGgpYq|F!-_Qb5K)<2)X(8B> zF(rjSW!xv<AgvBlmRH0h1dddwL-Z|6&q?TedYl{ruYGS|!;8p!j+~Q_x8x2j5_)sw zl}Y6+{}U3i!wNMWt<mzf)>izH`Ir&!d8=|gyfYv4Y};Bl%7xBm^uJ|jQY@+M|JV$E zSU}!Ivmkmn5$P@@7QOW?CQuUMQAXp8Uy9$Ok+FlidCPV?2I&qRmL|J@W^61PVTkxB zS2Q4!d){-KC#WaPT|2{@6Qah*`6x-rnqynf1!Ls-r|=H`+y!!scE-yU6=pl+!aE!0 zBgwgvW5-I)$>_o`CHYalb>~hbU$%Bwh(cOka+0iJv3~&Q4m~7}a0Hn3!S+}n7NVj1 zP|kMmFGrT-dZlk{sGqmWyOSoEY?%&Tg;K#>1)I&A!<|`5w%li5$@?RXsLxiNgVvGl zh?Qs?bVrY=5Kn3|Lz^cd6cLAFV*edWLM6n03h)!fl&Y`;Y(xjTQRO;n&bGghtRv=b z@COc5wb{dyqwM$;bOUQ3f~X<Z=Vaox)|jK3yL650|8;ba-Ji_AJxtcVLUQ}%lN*m~ zWv}4UA$E`80-ZtZeu7Kn(c*vO{jF$G+E@sZVDb#WkcD&!9IxUZewUDEG8<|kDWT60 zQd$UXR(CMmb_arFVKBua2E@Q-|CYm$v{?|#TC}_bI<I10XkVyD)ar@l%UWWDm_+T% z58aff{)&tKXs<76($n?H8Qk^wrWFfRw0o^+16%w_xjZW?IXRPUjy||?t%~-lMOyz; zvACsa-4d22OMP@c@xH9$2~W+01x&oJ&c{dPD@8{McHhNo?|~yRbzX=NUm>TMfbz(_ zHHg|su{o=_<1bbL#Yt(cC&NQp^RGHbcJBJ3KYBZGh+8aL>bGSRhqd!P+%jF^W$ZVE zD&n}5gao~o|44%r=!JV1pWGrI0l5SWCGGO<Xvhs9CnP~rsjo0pa^mrt^9z`)0~z%P zRU}zTtowoYR23AIln~6~B(H9nb!e*E!67OD`MekX>m1e<tpW2K$WntvVmL9@W2xtR ziWl(j|FD&RJW{-TgsVJMe);r<rCfXeT7I`wK_1~e!~#~>T`Pjj|DH>b1|<dQg4yYC z4R48ca@(wKpCfVFUQ+9aJR13}3t!znawyonk|iVQHin=T{~z1#t~K?SVsGMg!zCFr zas6aR4!cT=h)9XRMG)pmD_z!SZxb~MC88)BNtK)CNQl`l-~3s^-RB208P#cf_Ne#- zDPlO?-cv4)Et0}vV}{X;RYXLxE`mk%-#bn`Ge+GV;Zxpn57>19wd{O`U?nUwVHi@y z)32?C$v{5(skX1+JHB!ys{o1rKR-fd#h&l}P2?)mXkIQC21wdvP`b<U@-TR)9p(M5 z4ST(VI~FPuJ`e>+7B!?FNAe{JF?#Q4#O=aIHBWfx#3o2xvRn$>*<nW?Z21F>WhQ&2 zopiy;6;~rzc-TiW@eyIVF!j<6r!OC?I&!3#BNOg2{4N@=-0I`x6vD!LZObIYgn_nc z!RDrG_b*jmtmYs{V8vwS7p4`eJMR+>H^nP&N@&*sjF)$)vy+N$l+uWPj8H3?v+BZa z4yncBlV?KrRHy(3dSi)OQ?u&!R~K#-7U&Yd`t)Ns56FT{Ia&gQYd_{pMcvu+IE7QU z)?b>NgOuA-2dc{(kE@8YJ9U;W+hDhJ+4>WgS#nBRlee#;jD-?yZ-!iwkblX!_R-Q6 zPU~0U?0z24L~dBCU5Cd`#3Z4I@S^i^vpkD&2I7n8pGUy~+_75B*mRdJtXR|t8Vsu( z(scl_R-0x?wuw1h6SFn$B26TJR6-5|)lBDh&Y>IBAtx9Z_i-e>zW9R`Zko!OYxdI) zPga|<Z2%j`+bUpKLpDec2G+S3u|N`h4w|f()EKq!)iZgm^y!^DPg#Dsq@lk0a2^LK zbtcW2nv<>Cq!}&2d%k?l(XXSq#FCWK5*6Int+nl~l5IP7IYx3WN0aNDQP#Fv(r_rq z9qG5X+RK@Xlj;Tz>;wsl0|gU$W%lCGi9w$dKu4rFBVif-@<oy_&lT4l;~=5gleu=f z;oBcoczk69_}))fu3SEaB|Uf}lMWSy5*6w3`5&}LK1*c5LmtzQ)U@lc>D0^zDPJ=t zk~fUvH8JxUcAs`tQ`yidl)=ETN92eB=t;n}pAn4B1Ro|NKp)_*+L^H<%Y}U-3}6&L z4BGwE+_!3z^%0Ho>WQ^WVnrVUM~4CpUL~SA0-4jf#}A%Wx13zNG$u)07UMvbLUo)9 zyeI(3hcZRw)y6&Qn_t<@bqH{D_2Hlv+JgxV@Q(FXw=a@x-M;T=G&hJJ5dKy6R}o)X zQyK5eBxNNVjjGFMPG3HI+<9Xz`&t-|y-_Rv7$d@=Ac*+-a?_cXGskys$Ysd@;Wa}P z62%Y5aQ&k5aL)W~x?o4`iRBbr(|4lrGS<3xS}$tXX~pbtou3sco_UxoVZvI!TsoT* zuGeDRE9;zL$JDm`W0JvocCDyZvP1J_gZ)|-L_>?>7KJTlM}d{&10JT`@h?-RxLX8k zruez&=J~I0H696c+s#72WedYwN_nGLw`jjetwuN|t#ICwyID*|l>k!RSF~7;lBeHX zd{oB$3~68-Sjk=E{d>qNED{-Udk%R=dk2Sz7W>OB3u<SpU0vfNJh)?<mhD~yh0f&U zXpVSGAu|O`E@ZGj46WRG%UTIBVrb+p!I5E3JdqCth_s;U+D-+&2GOd)xTk)wb1-+c zAcGZq;k)*%g&v{5g8Cy$3B_gwdH2w1Lh~qfSXh!S3?@ukp>dS6=zWGBV_xqVcC8<* z9c&&Fu}ECIj1dM%<6%r-E9C$F4knU&M1E!pE@oZ1q9Sua1MC0CmIuR*vW0FtGIyvI z2#$JWDn&B|I~N~;#2osZxf-$J<N~#w<Te>~mrP)e6d$QNriN=;t-RK>c|lZSSV9a( zZRtD4Da6TVYo~RDvCGUy;F=s|E>>4wx({fiAE8RIk!fyn+X!sKCZU3XoIM_5<aXih zua)*gjD>E5T;eMy=TI+iZUF7d+?3K36U!tN=n4u|ZS^*^ud;pg2Qx`7A!i8Tx{9)W zc{PZZOD>;Szig@9hGiUe#>GZV(OGi5vHU<aH#g_f`djMrXY0;@)ukV~!i<)#)2@x& zz>cRsGuYj#i1kh@@XT&03p70<3(Uzwvaze_H{=Wzhv$c~?fVDIX*X%;X0YF$Zf_<> zHDHe_%1_aln#mbyQ2_)`+mOo$LDh)7P&Mr*iHwem1_;SVD2fl$hQx<jYXSa@FQndl zkyTD75Q%;&35$q?@anXVHH;WTjAuU(rK9G;{Jg>x?l}L1tPrL%QHGrOTs8Svl9!W- z6hN|)pLRlc#Dt~fM;1b=Tw)Zt+YOm%cx5}Krx4?M3xxZAVBG!5b2OvqS2jaW0+iWZ z+p0}>m18!n8_U9rxu5iq+}sl%UCJE^D0N(^It$(_ok5qO%aFZly7UL>p&~YO0X$+F z*#hUy#!uDs<cAbAqMD$=$N-$zYXx&AIwMDm;~Or?$uVSSa0a73Hz8Xl0JwSRy{65w z-Cy~S+>xlxV+;Qp4om#D?aKd~oLBN6$pPFQKsFF-jotZ)#6zB)l&wvVJwC}QGdd|e zE=HD^`1v3@QEig<5!W4zb=PCvHRmT_-JB$&HbY$3@b|i72Z^Z|Kev7L9`U{pemb;h z?&#l|x4===)#PvTR}LFS8j*UvhOQC(p_Pr#o!Kv6f<s|yyDdne@dwWZL+k)_6D&dT zD_CM_BX}s*kTtx&(D|8t2enM4Q%zW(0ol1}8(E|jHX`j6AGpdbZEc;7&{|pxcG_BO zZbw!>eac{Xfm!AWEmXpNu6XkFh!g2tgVdrrJGvTcj2(+FaXXR4nBRz$VN#fg>o^*S z41V8E(sgAZDS7moEPwsz0txvH!Tl~TdS_rV=kX)piX@MKps>(me(|G65F=+Elf}eB zvHwA{iQ^9{&unX4zi!*M_3Ik9ojudocou09u_?;4+Zxub+vd1VEIlihcI-}uI{Y|j z_&k39=i?{u{}ff?kt~p+>^lyc@sBar(VVO#BY;Qh1v4=cAhcc>s*l86FESDzl#`Jk zYDbr{7o4>tv0T*e!`fJ@CrEG=UE!0$3|1b=DYVgM9qV;Ungxit6U_oUj#)Io?oRLx zWZ@%Dfjk1OFBWp>=G{`#%dtSO7-)-%+(JN`-b!I_lZnLPFxe*ZNzOnT+cM|bWD>{w z30OM|geBNk+<{mp2sCvw{;F8qLFYmgT9`qw=86*XC+lhHL;AHElt70jfh2xCCzwkv z&OJ6FXOV2)a7Q#7y;bO{WaG)ci8pTCL(=D6XQf9s+#Z<kC3{GEoIDS&g7O`)odgde z*2;!azeRdGLeAg?r<mv$opbfruNQC0M5s&^@qTk8frKJEAhb7<-NX1*Bup{YWNGTA zBxx8*ZpC*x#gwMu<3P89#~S6Jt4`xglPpM&-v{CH_82rsOoSQqJCIsEf5$hc_?|Cq z_g4CxnR9f+Oqrf42GVW#DBkGV5qIY}_^jVL=ClKm%zU+!sQe$t&Yo>GVBpXp^XEG{ z>K8UR<wjZ^ak{2&ID(;Unbp4s{5ItJ{D#hg+&rrzNA%a68fYmgwVHM3iIG@UzPw~j zBzI3A-TF*)C-JqfOg6+4>0V>oRw$p&xjlC5oH=91-k$UH>FwK3S!i?pM_Idgr^n>A z^R|u%U8+61&I%cHtM+>7H+gwk$HsbjZPI(~wcgk?_txxIx|*)G`cM*UwDQ`kKe>1B zsis@E?%X+Z)@qqySkb&=lbd(e)V35KJX3RhtxW%XHaKerKEI=9uQ#9ZDBdaCNdBV) zjrah3L~ii`uqN~I`DZGYv-}D&v9D%5wOk?M3x1|Q+enT>iRULpnc}961Ux+$AxBBZ z&zUox6AGn*AFqJkn=kLpD}Y<|WBEeq<N3F2*><~*Q%X<I+_FGU7{XgI{^gNi+q~M` ze0AU6s6cRf-N&HxKH8(Q^1Zn=>Z{Fb7r94x_y=&pV8MzB4DgKdRO5xWVQf#?pGMMI zH#3EU$o74&zfylnuV=|}emXf|>i>*5AAWl2+?%wNV^#`><W#{Soe9+kMXC-b{~l5^ zQCQlMY87}Ic?z5Szap;uGOJ@Zemwepn(UO+A(_VOscmv{REl46B<ZC);pIM4rYN(g z%%^l`kn<8^we8J((%<9S^{QK`vXfFFJB3j=1nMKhRJW5~Xb&ttGlGm0dY&Gz1c@;t z>EShfr-Enlq-oYvGT-$c`PZ?V>8S3s@SQX~#TVl&hhI~OhK_C+My3gU$y~t(Q%;uL zjC>asgcCs+=*A)D6hfNX7h8!^iZ4w;q`T?Upm#6L^)F4k@H^^d*S3Yw0X*PQ;qKz+ z;pST7S9hSIrj9LGsf-R577If*JHU_ija6<Lzla}n@|cXA28HFxgp;u+*j15CLUK%c zrYbANU`%Dt=Q@&E{b0ie|85->@4YTU9iL#x%&I+^na$lsxA2ogRHfESw`@s>+sYLz zgpND{z7UO1%}V0JuhThBbX4B~bcl6sT(ftC3S#o{arSkF7<LY2wgXwLQf<oEY~0M= zC;&lQc4E8=^lx!V?7Z+sjEl^{wK8mwb*^#W#e6k*+v4N4+d+?NKJ2z~2l+&O>QqK{ z6Bl-a$w*Gm&Qxa^l4HT0zJSbvm?SZKO@>-WWp1j>1Nj_|xY08qo4rB09>fLwMD?hT zu#C3RHes1KC2jmNei`{^DweY^Awwv(Cr9ONy+mA3Q8LY;a-?Fpk-frHtDERHY$9^9 zBgz!&Y&9M1R3E__j(JW$eMm<irX!MN?NP!I<tW;34V^|8ssuaoy&&ahE`<MzUq_vt zfv1!VC(EtrGt)4}M)EnGrW8_raPMtXX&4*?bFGCT?On;#STeJojCpR&TcN))hIgZ5 z_`$OFZ-SI`3VfMrd`}^mB5;o>KA2(-<(=_78_8v%k^HN7Ten(1;5S9R!n+NeB1(8( zmHaAxh89AhGr)ULMqj^yqiV=oni)j>x4)Tv;<MvVXMIC+$I@A2>1_H2lB_wP9{VEv z-IotYFWE1#`RDX1MSae3*QRk9wi#O|)1HCUBAA-JIgZ>YZh=)eS&2bU#mTFB)xpzg zmqM~vq*IHOSrySgq0c+}LK7XTqsu3*q+LTR`U2OGL-t#Nhdh(^7VaPq9qq<_bVM(L zPNWaK9cVq^c>4~ZZMhCzqq{bY4IH~jiF1BTgAp4C7q(i6gMi8ad<XE|1si@>0GFI! z0MGzll^u_fNcK55_fy)#iGHF6kah*|#1O3IhLMjKkS`Jl457YJ&t{Od*U1+z$;UD@ zkyhv#fYwS4d7K_jbKh~~Z2M>>$pv>s1X3m@vW@emS4>uq8t1uoIv5yc0D_%Ozg8h> zc_@Btoyo4b|HSiW^@Drm4L3MYeoe$<8%gp-zO48wCR^fd>JjwpcQM1lMl$(W*DwwL zQb}xFh<YLUh&}YU{*RX`0xiJHbUeWDGncQTJ=v7-aDBL1_z1dgxk8r-91u_4k)=JE zjJSqW*J)T2g0$4nYwcnx4_hho{XA&oNENlc*&k@nUS!PI7l;MB1_}8+yu=*XU&vQ* zrQanIPM9L0%mUhLG3}!UPHi^w_U)0P93{!vpL*bcYA&FNbA6`xE@VdmLIqhNI{u36 z;Jp|70UPb|-8^amKE<zX=rE<IOkjE9C3~69C%uvPJz<#4VcKA)&(%~i?+VC>_!QG- zC0Ub6rXg~$0_1Gu3j`+CWOD65xphJyE#X#?i2@(^Z)pQ2t%gG6sL9*xFp4NBV!^UU zd^B)}h@sb=8k0YgrrwQ_n_7_!@D9Ex|10t`Cr$Y?8;R9#U6Cg|RK9rKy2XIt{vus` zc3lfgc1s|sHO7&6Z6qPf$$=&C^^YQP_2(N;pFApSOYGA+>(a0jR4%v-vReOo+7EPu z`-G6y_P*;p7l)&5eR+qzIJ*2CfUdWK9u<?}wTIptNLSwVja3dsU~&}<+9xtHPttPs zYzrX1R??PrXBV^Gsqr1|z1gBb#Bj{`a9Hu)#O(dshonpI{6EN$Kc0{-d<05+5c7mQ z#o1sRCL~&!Wy~yeuLHm%GB-LaHZ>+K4x9yAt<|DM)7MYfDcdo2WbknHu#qM8w%quG z)6XorI{(J{`)&{2AH-ZtER}Wg$g_zRfvFw|kx9<l^j)aQxTti=?qv-_zqY+M^X`nN zD_%Luw*CG-fONra{Ik6A4fm?y$=CPp$@J;zsi~~sft>yPg2<w%+~AUsjOge^i>wx1 zW6}~6Qxnv&F<Rt61qCHU<V0UvXti(=lc3chFFq<KI#bK0CNa@DISGJpW~8O2av2%t z&u3&@US<_<Fz7PX*<gXs;i{`63*s}ET(P=#jp5x_DZdN5@7c<F-r9C~&ABz_mNd@Y zC##wLMZr|{lqq4JbGTK0Lzk{zAxq|iOlKwg^bPrW`bJN#!(8GQ5fs9;Pn8B#hws+1 zr=xQUbBj__txBpdd<}N}XV1vLP7|dXM*rgtW1ex(N1uj9l%<L)Hqd{K83R|~yU#zT zJ<*X-+fJ-FHk;$eNWZMSc;q;H_QaJvH`UiK`))qLo!C;fY>|qx$W}0;9P6_&H%YxK zD{6aUWcbF4n2aP@<gvXvq<pPI7-uZTUTf)C*s%4(#_U+QfLpZ0Wqi^ES&}qHPg5qV zk|jGEc3k#riQOHL=oK54=oDq#1!zl>(bo{k?w#AX6lcHY%C=jcGLJjogg;O}_@<!d z4tHzcmBw@U*LZo~E!n<1h2K0-dGOyV=U<)CH0rRdaZulKYOem2S_JN##Kr0o;*(;M zW78rHVHuJ6u2tEx+8=)@dZd2&OUU*o+%2!G+wLrtC1hkI8PxfC`ACRT{1{wPo>v@P z^kINJoWx!aBALi}UJ72X<lf{DFuXh?Ps#PiiXUwxJuWKSgXmjf3pqhgka;1w9ud_Z zkQMq33VDb5@oIiNoHW5lYPgys{uQ2J3UfltFQ{r@`jYr1al@RA{-Enjk2R(rO+S`S zx))ZtRk<#rwoyJ&K85k+#WKZ@WkrXMRb9baRV@Wi!%G2p;+HG=$I>@L5RCi-9^~c7 zYTv+;liti#w8F!o8$^c3&>r5Pf0NR6@j{TDFdXh)VG(~i1VjCUY-V&;RCbI^e|_#x z6Ik@2{K0^td_%gZ+HC`spikR!h^W&s=7+8febz*_!tZG-2jayNf41b^*?+QV;Hdjk z1Dx*_1ejk+d=STbDfK}FO6sWb*MuO%D}5lADM^)PfQHSJ=NE&93?b(KF`ocHv8X5o z<cYrqo>@T0(XcO(Q~&=vA?&}0k&Ju|9%PvE4x`}z83yhMT_?-iUXo$T54j#_(pHEq z){0Jrx?JncC!#u)?5x2of)AD;Z)7EY;tz=&m|saSgG3Le!=2XtQ>6{_34im0PF?Qi z6ILH85mpE*tf)7n%27!JZODr%)#v3}11D?*eTHlMiqAAh#p_inCvkwmM~~9jNTNpr zG968d<$Mo(we<*=19t+JKsYyWzQ(TD*iO0CAtT$7YyT`=WBN=Q<LHpERo&KVK^Qqb zNJ3}`IY?H@NjwM;{VkBGro?9~`CbkRmCx~6yF@-n1N|F>#*AQnyk%o?Ux~O%Kc+au zH``Y&7+WM`G-Qm1TP(C9+Qm`hC=KGAyLV?7BQAjz!7bUby<-^CtkRKOC<TZb-VBjU z(n#%q#qsrx2?^oE1bpyTqO;MDtVQQz2AKj$(|v`V8hw023-IH7L#K32r*djYZa`{K zoFLF-D?uR1VVPn2uz2fsOQdQ0#fJHbK%Ho5U`|j`6dRwDo0tcfdrEp1$75X{8x_VE z>I*Zid2<a@X)LU)Qu%A7WznUfxu9wm;7^2TUMMcPTojZGWrTNahm_d6=ZB&OXqTbQ zbO5d!zicetOFNgL3(FgEZ<=vK9`$LKcf9L^JOc8ACMq*JN6R90&B!FBXC!B+zd$dm zS(+Q46K!Atq%bn6i3vatbT2ClG=~qG$T83cg2Pk(*Z=pz0CE^zE_A)<VFbw6fvss4 z2B+OvAG&kKrX?$)qN8Hc!$jC+dU!!}Vd}oLy&2URWJWz1@-6y_5?R#s+uBw&AIGC2 z#MDI^NK3fnjGcl~m=XuPdzOzn_d5&Dx;}q>33&AOfa?zja72g$abf2%fH$yI-X2Bu zHj>xo`Zn<)BflwypWxU=Y?FT~6^sxG!kIN8ijDJb!hB~rZ)^jFiZ~-Y{qM?8EwIji zw-W{QW(1i(w2^GW<F>yoO_@zxrec^fC4&ZL!gHgTLJMR?jYo`!)ejGD9vRCetll|k zJ~fk3vw7>+x~jK2|3D`1;G&xRNiPqw$&)Po0=X|yYZ4}J>NjHQys5LN%=u=B)tT1D z-MQ-X&9-!Q6S%U+b^f=N(b-qO8~Z{HU(ho2&yIkg1O4&6=r(v}lFwzLRC+g&i)Q&x za&kr^tn2t)NpH~$@V#6hKBkY5+IX5VAt%9yo@T_A{Y{pyhQbEq5`T=~8}RwpVbRu+ z2E|!a&@Q8`$`_L6mrSjsc^LCTlIu2OBBS`RhT^s8d!g?t-`zDtGUEpZo}xa=B}uN! zxhc}PsCWo=he@`JNe-)pPb5L{y5c0342fXI33g9G_}rSw6sKkwN>qGrX%@6&+3ARO z-;t0np5FqmLbrFj=m=;c1u`uuVFiwA{*QLJq~1N2+%jUbtaNN9k><x3Bh%T5<rQxj zvPUSA1jQzm=-6|y3_8}M;n$l8iPg~>(>&;Af`GHj>h=EHA+K!nD_wMvZZ`bEdsvYt zGnq-(7d-so`t=_kF1S8%<$70pKUQGA4@nP>N(@1WM<}M7;^~5AR6WA_@Q(GBtJJg$ z`Uzd8o|u2#jf?k8baz)Fo7Due*2Vl1V#0HJvo5hVu7<r@ckKGNc*iRM<9&GjI`*+( z(!>P|CQe##{Rh@`h7#rQ;dF8Q8uc2wIP=ADF1$crQIMaXU!l*BkS)6i>Cc~`cdabD zbdmc|SP-rc2oIO($TsCf)PXwj*IDNzye+(z+=hL9(HmZuK$|vu(yDl*xOvkQ0=FY5 z&?<-*FVB<d`M&xcLJzjR2Pj$8$G*LA2b9OXF<|gXr;pPxu$u>grmP|49F_8Yej?M~ z%J_dt6_3D`=+HhXEP;2HwVB8Y2^qVK44h8j<Sz!Jo&n@87u7;q3Oy+FUMJuY6jiGZ zb%tcR)>{09ifrB}=ik{7Gf43v#KT*P(6mlc0wv_gU=$@bQU|oAHvEjuXaV8CLEFG- z#1Y?H(|*uX{`S^f{}u#~FY(5WCdo?pGW!9rGo03|g+-JQ0uRO_OfUuYNh-#}fn*Q| zn$}(n=|7N8d_-rf=^5x(YVmy<LbY0Q25sN0--zvR9PvT`MK}ZHZJ=Q_4EY-3gh$bP zd-vbLBn*=<0Om>3Iaqo`hJ&b0lo;zCgJuGeN*nqP<e5m8v0?0j%xgskT^lCLbOSml z{C=kWB}o5=fzzs;Q?`YXFdMqf6vni_hW5&l5~ZLNI{3ZdBQw300ze{Dc7$Q%&kHvg z(@WH7GXB-?n05jKCNSn&^1GEpF7JascjYBH1z^r(K|TU;sa#sND<P64*3!(qH5vO3 z9SE;i7k-~!$&nqv+J?A<d$>B|ecH7vQR~eWNlT1*rDdJmYo5Noo`HEmC9y0tDk67f z1Y)ELF;GoA>c*I5p}ajFcE45n68s^prcOi>vZkIv?XMG!EPG?xrKD&vV-1lhF<R>w ztu`h~1&rZqY3=FiuPe{Xh*{Gq()E`5y<|r9t+g01=4i$}?)L$R)K@}B%%fu{yOis@ z35n73)gVgi;x*_YV#9wU5XeWrW1O@X`p1$Rr)ZbHCppSqzKML`5o)C6A<$$eC#|cI z4mDUlY?yTJM%Y6$d(Q8?_t);HWv17F6h;|hvbC%(12k@G10?AYBEkVP*%=sxsB*M9 zF&W6>#7UOJvtSWvDp1~AesKoia0aBF8uZe87oj^t=Jx>?59Au@tPe}*f;LNjE<zQv z5bZ`O$2(EgKLLoBpaRdtz%ql3!1#WI4bw_Sydopsk`Z`{J^4k-&&H4cl<laI;8~WU z8AMkEk$+5Yw0PS$ar-<^=^^K~Pk+jD-`cZ_4$du>5!*Xt{Cm+qo(^ZW15Mi)XCJ<q zi*zb;Xo!#{0soVwuH9E!o6TkK%c{w!k=^n>Gk=PTjOYWh8yTERBY^C?=t=YN2Ha57 zd^~4Uscs@iH+bP)nnt&&XaKwoi%B4hyj3&{BVj*4GnUqeNZd%5#lNzC2kf(5{9OEE zH&wdGPR^^GJW(~lZ_1{5te=a~{(!$MHV>k#@C5Fz%qcJ6T3*zN#D6N#!jrL^$%wI} z59@bulMyxe$JnEWTb~|+A07iS%k8x1+<vGfd(#2G&RX(2Ysp0|Pst}Ia2#V*7($cF zK;M(I<_B$<<9NlskHm;>*eeX?J{~$0-yfkd`xuh7ui!kP5oEuTEDa@_1t-K;=$F5H z|9C@ny#+@!fYp=!`nnw~tszT`PM;x~BV-&I2VYW@FhQ7ri;@M-taQ?4AURH17GEHB zSOYb3Q2R(`(qXv!!}N<UvK1%w`yoi^gH6%7_M}tRZ}>s@nBNQUTlalU&)C3*sHRf@ zBf>%0hYT-eyE`FcP~<AMgUaz_Aj*bo_*Q!a{8!1*H|6d6{NH7k7&i2k1BK&{)<x_I z`R8k15`S0#1lwQ(G$MSpwX-^*^+R=h>tEG%ZYnnNSfP_}v#m8>LmRL)-%27it2F}N z7ooL33@x%vJ6S74{EFlu5UVz(c@h^2bqYgBZiIDYZgE_(8sPZi;w&)p<mMZSk=TK% zFKKEMy?498nTU661=<7{c8r5Me<7>X&D+;KksH@u2-haq3f&MV1d{xfrXGd_AOk0y zI)c-<5aMsq_k;68XVr+~!{Oja#Z!hHWHfNiHjr7>$}g<C&4Exz+CG$7meaiDvN}m4 zx!ipGQVvI?rlAZL$>g_JU6=!J&-V5PWfC;<)NZ?~>U5ktZ>u{{U2`DK`aoKZcbZGB zU~84;;_cz0lkuZk$a*=@(YBb7cfus4n{JnnTj$0uY2Gzy2Wok&e4wTp<hi<P51k93 zeVa^;%CGa!G+czU72?jMRfFlpGmb0rxnG3QAi|Uk<d-s}n@|6T^kX<;#ZgF{98>yn z|4Fo)4>wT2Vk?+<oF>khG<;|{+WdHAeP&9KbHR{I37(Y{WvUqK&5~tmV>4pZphHwc z)KmQWP7)4LJ{`B3`s-rSVhnNC@djf8gj-rb%8jg3ERTwTS~ZrFJ(|CkOruvZlMTlV z36SLHW#^}J-;?jfef_-z75M+pCErO3uv!{-p7^I_>u@C2e;>(*qr~!Du^KE#uhNM8 za0wEr&EMNFL%W(D@<GaEbT?rphmau*9Rj&Ey)*^Q@L&*U)7p-UN}fo?VB^SNV3Y5P zF<nf4`Guf}!6IH{kpG%~jfVMa2GPf_m8Okg;9n-F1yQMBS^LKJjS&1=#;Y*^0GlBe znKp75W+GvNUrB~_<$ocJh*y0jC7@Dc=u7~oF@uuM*?#Db5uWhELB5`8x0m9`PQk-t z#><3mI2dptcI!+fLb14*7grPe&gF0cbQnc|KE9yjq3<kd@0@{R#w;^X!5F`mw;N6P zZZjg6cbi6pQ|^l%*4C<2*qDuhmmfS>F=0_03OkUI8_fU_5g9>tB8ddl-Pwg;!D{f= zFj+YndHHZtpf|n^h+7-8C-O47)JEc~)BIt&jdRmW2hvNiyRtnhL#$1FyPTmvwCR=P zhYmf?04It$bT~lD9bL0kAMHUm3cQt`ca*lh?;|d6uj|m8c$2)cIJ+ixkM%%uNl7>I z{D+mT#kCpU5l<@r1*yS%`4S4hz!>AXwFRovG>JY^dd!;?0>XOdWIE+rYW_O;r4^Bl zA=9UjH7So%Zf8E;CmSUdz9o;ak;xJp@y1#uKNaJ)SAPv0k>*1c2kFOGK4n)gcAGj* z1tpG+^b3*%$9Dg3iS#~Ol3b!MDZ$^z{i*am=|7E3R%7u-P;_p8?Dk-F3wPz+L70Dq zN<`;tVLCp16nuY?=mB$Tl7USBUoo}p%IBIGC9J$9$&m003;a^xmnj+jQ~IkOyt?F9 z<Y!pmnp>J|#WnCtfnP-3?xT!`j5qj02TP)3Ar)z3@r^XcXv|@2K}d?ne+QWk-md9T z7c(;YS}cl<1~huGwEbn<3nhkNLm7Ukge1|SN^n$sn0XYWe7Nx1q|Q1gEnGOMbNxxz z7Cr<n;2X)qYu6s4n;%Uef!2i#?M(*3y%O}!#v+Y$S3E*qiL>%KxB+c}TxZ4;W&-K4 z6m7f(&Bxy=@Kp3B+M#6WM3AH`MASwP+Urk<JwOHDKnCG+(v3y}h7m7ASO0h6h>{54 zes}>UztKfxKRsmi2Qt{ncMMiupTw`QvG~)5PXd2k`>r7Rg0$1aptrO|=8&z)SPL5Y z7UBr+$d<OQ$}E>aSJ$|HzJmjXM5oi|^&=XonK95R&n<L^Tck`EAD0}b_VFvIis9l) zcir*19!fs8-X;m9ANwrWH9IcI$|uGz+y_hoDQWSXTV7~=UY)Vbs*#x0|C&yo56Kx^ z-fy>SR^a}u16lj`mmP?cxnjiEXBV-=%_V*I>?fabSQ41!Dx+`70EkGp;?DBc^ai;h zSVJ1+2JM^@OnGa-eo)R^BNUC626U>w(cgqA!W8<?l>CO$72sj8#C!Y?R0lVE?Y%(0 zp17LdAnQyk$XawtN=!SI0TrG(9!Y{U$O_1c@V)ypkHs9ej;{`{@+pu(vsDO#JJP9g zLxQUZjiats4$g@S4sSiY^?Ks5BXCuYvm!%mX%TIv<{?8id@&2Kb;>dqt~@;OTn%W= z81$Ccj&Yf|dMSqm8s_I$=W#>(s~!hEbh!iZh%6UjX5z}D>%LC3PEJE=r25MfjpsAC zV|-KEzUX~{<#?g_&C1u`J$U`wl<x))nKEU_;P1dC)sEz(fl7dV#(->WO>6m$L+8N| zML1^GNC!mX6e`*b9v2-shrmU*qpd%)oeQ_Gp6@?fExvL6(RR0h$NaCi4XoQD3Y+Z4 z%LefEPpdSDpi2kA=KT)4Xad>yEDU%0(220x=zT)BM+vWWL|SlO3^AKzl?cicL<x-P zSq85DL|J)xfvm8iKIee?TC2m#Ejxmj@8agTk9DR!RP%q=)Jkh>OU~|NTN_@VC!eYW z3%Kwg+_O#2{a3UHf<5#<hCseJkM|?%&2d~&WaTmbMNL<}i;cx)<>Q;T9zU9QYuvcG zbH|UnHTN;cH$fvB4R3-GNt?Q~#LPs4Hr-m7$``|?RtCEku2C=B8RI94Ye9sUibLxY z^emH<KlMfqtG}HS`6KH>d>@gC34$#{*9ota!t^SgXYTsO;M(wg2@PfY3qjt0lBi_* zd&KE6Nn?}AdkQvTCOR)OORv)B<`(*}d{<!+Q?->y{fL=L7zCp+8iVeh^p8~F;nL!) zQ}mKT*RM9-X>4uW@Tb>ZnSLBuGYpU&(^cUorT$Ygn_lAeY+Q7#p4CUkYExNqMTi72 zce-9x=4x;$$<4_OsSK<W$L&yk_QL+XklEtZ+XU#_T@gk@3@<N|9+$|+m%w<!r|^fB zFu29gOu_i{wequ>qiHX89dCs+80(fvv@0jv20=qfcmW8U9!a8O5@NNS(A=KH1cVlP zfcUahM8Fvh+?VKa99t?0E(kAXL2pr9P*B2|uJb*VNWif}fH9AyWs>0V@L;YTsX%pR zSh0i^IaewqP=B%m+h`$2Mkg!vi6jAR%hOoJ!Dt60Hd2=)x)B#o2a9e)$FpZ7P{=dM zk(M!0^LN1rv0$NCp#JX~5WS*C8_8R9laXwd^X+tm(sj%RuV_{q9-b7gc5^ctK@dOj zl=JV4NI%(JGAtBN`Xm*ZR7CpUBE#6Lq~GD+$;4AKV{M(WPF+xtq%Gj~MnBu&s`6V) zzle5XwZ2J?!6CA!$iSq~O`CEysUrfD!O9XA8Mg&I34RkJ$J?rG^Tt<BWDP-CTOeo_ zlUtUYfAVC`Np(?KQdAyS5|Zj@@Rj8_HPbJke>}ErfU>X<1a@3gQ}xvwsvF){?VH#b zjjwOAQ<bl*(l-y{O0JRaetxWvZ;In?U)doIl2jHd3yTcs#lL#h3{$C55zSg+IrJ4a ze4~-wnRR4Xe^q~{VY6qkn2iKs9(Y3kyOD?h`VKZ|n~H2h<1PY&K5Pgu@4v3oadf(h zPG5j2X8&73cYcVzmb3!rOpGFbi4mP`e09Zrd{+jiyM;g8_kyuZBRX{dDnNYKhB_q4 z#UkaOa2G7nut=UWl0$O6bP<S4jcrCRF`e$85^>EWFa^RYKZJ=9zZ&3JB$oGs&^ddk zfm+Ki#L`_XN6%mwv3w0=^?y8(bYpiAE(C(_<Gi_Y%oud!o;_oJAbSpKOzY4m1vQj~ zX0Dvd*DhN+hh6Z+7h~x-6~M#_X9EHXiuk!B(Xk`U=?hoxus0rj`xBY05^|{}D#iXm z^^QjNb3i9B#b>R!8R{cF-+Ta`0g8sv56_ZD<r>0`g7f_2XS>Rrv;n&UcNv`a1iqR6 z?SSL7o6N_!JAAhoC`ilX>hg-}BkN>j$M?#4@Y~7BXg~#}GKFd=woC~03fz_9v^S8b z2EL^>7wKr3Pj+Q^l{zakB`piv7S<yP9xpuF>%};4S2@0scx2Z*#YXlYg>zdGXk=WH z-GahgWm^Ka?%JUC@X9F-;9{~Ezw#)M?O=>``q-{5<!qsAUC@DK8GjY0>7v=Nb<gnt zHf+CJsY}X%l)BQw{j%fb$M&37*X)fBD(AA}n96`$H&>PL1@Tc<HU(X<uawozpIJ0r zt=R4Ari*vyPVPBZ`c-DLp}r};S=(%1zczkw)R>*q*4Capa`gD2hW&<%t_^Mt%M6Za z)yGro0d%E5kcxw8sTCvuKJp5U-cjHI1TSr60&*%ME6{wTW@K{;XMm+XW)yYgsCPkf zesVz)gp*RCD2?3zk3U7gow-B0HggqCffwv6WQM57v<QSm(+miSIyY66UGQ&`k*;eg zbBFd&D?GIE$y#+zO`YL@TH$>1cuZg;chdi>(u$Lyhk!s{d9;6?zd9y1Nd$Yx;Wao` zjnto%h*axjNs=goE$$Qe3}!a%x|Z{|FI&~*FVp7c>GIVPkveS@XYU`ls={7IyEYSM zHtAu=OfjgVJ>0Y|>P=g+%eHZwDpm&hZ}PJ*UDf0#bGvaj^uBt3U0P->w`td!pq24! zwL9!H*UA)j_J)R?O={$dAsbZT{5tp9!Ec-0H#s?M+3x77UB2H@=3i1BwMSi6o>_o6 z*mz?7Z?dw2IAT;*YNfCv+sQ|Ji*oA2YoKb@*6`At|Kt~w-RrJx4PwW?=fK}Z<m5o{ z(T&w06CZrV)CW%uxlM8akh)DLPy2lSRBp-a4XY@lir0wwWivF3HDug3Pp^N&UcTLY z2^mPFzed~~+u(DXrMh+}rEp)k9~P$fDGaj~QNx8{Rr<n0YyLiepD`V@v8Ymp75eBy z!$jn()#%ZW=Uy9obddG!+f};>M8*n>^i^Sn&@V*ZFO+Z~q+-J?AWOQM-nSW)`xEy$ zhJ<S4!q}m9j+FaMHMer)V+a<cWU~dJfk?|Q`@Qt{vfpKfnoPhCAu=#ksf~-*LYzD$ zna$qnoV8Uwd4}K4Ib3XlE-@)KdTZR4=&dq3)EQ3nMRcZ`cANDbkzH;e-S0P^@!wSg zj@t}q%O@oaT4$^B&I{Um{p^b`3)t-X+{W}nvJ`+bQdJp&Nr`kFQX$L$7+8wIO90t$ zfK4l}NUKnjF^^^<+}U;K@UXt9i#c-ZZv8{Gu_!^8#TCWhrQJeQWC>r|R|ACwBiYDL zBf-(ck1r+Lde?)Ua|<Ao0^&Fi6!%QwHWoLO8)G-d*t70*B-G3BEpv(6p5>{gRy)v+ znUV3A0RtNL1D9V}ZLC(eWNco`nG)LjEBC-RxzHz@&4}6sW>7fmB`cRvGfwe9m&R0* z2^ZiagojZNGEjylu!^HQU36L(j()Y4E~EdZhgI}EnFGN1IYVuF92+a8-NR<lqjao# zOHgeC24bVWOU>dG_ZpMwxMoLO!X<R&P^f$WI%I)oYY~vN>j1%zxX2dW$h}p3L#B9; zo}XsO&y<~qk5^hxdZ}+-42ikH8IqaoJcwd+@9Pd3LL25NS<}^Y$MlEN%PZ11gmc@P zv-E@qw8nZ_g;a+-dM1H<SWP|a1-q9_O1w5DUcK4T%|4EcTYqTt=}7X&2rD7rBBKM% zkJ^5#ySTva@WyjmzId^fuq>Hbx7m4}j<eGp+x(@Px0BF3cV>fjo6`o>nq%9}vYmZy z@~)PzJbyG}e{EKy^&Ngp=Ar1rzI(0dK=Orq{f;`vYHR8X|3_{}kReb#mu^vdl?K&l z_iGPi9VpwImX?;9mIiV4K~^sHtFoOu9NglU*EoVAOP87izP19ZgWEHbh}RCrw35HC zJgeJwY@OOJ*<o{<T`u*vN_E{78CElpthb_T__6+{mzQnyvEJ+#xw6C_331P?sFt7T zb9`mVW<TqVK4HuDY$64My%jAX@7x<#<U4p;Z}x~;TDO%%(W_P!6*c+$)qASq!pk{G z^9(-bb=YOUvo#q=zo_=e+n(%X{pYy@#g#Q#hpd~(uI#4t)4EeI8D)WObBMD!=tfBY zt^kcJP-ftt0SOgN5mg*Q*`<*smGxBzFi`Us##sGHH!!go#M-e)^v-7)gx;pr0f)J& z%Ib=}W&Ec0hgPxa$5V6E<$IDc%DIe`^fagm3qEaTQ59@$ab3aw{P=h)entDG7634N z(hw%bAm&>XJ!{S><#G&$oLp7$a56c(nk5cT;I1D<J|fFyd8L_PvDzJ98Cl9gEWwW6 zBim?)dhsG{B+^}bk`N|a8*PYIhm2Vp9mK_G<D;WgAus6U0wlUG`~nm|eK0QiT;}Dx zbK5!<v=s7#*t^(&H<+Jp(`3o1smZBo({03wm>;hp_qZQ&-!_nLpFd*Bs_Ezve2TP@ z=|B@r10uLDT|QkVbTO?_R+X1m0jUR8JUZ1UAi&2bpuFnKfM(~z>|y7%<#uXup5wb* zRf6>+lK~w5Q_{<H8RW#hg3z=2<p1>c9$-;j>$~^>)0nNaVF=7Pdr-0Wc5K9;u_f3= zBVtzs6r_vvp*QJ6laAOGjbe$45@U+dSV_^um~Nsb0o1I4HR^rWz!=Z@<(~h2p8tKW z<7TbB_Ue6o>-*lXW5{{HaFAa2Ejk<Y(-gPjS^}@~8^hK{txlBIE-hNTNJ$wut2^C> z-y}#pgn^%9GI%K>&Yn%&c8bqCS$3lOsI+F`+@iTE`aV3TL4Ql%CTjPnkA_;b5``xj zr~)a^{v0s}v)Gd+90&U<!EC<}s_?cEbDt-Cj$f89)Oyw|HMrB`)SOSRuF0rTm2C%( z9qH8u`beG<e6R{F888#F1a{xurJ7rG;CVVsiUa0K#b00i_VW=<#fgHur<6a1|NPG9 zysz8ab0>#;#LSCWw?XRT8|v<*TvzH{>&FxR02$c!A#uovjt@?bUC@^*#`aq*U3=of zrb{ZTqf9RL8~y4ZGKzPf1scO$`E^uEk^)yJBj|X#j+g(6?ZXHxerxf=L`K%1IG!AP zOcNWF5Re`qE%o1&4?*UU;KOyIL$JdVgOoB#BfkzbCt!Dz;YU-BMjr;&!rqcy<<hDZ zI!{j}h$}=<|7PhMQ<QY-bm~F}4&xKV5dY1N)ex^Q599beS6P>}Gh-*8CG>gX*|zw> zU5^WNaNb}k`SFRuKXq|@06#b6owui{)_B+L-J+4Ve0YEidX)dQRQ~JwQT=BO4VT8$ zCGOs>{O!h(JGK0U9j8w0JSRQ8Y{%SrN^%#vL<Y;Adx+)N2dbY#Y10@2b{R4TN}Kwt z*|K=Hb1B&m`E}t7y`y4f?<oINJ}fbJt#5EhVNmbTp#Y7t3VhHfC?qjN<&%4SXQIYG zuXn|J<bpb<Ft<>5irOY!QtsJbUeDK5#?-0u^0KmXH5u=wzx%GTA^XgZ{m`j?;lX>D zm5KP*d411lcKBy|`6|8By)(S|%v`83s;w-qQ|&w$6{K;ewz^fy#9SO=`FF=(pYuzE zv@E?aAyx^|k38IYIImal=p|lf(eV=)IH^|#9W-+cT_g=#o;GEP(miiZ?i@ZfL7So7 z;J?dX<-0OugJw8cRX$!BlM<T}%dhA&yr1*xU~O<pV2U&{Eg>#aIg3mUd@q^bToX0* zgTp6woKn@)WTw?<B8c=9+b@7|?-;SKCY&a>x@LRL$;P-wRdY<s{%Xy81!U@;Ys$)m z(#TvsFh4jyxR?q~jcoOLB26hvDcf<6tc-l9JhptNAMX<o<fBT|=Hw=6axdq7dRh5? z+LvKxc{iwK8PrN=XBas&&SImukDY=#K`Um6=8lRLy`wgxC6aR1`UMB;f}Kq*(K|RK zAz0;WY>CZiiPLBa=*(g*VZ&NtUj<sCD!LXe!JzokyILaW%ns-<lU;alnze-FzOf}X zXM6c6y)!nXceg}cWqGZsC2Uwr<RoE*MoYN=vdz>Ix{e@chPVNxuncwz_wv=UzH6xS zA}sFF;3WmxNwhOf-{vRHitw8VY0g=|oGb<>9(bR%bcP|DR%&Rh2j$_EmXVPLrK*{k z$~yo1Lr8p%G#8Rv(LazQD(rpCV-nA3s?w@-x(duizdII|rB=iiO1Gz{XQ!z~mr&nY zIw6Sq`Ofg775$}Io*}(`dE!It?l*(&ZxQs41-?&$6VLwkF)=&7=foZ|?CSCFj^C>! zQ+J-MKd~S9$0rGp9`x6U#w_dOb1nK3qSlwTockE`y1`&(+LgI0t)8a|u_WwvT+_BQ z!6%%kUtg$T9^>EWb9nuJCmh^nwv$b3cCD!PEOmOFhL@29QAln`c5p~=MraS0QmUOo z!aU<vM63yMY6s`RXfkuXzmJdqI>0Ys7q{tg$eM^1ah^^j+?6JliPA$dg0t|;4hiYe zk0g}QFxOJg>J{~?oyexgfKnU1f8F7YjR8&|#m#h~n@<Fvj%bQ=x=psm(nL{x+OCZH zUG>@ZJzQc*@*TRZsqA#siCs=E*ussXGaL6GKD@6H>LzgWxXGpdMD^*?b2#zPu-il% zE6T0kUcXDZ&jDa3JHSKn1)xvL0Cn;exlNe)CHVq?DCP7v-=dc*p7qnqpY=1yMb8Q( z9WXoaE`q}x#j|Dlk)n>vl8$Bi5gp46BSg<GOFr)SQvs|ak7qhSodV_tXL`_6^-#*} zOr2VKiIlg@vTpSfwcfHI_j`#zYn%_l-!M8~^Q=Syb#Sng`TVI{;!T?}3P5YI*)<BA zJUeAa3Da5910?AIe8({Hu3J!70aQza&GSY&Uw>Cbw?XgbvtUuFUxAO0(kIzB&X4zY znLdwNL`vy95^}Z>9Q-*ylVm;MJFFZ@gyDjM^c@9Mg<kLRA+tq)dEe?s#meV(&n8LY zgQLQtL!}*uaoa(42T9qX$2dHC9ZWh1s^QRM5qpUZ)|9;@@gV8FUq@^r4yGO;eei$Z zkNe5Uz4Dv)n>&8(CA_R?2y5K1K75_8Pwo0+N9&Fq=IMl9oi&Q}{(kG%2Q(bz0d*!% zcwc*T-=SkX3w3P2-v(fy0Ta(*Lx3*{l<o6_&H#8C3CX`{4nWS+A}rkD&*&}{G{b#^ zzwi3>{$24M-GAs9i-vtBHBeliKt0Fcbb(o2dN9hj&RgZXDIy?Jvu_(t=&<W$YM;&c zv%xRS4;+r;iFzzLkPie}50PFsh>VY2l)P|(61$=>dKQ4lNzhs|6nwk_o(|rt2ucY~ z4(8X)n;PV%!h+fZoArf{_C0F;MiVtVZq`gC9dd018QpYNSJcGk>|m%4O|>DO8pFJf z0SfokZ_S*!`m@WQp8V|k^^<SS;X5qpedu>vKsEhG!uR&_9m;FI$7V)GrKd;o2`g44 zdO`kt=~u+*$GS)L-)g?R`A73pmD~nZvl{9(-=+&RsGw$uj0PxvjUqj#UEy~I`P6Sz zg>H?HjM0RWzH^|H&HRxxzo4kFNLjhQDkhKD6&*fQs)TB|^c?=M&(fM@DvzaM>!3m? zV(a#;D$H<G2V(gaX?$131q7~6O^8cKPK=3)jf~qSZHU=Yu~9{%ryCsTG|${Q)hjf| z2OuMguck-?mM@B4s0t0u&I{9=oOfkqON3v%PqI&@blFE=Z23yna;^TvMa}#p9-lQF ztln422UH!1IIJ?-H33y1r>Nv28v%Q-(gakp_YY4tU4(`)N$z%Hc@WBd<zN5c^uxnr zP%B`kv^uMP^poFPH~GH(MaR}Hu3D_3PQAgU;7GBhHYZN4e}43|Ttfq}BYZB--I~2M zoT$_nu)5-I6uRlgT0k3sPBBL9H*9m#I$pbEak7VM%-DUU<1|HYy_NTt3OgTZWH4kq zu1W44ym0qtCFwcncc%4e5EMg=x-jwHCUB(g#c=#ZvWH#0RfC!`iO3g_!72>h9@Pi_ z((Em)uG`N5tsqfiKL(Vyaz=f_PiLgTfjox+rNC}Vp?8PyMl7S)8DHfm^<e!1{p?Th zqrU&4Vpz*uNX2rh`0(wzMChUqSR1z0chl+^uiUUHW7oRvl5XDY6|+h;*7f{HkZo@w zr$mQ**QcyjfsbH>M1Dq(*>JSz`0<N7KT=)&qImNq4V^*Py*?60*Dpsn{e>-nXF7O8 zY^5w+TjKolu&?^uad9GJ7AjKChn?|1w)|7CE1s7&o?Lgr`((|P@n=>p!(GW1#|3Zo z*}mwS&&jMyM^1ujlID2)@cZ>pBsE!l`O`qJ;~LD!vqka<{jUZcFrXb!8kDNVM@F%Q zbfgkj99N)Y?xY@^0dLQV@L8%kymU_W+c*k~>9onXhn7N@onhiQ*|V_{!~#ZxPBAnG zHxO$m-I_OvO#Id9r<9+LU%2sk`DbTNe0sn1&WDG8km_fOQR1=SshBS#>wAgTk@b)* z>J%$<X}aWmzR&&4VndbQR(fhK6}C=LO`sM7R?g8FstmT7+CC$s$th`xiOT02-<KIa z(W@0prh>#Fp^hqu_JUgW!Rs3ESc<6Goyi}^7Nu7gm%V%5vAC={r%ZciArZKO7%7sj zx<rHnzEyoognyp81WG-Vefj#%hh@dp>BX_{zT;RNn;sFHFnK;TbHxT*WV}UWT>{9~ z>;~~dhlN607LgOHowa0;8`Rc_q~4wbhtE*q_6*3KprOqe`0Kl#8XTg`hI~G&IkseL zx;AFxJC0i1AeCu<e*<ULH;NOb3vWJjeXPm?eTUyJew_L6>zf}I6_O}2<Imfr#W_{l zGASAIY-Bkw-`s$^HCFQHuQ5q_C?b^}ZTjQ48^(YL+@sHpKZb2+V*Fj5F@=8)mp&hB z#Bfs_jyV*(lcy^{S;)mY??}v~AI=#3bzhY+lPsHk2Txu&1KFgO*bz;HF!3U3aA=I5 zkMj9glCLh?YS&S-Kcy^h*AKP#s)=Q({3`i&yTS{1Q~uQN5Y>uy#zV?+JFp2h7t;)p z;jVsy;w@0jGU%E!^lMR_R<Rs2^Aob7jD98BPs0`Rnv$Gr35EQ>ZrnaED$GwSD^$vx z+g-D1lIU4uM~h-4SR@b7sn-nNqK<0AdIiMbrepxiC5lWCJu3lWcBbARSDoXlz?}jS z{tpzhPZtnwdrn4fdbSgFd64}Cw52{G^2RU)4z9{-TpG;+WI5epa8l%^Lse-GSxkmG zW^V@pLzz=|kc4LxWHNN`Y??t-j`AvO=(3=K6z4w2bZiOJmFd)c{0HgTsafe6PPFIL zRAMb+sX-yE-FHOxi3nmyxw*;+{d!SOIx@j9Z-$AmF$8CiVFp#DW~8TXPjPx^*q9Sf zq~puuo#ZvcR;8wAKs%??E!>kOd^5d7>m+ZUw=tc0O>@c%IZLzhQXxi?>IlH*tei|~ zcJ}t|*%~PPjuYi%Z%59P$++Jq<fiANJWdeUo8RqRNG!3L>6*O2y6S!gvl-+3_))$W zNDkzjV&L1;C-a6D@#ME}{y}D(09?aN&E^YVc-&Rp{o=v_==Yv^f_hSPh^hKt6wrui ziSgZ+nNY3V7lgPjvoB}}K+xkmYz#*hsc}>B5Lgl(i`7HKxQ4eUOEHB=Dr3tczg1V3 zLAb=q831uzO!AD+fvF&}=q&AoIu92XaaRH?LWsQ~Vk88UCCGcxAjO8aW_!7+TxXv- z`j#dYI_(2!EbTqMdE9;A$&2qde}9h*2p|!3v8Drv_)M`tMa+(<Z`IH=z%nN8HbcP0 z^<0O6L@|&cKhVOU@_~E@uC6Wy8T<0%H;fgh)7vn?J_t9+??JQ1AjQ~4xK+XIIDOHj zAIOMzfeJiY6L|JBuNGCyXJ__6LBZ&EA#e-bETi-l3b_ll>(?I(fo;E5EE=|LZNwH( zPq6f(wwlgShJ0|=8Cv$q7#p0sgp>*+qN5{t!xeEvba}Pr14(sxc{Q)UBCalvj?gTY zkUXJ$5(@#e*L&fnP&&e}`g(P^`GX(qp?E4&LiO+s6!?i`y^JxcVFAMx)(@y@R^v;7 z@d}Mk#?p`x-T>_#%?B=j%WIly+FNJ#EZ5M{-mC;;FV4NG0oMM_i<f@rDh;vi*JdmW zGEeQ=`eWg-Z9}<u6l5Xfe8_cSb#!@m_Ko>9Dls%>AEm+P0mwR#{94FO*>n4HHDg4c zs~+-9_YlHFL+BI9PSy@+3^8jAG!Eu1IG73t=TE_FBm++mN}yw6wU3FX0(cG@8VNa@ z5*00h0FDBho-~?WWd4^}-KW$^hx|z7^N2Ikpeq05;g1?JCG1N&X&0R@rD+}W74b4X zq)EUg!Nf6)(zuCWpzaR_>SVo(et<p!ytYjJ$~twYJx-J_eI@8!3<KaNMc-FHP_NB} zMuQi<I^R=}Sw3TNCG4&u<ud9%78gFVd~n*gUyRey6eZX)OdK0@%3?ZdI5cC^_zo4a z!MJe%Tg6zY?=WPpcY!F@bZ76ce=4CIB#K1QhELT4_6~1y<!SGAxS!J)yp(hu<lMpQ z!FN0mgGYQAs6y-XUUVse3{a!SFaw+m(D^{!j^L`9DdO=Z7Bc-C44)9NgVb^e&KkYQ zwWk>Q%ZoIwKNCx@F3Cg7Gk1R0kmU&=b<%4}+G_|Xf0j)13&!pSbR9Nkb!5MSjNAae zv{C%Z<!^0a{b%oc=s%-2fb)3dxQp)H{pa%cfE?17D~PR28)!Ci7i0fv?+*w(c{}Sr zq~W<OFep9PSX{&46Khz*1GIUWj6NA6CO6a%(K!|apux>Y-RXf&!1^>;qJgM%;4)LB z$oe(<M4Jq4^p#?o*8*tloFZP}^-&9PJb-h6qh|fF3!$H=KDn^-*fBsD9l$xmQA6$Z z3l!ul8Cb<Tb%roSF~*<)dp*YP+9HmO#cXwX6Wk!f6B!!|Bsh<5M{=HxR-KRqU^u)_ z6c4>1Ki0fRHUv3;`0pK-<#i&v;?=QShA~?a>q}oj1I%WeBOUqm>peo}spfg?Jhom# z9XGSQO*^yTBaMEF_@gr)wHWic1<<R8v5VBtJRm&mF<y;)wkX)N3NH6im|}5BeVI&< zxnsxHf^pX64dd(?o8~&$e&I>9`uUT87*XsBIwuhOAi-8JB)WB6AtUYf_7Z<2ckLy- z-;n^J{cx&UHGr3|0HJvBeY#jBccoTC*DqV3IXhS+uPCYCoeSL!eOhqKW_1Y+Ch_an zq~ZwF3<d1I`Y{^$3h=QxK=P*<0tpUulVKb$cZHse9*QL?J~KzDCN8-6{UVLL0t5^- zgv0&F4yAsR;Wcu@FvQT;(2L$O_!>6oRrHqL<;D$N<rT()qrCGNS3S#B<ZI9<ZzXH6 zWA`PFy@WqAva(IbV33N-iRC@$lm3m^S?E3cD-JC`wY834`u?i-y{~}TZ}=vh17?6B z;t=Wc9qGe2UO)HYg^SXvs*{cTl)HkfLlzFAqBWa%EJyA$s27b<((LOPg(D%wd1%e8 z@gKy2qLi7NmyxU5Q@?8uM5o^%N*~$t&%_%-{5K8<@6~7GqxJibK(0fN8A;>w=iqj} zBKn=?5LHSV5U@jzEnlS!h}i1y760U53Li?Gx3p5tXVUUb>q>o8@mtcP5{i=x(=?UZ z-M+<<(klP_;Ee!ENdj~|M!hRmMkN`(7*&yxSC^Ql(&_Swixame=4gD&!Ya4!m-;m& zHGK>+zWYw%bZ+yGGNmpjOLy=+kDxMMw{3gM)-CA)Ta;_6Hl5ymwEO^HA5*tenUj^B zQ&zt@p@84Hv3U7v3b@XhTa<}A5({-jd3l9=^X{vk9y}{ObF&JFc^y7m6g8Q(nKgV2 z30VX+SV}TmdfIm=v3g4t5*!rb)3mBCRC9Cc>A9yyNL%QjY7nI-D5=*1pzqtzk^Gj8 z*iD%EDYw=K*Zcyp_hmPZ^S_WGr*Y1ku7va-E>B6MLc4rR{JJ^{g=_$o>??|oPe=$; zm6L5Ea$BY!qvtBi!*!w2PKF}Tg@Uhp?Z`a%QJquA6Y~AB9Sxyz^PKc6XhXM%!)$dY z#?f<4AK7em2W-!bHa%<xqYX2rJpce9iU%c<9rlN1#+4F(z-}Oa#-uGg6p#P)qqFnB z#`d`Y0Y3*E$olHd)pUm5UPfj-X}W*=BOaL9m`k4NB)1ndjp(D4C%VC-9E*q5a$@fK z4d3A<VQwr4f_Fv0gH6|U5@boJRkIp?^VCo@ry<YOm~G^V0!$trjJFdPK7f`(U=L{V z>3-Yhj5jNGz43=}e!*U)L-&VTexRtAsH~SrqL>J+zcQ!QtEu@9w0{+~Tjum|ICc1# zx~Ry0$n-*655#}n)z>Zst$vT6N}WpR<VVzM^=ijo)ORO3mc~J3wzNasA$Dw2OGg9U zYA%uiJg1wwVas0M1f$#(+~mT+&+N})4sus8RuKy|X}Qdtr5;A-e+pqU&;UuQ{}GY% z0t1Uk=YY@*gZr#Zu61JuxOsJ8{UDbaH_VS}X10JIM(gH$ObzxqENG}LDsJk3dpb|& zNy5t_iMP74RwLIsI}>wB?6DI`r&Jv}@u?GqWyds-MU^*S7eI;SQpxR`O|6jnVA$%< zJ@ijv)p8qq!R5y?xfJvof0T_OwL5G=X#g6|-i1cPTq@{nG3XZIEauz=c*o0yW`aZe z<HGAS8)xT_KQk{p+z|>+67o}yuXW5%Day*vCs)Z;$Nc=PqLlo##~oAh6S7iLpozy^ z5FYMvVybR#h|`%BZ|{3k1th~~3@cnH7&3}&hQ_O(+k>x&&Gu{^iY$w*WLs(8{qjpU zz;gnkTzg7AL^c$>K4!o{XSoK0o(yUgG5tDpFsxNOws3DHj}$;#F*}H3vV@v#qN=wF z-YR;V-_du6bA3PQw90EypQ%2(R?$+asc+ly*N(^1qALZTeWuhO)w?S6a|{ylmtj#L zZ+I<~UZFR(8D5K`zX8ANENP<B;?&ZjjFPn4^xCwY8RZ!}GRiW6K9`zJy&r@9YI6q3 zmS*4#SPN#OUn-?~Q8gIlPXkvO8o6AcbaO**9!I3K%#;i$_Q{A&3ri1A-<lC$l2Dv0 zB}YIxUjgy{uat(P2Vx-Ay&0+vXc~#5r-5}^8ISNGDYPn`PPs#e5St-INo57uB{_Qw z4_5Ba&Ci4;u7BP3B+^o1R{?Mn7l263sFsrGdg4jnf<8tn^cwKS3_c|#GbuNv(!X$1 zPGELiS#nXKl=S@d4p>blG9VO)3o=%D=-vVwQ3u8kMmsJ?o*Yu+8#?JoNWZZ4zmrJ^ zdf?Pd_5s6;t^RD!%1#q^F|~l-OD6vd9i8b=kjOg?ED|&^4#yfCq2Txo1Q=b%6GZjg z12H`@Jdw!%T8tOA16q!azTUXIN228Wj!yDD69p?Fn-y_!5m|AikSB_D#L+0W>y_Q) z_m3;hsxB>cVyq|Zv*{IIN=q@&<M4&KlUUPhf7-t^4v<rEPAn$&wfj}SxsyYA$sM-u zLKQHv7vXRE*A;DQ`Z{^t5wd@;Lr|S1%H|&&z43!1vm;U_nr?KWuQMxLo~l_8<_H@? ziJr&OCPgQrer~E=U>aQ@or-6D#N;FWC!&r%V*S{clY1SuFsnh08%;-)KWNT*e;ols z+-vV2yb<vc;qCN4>?Yz*F20}Byqb&}{B9jteD6c~o(?x4hIgJ)d^~$}XwbpHgXcdv z;3G9S(@aHCQC3AlkyI`gXtl*rSqWNgLRM69LXoy2tGHN7CQbz-W7h8Ia_^&#QRP8d z(b2xXj?q!z0*ZoK;|{lXy(^-2XO&ktH8g<iL>v^w#aR_v#Fy&UoPhWc9pWp}7AI6> z6%|1r_V0?5_vV~k(>U|W%ssD<avjyw_trbNmJwOQsqdg}2Gh_=!&b#sEKgNr&SYHj zxVsIZwr+E91UP4~9MbH1@+sjyy&=sGZdj6~TnVN}YcliT$I`6x6*-^rxvld*Uv*M? zz`Jn4Qe{>a<+qgaYqp0Z3<#AT&8~^eQig6^wqjB6gbkrzooFg5DJm)|OesjyWul-` zb?9RZlzweTrCB)Zx!-Q!%gT0E=<?nsqF6Gf@<c`k6zin#zH}p{dY!a5G}}K+ndOzU z#)Cgv)r3p5Qf>LxEM@pwzp*=q*G#(QeLnS#cSjS8d!*mHS8gBqI*|zDzUdc7g-Ns4 zEn4g^%_{YYU4_jRP|L!kS!)W`Zs8x*om+W!Y~`kJGZGg{<!+dPlgMy|J_*M&z$Wo> zsZfCPSbyWGElCd(r#6^+m>Mf^e_M87ym!1!EX^R;SY@H#(M$A}qCUH<k=LIRKRiEy zjyS40Ky5_7in9PPTL$bx8XrV8$osQJVndG-Q9lWhhyD~*ACWV`shFmv8~TG=H^a~` z1?)qa(}IFWM^Sl*V?T)=emkV%EYcgioAG?Xk7x9~3r<K!i-%KxurE)gf_NrZ)d6{` zMQ0yt^vx1d^?g#7=4xhRSk2JARPNX=PA0d?$QL3P@g~|Qd_-*Muym&^Y86jovU#iJ zK!G4ujen5|PmdF;cZp>q`ws|wi_YO45sJh4b*p)LNpdPP`QTwCx&FPPI(K(ac<!cH zaBR60ZsSvO^3wBFds7ZpYo4E=5{2HMSQ-2!<cb5iC0RpniQW*eB3DH8iZi~9mXu5@ znp!k<4+(Z8V+{Uca*KSZpkFuE(wn^A{};)XKl3M)Yw`m#HwOTsk$Nf?CN7?~DXh4D zE1w(ysC2|(Nr#Jf*47psRNcv0;jW=h5;D6Zm`#inWC|SWKb7eR(SpA^!fW(XL0k@k zx**c|ptJpFz2j}nCJ~60Hl3!a#D6R~jJ@{9aknFnKuv`O1j6o8babeS%FG31nL^*L zNIa7IZaR9Yr1Hk$pRQh!W);wPF48yng&nqvtW?kJ06sP$C~T8&&H4JK{qMnFFHxmo zCV(cf2gC7)I$$HcVB44&Dy@=c8N|PVNBa>^Mx=k3`*;T#TSvy7ApNhMsZGC_ay;q$ z#`LuTkW2ZVCK}$Z1{#3FCeng?U02Ylra+VDmhHQW?+wjGJT|95uY8Lyx>|O=rcsI! zq#<vANmi)z)5#P1mtnT%^COA|@&g@9zMyBwaAb>q0)EhDA7CK#S-CYTJkoFN>!DL) z=8o$-m)ZnU^_ppGhbB@hX;!*Fxcq3}N;>J6Eai~}#P`ilFk}i0eISOW;#b~CDnU1; zP9&|4%m#;7W{!%IM@XeqZ>y@`xjlQQ=3>f)+;f$CbbBgxRYFC?802o+&!oEcO7We7 zYYbCoI{`n`Cl`Jyg|x;9vm?hIp6DeE23<V-3T~la2Wi50Nd{P|x89@bb8dbO&4=G7 zBl1blNyKVWBUSq@k&+jNn+jcBYIbCZA>!GTUergQMSMD*Y@+6yr=(L!&~sHUAq6bi z;f^^{nxtQ%AcyHTkU0+Fw~a>8!vIu)368o$pxZ`42!$MjlxX@zFCtuf*-+9^->Wm% zkWGGh{yiPvd9Rn~9OUHn&(2Ec(g%ttdY{$;-fH(79e2wDdkJqoE8QhcTUU#-61hGW zTZZT;`U~jz_PE!9JkUS?wYzL2@!QMy9|5faf{sFHdvUIj$!nZ%%H%f8Hjvqb%qC+t zGiEcdflaUmHn$^ZqQ!{?$vWsL5qGv=(=$f)tmQJ>9k|LmTBfocbTUa%%e6Ka)ba&3 zJJsc9Bs;;0EzFY1otc~czq?79o9N%&%$b|nf`1Du$b*}}<OU)zZqT+daamqJUh!>3 z2(g_IO+TIMNOyuN#hy>+ig23E%2j<?OoTh!G<5PoGViZ_6~)IQ_c=xG+fW=3N$2%; zyg<h8`I=fa2DyTtxfzfQkRAO@f~(fV4?Z3Iork*<lkgXjO~0w>CJDH-?L96J{?`X{ zoX7@n0?^MSNN;36(j0V$TCLkN+35lhrsq8ksN9ec>F*R7P`rL$6q)DjNGER+#kdty z;g>4p2`s_n(@RjGJPPTJqMu%xP#!{Uzm0MtlQ+?M&H+){^_2lml>tY!`zp!2r;Z*_ z_6(Wkb-V9?OSl=O8)-}#IaoaB(Z4QSc0w=49l$1|NH6{(#~0imeYf~iC+M6^G?oYD zYNO4&T`}bbe(l5nmFD%{7kRX}a-UP>KJBr93OesEN5J@iEWNUqFqy2xn0R0R7`^T$ zz=4zKwJLhE3Reh~m87K-$gl^{%Gb7$8{2RdQW;5Gq~uoTI0gNFHT_{V{u+dyP}$NH zX0VK-A>UDdG6pPPf6_l4$@eF_{_8E805;Q9tCyCMka4(f83V4sHqvT@(<H)PVrL@6 zUaZSv(K%b6r}!|WrimuEZC!qQ6P;y{iOz~4>DLYsn|9GTvEfuFu0$N@MRE~T8V7Pw zbj(B1k0z6(e(g}O(6~Y|3Bq`bCfy~AMCAR|3d3~z1bfiw%*57nI-9~wCUZysb|9at z$s0hQ1gfB}HHJ*kKPG{1>c~{$c$LWRkr80@9acheT!3)j=MP4dn?}X~H$+|?(+h%t z7Zhc~=&XkI)$Rv2w3Oc}eIKh^P~JglLvCb_Ru!{dn;a7!7lFIA^Kl{TTzi+6e4VrN zH?k@BP)>DPZA5WIQD}5>d_oj1lOM+hOG8$L#BRtKnL6vMeZQ6-|B+lj_4U5@ziqr2 zvM=uV){>Mxar+udiuUiWDm#%Z-J4bsQM<J=vb4A;zg$;RcslcJ<_D1_<4cDDTO$>{ zu+Wt_eo*|T^tn6rSEN-(lx$1emKGn8yDc}OD!vL>s5aW_+>$C_*y*q0kQ`IzpC1+- z9-ZR9Bdk1Ze@b0>ZF&Cw=sM}M3MfU`c{uTmZ@uqMuf$Lv;1Dct2yF;CquY5{YODv@ zvxy2s7ktFCXk)NXaN@H1jqF4H#-_w0^+$H;&V?M2LbDeU>RVaG5$PZ6$Rg@;vI+>o zDUf{8zD}2cqzFF7F;H_pH@H9b{ew<`jzJ-qH^+WYPm)OQ>_rue4tYL+K-@e(qJEH@ zo0o%oFk6h)m7g3Z6R&4nulnQ!3MFJaKjH;IQ|WVk$3R8o?v44ukwM#1HdY2z1|3P+ zRk^z=|41a%Bq1YXfM1YS7hV>g8lD;(o*SMQRvTNJSDRN>n_3GcgmuqnD^hm_R|Ka9 zr$hzk2jvCtirSUGE3aZ#%5Leip`Er0`Mee3M^=>hg!_cYd)02N@i`rTxb{eG@tLjA zB^w9c?zHM{sQ3t0@u>Q$xa!=hywa-FYAIbzQWO#U))j8q8n88aU3EZpKx6X0>b*4u zjS>5>l>L`q&~CsZ?S|?s5Og@U7WC+0{M!@iZh&$5P|+Yadt@#!6Z90Q1V;qTW=>{( z%?6kaF&kkv+RW9=&1{C*+h+64)|>g5Z8i%ui!zHhOEOC{%Qf3&_MzD&vm0ign>{f5 z!>rwWn)yugx6S97FEaNuUuEuZ9%-ItUTEH6e$4!&`8o3s%s)22W`4{3OY`r|e>MNz zyxm-H!C6>a*jqSRs4a$DOtfgW_|oD#i(f4Muy|_GVew2T6iS3v!v4bH!imDyg;Rwy zg>!`qh0BHOgd2qc!cbv^Fk09wyej-f_)ugaau6v+ylA3mn&@rOJkcVNr)ZTZT$Ccp z5`84PCi+5jPb?M>6Gw@Y#M$B^agBJFc)z$o+$g>+ejxrs{8-{DnJZZ$@sg~S_(%dJ zp_2C`7bG7`u1H!WMDjw~M><+MQR*h0A)O~(B@L2plg3F;OYd3QTPiJ`Etgs@w_I(R zZCPYlVR_B+Tgx`f=Q0bKrOZlZD|3{MkWG=zlm*JtW#zI%vPRi^vL@MYvUXVqXU0i5 zp6kyI<=i-LE|iPr;<*$qlgr@>xE)+Aw~sr_o#ejeTDeZ{c@Og*c0FF}q3Yq>V_1(# zJ=}XN>9M|tPY?ed;XPt{B=$(_vA4&^J?{2+-qWI|rss&B^LsAsxxD9^o|}3G_6+YC z-E&9J6Foog`K0GFE1A`6Rw}FhR@1H4S%q4~S>;;ktV*q_t?I4zTD@m=-s+mwEvwsB z_pE-ldT8~h)njXswcL7`^(gBJ)>Eu!Si4)#xAw3Ouuiouw%%=h$oiD^dFzj?FI!)? zZn3^&{j2pK)}1y|n;tf{HcA_3n?W|iZN}TU+Dx}uXya+K#U|7y!=~Eipv`+W=WQ<9 zT($Ya=AO+jHox1n+5BZgZEbA(*-o-`vt45AXB%ysZCho#)AoSvVcSOA)3)brKe7GV z_K|J7?O(WRd|@ZH<Lqqg6n4B_AG-l|L+wV{y=k|^Zn>SmU7TH>U8!A_-5$Gl?M~WV zu>08Viro#nAM7655jlpuTqAdp50np+kCso9&z3I$G_{X>vpifLEsvL{$TQ{n@?v?F ze7F3d{FwZ-{G9xv{IdLp{7d;a^6%xp$e-E^?R(hU+V`?|u^(zb+J3720{eIDm)ozl z-(VkNA7LMBpJrcVztjGJeWU$*_UG*{+F!B1VSn5HJNw`4+w40PW(u)_Q#dL#iXn;# ziW!ReiX{p!#X5zbVv8b75vhn%BrEb16^gxzgNmbyCdDPi=Zd?EpA`=kkFl7UIaoSa zJIEcJ95fCt4uc$qJB)Fd;P9ryJO@vQ)eajR0v)0pQXKLeN*yX4>Kyhs9CUd1hD;A_ zolH?DZ}q0ko$0D~->kkIBI6{l2YODMto%Qx^x~c!lwP-gqx1p{`@c|n-TphJm(h0r zru619N-uU?kZFcw^E7~$gbl)|Ss)`va4`g`9`2O}%O3hM-jJ(mu|W(5j~ZNrI`Ft2 zWwh!VgIGBP*H^KT8h27JyDS+l<A;d#VlZCTV9js<2_E|Zyy(SBZh^X6g9kT6#&ht= zi3g}T2VC(2(GX19V|XrdrJ7?zNX~c57GI8$COL+5wGuMbS@?CCp=$A1H7EX9#tm2V z+zMbGjRxU%s*H<_-LB@Q$u!(hJg9Z*v02S20F<W#S{@`C6>DV>i3UQ;Aer&z&At2L zO=6^bUKUrDp&Z0RI8V(1w3181{4GgSqt(>L{P3WaGbt_&u@469rG%S_WF%9OgqO^e z$r&=h2tI339Ev>{R>#wa<e}&rh>GKuxR3IGCwdP|X6F;|#gm7?6X-zE=E^wnFd4T3 zRU}E0ae3+zS+$yD$iJK@1&m2a%B0-H{1l!Wg<CkSYZu5QM@HhJ(0DF*_=}8V%}PXS zl1`er@6`siUM>T)SAGiE%~gp>kJb8(hK+k=sO{KDZlhYmtwtU8QFFs&!_^!XDr1R3 zc<01#s<|K(wCh&TW1x(Kz*-8bXPEl3m|J>cO*8l7o43$*-S>v<HWSrIJ^n-?*2}m8 zHOo5qB{=b7<jQeKpzPrgagyxeL&<dY5Y~JiXg&`#pRW4&pOwn&%p7pI6vR7!nyO04 z@be4U5V*l9VLN^a37H8!Ty`Y5{Sl{1b#{lKU^)mz8Oo^R{dEz1d~`x&QlvB@gDPTi zujVX?A&S`Q48Cw%QB+B^G%;dr|0pG-hjKFb<dVPK^Hil@{J8@#QJMG^6>Tr-;Sy8y z#eh;3N1sC92LKeANdQgs6bD2vHOC;T@axSn{ZbmPOC4jNdO0dzV8LBpjBYSW&E3aU z!VVcXQf7saV87r}@_Emuchm;d_AD8z^Cjx0rXm@)lF=-D)LewDmqdVDpxH7`u>>;& zdi9t$-yFj&lew>y4dKL7P~SEn&Js^pO4Q^Yn(8vL!w`Oa)m%-!IvqU}DNByZIL2?{ zfgQVth2EpHWtO`0yrD%w($vpZcdQbfTQ>OEbd_OjtIRM~GX2=#bDn(1>St?2VRhs+ zbse-_#p|`?9b^NLW4H#D0E^3xy}hDan0U*KY9efSj_B%<Aqmv+c<4P2$;fLmjlsj< zp~GFdpDfwL7*LA~WOP9`)OX6b`RGQt&9t8eehalm5AVA`qGdL{$5jkp+(7V`$Fr(7 zDqZ7z)zeWVEr*M9`=M~gjKrB_pKq{HO{~<Qu|N`<!(pl$ofbSPPt}|*xgZf;5`w|j zWCWeo$nS0}0|46|*}Mhe>sRu`!xh}tc65UZ5UWf$H3kd@)B1zOeOj}+vqk)aY!c4P z5}?&`<G|H3Ld}6Z*pHD1xi4j&p8qxo^<9ID3`FzlH;VG}b9IGE4st^m-Us8+L=Bz7 zl-xZ+l^&H<L8la6;Y=?qq3^4>Swu$VkEmO{loY6$j?~zkxV(7WJ8S^Q{6^}bG(>=H zCJg)@wtQ$ocu52<qUg9dZDvGqtkb<A#j!P+rNvIYBnx_pmvUvY1Z`GAqME~<W^!~C zFmyOmb|&HOejl#*(Id&q%W95IeVjuHhBujw>hqBqJi1y1{8BFTJNn%$XriX#C2Hsh z{EoR@l5s41OV^xeZa$&6ldW0Gb5B#%=mMlS2dyHG09IK?Ej26X<TvNfnI01v6_XbN zF!`)ZWq4j?bTx!MvsFj)jusp)B2!P2k#|7>l1fugpG`me3hF5oWJi0U@2NL;O=KMF zK5oPpvk~T9E-Ge61=`x46so!UkYic(^-i2(4@RCI%}?X#e*9n>#;#eNleb2*D1VLj z#5YGQ>c7@$*L(FBs&4Ln=s30s=tsW~z??fsN%rHs8K)o1ciJ0t3T_GJMEypL&7taW z8P|K<xZd3B=)c0(QD=wMhDLqkCu-Vg@L&+S2Ky1XBBYJtTQWU9p!bSO;-d?qR2;yd zXW=}29?AkHQ2upS{<bTf0M_d_RdAaH*Y}KP0(K%W{+v;V;GS9vgRyexxTqa56`ZHK z!=AQy!g09z*`!>6D%ZmNNX;D}u`;lcK=Qahwbnqs2~vD)3bEkG0QKGmj-RuUsx!Uk zNfRYe*^%3$_}13SRu!m-&f&SFkLJ*JQ8p$!ow6dmBBPvty<t@T8%L$#pO<{|m6F3v zivcy@h$|IOPu$kBp6!Tr1NSLSo==UnBjRv1^x!91N0WZ9g5K;;zLL;#eF7Aji80Qu zh_dQdR;}c#PwqSe;^in1e?g+sujOLZWH=^&dtBghxYn-+1JFqk?j9zSVuT|(MdiBk z{1T^}g4}}a0%?voJ2@vgKY8a`P>N}uh-?>gl1XZAKPFc$H8nFmRbvPPxK~0d6Gz0} zBvJ<9pPW2i9|pXkqPzmgI)c%Mq{uiQuyX-=lk5HcxJt}I`ukv1jlq528)Bd)SwZM` z#=Vx5^ctS7hg@!^XmI4J*&5JkBP9VeMnt^~_c^F|)j2G|RsdpxV=zJIB<H5&r*r^u z%dtMBTGxPTo3U`=j2R0*yg{(s4Ny-}b3jWNDdTpju}xVnvl1J1A9E6-29kq8=h%v= z3q~A(B|ejJ6{<pAHZTe5ipuMDDbbBe3d$>#+z-DJn<nV?APpd18o9JEAq==h<byP+ z1&O(d+og$#=_$z??pMrDs0-tWS7Kh}vC+B2PM$;5z>|W~c$4yYy({+$-H>epg<|ZW zFacvWe;t)0d=t|>o!9}{d@&dU=H4B5>BG{}!lFEYot22Pqs0lCadAozYbH~%-cQ2a zm9gIPj+z^bySi-{By8Ho0(oQMhckF?m+aebzn$=(e>u_!od!Y~SC~fpFr_;J_$~pQ z5#k@!nBE=5Ef~yaiDeEjZ}PW0ksIQ?OkGM&+8Ju;s1Mt`NKG$^XOPJv<6NYnEw128 z!p>nFXrI8^=D>$$#XxpEIMQEc!HMgz1=*?Q&d7}S*W4I2mMIk09%}>}b~-X2f0+tx zR9C&OV&`t<?x>w1I-aij64IR2dNZiq6&uVT+fhwdy}?@zcD?gRS5TnS6(lFRUU~Zt zGr1{hC|3h`TLCB8hxv3jN`Nj2MR4}m5racd&4tPII_`2TR%=j9ImQ`vjzNH&Ll)WH z1-sOJ-hxYArrYwF?q~QWU^~}I*jAW0sIi;kx}m(gkhr;8ETps%TQQKcfeua&b8)4( zppD}ylFQ>uxSJO*-sB{DHR&lT%hQ#VL4UNQD77dlpHIryW+$dYafZ~9BVO36iev>k z4Yb^{Qt=PPtU$mR2R0eDb4;ThHYq5Hha{>jrc!T(T?UPvE{aV}jE@Ckr6eIQp)iF{ z%g+Z+5k$VBQX6S6n$F>DU^SH5`D^+Z#)|^Q)COv%Y%piKs2_4*!Ux;SVKwfrF`e3T zB}LmI|DK<_Jy(@3(I%#*CM6`rI~hcVU7}I?ZzLR5PM3Wn<Gx|NRLdp+v=(;e#=Ssq zceG!T4AWi|=ydT|?;n7x1#H~(s>I+yb|?%3$yB}Zp;JX1*%x5s>9go16*%<LYr~K} zm^|<%=H9K{)p(lC8t#hP_?m4c{I=q-?GXvdY1)*yWGN@UO|Eo75CZrwAumxy!;HX# zX_`s&8xi*rJ0Xz>wbicZy09WXv?wq&avK*{Qjt=w>Vlf#O4VlEB6Sz1D)u;%-Sgin zfpm!(^;yP{)rrqCuuYl~pL5VQi&c4J6i8<_bcG6{JucWTRN$WWHApM_lc|U|A}c=L zY30iJ_^gPMI46!WR?g35dW<VY!0!Qr2I0@XLHmCHeV>RkBiJBjMXR}4vL??ZY77FL zEW*?ZV?Wdp9Ep6@sIwL<AoJ9}jAYe|y3I2E=iGl)bAYxwB;$qvbW+WMS98!-4o5_L z^xhTd)9Gwt2k_Nc@EVNOTgmLdOO<h#u}HZxCg`a$dYhw`0DHE?-v?m2wtUd_7cSVL zd0^ha@H-D<9h<dWWu5FSKw5Ab<0La>96F0Vw<lH<_Fi-RM-26Q$lXJiH3hl(Il0+V zPVp1z5EbWCmzOX`oRaEjZI0$A+JUxSqsHR+QuvpHR#B9R{gyHd=cdNy6{F}ZB)ihV z^uc38k+nV~gkyINM9Agl=W967@v!oIBI7Vee4*yHMWzN8g*k;5)kW`8af{XN7=d~_ zbpd%OOO7wWS#Wn<-EO{Byt^(eNW(pmWpRqn)naTOpn3-o{ur{7NivQdtTFo0kz3ea zmkCI_(CHjW#Xd|_S62pf8Fb{&)O+_fH0<5t3vv~<|B}HtNoD0{7HG!l)5#0+m#DO~ zw4zdJm6(hvh#Y(BCO%DEL?lgon!1SGdXq*mXA+$U`>q<l$-8R9gK?nTh$W(h+?Tn# zc2#{>t=I=~*i~WsL39t`4h`JK%HrzPH$Gg5=^T`Ru3S@_KL-#SE+k}qR!BXk94+Ip z$;)Dm=)ox#du(`n=*mxSeSY%djjykcoyZ&h;@0vZ5fNJ>L!OLqEG{i6D=n7R)N=!; zPwVH>GPRYz|LN83s)E9z+@egbpA0;)+)>)5f4=56U#$%Xj7%8l^I8qJ9)jxkA^z8J zl*xe^#r!x)aCz9y1U|h$mr<x<=Ln8<<(Witov1GmXWX7l;{Y$2m|UR4?blf2<c54= z)+Gno9E%oMDzgeD4={<KS6Fc1rLjlV-vh54W*fx}F^vMCD*YEsfUVBxjoGg^+Dd{p zL#tsg&yg}VBZ+@fbK`N2MQ_AGp@mK3+#(rmL|lhuoWXt^Dijkn6geE`Bv@oGE3g>? zudY3Zy}d81x>tT#aF+a!l^d8~SX(~75;$H%F3~FrZAM~}R>gT#dK_G>0c@*IH0R7$ z8@^U?CwvdBUF++&W^IG-@#75*$9Xo+**e6Hz$OyRZYU{Bj$`|NOyR7>?a7xiY%Cc# z75mGPN3y+~-WGot-Gxi2#4UuXx+=G*5=S)>##x-gWj{8ioCzL~+){I{lc@P}YNdjL zck{D%CK<QsOgw;-j8VtNqyjC{aL|BBn2}j9eJF6uz4aq^sj2A_r{f!Q^5(5em99-) znVzNO$Yt5cUpN=Gb;Ae=6!+1O7ZE#uYW09Rs6Y(?E8`tbS%<l(5a>SJah1mbDoZQl zK1Cm3jQ(z17W7baObWydUGun__0LYQ3}Uz32<<G55;P6Yj-1|=k?J@chGL>He($3v zuqxuBQljJIdE+6Q=f?2QTErZ6Auil>fbVj~t|Rf=9dw8%0`Z~UyANr&9Z(Szk<BMn zCRE0kOEHwXRwxNE!<KQzhYN3j>J*9C8)Y3j&<C=BFFUG?(Fw>GGH&Bs>flCYs!aj; zrNJ5wcs#W`R9}h<^OKS?LCiwm#ex5l%u0`q3x^e1%&C@zZ42<z_^x|r^&k}|BD@-F z3!9EaVLRDrzD~m_CS{5Ya!F}aeRQRkOOd9eB&A{5vKL3i!Y_^x{jgD?)_M`NyQ24^ z&>dk4bWSYyVH{Qxw(&%*v3;EmJp|@{S?_V*Kjj!&D*JJ8Gxj72wQlWCta%X47<W6X zA04u(RdB0)4xc=Em_0tLITEkdo3km0O@5GZ!}>wF!J{zWT09y_I4<w6%LOGG$R1_q zDA9g8NXKA2b7on`Ff@_S8Eod7Ppnyro~6TrrNgQdpysx-b2>KB73FXiH*hq|3)A}L ztd~D-Jd(S2FN@lbS8=K=1}`o=bK+|acLWmw*i`w;824fmm8Y}X3`(=+;7+>`0~cCd zqG}U&?@@9fV+*7L0m}z!15*VX<s2E7MoL+SW#d<8#vL^-Eyg!{GcFChff|lY>qZ`b zE(sg<6!^ua2gi}8+##S=abQ7cz{;AK%+dY<5H~TWBS3=cN87{bE@fOc2a(cYkRz=i zJvefcwGxy#^Bi4)?$`&wKpvd17adFsdkMb~bK-`**qd%C@I@7cp_aosTQFMb3n0}W zRdbNhVq+b3#E$Ts0f##d(olUl0sff@>;x9f^75ZlAYt|wF9foeHp`bb3$d?Ro<JlJ z2)7Hzz*}mUX&#EGGGE5=50;?FkWhh}!1<{_EO>$MVkC`!#y>{y&H`tn$#R3otWWp1 zUU-8qybH|4Mju^&SjfLazx?nIPA|XxzqH7DSc=3)CDLR6w-Xhbbt1}bs7sMxg1}j@ zPtYJ}6nrH3s&}70e4jO~R;_&Nl-7Bzt6Dd<`n7Ipjcd(mt!iy(J=%J;_1o4zTA#OB zwef8O+6J}_Z=2FKuWeP^mbSRIoVKdAhPHEUSKGdA`=jl7yHz{iKBawL`>OUW?Q!in z?N#j!?dRIBwtw6H$5Ylf1W0-Bf21sEwQ23$>ejlTbxo^J>!#MAR&8ruYfbBs*5=mh zt>3k_wh7v7+MJQ{ptg~1Zfy(N*0cq+Y1{JJYTAypHMd=F`>w6EUC?gR-n-qceL?%0 z_MmocdtQ4@`;qqM_UrB6v6NqYkG{F$#lja;UyS_r{<lTnF0$!~OE8&@B`(9zb8Un+ z7B=QKW;O!r7uHX$pIAS(Znti;Zngf?>Kj~{{ciop`l0m$>)&vJcHjCJ>z}QEvi{Nf z2kY;xzq7t)eb@RM>#uRScH8<Z>o2Xpu>KrZZMUp%a*f8Gw)MX><*NVk?f>5=v7iS= z04HD<#~5~Im%r>6^Vw=^*QWvt<3JT$p6@!6CDAg<_q`V{p1-g(6EmL{2+{QqZ(U=~ zlGPu+|L3?dZ?w<~g3OxXPb=6e(jpmwU^R>VpC0zT+kGV)kO*UXH`>`dCJ2E9=BwWj zCK6${FgN4F{NQ16usGqSG{(o=wSv(mKPI<VO%_h5HHLR%{@A1;gvsot{4xJsd3f=H z<%fMU<%#)08DFN~U7nZa_#f}^&*EcYOr|mK%pH$0Kls+|7G*3?x8GO4i_MLB*@65l zf3-aSA9gq6cdcL?;u>d6qbu&7rf|&7RBmQBy_?cDg@L);_-MQGZTt>9>d%e&!BS@| zAB&g08y{_Vxw^kunBHMBe?pkdUw0n=&188pK7W57%KDbcFKZ7|U3I7DhQ9iu+ujwI zDeQlmT7iQ3GnM<_@(lOxwzlauH=5#vf1xq`?)bXht(j@c7wScYcjV>o`mpSdll1}i zm}>=Yc#Q3Da%1Mpc)IKZyW=;yTfo2Zd$(!w&+=%h3sZUE&&}k<^1<AV-;k~`PP`+Z zFY}1FhT-Wc)C%UZ2YDNY=jFR84SZwmEnso7_BZwcL03Gcycyl_&6tkKZ?|cR$Cy7B z4r#z`m?<pFBMZ;U#!TdaJ?oI3h&?R4@jFcT?P(gD-Qk>#@d)7OmB(0afuINbCe(I) zV{T^McIFq~#xaw*v$T!r!+bTK|FoO@!5n6hh%l%amLHZ5%n2|3YXutQSp#?D19y$_ z(RP)k+n>r<hVJn2>jrnO`<pQzrte5^I&(*I#)tVerr8}|w?DBdEb=mx*;(F9<%0jg z%*~jNR^Tkrc8wdOKg0vS3RC!(Cfu1_2$Q8D#lzZyxv})w!{z|i*Wngma%ZN|uI(~S z^MvFt!64JOSN$SwHx@6-XDk<s?`0TMTv)7`TerJ23(v~dowhN(SL6QQ*aw*M+?{`C zn0CzGogZU8BR><FJ4>s}--{Qf`0zdj-yKcw-Ql|Znfx0~w!zqd?@PM#J($IXcPY%i zEZ_h1z^@g1Ol|+4@tg8wGTC=#XOF2am>qfKn907Io>$+Q-Sqy_u7zJb-R}@W`8!UQ zcf@Io%VaV)<Ac6rii>??c4o52<cG!eYB*Dxrf{Y_GXKmj)e9D}^04=RswWl~YkwBr zRBls#Ukzu9_diWjzD)Trr7Jo9cb@Uh&6GaU^ESqDsw+KH_*YF97v3G<uP030xBVTL z$<Fc&d%teK#`3Xm-R_G_`Rw*T!&DZ$J2N-adv}>#O#V%#1nXgU+|F>@jCcpKZ_J&A z@3MF03-+%5t`!Vm@tMZ>tLZTRq8EaGtY0v9QyVgOxLGr^J1@q*V@d<={Y-i7cC%-3 zywbm3mfe^J;$ivj&b!(ametFDK5R`erNd12{AYbi%)83U;>Nr+5`MbsN-G#{3WIoD znEk*1TOcrh-{|8tGo`?++wTaNU3N3<wnuc^Ed;iLN!@ngEAAqko87zJ!8G&IzeKQ5 zu(I1-ik*8yx7`w_>C@eIPM{E6?6zA8c)@K<lV(CzJ*xzy+ioUsFk8}XHy2o$ZSJ;P z2>O^scH4!o_z?+Q%*wmn#jm(a1a)TTyWOP%NAtDac1wZ1xhWn_FxWi1+ucgwYJT#~ zK%Cb7e0;;4r?1`W?L2GkmJN~4qeqVV*Kp^l{{GI!Pod5s-l5(hTfH|7pBcC%Y-)se zXkdW%%=z;?=1iS7X}-tI8Os*TU*xgWJ0#REaEtTU;p2yoG{&*O-+OJSH$rdp4si|( zbPn_NcK$oTQ1A6&%>Twfe8iWHh}$_VWbFp;fVCl;o!5qih4`%tH+tC;80NR$I~2)> zggJMo|95_U!@`0ljTphgukFg)aKFHRbQ}R(I`1u^-XjEW3IYW|f=EG#z)#>K@D+p! zoCVVbYXw^c-muMrZHr(7zB>y>3q}e?3H~J*4*OJrKYq@ygbFpjc?&`jF2opm1ANXz z>{}4$R6zvXL-7^>a}gdNK{#Sq3%@f3^9Az+9)daWH4PnaKI}6EGX%>73t(S_x2487 zLy<!ko3mgnVjhoYB<!YKEkJDEh>xYu^5reqXbk0y)C1uXhO)6Q|5RQUW<7kE;@^l6 zA+LmC@2nIomJp<|0saGwdEX4TwQyzbeu8x<)8DadK`8dN9==1n>mmd$toB~5jen|b s)(&B4mq{38BT$mA^w<7dxZ%e9{-66Cfg0+{%@$)VvB8fK@L&J^FN3;7EdT%j literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.eot b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 zcmd443w)Ht)jvM-T=tf|Uz5#kH`z;W1W0z103j^*Tev7F2#5hiQ9w~aka}5_DkxP1 zRJ3Y?7YePlysh?CD|XvjdsAv#YOS?>W2@EHO9NV8h3u2x_sp}KECIB>@9+Qn{FBV{ zJTr4<=FH5QnRCvZnOu5{#2&j@Vw_3r#2?PKa|-F4dtx{Ptp0P(#$Rn88poKQO<|X@ zOW8U$o^4<&*p=|D!J9EVI}`7V*m|~_En`<8B*M-{$Q6LOSfmND1Z!lia3ffVHQ_mu zwE*t)c_Na~v9UCh+1x2p=FeL7+|;L;bTeUAHg(eEDN-*};9m=WXwJOhO<S5arI2VL z{9Wg-S+>^lgVEPBX5Gh_bo8QSSFY{vM^4hsD-mzHX!X?>-tpg$&tfe27?V1mUAbb} z1<tK+4MW`Pa4jnl;E*j(B0n$uk(F!KZJc~{@t5I$iZM&?>dVewCjIN7C5$=lXROG% zX4%HIa)VTc_%^_YE?u@}#b58a4S8RL@|2s`UUucWZ{P9NJxp5Fi!#@Xx+(mZ+kdt3 zobw#*|6)Z(BxCGw^Gi+ncRvs|a|3xz=tRA9@HDV~1eqD)`^`KTPEg`UdXhq<A4?@H zt_R?$L#2eDG1+i2-_BIvwM}V8*v<M|x)Ol5=3q|wT6^^sSF#if{VRuqK`&g#OivMF zTuw9U6DFO7{4$JD&HfE{F4feK9)zWDazK<BbKeE|T&<?rrFj@iOL6o@IHe1U{3txl zngm=fJ|CWcQ#vIr(x(VcX1brgDX)CKIUFp655?tiA{Yf>18})-@}JTHp30^)`L{?* z;c)alkYAc@67|W!7RDPu6Tsy@xJCK8{2T9-fJw6?@=A(w^}KCVjwlOd=JTO=3Zr+< zIdd?1zo-M^76}Jf!cpLfH`+2q=}d5id5XLcPw#xVocH5RVG7;@@%R>Sxpy8{(H9JH zY1V)?J1-AIeIxKhoG1%;AWq7C50ok3DSe?!Gatbry_zpS*VoS6`$~lK9E?(!mcrm1 z^cLZ1fm<p3RQ^CYW`aW;^)ops%~EhwkAbiO8bCayMIJSjZ{Epi9S70Y2+zY)zU1<4 zl!H&@!zizTIFu{m0grrA6h{tu4TG~OX*P?TlxD-=2K@Ol5J!D1(hwdwTtq&U??4#h za(L*lxitBF5Jz~V0B=Lsuv}URcuJH9)h+k#0v-%*xdGK62Y4>x5Ds`-ethCvMtDTz zMd=G1)gR$jic|1SaTLaL-{ePJOFkUs%j634IMp}dnR5yGMtsXmA$+JDyxRuSq*)bk zt3tSN2(J<@ooh3|!(R%VsE#5%U{m-mB7fcy&h(8kC(#>yA(JCmQ6|O1<=_U=0+$AY zC)@~M`UboR6Xm2?$e8Z$r#u8)TEP0~`viw@@+){#874R?kHRP|IU4&!?+9Cy52v^I zPV4Xd{9yc;)#l?0VS#6g@<rW5y(qtdH2J(3b5d9?JVfcKZn?5Wd4+kO<~yFpIfs7; zZx4Ov@Dc3{d`2P6O=aca2J(l$1M$U$`R8GVyi4G}0C4Bz@UEkH_|1673GY)mz}m^> z`#y))03Laq@^6Z#Z*uvzpl{$<L~n}EyFx#G=luiUX~4qe{2oe|&y#RRo)U%OO?l?$ zTZzUf(in1a628T_AUH~wt9L$~@aM~<H>JzFJgn&xHlNBS|Eb!E@}~Z$^m!a9k34KX zT|VETZ;B_E$Ai8J#t5#kATCAUlqbr&P~-s)k^FfWyz}iK@`B$FI6L0u1uz5fgfqgU zRBmB>F8s_qp1HWm1!aXOEbpf`U?X|>{F`8Md500U3i;Mh9Kvbd(CeuC>077ww4g^h zKgM(A48W`XEDE~N*Th^NqP#S7&^w2Vpq+df2#@A*&4u~I+>t)9&GYcop9OtUo=;2d zGSq?IMBAYZffMC1v^|Z|AWdQ38UdJS4(H(nFI<|%=>0iAn3lvcSjIR(^7r7QuQI0a zm+@Z9QXmf!efG1**%Ryq_G-AQs-mi^*WO#v+tE9_cWLjXz1Q{L-uqzh<GtVMJ=FW> z-Vb`UBlaT|M;ecG9GQJ&>5)s1TzBO5BM%;V{K#`h4juXPkq?e&N9{)|j&>ZKeRS#3 zOOIZ6^!B3<9)0}ib4L#y{qxZe{ss8}C5PC)Atkb2XK%PS)jPMht9Na0x_5hTckhAT zOz+FRJ-xk0*b(QE(2)^GQb*<<={mCZNczb3Bi%<19LXGc`AE-^-lOcO^Jw^J>ge2~ zT}Rg*O&{HUwEO6RqnV>GAMK$M`~TX%q<>-my#5LOBmex)pWgq|V@{jX>a;k`PLtE< zG&ohK;*_0|<6n-C93MK4I*vGc9shKE;CSEhp5tA|KOBE|yyJM=@i)g?jyD~Db^OKg zhNH*vXUCr$uRH$ec+K$#$E%LtJ6>`8&T-iBTicKH)<!M=AO4U)COR2qa!?Q>SNMZS zB8UG!{1{Y=QL&oLMgLzR(}0Y>sN0TqgG|kLqv_VcVSLD)aJ?AC^D!bLa6K5Ut1)YA zghRXq;YBrYhrzOK23vXorq6v~v*CBb?*bYw$l-3J@c<vstBiTmaD9yVwqv?YFcxrP zNk+Qj7a1#A3mJSG+%B+K5e!p=mm^&TrihAlj8&qn&^EYU#=_lT%|<X*9l}%!m`D#} zu}N5--^8?uGHd5ER)=(T&!Q<%M#D#7ol$;c3J&k#U2upS;e~sIv5~tNYue6O^9770 z5^(S*k#{l;_Y_!8e77utLz-6L*t!pFqZJPMv^@c~qZ1DA(JSHJV{A-@vG%o$jfLxI zhXY>Y5H}8Gr;t8{e8!J}L*5e>!hOQnM3g=8eoXDiYZBlmBW?=(Qvo;ib;hP4-|5>J zo6*MD%*UW90?aI=ncV;fJZB$fY|a73<^rd=!0(I%TsLE9TH#hRHV<&~b~82~@n<2= z1-*<dM81nmj4e*VZDVXnI~;I17jR2!;84bS$fIj5W6P0#`A1-l6u9>oTQL{zWh}4H zGj<X3ya;7p+zFRq?2<`X!mMz>X>}SbW{R;(k^VBouiebp<&Q9S1<Jm1BV+5Fa7eoz zX}*Mfu3>P`GIlM(uLaz7TNt~37h`FJ-B1j-jj@}iF}B$Yhy1^cv|oM`3X|20-GXwq z0QapK#%@FUZ9ik|D}cWpad#li_7EK6?wrrq4l5kOc5H@2*p5ENc6Pxb%`OEl1=q{i zU1`Sdjxcu562^8fWbEEDi1(A=o?`5)DC_=i#vVX^4<hctPZ;~!{fu=Ze$QOS9%_Jl zgt3R);Px^0$OVi&ihTBMXY89M#vVgnkG;p(x8VQQJB&S!vc6pmcYv`2)8Kj-`;U!q zFEaL>5ZpSrpE35`g>WA+_QYDo!1%Byk?;4A*Y^%H_McC{^)mJp(mf6Mr$1rr8Klp< z@9$&m+0Bd{OfmMH!q^XxU*>tneq@E)#@LU6-}5Nz`DYpXi4*QA#$MRP*w045^)U8x zl=XAu_Y36n%QPIqUi^r$mjH7JWgdEmv0oiv>}BNj>jt<jjQz$0hxc!-a0vhHd(f)2 zG4?ye|L%UqUg?5Ey5Fy6?A2*-PcZfeg#7_{y*3{XIQ+2~4rRQag8La`e*)~EP|rVa zX6(NZ_g{}O)&rd1K=@zQGWORH+?$NOnP%)Q!2d17*xP`6`#r|qLHOTaW$Yht@4~%z zn6dX?X6%F48T%*Vjw+0O_z`0tA??2sjD75c1D^kl^q(w*LtdXo7(0ftj-$-J8n~wz z%Ua>O;GSSiGr=LO--M;f3$4%-kcdA5=kp1;?w1)iU%<G<3AdZ^qGHCa3fv=%+Zq_R zV=8uRVcdmpS2yGC7a8}o!M%xTdOPF38aTlE7sB;19>_3WyqWQmjf@AcVZ3xc<7I~# zFHgbYU4b-}3LN4>NEZft6=17@TlH$jBZ!NjjQC2%Yu;hJu9NWw<k5)t$aQcZG2Ya} zc=HIj1B@s3F`h(t3t(C!P_J4UA2p5f(N4Ht#>Z@DynQp=tBj8Wjw$e9<5A{>pD{iW zZqogXPX_!HxT$LypN98z;4>ox_a@^r4>R7`&G@Wh#%HG(p9^;e{AczsK5r7^^FxfE z1>DZ=f&=UVl(8@Y2be_)+!n?cUjPUAC8+bcuQI+Aab3F@Uxu=lJ<IrV;CVjMUGNy= zE7mc7;Y!9YdY$o=PcVM*62>pt$oQq38DE=X{7U3=m6P!eKVy6&>UK5q-?WYKFCon} zcwbuv_Xy+HBi;48;XYwJy_)eGknfFvzbOHS_{~WF<pYf0jPEUo+lsWewlRJiIpBAD zC)_^9@0ic{c9eIgm+_rQzYFiX6u3Ud??&GD0QTN%7{3qs-4D12OmMF<{vg7>Rt)zJ z<K53Q{*aaNhZBrHvXSveQSRO}<6lP^`^w;u@4oj2-TsA)f1`%+Z-(GrWc;zm82{Ej z#vh0O@hyyh8|8l+{sSpE_`mlo<NvuDs`nnoG0*U45dX|B#=jqddxY_4O>ijpU?=0x zkwe%IkXL3J<39wBKYX6?A1iQgGX8uw<3E|t_zN{~?=k)}E8{<h`vuDRCE{NEgz-bb z`B%vQ<<*S;`U1v(^E%_doePJ!-)(066_oY+wQzlmzxom5uRX^2ACc$laDPHxm@D|7 zk>7uHGX6%I@xLJ5o5hU3g}A@9GyXR4dV3$^??m7ZGyeD0jQ;~={sZ6d0>}3fa8JQ~ z#Q6Kj>z^jLM;Px_;9g|>2<mne_<V?TAHKu*zmV_84R9I8{~NgdcMs#A0KZQWb`1XG z>lp6?Oy32JW8UD|ZH#LugXW9=mzl&9Ov2uUBsVZgS;-{zFeKKwOfn<ff^TaNlWe_A zauhSki7?ljO!Bld$qRTN9QZ3KFoH?NZA>bOFe$i&Nu~HMe}YLB^Wk1(Qs^2cg^_pF zV@!&4GARo9*fb`^0bBDClWMmysSaUvuQREB7n2(BZbV*<?=fiv+{n#LYD&TNF{$|} zCMDJ}DT(+Nq#YGv(rBa~eV9pOtZ>M)y$0@8CXG!nX&m5FyO}f|^_bYrq)EtQ3jEW$ z;E;a$iwt`}|2xOlf`@fNIFLzjYz@1@vMcQB;TbKpR_b1>hK{W@uw#sVI6JqW86H;C ztQ;P%k-Nf8ey^cATop^SG>2V0mP~Z;=5SL5H#}UQ-NIABSS;9=rYBEjx70^!0%|%? z6H%vBBRb1si5UK{xwWyrI#6mdl~NhlB{DFSQ4f#HYnQ4Tr9_9++!S!BCwdbtt-PhV z2|9^MD=%7f(aK494ZC<j_C#;2LQYwoHEn9>cz4t6dY`X;_62ywrIPovV+sT0pH?<o zI8)k4G6D{1;9z87)Z58I<T$EY73X+FVv^I{5(z1Ow-3$WSJK+2+U?q>+{mwxjh%^> zh_?T`uiv2^KX}<?2f4~CxO(uiYxshw1ORT-fwgp^Gse%pW)R}CgWB;sUjMGPKT5s9 z`qM_z%>>z4HVY!Y%V1QDcBvi>!sD@MEbj99(bg@lcBxTD9~gYzfIm>7jFFl;<kptf z4&Lh0J16O)?m<JPLs9Lc2b)uCMsPl2O{)1p?W1VOV^cFW4_6IV)3KDzv-5{98%9^P zHhMYtHnvucHoW}9mUGifCmc&nSh{qAnwhXPB(q4xq0RLpMvfd&zxhx_B+G0bk5VJK z%`THg_1N~U+x@6IG8lEcqrs8tqr2<x>^hEgOD8Clhu+6jw>0z&OhJ=2DoJ42R3QaA zWOOLCseE6;o!xG!?ra~f^>o~D+1yBE?qxT0^k{Eo?@YU;MW)Dk7u-Ja^-t=jry`Nm z^!iU;|I=I9eR|&CLf`eUDtM5Q2iZ}-MO8dOpsgMv)7Ge`r77T1(I!FduCuw%>+xyh zv~lQApLDjitE7#8{D!C9^9KL8O}^S6)E?BVMw_qP`rdoia-YG@KjO<veNppt{?po8 zZPawq=?J>f%Qh4Bnt8Mcoi9h#JRYY<L%EzcX^RdX)E4ok>3kEvn*UVbReO50BrmV+ z;MZw4c4)uX7XS38vL%mZ(`R5ww4GL|?R_+gqd5vmpyB<Y)}{)XISrwhvn8amYZvx? zW8t-~#;NN&Z{n+O>Rdmy(bdo1(0=sB8@yxdn)~lxbJjigu9=)pPhNBHJ@OCr@Hfy7 zMKpelG=3bck_~6$*c^5qw$ra?cd)OqZ$smlOvLJWm7$z_{bM*t_;dW+m52!n&yhSI z0)LYKbKpO(yrBb!r(;1ei=F17uvjq5XquDp?1L{4s1~Hu@I46id3j>UeJTcx0fQ!$ z&o9RBJJn}4D52n3P@|_Z2y%SzQ!WJ22E$LC;WNiX*{T?@;Pj!}DC|#~nZ>-HpIS<2 za>P22_kUiz%sLYqOLTT7B=H>lmeZ$;kr+*xoe54)>BRz1U!muO7@@$$G=552gn*!9 zJ(lYeq-%(OX#D?e|IqRz)>flsYTDXrc#58b-%`5Jmp#FEV%&+o&w?z>k%vUF^x&@! zd}aqf<-yN_(1OoX0~BNi5+XV}sW1Mo_rky5sw&#MPqeg*Iv+ow^-qi|g!>=1)d@|( zIJ=tJ4Yw%YfhiFbenxIIR1N1mmKeveFq!eF<c3?yvJG3x=9X>I?k+2%4<3`YlV3hM zS45R<;g^uVtW5iZbSGet@1^}8sBUEktA@_c>)?i}IE-<ScP!CrJ~4m4*J$RdTjZ?0 zroE=;#AEo%mBwSa++RbeDCcysdJ4)#=Uw#qq8jVqB&@?2SM~a%DmIp59i|aC2Gcek zP5yF@wV&s>EQTR@N-j%b9$Syc1{S3U?8e~d3B1?L<mq@Xspq7Wl*!);7_uiXnRyz9 ztgucF7Ql|kP^$g+@XuxlbqSb!5v)a}|7}clJ|u0R;a1C%#05zPB?O)|nQ*tZ_yc}} z(T>ij0H27USiF&gR}A>wG-vBGIPuh*4ry;{Khxekv}w<d`im<=j=JTm&bam9%Li{g zW7YCHN2v0Wx*dD6>CTm%_><E26Xd2tyzKt(@d;}}_WHVuLo;5vdL_V-YUS0h%m`gv zS8ork(VmlLWW_u#(UYbGFu8))E#wziRM1SGQkwixU<aN-tT040L;Zw(Vf;yc=C)_- zZt>vhFZSJ)Pw2iv6Q4YVoQ`J2w?yCkiavVTWeVa)j|q=T9@J0pTtcQX!VHnIM6Al- z^*7Og!1y$xN4)5fYK&2X5x-Om4A;1k20|=O+$wl^1T}IRHkcq<^P$a{C0fAii(ypB z{ef1n(U1a&g|>5}zY?N{!tOqN_uYr3yPejjJ>KeR7IW!#ztw(g!*Hj~SpH|bkC%<C z{ffn5FS;&nG&!cZOYQ$@b2^Kjv6s|Lw3vf;`fauofp0fEY}Okh0yyXZu;ix_?&fR$ zZ1qcJEzzch)}SSNyLolMv8AcZWqZo$TV*b~qQzpf7Wo#JG>t5kd^Q2w*f{D8tJPwQ z++kT&2yEHVY_jXXBg!P7SUbSC;y1@rj$sqoMWF2=y$%ua1S%Nn_dvGwR*;O^!Fd?1 z8#WkKL1{>+GcdW?sX2^RC#k8D;~{~1M4#fpPxGDbOWPf?oRS^(Y!}arFj}-9Ta5B$ zZhP0#34P$Fx`;w}a*AU%t?#oPQ+U$umO}+(WIxS!wnBcQuM;%yiYhbKn<dG77ZB;| zoOkv5dGb>NwXa7LiRjmf+(2(ZG}wiz%sgWJi>jgGIsPnZ=KfX?8mJ2^L!4-hBx#UR zZa((80+3k2t!n9h@La(dm&Qrs_<wbnY_iRi?aX#stu|AKNwP@43M~wMBnHzTEs_+{ zLI6$^qsx1^!ue}jOd3DKEE%Qo*&mp=WS(IuHAxGC!54o_ZK19F9?AS9>teRTeB}Y= zShqm6zJdPGS+juA6^_Mu3_1sz1Hvx#*|M6pnqz`jk<&F@Wt;g%i&gunm7lM5)wE@q zvbn6Q=6IU;C_@UMWs|fm<yJn*dd#h0rRUv3sUhTSF*dy{#2R#pB0|ttC`isU*)V4# z581i1f`?j|Q^ITt1pwrK854;<BlL();N3fpX|EpJvEvx8ImWLzq<u|Ws(tOyA-;@1 z#FxoE+5im^Eo3!70am1t&MO2xbV&4L6Zoasm>ylAcBqr(MowarQT7@9BsXzyH534G z1e0`Rlnqb_RAIW{M7dQoxd<?tIRNMnKvS`xn0sx{*u1=$yR9Et-O|U6*_6%Ay$IHN z5$@$~TQ=1g<a<mJFQ11H2SWA&!~qaK&l@rEJwd5V;aJ5yHZ7xAolZ!=9vf#A(2wWz zmJY@1Df8Ge)XNzgK99fG!E$m0`q_w49EDzkMRIdt{_Q!T+XMclaWwk4-$;B6k70TX z=ad;fD4$eagTzUT6ie&{IiRD_wZFb)^!=l^@Rw`awC}qrwUoQXt)(hmt~$;@nUIk< ztJ^DdPr3$*hXy(AEp2UE+9X$Pxt8*Hc&5BI&ND)^O6fWoK`X^9B6tAsZ8^NgKt>g$ z;&VZRA?1jrgF9nN0lg?)7VU>c#YI}iVKVtMV&I^SUL2sA9Xn2<8mY@_)qZF;^OV!$ z<wQ4jt=la%6;Rs2lSt<jxME&J<LXPKt_dMdlb;^fr3DyT_&A`=Q;y$!CaSx<S~nrc zyWDoGm5(!<wTzR0`WdKVZKTN^G;R|kKMduT9G0<og#%$)<8xAFt4E)W10KKJ&)d1o z4`<sC<Hg(0<0+{t7CeTDs^kMpGAO5lNy`T%Qc5n8c(3NfEAx<6L7m9|(lJ)5DXFR| z$-X+app6`?l*NGv^(QU55Mx_g&^D(T_DXjs+v9LKouN>;QVM<MpqCz<;np%{lP4;r zqaL?M%lz`QMm;B9NYEH8+^NG*|9EU1k5yOMCGc#`O|;%)uC9Q@pbV%Yo0}A@{b21t z;99EA<*K}O*U$6J*M`H>jZTMUtC^eDXuo)DkX75sJ*#d6g{w?U1!Fbwid(nlSiF_z zStRqVrV`8MJBg{|ZM^Kzrps2`fI(Eq&qUZ%VCjWLQn)GthGkFz0LcT(tUy)_i~PWb ze1obC@Hu0-n}r4LO@8%lp3+uoAMDWnx#|WFhG&pQo@eXSCzjp(&Xl4$kfY60LiIx^ zs+SA=sm(K<-^V>WxOdf!NXC0qN&86q?xh#r;L)>)B|KXvOuO+4*98HO?4jfcxpk`^ zU^8+npM|P<VnmAAkvxTrO1i6@6q8>Wn*7Nj9O_U%@pt)^gcu2m|17^}h}J6KWCJ>t zv@Qsc2z0711@V0%PDVqW?i)a)=GC>nC+Kx~*FeS}p5iNes=&dpY_lv9^<|K`GOJMG zE5^7&yqgjFK*qz6I-su3QFo4`PbRSbk|gNIa3+>jPUVH}5I6C)+!U&5lUe4HyYIe4 z>&a$lqL(n;XP)9F?USc6ZA6!;oE+i8ksYGTfe8;xbPFg9e&VVdrRpkO9Zch#cxJH7 z%@Bt~=_%2;shO9|R5K-|zrSznwM%ZBp3!<;&S0$4H~PJ&S3PrGtf}StbLZKDF_le= z9k)|^Do10}k~3$n&#EP*_H_-3h8^ZuQ2JXaU@zY|dW@$oQAY%Z@s0V8+F~YQ=#aqp z=je#~nV5}oI1J`wLIQ^&`Mj01oDZ;O`V>BvWCRJd%56g!((T@-{aY6fa;a0Vs+v@O z0IK2dXum&DKB?-ese^F~xB8#<w%^>t6TFirdTy3(-MedKc;2cI&D}ztv4^I%ThCj* ziyQ90UpuyI`FYm%sUlWqP(!Qcg-7n%dk-&uY15{cw0HD+g<v$^10GJyTUf4h{AP0) z3yojKTJ6!ks~r>buz}CQP*u8*(+KCYFiz80m1pT=kmx0(q(xrCPMsUH1k{mefDSp) zD5G^q?m1N%Jbl&_iz65-uBs{~7YjNpQ%+H^=H7i%nHnwimHSGDPZ(Z;cWG1wcZw|v z%*juq&!(bo!`O7T>Wkon<v)k1*pq?0Erd6LZ$TU+JP@MWDIuEncfM$i_*viBX0w*Y z;%(j;^XAR)w#8#Xn{6BahW1+<$TV)OG&V-QbnC5OiZtR=ME>^QZ-rLvkd_^z#)5Hg zxufObryg!`lzZc#{xRRv6592P5fce0Hl-xEm^*nBcP<W=z#E7FWHE!q2ZVg0dD>$v z0`KR64y6=xK{a*<n#EZ4RVO`gVK@#+g?{PH@xgQ9klm8iu4-4<*PNtq`sHc-$Z3dP zBzBO40V|&UESpx+2uQ;t-q~~(7-U6|%n+9D<NSIq(r|=l(^6U!;iP9qDhVJmqhNAW z1t&d({_^B{#G&cZ>oNxW9jv+9)$I9SxN-Oig_c%UK7hZDj_WEb$BDlO#*M?@b>eU7 zxN!%UE+w#W<J9!A8`SInM~?bMU(@eW-^I6)_Jsy?6giFv5=4F(0$ap0m>g$bqFfc# zeDOpwnoY)%(93rx(=q9nQKg6?XKJZrRP#oo(u>h_l6NOMld)_IF<GDj)_<3ARjw>( zs6M+iRmTC+ALc}C7V>JEuRjk9o)*YO8Y}oKQNl2t?D;qFLv4U`StSyoFzFYuq>i@C zEa1!N?B0BK0gjTwsL04McVmu=$6B!!-4bi<kVsKOAEZ$`@dHtYfDz(LQ$C&1fHeo= z8$|E8UnSA4iF7+LWSJA?3jBtPYW&*!o-4=qt(bL3S+U>1u_j7ZpCQm-l2u7AlYMmx zH!4a*@eEhENs{b-gUMy{c*AjMjcwAWGv@lW4<b{~?fYtJQIVy1qx{wK787qUO0nbb zD^|PIWh+s9_{etSW93O9O4X=oeOILxteQQsU1_wNN)1KcQcG-A%u-`2sxm~@R+$@B zTeTWoA2U^(P2Ql%8V$!w{M;a$*Usp>YQtoQvvf*jQ2wL8+EGF4rQjAc;uiEzG%4uf z9<euxePP}NB?M^!gc=Nr3h?DR5n{bowgr6Qcs%SW8BwiG)uu*<>wX{X3(U5*s$>6M z)n+q=_&#l6nEa|4ez8YOb9q{<zcS_}FKdUARG&<Q-Y1+VMcM)sDr=o%qoqbH&pGLn z_-`TUam+q_aNSTjq?NQTh(fWf^DaF$&*gK#$4K2!Q0y+NNzJ*OV}9c4wwms&E_<f5 zE}I9b5dsmqd(P!jh?Et(p}gp4my5BIHl~Hl9ELs@Mz}D!fWZZrghCz37$P~Mu1d~? zwE}a>(?8h1|AYN<53x+g()8?U_N+)sEV;tdoV{pJ^DTD)ZvO|;^t&(V6L2z~TSiWu zI&#bLG#NGMHVY^mJXXH_jBGA?Np1q;)EYzS3U=1VKn3aXyU}xGihu`L8($R|e#HpJ zzo`QozgXO&25>bM*l>oHk|GV&2I+U-2>)u7C$^yP7gAuth~}8}eO^2>X_8+G@2GX0 zUG8;wZgm*=I4#ww{Ufg2!~-Uu*`{`!$+eE)in1}WPMJ%i|32CjmFLR8);bg^+jrF* zW0A!Zuas6whwVl!G+Vp(ysAHq9%glv8)6>Sr8w=pzPe1s`fRb9oO^yGOQW^-OZ=5? zNNaJk+iSAxa}{PtjC&tu_+{8J_cw=JiFhMqFC!}FHB@j}@Q$b&*h-^U)Y&U$fDWad zC!K&D&RZgww6M(~`@DA92;#vDM1_`->Ss*g8*57^PdIP-=;>u#;wD4g#4|T7ZytTY zx(Q8lO+5Ri<k%K578z71a3aaZW>s0v-@GZXC@|&A*DPrZ51ZeSyziwc>%X>dNyCAL zOSDTJAwK7d2@UOGmtsjCPM9{#I9Gbb7#z25{*;Tyl-Zho(Oh~-u(5CLQl;2ot%#Nl z_cf{VEA=LuSylKv$-{%A=U+QBv0&8bP;vDOcU|zc3n!Nu{9=5j6^6DL&6tm-J4|~) z9#1w(@m3N|G3n9Xf)O<|NO+P)+F(TgqN3E#F8`eIrDZn0=@MQ%cDBb8e*D_eBUXH+ zOtn|s5j9y2W~uaQm*j{3fV=j|wxar?@^xjmPHKMYy0eTPkG*<=QA$Wf)g`tfRlZ0v ztEyRwH(8<%&+zbQ+pg>z^Ucf8Jj>x$N*h{buawh;61^S+&ZX>H^j?#nw!}!~35^Z# zqU|=INy-tBD+E^RCJdtvC_M2+Bx*2%C6nTfGS!1b*MJvhKZZPkBfkjIFf@kLBCdo) zszai4sxmBgklbZ>Iqddc=N%2_4$qxi==t>5E!Ll+-y(NJc+^l)<g=UV6t5zw@$!;# z*=gejtH)R_xz2Bz9Wrx8RV_99BC1@~sl7QKJt@1+SzYWga7mGi?g?-7dMd)fI(s@A zd?<*&sKWAJeN5>uMgMZH+KM<|+cUS^t~AUy&z{UpW?AA~QO;;xntfuA^Rj7SU%j)& zVs~)K>u%=e(ooP|$In{9cdb}2l?KYZinZ8o+i;N-baM#CG$-JMDcX1$y9-L(TsuaT zfPY9MCb3xN8WGxNDB@4sjvZ10JTUS1Snvy5l9QPbZJ1#AG@_xCVXxndg&0Cz99x`Z zKvV%^1YbB2L)tU+ww(e6EZYzc6gI5g;!?*}TsL=hotb0Mow8kxW*HVdXfdVep4yL` zdfTcM*7nwv5)3M-)^@ASp~`(sR<R{ABvheL^?J0q1YLNjpvh-V;WmRLDe4)myA!Q1 zJT&dpP3~Ox?OPs`jpZiejA>`IsMgXV>xPx0&5!lR8(L&vn@?_Oi2EXy)sj?Q8S$Mm zP{=PsbQ)rJtxy*+R9EqNek1fupF(7d1z|uHBZdEQMm`l!QnDTsJ_DX2E=_R?o*D5) z4}Rh2eEvVeTQ^UXfsDXgAf@6dtaXG>!t?(&-a~B^KF@z*dl$BLVOt|yVElz!`rm5n z&%<$O{7{?+>7|f%3ctTlD}Sc0Zs_hY;YO-&eOIT+Kh%FJdM|_@8b7qIL;aj#^MhF1 z(>x4_KPKYTl+AOj0Q$t3La4&;o`HP%m8bgb`*0vs83ZT@J#{j%7e8dKm;){k%rMw* zG9eKbw_mh1PHLUB$7VNcJ=oL;nV~#W;r|rv;ISD5+Q-FH5g~=&gD`RrnNm>lGJ1GE zw`K+PW!P*uxsEyAzhLvBOEUkj>)1sV6q-RhP*nGS(JD%Z$|wijTm)a5S+oj03MzBz zPjp$XjyM!3`cFtv`8wrA`EpL(8Soof9J(X7wr2l^Y-+>){TrmrhW&h}yVPonlai>; zrF!_zz4@5^8y@95z(7+GLY@+~o<>}!RDp|<u!}<SNlO#Nsw784LY{@BBIH{X919RJ z4X6gOSC(Gey>@N4vi4Y-r@AF@6Q7ET8d9j~&O$3l#Yuo`voKB12v8pK*p3sJO+k{- zak5sNppfOFju-S9tC#^&UI}&^S-3TB^fmi<0$e%==MK3AqBrn!K@ZCzuah-}pRZc{ z?&7p`mEU5_{>6x=RAFr4-F+FYOMN%GSL@mvX-UT3jRI;_TJH7}l*La_ztFn+GQ3;r zNk;eb?nh&>e?Z$I<R!r~8=><$LDON!e1tJ26yLILq`~hFYrCA|rj2uGJHxzz@8b<} z&bETBnbLPG9E*iz!<03Ld4q;C140%fzRO5j*Ql#XY*C-ELCtp24zs*#$X0ZhlF~Qj zq$4Nq9U@=qSTzHghxD(IcI0@hO0e}l7_PKLX|J5jQe+67(8W~90a!?QdAYyLs6f^$ zgAUsZ6%aIOhqZ;;;WG@EpL1!Mxhc_XD!cTY%MEAnbR^8{!>s|QGte5Y=ivx6=T9Ei zP_M&x-e`XKwm+O(fpg~P{^7QV&DZPW)$j@GX#kClVjXN6u+n=I$K0{Y-O4?f;0vgV zY+%5cgK;dNK1}{#_x-Zyaw9sN`r9jST(^5&m&8IY?IBml#h0G3e?uSWfByzKHLe8) z9oCU{cfd~u97`w2ATe{wQPagk*)FX|S+YdySpplm-DSKB*|c>@nSp$=zj{v3WyAgw zqtk_K3<lj0Wa)(KY{<nay@Z_%WF?g?;h`mE$OR&`pc&dDfXrXd7KzbYP_>c5J|0pC zSpww86>3JZSitYm_b*{%7cv?=elhCFy1v6m)^<eVP@H+ybiRtL-{uL<YO@&D=4<CJ z3pzc%_qDVb{oUHZD>n?211803vG_;TRU3WPV`g7=>ywvsW6B76c-kXXYuS7~J+@Lc zSf%7^`HIJ4D|VX9{B<pj`Jyg!(^l<3ph&XWt1jx=+%|H4*W7vIN5}nQf&oY(U-#?L z*TaS7;E9t(u3Kq~_T-MGnGE$8>lBG~IV;M->JId%#U?}jR@kQ&o5A3HyYDx}6N<Gn zi;FMCn;WHD@Vc~ETB`jhUq!tuEz&?&YUoOfY~qKJwwOOI5)^BnA}M7;{mC&-F+|ay z6X6p!17JkLWGEm!w6Kym8U_vLS6SKy3X_0JORnfN5>c^pMjj0Jeun)M=&7-NLZ9@2 z)j60}@#z8oft^qhO`qgPG;Gf4Q@Zbq!Fx_DP1GkX<}_%EF`!5fg*xCsir}$yMH#85 zT3Y4bdV)bucC=X;w24>D>XjaA@K`En^++$6E!jmvauA$rc9F%b=P&f^I7M+{{--HM z0JXFl21+}*Oz8zr@T8JQp9Td0TZ7rr0+&rWePPKdaG}l-^)$@O*ON;2pkAjf4ZSg# zy{PLo>h<boIyC_;r{F)t7+rbn<v=(bP)7u$W!VawH>hTUUK_q5L{o!vKb^7AIkbXB zm3BG{rbFE>fKfZsL4iKVYubQMO_AvYWH<3F_@;7*b}<uSJUUJ;g{%z*;ZMkCFs%V; z(RP7>ss*4!r5a-5Mr{qoVbpXW1cja+YCd!nQ3xt*CEBq_FNhDc93rhj=>>F59=AN5 zoRmKmL))oDox0VF;gltwNSdcF9cb*OX3{Gx?X{Q-krC~b9}_3yG8Bn{`W6m}6YD#q zAk<adqiDb>Ezk)zB|ZA2Ao`dW^gC77j#kXk7>zOYg~2Y0NyG9@9L)X=yRL!=`tj7; z^S=K3l)dWTz%eni<kzjob*^75mCDZS`;y1w*-JeU1eN~{AA3E@Z?o@b-xr^H5W)#Y z&vOy-yfBxiu6iplL<bot^N<x~<B>ebMP!Z)q@7d(l_cR;2OvPv7I~Va{X>R@4XXh- zOMOMef=}m)U?`>^E`qUO(+Ng<N+uTU2jzm?spixQ!b6S0Q$rXfDFv{6Go6@**AHQx z3dbb+NXILW&B-_voCP{%sXBR_R7&C4uNQl#iQ$~g1)$Wdu5t)v8CV~(8!(EezZq6^ zq?5y<SjZbH*Lt3O(&Jg=DGky`uoRyshwz(*v<QFjv%qs1@I$9<n}D$MB5c8igRK;} zVm=^t9QJa9#+9n#UW|U%R{jOg#W1VBgm9E9-F-talB>$xKwZ1|FQ|>X41&zvAf`(9 zj3GGCzGHqa8_lMGV+Q3A(d5seacFHJ92meB0vj+?SfQ~dL#3UE!1{}wjz|HPWCEHI zW{zYTeA(UwAEq6F%|@%!oD5ebM$D`kG45gkQ6COfjjk-==^@y6=Tp0-#~0px=I@H# z7Z|LQii;EBSfjse{lo}m?iuTG`$i6*F?L9m*kGMV_JUqsuT##HNJkrNL~cklwZK&3 zgesq4oycISoHuCg>Jo;0K(3&I(n-j7+uaf)NPK7+@p8+z!=r!xa45cmV`Mna1hT=i zAkgv-=xDHofR+dHn7FZvghtoxVqmi^U=Tk5i*(?UbiEGt9|mBN4tXfwT0<jzO=!<* zF`QQK2@MV4SH^;OMBm*b;`h88y@L`A36S&|;uNU|vf~YyC{B|+mmkfCgZ)Kw*BG>b zIQSzTbod84Y<){2C!IJja=k65vqPM|!xFS?-HOK!3%&6=!T(Z$<>g6+rTpioPBf57 z$!8fVo=}&Z?KB-UB4$>vfxffiJ*^StPHhnl@7Fw@3-N|6BAyp|HhmV#(r=Ll2Y3af zNJ44J*!nZfs0Z5o%Qy|_7UzOtMt~9CA*sTy5=4c0Q9mP-JJ+p-7G&*PyD$6sj<fqp zqz`X-6k@a*f~nJAaVF-kWb}k7p^cZnB;B;<=B(qK1v`HEtaNnoj=o(FVUzL&?Jwdm zOa&j!%jpZ<4BNCM_^6pI1P`dUI*hdsbDz+wk<B(H8xlv2WbkZY;}h8wkH%s%$qXU8 z9%dA`(SFFxSWNq)lu3+-bxLxk_F80hq!V%52uiv&7Ml^f1OQ}OhPf`OW^&~buSMre zNSXk*K%)g#S)!waM5tz>+4b>6a~%2eXf~A?KRzL4v_GQ!SRxsdZi`B(7Jx*fGf@DK z&P<|o9z*F!kX>I*<s~t<&Qwz@3{Spd1FV<6@aL+D$=)y%Ini0I*F;vLBFIX*t-7@Z zRgFr?&%lLnrLjb1K8Z5Z`Lo{n#svLQwFVf#T-%~hswM1I)}y89gU31(IEBPx)P6Ig zQU-DBs69!?Gcy|1UPD{s$SL|FhPtCvYS%P)&J3Lu$jNd^Ot5yGA_<7SU$Rq>;y78= z>JB#p1zld#NFeK3{?&UgU*1uzsxF7qYP34!>yr;jKktE5CNZ3N_W+965o=}3S?jx3 zv`#Wqn;l-4If#|AeD6<h<~xZK0aPIm5Fj3iFu_DI!1IHY#PB1{E&4srchU5Mo`=%y zLyPvrb`+MghTYCPF>_oY2Y||U?Fss}Sa>HvkP$9_KPcb_jB*Jc;M0XIE+qhbP$U2d z&;h?{>;H=Sp?W2>Uc{rF29ML>EiCy?fyim_mQtrgMA~^uv<W}-W6maxh*ylq0b(5( zAp-=27E@ufp>?&@WN@gUOPn(379I}U4Vg~Qo)jwJb7e_Pg^`Gmp+s5vF{tNzJVhBQ z$VB8M@`XJsXC!-){6wetDsTY94
G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW zU@CY~qxP|&bnWBDi{LM9<Q9DDQQV>r0!uDR`<VX?DK16yz1mCS#C7w%NOCFS@4GJ_ z!<#8adubr1aBU+Q1)4)xal)ceKP^Mta3QZHdlGR90FUa?8Fgtm9g;aTz#d88abx?$ z>&3$@xh)p^>voF;SAaZi_ozepkmLV+&hGKrp0jy9{6cAs)nGCitl6Cw2c%Z0GVz1C zH-$3>en`tRh)Z(8))4y=esC5oyjkopd;K_uLM(K16Uoowyo4@9gTv5u=A_uBd0McB zG~8g=+O1_GWtp;w*7oD;g7xT0>D9KH`rx%cs^JH~P_@+@N5^&vZtAIXZ@TH+Rb$iX zv8(8dKV^46(Z&yFGFn4hNolFPVozn;+&27G?m@2LsJe7YgGEHj?!M`nn`S-w=q$Y4 zB>(63Fnnw_J_&IJT0ztZtSecc!QccI&<3XK0KsV4VV(j@25^A-xlh_$hgq6}Ke~GZ zhiQV3X|Mlv6UKb8uXL$*D>r^GD8;;u+Pi;zrDxZzjvWE#@cNGO`q~o7B+DH$I?5#T zf_t7@)B41BzjIgI68Bcci{s-$P8pU>=kLG8SB$x;c&X=_mE3UN@*eF+YgP|eXQVn) z)pd&9U^7<FY8mZOCRv)3SN`T}8zOFpY>r1QaaX{+Wb-<z9`TA8H_)3oU?s}voE~+D zzIwq<+$$#Cct9vPRm|Xlc!ffHNrO9U{cPl%uC6&FCn|i=wyld=b>9S8_jQZC19~W) z*_+RuH*MPD=B_m7we#2A@YwQv$kH2gA%qk7H)?k!jWbzcHWK497Ke<$ggzW+IYI2A zFQ_A$Ae4bxFvl4XPu2-7cn1vW-EWQ6?|>Qm*6uI!JNaRLXZFc5@3r48t0~)bwpU*5 z-KNE}N45AiuXh{&18l_quuV$6w|?c-PtzqcPhY)q{d+Hc_@OkartG`dddteZXK&Je zGpYJ-+PmEUR`sOnx42*X$6KT~@9ze#J>YvvaN24jI}4QG3M;w<>~!2i@r)9lI!6N1 z0GN((xJjHUB^|#9vJgy=07qv}Kw>zE+6qQns-L}JIqLFtY3pDu_$~YrZOO$WEpF>3 zXTu#w7J9w+@)x-6oW(5`w;GI8gk@*+!5ew8iD$g=DR*n@|2*R`zxe7azdr7~Z;$%< zSH@*lQ9U(Hx^%Fb|1?Smv({(NaZW+DGsnNWwX(DFUG8)(b6Rn>MzUxlZhNbVe>`mS zl&aJjk3F~9{lT-}y>e~pI}kOf@0^%Vdj&m(iK4LTf6kmF!_0HQ$`f-eBnmdTsf$_3 zR`hz2EjKIKWL6z@jj1}us>ZmY)iQInPifzSiOFN92j9$pX*CuV8SPrD#b%Qa97~TI zS6)?BPUgFnkqG8{{HUwd)%ZsvurI~=Jr8YSkhUA!RANJ;o|D->9S9QB5DxT<?|_OS zuXZ)0I`?#|uC&pr$PR<{cP*P#ZCz%&<S-xX!(k{3z75ikxU4C5St?4~ozlJCof)+& zk?Gu%o#wH38MtiYeOmTME_;_*D(X9EblR-T%sh#cRsj=E1*dK5*Sb4Xw35*sNodQH zZK27co2;Pc;NPgQKv=irjt+T4yDcodMfia7CO01=E)U;2B#zd<yk@iD27&N^;0LKM zjRSo>ybH&PGFtc0Z>dLwr|Ah}aX`XwTtE&UssYSEILtNijh)8)WWjMm$uT;+p1|=L z><4lEg%APBLn+FRr&2tGd)7icqrVX<g?NZ|E43ax`@SVWfM^I11HrS7Gs;@Uvy1j* zy7Xr!)7MvwXSD}XOe<_daap3VQNbFT6Mt!@A##BiJAsXccuQ-A(o8Kw+^~BfGK{4F zL)eZLZXhX{uE9ik09v}QeU`tXxp`(o53O81$5aE(^3i^F=#sWYiO!}8iP5EFav*df zI)B`cK>FE;+3j`3p~mvsiDMU>yK$19$B@8$Dy4GClfzo4)s_o2NuM3t-WhCrXE>LQ z_CQtR*!a0mh<GfBI6f(F$OBZgk8A8$Ghxxjxo0<rMdA}eba1pA#ue?qU^*n$6buPQ zltIND7K<liEiqaI)mFM5p@U=5RE(@wyWpcKGhfh-jU4YPRb-W0B&%c`;j1mKD0<+@ z+k1KE_deqH%Z=J2+8@4Y`u0S-2}X-taViekE}4>nw#I2S=WxT_H@^Saif`)uhLNJC zq4{bSCwYBd!4>6KGH5y~WZc@7_X~RqtaSN(`jfT!KhgGR)3iN50ecR$!|?Vq8|xa+ zY#*+B=>j4;wypc<a-u<>lu7?wd+y06`GlVf2vBXzuPA;JgpfkIa1gXG88sZ*aS`(w z_9`LL4@aT0p!4H7sWP`mwUZRKCu@UWdNi-yebkfmNN+*QU+N*lf6BAJ$FNs^SLmDz z^algGcLq`f>-uKOd_Ws4y^1_2ucQaL>xyaQjy!eVD6OQi>km;_zvHS=ZpZZrw4)}Z zPz(rC?a`hZiQV9o^s>b?f-~ljm1*4IE<3plqCV}_shIiuQl=uKB4vUx2T$RCFr0{u z1v660Y3?>kX@{19i6;*CA}pJsFpo{n<WpdbD;9&x;N{)C8$1>culW61+66XAOBZD< z{H|h`mJS5C2;ymL##}U*MC%fL0R97OSQ@lUXQ-j?i{z{=l-!$64H{LlTLo{Ln<|OV zBWq*5LP`KJl74fC{GzzP<Hd0C@%L=S@@^uUJ{F8Qou$%$yeLSBIZNzT#mJTa2*wiP zwh#Tz4>_Z;;;6i--QpZUrtHC@+RBlt+=_3TyV4gk=4b{TBJAx!GehYbTby(&-R337 zQ%g2)Uc&K|x|eL0yR*VCXDBqZ89C(obOFYYht(k`^q0OaQ*Y{)@7xE~KQ7XN)hGlZ zl5$1<#s!tyf%>mbIG(9WR`R*{Qc_h(ZGT^8>7lXOw^g1iIE2EdRaR^3nx_UUDy#W6 zy!q(v^QLL*42nxBK!$WVOv)I9Z4InlKtv#qJOzoZTxx86<5tQ*v528nxJ^sm+_tRp zT7oVNE7-NgcoqA#NPr*AT|8xEa)x&K#QaWEb{M34!cH-0Ro63!ec@APIJoOuP&|13 z9CFAVMAe@*(L6<Kx(ytzkNOPuG30#Mu-3oelhSAbIF)_EK#aPF4p2$>g{3h&p2m!K zEG?(A$c(3tr<FAIA!wKKAHh<{*<i$$tr3C?nB@T2O?t(k1%}Z$W@zx0^ny6k0g)x% zGL(35LDTq2CF3WLU9#Xy>J5LHQ@(h3@`CB*ep}GDYSOwpgT=cZU;F&F6(b=V*TLLD z*fq(p>yRHTG1ttB*(Q8xLAl4cZdp^?6=QjcG;_V(q>MY0FOru|-SE}@^WElQTpCQZ zAMJy_$l;GISf1ZmbTzkD(^S!#q?(lDIA?SIrj2H$hs*|^{b|Kp!zXPTcjcCcfA+KN zdlV!rFo2RY@10$^a_d*-?j7HJC;KhfoB%@<h4x2TVsDe~8!E-h5r=-i12H7&6-XB? zxpB|K$uM)qLI$TlMBj24WMV8lLNA7d-0ikcSn4iwx7FB>;*{;(hx_iP`#qI(?qa{b zH|YEvx~cE^RQ4J}dS>z%gK-XYm&uvZcgoyLClEhS(`FJ^zV!Vl&2c{U4N9z_|1($J znob`V2~>KDKA&dTi9YwyS#e-5dYkH?3rN(#;$}@K&5Yu}2s&MGF*w{xhbAzS@z(qi z&k99O!34}xTQ`?X!RRgjc)80Qud0{3UN4(nS5uZ<cHrQ{FFnVbx*vY&CVqaG+*lP_ z?y^}7bLXEkN<IJ+vblA&9wZiTjk%VGsv0SAP2KD=>1#K=^l&$CdhVr%4<67S=#uNP z$hnqV471K$Gy&){4ElZt?A?0NLoW2o_3R)!o~sw#>7&;Vq954STsM(+32Z#w^MksO zsrqpE@Js9$)|uQzKbXiMwttapenf8iB|j(wIa2-@GqE@(2P#M09Rvvhd<D2WTKL2f z=K$sk95sWv4B&wk)FA)!#By3tk$g8+1(<y4Pc3aXf3?V0)n+sXHh79GS4L}!tj54I zMQ$Fbs=dl+E3#}iS~{Eo>u!sE0Mx&cK&$EtK}}WywYEC~MF5r3cUj%d$|lLwY4>`) z_D++uNojUl@4Cz8YF3nvwp>JWtwGtSG`nnfeNp(_RYv`S2?qhgb_(1$KD6ymTRgnD zx^~3GBD2+4vB9{=V_iMG*kQTX;ycG^`f{n+VxR4Ah!t~JQ6Z?Q;ws}Jw|#YE0jR0S z+36oq6_8xno^4J?Y02d!iad3xPm+8~r^*Vvr4A<|$^#UEbKvJ9YHF=Ch2jF`4!QS# zl8We8%)x>ejzT^IH%ymE#EBe<Zg6A*lB6P31a!YG2Bxt>2~-$}ZXtz&vZ_NgVk4kc zOv-dk(6ie2e{lAqYwn9Q$weL<BatOlhM_{lS?;r3bNjP=GQW;bmfCN>#^Nh?MpPUK z#Cb)4d96*6`>t7Zwsz#_qbv6CnswLS9Jt|b`8Mqz?`?H1tT99K#4#d+VwAy}#eC74 z;%UFxaNB!Zw`R9){Pncrny4>k;D}TV2BU0ua-+Fsp>wmcX#SGkn`h0O`pN*`jUj8q zIlnc7x6NRbR)=wP1g`-}2unC>O6ow=s{=NV6pfEo3=tY8<P5lc7mbh?KbynYA{NJ> z=*$TKFk8Wv0K8B_**m*Q>+VW*1&gD#{#GSc(h#YQ<Gv7Ew0wAAg!<c?uFj|x)$XL% z5vos*G{?Z5KK7N!xn1A?(mKD^LlZ7{M^=m;SsaMf$D8NhJY~dzmAm&+)-fsFJZtnX z$1GnOyz0yKfk|ppC|MnGXVV6w!{m~te?3^?oIWGeG`VD~i!X_sGb0?CHPPo^G3&NH z!|H2hCZ%+8X7NoklO<Pgu8WSpb^W>L?*<(ZUx~>L^RyAG3}j0&Q|mJtT7ec|Y7cr~ z+A`Wz!Sqz9bk0u-kftk^q{FPl4N+T(>4(fl@jEEVfNE$b*XSE)(t-A>4>`O^cXfrj zd_nrA-@@u?czM(o3OVDok%p3(((12`76;LwysK$;diTl$BdV)!p5Gj=swpb=j2N>b zqJ1D5E#zO9e(vJ6+rGuy<(PS-B6=gHvFat<HMV4OQ)MhV-B}Sl>&)qr%j7T`vT1ju zIvHwGCk5)id{uDi@-e?0J*(-W-RGZs)uhSeqv7TA&h|CUx(R0ysoiQC8XnxL&RXI3 zO`H`8Pe&^ePw*`{rIJhzUg@MuhUL`IONG^*V?R0h5@BRDFgEF4<Wa~C7aIsk9UDsc zz{x?9i9nA+QX!=$<of)b$%b_O#I7YPH?Ejg?Cx+EPg}8Z<&v(6_1~8!OOu{W<I-gJ zY3@^&A3Nik>5b0jSrg0r{<4X)nw^c)uQ_Ai_p>ic!=K$pmnyqYb=`6fUo40ru#Gh= zMRJxOD(1n?Mjz_|IWyJK5^fh3*n>eI0MmEKq%=-oIdGd4F-LT>RL)Bp5FWxb<T6+k zx!aTNA+yJn5KJ<(Z5HZMLcX9)H(7@rIC+*%$U-e6DaInH34&t}ZDNIVVVH-&dS`ob zcI$%PWyn!c+F@yJc2#5M6RWnqD?nBhRmSFIwO__g9*DQO>4aNLNXB^o?YBSXQ`SwN zI*N~(CQW~P$HpzwrMG4IZKI>TVI4nQ$a-#)zV}LE(xgQ5<jH+s=eOVY;QAF4vfKFP zn7ex91Jad++$PP_Oi5!r7LiRo_A-f`fJqbG`UM3TZb-s7jLX!HpaWM<xFd<rg;}Tv z93K88$eG%_X31scrD~_PIv9K4d|J=M)r*PqACS5^v?MV3Na3kH4nefs>MG@L#e!e@ ziNtg{Ph&qpX9FLaMlqMh>3)Nu%sAO<pz8+=lJhp81P69!KuwU}e;l+xmIMOSVY+p- zeveujeS09gPTz-=wjDqhlHsD%rBjFu)>#1NEsbe=#4Vqx0Y;<~+mV!xwj%}Z=xZn= zSqjxSH4T~v>Xd*=2wmHPN?@+9!}aQz-9(UIITZ==EB9}pgY1H4xu^-WdOFSK!ocZc zd-qhN$eZcN#Q^0>8J%)XI$4W(IW6R810*ucIM7Q#`twI|?$L<V3FnA~E)UBOmStfx zLqkw#lEkcx`L{8rSRz8nOU3*bGy2&<<;VSO##aue=Y8d+%j=S{^05<Vu6Nt}&?W0< zP8?evOV(Zf(pTo;Mzzq=2@)#CLp5#ES04Ix*X(^Ccm4XI@_mQWQ@5|1qqfvm&1!C$ zv3N3dgFQ8Q@r;({Syi<y>YR1kr>3#{B{Z4X(xm&Cb21d^F9MKi<Jd`WVmGimQMZ<O zjIKq{pRFzNoIlWlWdz{?-CsdRIJ~VC(!vug#C%>D=wk_r+a=nyK!s^$<T!yYE})|R zYsKAh*b@ck+kxYww4B>zdXglCdshbfKBqa5aMwN#LmSNj6+DPhH4K-GxRl;#@=IJc zm{h}JsmQFrHCioWCBGzjr5p9L4$t4`c5#Cz(NJ#+R7q-)Tx2)6>#WZDhLGJD964iJ zJXu`snOYJYy=`<+b*HDiI9XPo8XK$TF86)Ub5=NC@VN#f$~GDsjk01g$;wDY!KqOh zC$x={(PT7CH7c?ZPH{RNz}Tel$>M0p;je4|O2|%Yq8@sCb7gRhgR4a*qf+WGD>E8~ z`wb<@^QX)i-7&*Z>U6qXMt_B2M#tzmqZTA1PNgzcvs|(|<peL1ZYi9Tu#YNqPZ>-E z4t*ZT-`kgepLl0g1>H!{(h8b`Ko=fR+|!L_Iji>5-Qf34-}z%X8+*Qwe^XrIS4Re$ zWUblH=yEfj!IgeIQ>m}+`V(4u?6c;s&Ym_6+pt|V`IQ1!oAC@R1XC3tL4BQ7`!TnU zWaoqG=nh<He~ExdE(Ifu%~IH9;p{f312jTI3lxPX)&O@a?$Z@wmJTZtViN8U$KeGO z!3xsC>I@e7dV7)8VzO8ivuC!q{hcxO7fo#2I=<`rktP0OfAO-CQE!ZT@}e7lw;{c) z@2l7RV$@&S5H@{<za%m}efI48ezd9m?a`i2?-?_&0$OqJr1V0=ZKV}u!-9du{-~Rq zM+A!fEhDG@{hv3~bk_zJG?e=*Bg1~ry|+E8egAlCLwWgS(~B1dYWCD#_Payh8$V|3 z>=Bj~^Kp5At=Jq=Y92rXP@{-D4j>U=-a^gM2s-nIZA;u=fbm2BP=Zca5W81_cA>Tr z)x+r@{pu_la2Q(wm`Zqyd@GhNDNT&4oNHb_>w4{jIU}m&iXykMxvi;WL8;y7t}cp& z9CEpR)WlI1qmOq!zg4QTmzv#eP3>NLd7V-+YKmuyLFP533rd>WnvL$F3b}g39PYk; z)^hXQ%5jO(B}-TMio7@t<(V?7M5!ycd)u4Z+~!hym9+KwPVO^Wkhi^Dc7$R@)o$oh z^mRbgQ@5EvalJa}V4Bi3cs^w5pYtbXXz5W|e%+z-K;8M%Lf~BlZRvNI7=)cG6lbjg z?)l8iOw!mU`uaKN@UL4>d#edM9^-ePb(VICy6Cg-H^Ew$n_s801w`A83W!_Z{D+1G z(<9A>WB@>)D%cxw7c?Xv7N}6gg?&TkLX|0@k&VL)YMI~SsE^dzj2^3BKL7SM$!0Lt zj;ytKWw|(58n6_NNH$JVRh!W*wewMr7)H2jOCruuJAIIfPMFpf6j=hL!D3nVT9Dpo zut}|VoG<%v&w;HrQtz<%%T&X##*z5{D!!egoRN}R_Xxuy+E3dhx6!7mlNyuqsKR-P zlP#8EKGt{Ij~8kXY?&*%q)PkPG;rziWPd>HefyPwV49!>f&Q_@Fn{8Cyz{HCXuo+( zJMu<#{Tl}^-dh<itFK$TbJFYyvm37Fi(fDuym?#Kny%=@=PE0gPqvrcsAWI+&oy@{ zw@TM8Q;P!sv0jPE4Y$u*IP<RWT4Ir#4_@dSb>%n<XpXb<`qT0cz&8o~H>M0IrDa@V zMHgAog4`tk;DNK-c{HwRhx%Fn%ir3mex!XeZQ4QY)vQ_iZ(j4-GcO?@6Z-Y*f?u7_ zmf!}WRoGkI#BO9;5C<z8SRi0KOP|9!FkETngwhEn){S5f0$AlLWL(7|jvO}f;b3wr zptloF9tUfA%vSLjj`X=b152*H2<uC3e&rQ!EW51<W0lX_+SH2W+TSAShCA9H-zg39 z#Hhu~#@Eh?4lBDP9y|AibDha6%7#Vf)TWj#9u>FvMobtV@Qm?#eNKbbX!O@xEVhnm z6LFnWu=E}6kB82ZEf!g}n5&IuivccTHk-_5cazDAe+O!_j+dQ~aUBy~PM34E<a8<_ zVF~o><Jx7j)MB^1bL_HVhT@hvH=VU%!Q#u!HO0ljU{Pq8`SQgJHk@_i+?HZPWTM4V zUmL1XWV79lJ0IEtf!J^x?!JhvP~64pEPm(lU-M;s*Bez?#nKy8i_8YK$PzPJZAKU^ zn2M}sIA@Wn_+f5ilZtGTuSk-M(Ld;G{0Lqx3J;b$Qt%NINu5qh!oUhhjF>q0X-LOl zjunFnO<4Nq|BL`!xwvyj&g9Q0(A_<mwwi)l51*zhc~BgP9(v+5)-nfdJV;AikFtl9 z<r7o~CKj>*xLT~l{^nM&k<D<19^%dPe>GzB7+^hP^L&bD7iVdXe3wobJXVX~o*tX$ zI5xthE?gAl!4+v~+ASbN2nYIqNn_#3>!fi2k=g*Hg_%caA#p<x<{Gy;5F@e3V4M|J z4sNa=2$t4L9(VaIB@xN5egCZzSZf8<ZXUV(id!Tbt|ckEBN*k@@4z7U+TWK{d)+~q z8~A@c^Zi%2Q=Agkep2T3g-hPzll@Yp<d$-`%XZ5Zmus&-RO<Csm;9dJ#LK^9<I$2k zASl^h`TjFnnA#HkM=#=UDskHqB%OR+^80HzRs^A7P}0F@Zq%<|E|@n9ZmU(CxJ_{Q z1P+J4uN59xKHj9<|A10#?>lNQR+RtHTiW>(*OFG*-nzu~6DMCrX>xzP`3sj}D!||8 zf3dk-w(NCUMu^C%k|t?sa>9gU_Ms-R2Hhm~4jNfPPy<PYa4c%a9BAiQrtQ!>H!3Zy zV0QFf=MWK%>|(eV$pB5qOkC)uou{oIJwb_i4epV{W95%N)`+uOrLx7fNtD^czsq4B znAWb+Zsk|YX}a?b+sS-!*t2w1JUqU6Ol`&Jrqa5=4eeLWzr1DX1fWW`6MYf+8SOW< z+EMJ|fp${RJ7q9G7J+`pLof$#kBJP^i@%wNnG3fnK?&k>3IUVo3dbs9Nt)x_q|wIB zlBAi#1Xv-<+nr<13SBfkdzI?dJ|3~?-e>MzG(yRsA}I_oEd{HEGZ&7H|Km9mEbL6r z{Ubhh;h6_QXN_?>r(eWJ@CM1-yn6Y#am!aXXW!EfCpu}=btdYT?EJ>j+jeuc%;P2g z5*J%*$9La$^cy>u0DqjO#J%*IdaaPnAX#A6rRQ+sAHhY@o32==Ct3IF&sM14!2`FD zA))>ZKsccTyp$U0)vjABEY_N5lh(@e+Gj>sYOTgf?=82K)zw-?JX2d<X-z&`W3^P= zIs~e={FYnFYfprc(nFF-eo9tUJD7Q0*@;=#TCA0~-BwX#IRQqOMFm|Mp)XlERG%uW z3hDTa{;MkpG4EkD8qlYbI6(8FzE|N#0~M-MaX}dInJ`DBP9?EH*QTn_re-r0k&1Js z;&`pCX4=$>$x}n2Y0v%SjDtBXDxV2TyyxQmN?2%8zkKkKF*!AA$P$1#qrF%fUu~<Y z8a^&|?ZbY4RiQG~J1RM^e&X2M8hoiU&L|m`O{Y?YO4QEe#k)I3=^E6@V{}EJ+2bm6 zl*uz%eP?#0s&C#jsU1pGu{ST;Cy7}QI@BmMO5$E3>URt`tp3C_(>^tkcbHhO0Hh0A zpTVQR{DjsD=y-Bsl#nuTVKRxYbjpSJg|K+SEP+^Y*z3S9p(_-s9^YP5Zc?Vz*o(Qx z?f03co`dGfW}0T>UdEZaW>s0XVEzlw@s&bc+B-9;^^AGsx$AE~!1-7?tn9z|p4}_? zRsM&sjg1>#Rb#6jFBRKMeZ>I_4<%=&rF3yqUD&Lik@7<@2*(0rC)UqPj`Gfe8L&{S zhGtB67KhF{GnLZCF}gN0IrIPU_9lQ)mFNEOyl0tx-!qeCCX<;7*??>lNC*Q7`xe43 z2$7wD3MhiII4W*v6;Y775v{FSYqhp+|6)6BZR@Rdz4}#KZR4%=+E%T%_gX8-9KPT4 zo|$Aa1ohtUet#uro3p&@^FHhEX`OcGjq==$UeAQ~<6AZzZ|l75nn<#}+mo0rqWv5$ z1N<|1yMgX<Jv|>+Qmz?53v|%P=^&74bwqfH?xIC`L()W{|G`j^>kbs7q<$hb6fL@S za#nHyi$$TJ7*i!6estChR}QriMs#yy!@Po#AYde<sLQD;qjdSE;el}uSIvuU`Q!0y zgLdgx7@b2yc|`j(!j7>WL<h_}cLLzLADVAgNgY8#1Fh|}$YYy;vM@nsz|vAPj<`XW zXwGRVeu@T^gKq(%OY=@kT00t1XhxFalF7^$^m^TdY4y2Ihq?}y2^PzCcJmbK?B>~* zUR%)FT#4Q~O-N!O&it}b8zFOmbe=egH*Ka<9jT?dFCMAcagAo<>tKrW%w?P_A_gd& zXwHTn>a>WEWRzimu7EJ*$3~Jfv|@bLg}6iH4mgJB!<DQThd6ka{evPxhuqWwEe5xB zf#O7;g?|$6p!;#Fatu%5;Mv$0#&GhoX;1`k>o60eP#_N!xYrQoMf4&rGLau~D9ila zYGD*3*M<KhTU6G&l35CiwgI=I^x48t+-tU=xLYX*&>NN?v*n6op+dQM!Kkr@qH1|^ zh7skG&aC;+$C$OSR2!ke>7|B6JDpjV%$Jo5hI14PGyx1I=Diw7>h@vzL?PLTzC;`; z?}nkmP%J6$BG!9mxz?+Np<W(k3}{Xl6f8SG)p2HGZwh`~$&Y)0CW(L%$yC_vL#CB> zIHbVy&<#H&Ekz1(ksSJ_NDQ+XH<JJceP;vzNe4O2<E7<+egftoEGifzw4A`fitfZ8 z%yW3H5b@&OiDoF>yg-!YcW8YvE5v*jFQ->F;|Q-IB@Mw6YP~v=jY$~9n@~8MVO{1g z@g=-I$aXs1BH&>hK(~|d>Y9n*;xRm&07=pLuqVYV-bwyCUIKgMdLSrovEs2f3{<EC z{Td;l7^sLu+7e}I#;X$QZ$1d(Uc@kK<6!qdqET2X3|a~Bq2L~XG()AKLenoq?)g>b z<++d|UX&}*7)y8){Ntc{RL*udOS8r%JV4EZ64fUF85n7%NAWejYbLV}NB|lS>SnYN z?PFpysSR*OodDcNK;OVKsSbKS^g;|bSdogA=};1?3rYq|Nc_tR!b2ln>=bNTL59uS zZjF^Y1RoS7qF^>LEqt<#Mu0ZjpiUNLtsc5%t*8}5lW4OWwFXfqGn-q~H)5}2mSRZ^ zKpfQxOe+KC(M5V`tz1zQ)@pTTQ2?NgStmwpvPCi&U9wd)m<^I-w&{(`Vb?Q*4ApV5 z(G}DMfgox!S_C+OTa5UkEbB#G$SC<8vLrDPPT_Uq5N~7`%Js5Ut3!o!f@HJm?b;(N zbbv90V6J7=E&)E`b|}N4n`VOOuvo$<xzmhK>IEMx`%EkX8mpug0yY80enF3?M57gI zQ((b(;dv_v7PDKFgL<RcA=`>|6)q^sb%Gp_aU)<?%bd`03z9(q%&}XLy|QRQI|<C7 z6--bPF*5m=>wp^uX96>jGEsOmBhyuDZ8}+y{bG?UqGqyDfYMtJ{6@xXI>fVC9g+uG zbQzl4fY>P6VAkv8GEpapl2>quqSIoui)Mr95Nuw@voGBux<n^@3=DQrFiIw^j=D-< z9-C}70E|_@WRgXj!75n<^c@^ip^SG01t{a;7BMsk)b&C6Idd?hnd$Uet==Vg8HR<I z*)14S0-E077iH8$r<ILH_)wr-VK~xC@F~_x2E8B~B(1?EYOS))VbR+qy+_OK0B9Rq zkqpfUkXsp&PicMBu{N`0ll^E*BL!DD@c|46=EJxvVm7^%nQdq@odIak%qRidQUKhj zTqFVO5+%^17-()=07Wn`t4_8XBvGq1Yeg$svg;-tV|G-*#EKmf`pk-MWTCjk%(bFe z2~29zmqfJMVkCXC(ldg)sz{POuu%Y?+GF<$+MvgvuYm4Ei;PhYQ9@nIC6}IAoF-B0 z)Jn46FNh_!FoWg?Q7V$&FB$}lVvGQAxClo;30$HL5lDihud*A%4!dB3LkV;^7>%Mq zYqG!&A9RXvoI%gZRwI->g2SYPB1tbg0U9UkC70cRFPTKU0L{E!2e?|as;p-wNwA;> zm}yKfYURNzE545Jz^T+srPZUGX{3qx0H&3ol`)Eow3xXj!2lx+DkB=}EoF`(n^)2W z_26hljpwvSdw}akJQN9;WAQnnHTN=3Ko19hR`Qqt#60*^1acxN84Oi8W-4nXd^@w0 zVpMzKqWw_(cHwQ`*uQ>F4F;Ncc?}XU{q867ZF>zihsu1j_i%f38%41S53RkO-5Bq< z<^ffy6fQNDn;z=lDz2OXjU+MMr0ziZ)HseHI3+}-N8v$8UWEK_n5pL6VPUS<!gEPO zyuXr?;0P)}hXg2na8qB7{+PnO^luOv0oC&uTlW6hPDu8aA$#wIzJ~l%fvfJ|?r(@d zZ$d6|gy<nd)L!I&a&dG!c*ZI&N&+Qos-(A&-w6;V9N13d3b6OtN63SNrhtu$+JpBT z`CX#NMz#SNU&*Qkh%FEB?VwCkm3h2rAc~M{HE_=~5;SL&Gn-8C3@W}JnDaHC!*IY5 z5lD$kSkKhevIhRKN=Q|w^iiez&;<RI$pCf*(l+$1rg{$R^nuGlYJ#kwL)rw241%Dj zN<E}ZFkp4&zJDq=PdWty*EVEXd;Y5|DtEJWhf!%TIXq#|VdZY+?!(kTWHp1u>@YH^ z-F?^<Fq<n;1z>bJ%5Vt}@l0B2B$XfpF!7J0KUW$rc!~hPD3+Ms%)ia=pl{0nuS0_) zMk9rt16uqE&;%{gtVGqhUs{u$%()O~zzC_11`vYVVXfdfEU}YwTDn~JYTSiTDRNih z4#ap?$m%48h4*c`rhEH7?VLTW9aCi~b>z~)W0xM$c|y(8H%u~4?Yic=Yr3WyCvBMC z9P;P}Ra`!CY1TVd3~%qgX48EO<*6O5d**2Osm_lAM&ZKw?7XUKU$o?gjCIcqH|%NJ zuxtIAj>_t$YW%D0ShIfD2DzU5%qnHsRN0vm^B3-wcim7D^;K7~Uj8EuKZ;X3tlbVD z(=eh%wxAVAWPvDL3Mmg=TPKpMGzTdG=aT&qTw(TFBIg<;`kFOrB)&>#;&>KE1kb>+ z2B2dhdAN+pj}^ZH_t#P}WOC_RDs4ppbD0<}eknMnviR2G%#`AniYwzKw-y(_5*$-_ zmw5S-TNmxQbkR$TmM>p=*`CF(EG{@lszbazB$k;2MYhTooy&w{`02hJ3>+yIKEOe7 z@JMkSHwDW^-jsRwlSM}sEqQs-p1n(#FUOllp3=O)Tup&?1<^)a@`nk7JGz35N>n$} zBOy~(>fI9qX^_jCE*5|=cn@Q((|dZ4jk)4MmOAk+0xA#wuDRF-%lTtBwIA!9Gr9Ct z$c`7mj%LBTedq<CzVjKD-~lA6kW3>C%Rm_T=dk5?<j-2B^$w(Zr?s%pFn?5k6)5+W z50y`Z=ao;~spTs!zkG#Q#BNq;w6dd9S;QVGi?W-Q9Z_Bt4dXuFM1bbQ%G0aaqq#<N zBYw(a{saG=^oumRF~`B2g9oJ(o^b-TC9hs^t#pal*JhAFGCYDlK)aajbezcGb7Q2a z!%74D6L@Jlv*JFuVgqdjFQGT%AD)WCl1dCd%tb6gUlqT_<#D!+4HS!VY06@ESTpl4 z&`aQn*DgAE%XLf7G3nNJA3U<C(_p#mGK-;e(UF7QYjyIN>Lu6Ta&XaF9q!a$AUtk$ z*e$72Su7q{Rad`o)%w|Sbyv5rzAip{{VH|GtUY1tf`Dk1!6*HuN9YH|>@$Gpvq}N6 zCzbi<_XLxmE|LLdr@JCzPlDyUYO2J>kDK?krp5CY@11*7)8aCVVb&~zrEGE2O><kf z#TP7YylLLJ@l2Y^uF~t0_DF^MP}RYP)(YBWS{n{lRq&0_H_=q#){hN{cCbb4&mke1 zR2J^&(F+p7y#h))$&Mcqv1nis0{tQ~Rt7YRDB`@3S%Ps@N|rXO1RCi+U`OXVmgWXv zeE^HnMT-cHUcQzLooG4zCyP*~pE5!)N(n(|1D$Ot<qcMiB^KM~Seud}qya%wDZZ&5 zO1Pjx3b0T%_XHlsJCvs@-%#EV9#-B^?ne&2J_;{KMjTCL&)`3$lzN8I#()%mP~Io+ zBl`zMPhq&JT1Pc#il3`0ID%0jBFmGyL7B;esz%%|@4IK$wd)5z+wt~^doB{rHBPcy zjG6luZ0tQUSJY4LPA;CD`C*{EBv!=kfJ3<1sBE0P6Iyy<+WOmf-LqcQUv$@r-|xuW zXEfU<8HF|Tj`ePtJNVh;#mVl;!Zd%ZBotIO;<t7qy93(%op{+=TEnw8a1nENyk?r3 z<AcG64}hzX0EZYFWa!DMyoOZ?Y7A;&%$<+8w3MhpJWDF&HY)#a9A{H4aw#;oh;9Oa z<q+I6Wns_eChbG&59TkfBt}R~S;re$k<pzC>>tojkD`+_dDb1*Ao``HQpP(gi<J+G zdw8GZ>SRL)4OKuTMcNVOb@(m7M?noGc?geUJ;8t6u0>WYa5RLDJ>(^Zu~>-DTzEbb z=Pw6=C#Q(ao#I<MPV*z$u=hth<ZFByyk=6P+SlTUVns|yE`rUOvl<qZF1NNrS^kBk z&e{zrE@XS3{7Js0?UZU#9C<PShF7@FkR9f`Odp*2)V>t|Sa^jEBWtV8YNL5Ce+KO1 zHqBg6?QNQUAP0QbaOG=Lqb?5ZLlZP3JdqXFBbSG?_!QPegco`UzEDBCfy7n?l|<N8 zQ$r(hn_68Q9;$`E7j_lffBwSWsT0OeD5>5O(2uWh*{9fh*}OFkZGv)4J9g^Su_Z-y zktO~$6KAdO?4HIhm;a)+gVRbF%BNDw_qH-YUp3>pUiriPU-DaPao4J;%WF%Dllm58 z#~3FQnvO5O$UIv}o~Up(EN-l>@f8Ipwl+*yG^2h|U81N>`H9+~R;Nq6WZk+k_l_|; zqH`}-wki9Eekf?yVOxp~wx$i7mS&wyRfA;|YZ$pD0iFQM7=^Of;Mb5{*g%Q+MV}ZZ z4uCY|_@8q>JQ{}h=B5NG!svf6mRKr5#bVli@?ZR%doi+~75m0rb2XFdcTK&}XtK)Y z#n$?!<(KX3?3g<BjcJ=FMn7bC>c;rSMQ3)+>e{<=;f)h)dXgJA+DdJ5q_(=fbyjlD zyxOq~%LPEFsh*KmXEIW|_M9hDm%Gdrv97&s&LCvUqb)02CoZ4W(b4X%EB2q(#G5YM z&@wJkH_qwtRocyZt7Y4`(pa=cD4!kEPl#4{yum=*q|U{&O2DV&=)yXRws%3})r>`7 zty6tM=kuW2FpR*(!{^GYty*Jp1woSmG%(Qs4H^#!;!Q>OdkH@{*K(vzM1v#qO$_R{ z7+Jto9d&*4xTs#V1lt-9mM`tTxU{8|32n(X<T7GbZEa-I@)etxwN#IDR5(038)R-* zdG&g$u=vHfdm!uA#%F15qTZ_YAVc5mIa|*^^1!a$ZIirqN0GeLX&p|ZE{6qSIYTT6 zWPEGVU?{R)Vu@@2q<pY%ertGau`^sz+%j?2T?^LUy0o>!6M-UNsS#R?m__F|Gn3X9 z&{djT%C$c`e{S8Bi4#KMy0LTS?(Vvq%{y6Caq7xk-@t{Re0DV4heM^6gkrEpL-{{% z)|>$4EU3Gq;JmPH{<qHyzc<p~60#>E@zsRX+#@>gc;qk2i2FwVHuCI??#%xdiMweM zWaT78*EG!|+OV634wd0UaR@TenRhksaP%AUUdHC<XBegBEqMCQEFOgm@<0T73?O_! z@MRU;-<t#<ayl(zQ6EtX7zxg@m%hcKTY<7x<veu?c7tCyowAnpr(RgQwzL#~Y~ORw zwYA|-{C)OH=AP_<_(T5e8_o1A9&M&)oxiw+KUca|8RXBkJ(pRXy&{xm4>0VcZ2nT> z|Lq#TX5O&2h!GYviFiX{IRHYEViDCLf^Wf)se&K4oOU>MQK$_!7!L(|E5Bx`dn|^Z z8D!P9pUu^~tYLFpB<~24WRqgt9Jadj5ce6JRV}}8O%6hRA!!0JH5LHs91WhgWWLJ- z!KL(|#^$p^amdJ5g8rZ$Ggy6?%`B;J_Kppf<0XMKcmmW9@>-TJn~gIShXI5aI(xEx zlSd-_6cOeEGR2J$MBqWpK*2%7D7_wEFG0(EP;?Sr1EpZsk|pld3%9nq47KjwNtga; z^X`AUY0HzBudMExSE>hYgVxdT>O;3bbp6&zv#t6lVjtU=7OitgFDbdK><hU?Cv@(N z^6$kbT>r_jozEYb*t7qdj?MRk%pu)4==CR^bNgHOU-j*emraW7T2WR%b?1^<<CWFZ zx2|OS{tRz1O4dGHHz0Kk@%_2lIo0G~*~-yX*bu&;a@;hFx~uWSnd&7zLyc!k+Y^79 zzW2%A%}?w<r+UFWi$^lbT1WlM4;+2q+TJ#*oVRKGq$U2fe#cY!F~*lIFMl-N!s7q7 z`0h(*P3YNs_0)}bg=C|(#^H0dFF*FieOEmA;j*^!UCYYGPua0(=6Gf8`a6aKk@-5z zZK#wXo3iRQ#^E@|lb2EF_!2P;JUiB#<|qPXn!w{A$3jCPhbkV`D#zXugX5Moue<Ta zb*m<A-gdOFzrXLBFR&HopML@VW6pdRQDJu=cF^D09J%TFn_4%lC+*8?yXm$IgsVqz zx3vC!!=RDR#f&Fi9e_24lVXQ_I+V@|bPXC|Vgd?HZxjVYF`F8i8a(pd-&KC}%2DN$ z=PthZIc7h~N?-itu1EL2df8>K?p<`lIUQwM$W=cui|bx}?bTOb6E1v3`QcM^BdcQe z=PpkFc*njs2H)6MH*NX+$l&D3bkD1=@_CF6^b#6m7%YZwDoKJobt%*>6l7EZ=V>@G zzzY{zEr!q?#B%Vk9VD%4E~MxbJ)hcn+q^0Z=@qNy9XNJiUX{8Ns(OzNq-fqrsbhbE ziWT!T7SLhKQavnveOJ`2^uK@O;eGSx?>nsSlq%#_#sdo9iphZ#Jwo|{FhMbfSrS>R zQiwFss8KQy?9j`|&<*8j64q^OVgV#e63^ksE_l^9($wb9f`EyHv4&?kqn<@TAOMm< ze1YGL4dcENbcWZd&n7h~Atmwe(#RoslRpeyDguG<QT0PoGXFh1Suo0sXOrr)Ly<ik z4M9lqGQ%+ePgD3!uJAxmOlt6-I<`}C3af{OvYrAn8j`p-iY+v}g+0*+pGTxII3MX? zd*J$*zurlyfj%JPNIe57m-OPW!{lntpQV8dPVE9M)yP(b#6x1(P&@JR4i~ea*?ybX z5~H-C<}|*8>F}j}$MRo9?SM8!=4Q2wU($EzceOopeaHDv$UhoQfY3;W=e^g5xM87H z;I{8*GeL)G;HH8ITBt8$<nx(boOIBMlcKz40_(kY!i-BA7;Cs>#)NOPnG>ql&Qh*h zWt>ty34rm;*F33uigBg#?eg{u7R{5>Q`U$R2j3@_Lkx_M{bOC#*zx1XR_*<LoGo2& zxIr06>c*B-IGq(GV|B@o{8hJ3p1*lD@AJn%&$i*n1|9(=hKoMs|KsjeFu0HwhG-gj z6NR02xQ2KllvU2l&Q+ddYuKj6LihSj-&!x-tUR@F>EtCIlkybUel`o1t{IyqKm3Y# z^I%x~1FN64cI~X$=bbnBPUd;Rxn=jXhSG-2Z`jT3lX2q?hsL#({W072*)<WKnphJl z9J>OlJJQjT){R0dcw$MIV@Im_3E)riYBiU=q`Y_6ca&e9uVeb_jW)Y(*6X`BKYM85 z!b8t)Ui*XT*XL>UuiVO9x8B8yUlNM}WBcAqm)&yESfoE>5R7X!<MvnZ)QqWz@-+8X zY`75MwNMbjhV@tZP4a0A=dfK#`hq?XKpj|-VF}G@eGom4WdVV~*<oF$#eJl!=ei;2 z2(gyKH;b@uxuk-&|7&zBfw3w_W7VfM2dtHF_k?l{Hfu3x3OEB6C_y$C8w_5AfRx6J zc83udI)c^8R*iNmG+k%jdVp!FNlUdg+7#UujWV)~RWp3c3bO#-XE(<1Zj;wwAT?X1 z1z$A<@qO4EC69p5;9F<jic*bo>w(jnYSbl8TpaivJ~v3;LD^f$vOykiS%0kDp1GRq zVCg_iC;5ATIf&(~gt<F%9&yZ$_M`YIM=tX_Bfr}@z09QUKHH!T*4ODaw5_(gyY4vT zw$})2`7fCl_)f^)cf;3QkyF=1TwfzJE9i3PesUAzH_Q=CYWn6A>_DK_8Vo2`%JbUh z9jfe_*S6Eje-d8cyItyiX=UK|B_;1L?UVG9n?6x~K;xR|0vZ5x!At8OJYq-&B}jT5 z#x}{P70vb-p^szS5EvI&o&q#3;_jrm%4X&6S8u*@S<qj1d~fxHX_J1<*1h^FTbPH@ zCENUGfOLJr?qVOXyQCBl1Gc{~yS``T!pYlWTKx?lGUtcC90u<4I7Y$k`Yww<{BU-C z;B|0=wyn>v#ZVm@V<@Hf3s4l;7vm>@w-r|)yZS%w?(I1*QeIrsG=I+5nepzsGxrc~ z!pSc|SCA)uB~*o*q}1leH+COyX<6)cl^Ly@AOH2^A6)<8mq0BH{PW9E7WVFW74(6f z)`<JCj)p-`VTZ*O2YpYtC>kEd2^SPxr15s^#3*QkxXWqEyk{wqj1GtNbEQ|(J1tK6 zUnIYs&2$CihuMv=&x^lu`v>+G339PrtlYp%HorK*>MU~Tjmr477+hGhviLYl@>d-K zU!uT<e8u}&uMua{lw-BIN}g;w9vty-4V?xW^E7E<dlU`V$c}o3XlnIW7`o_Q0nj11 zJ3kyTozA_9?kPBHoQq%8XX*WLS5LPL^CoHFT`kb8Q0tgoqA-!j!?U?w)iRRU#2u5= zW=G2xobttt>PY~kv}%w^h<Okkge4dNwyEQ<9EVM6{`&dhb}{U-n9SpsPwd=Nt@B7G zhtni^bk)1B+s#j%4t~0)bK>&xW}uU?TFq&;<VQC$OaC{+ETgHasluCt=Q1ZZA3wgC zc+2|v^Xr99Q_SKr*452!GgfFF4sC_8ZFc@~U7gWok%gz2<GQX}|9D6cURx^&Yl$f( zT|Vdt>?(Rl#6glkWN>Gw4B#URl`pWSWHsaPj-^{T?+Rl%;){@`StD{A2dwJ|V96v& z$16bph~Zles|b2KXKVo$Gy2J6qqP8xDY~bRh4}rn$()b-mt@e#Fwd)MdNQq8Y*-I^ zKqOSY68uyOQhX&e!epDI){mhNNM=IwXQLY2+&brLfPWf!2x1u(hS5ey?BxMlyyvL* z=no!g*pcWU2>q^rYg;4Lqki3-zG)X;d+6E=r*#^~7*m$_EGg_eQ=4jA+oZ8YMYWd6 zb?&a!UGBQcmfE7Cu~J)W?WPsCJoTfeZdoCs5nPtKdb}+(w{hma1+}#c_RZX|z*J-U z`YpG79lHe^?%Xkc?nU**&Cy^m+F0WA*VWfFHrCYF`F$mgbgj9#{-U|#cig$|;T=<^ z?0A^d|2~dA8{jc0T&>LodGPkA2Ce<%xn1wIlX?a%!@Eq4Md6Y$Pjh8C)#tL9&B{-Z zDl*AaMfM==qY6ZMs*j2-_o&#DtOvEgKO^o#a!G8V!FLJa99SgR=R+3-1WD>6kPt4T zQEnn&KOhDe*4&&kDJBfJWl@4anq%Se(e27Iv}pbO#r>3wvWJpUt}zNZYx9klkhS?P zCbrI418eh@4+uTT5z<4YR!}Wu!0bb{)|g-CHs~wgPLx_;gZ}Pe*r4aOmyr#+pp0lb zHFY6iYKHu9A$fn1?OWE+XV41w8uJSK1!e3*<MkMDzu61`>OLwh>v1U`ou!Z{BA27G z@n6d|J;N3qwe4uQiV3KTDcpf57p!m?0p3so1Ax@X#2IiaA}2>9&SUXL^1&>Xh8#Oo zQ?C?L-8M|oiJLpU6Q{%GGh;&0K{owhQSY%3!h1qcSn>U|R_L;f`cCNUO-efJ#sSbh zkg5Hb9y)Ys=YeAvt+X|EzTjRz37BGClh(UmXfNBmxvV{Ttan9870vRhk`;uSF?`m! zyWBXXtg*^vTY1s31F*aP^xb!Xf`+yrz9*G!3+V51{2PK^bPhMbp(nxq$mtS*2*~V% z(N&JbY2FYBI?V#24?IeNyZFFOpZ~&zB|@M?sbh`bnlV9zkG}tH<X<*A+9DLM6)ro; z^e4;0bR21O7`1`e+xOF@2{X_-gvpJ6$@aA#W!H&!-#u~A{pMi~sZm-1zR#&#z_oWr zoH(f{72p)4IsB&kAisEnXKg#0hSTB{_@NYfoTS+(<_%OTG6&V<v=*{cLsqOSVOb1y z)JOG*Qu;WmqtrL30ZAnnC_!^@RT38^L=g_)Sj6!Fc*Z_XTKfmns}9PVgJ{#_P>dLK zx+5aQXm)byO7#8<qr$}GR}2LEN`YT|%<GciZ;7`r=RM6Mo*0TlLOlj7cnS45yAWwp z+q;s<uFpTwLHjbG={=@PzI!5ha226lk`m^GIIeHIlFFpf>XHFtDn$5~LO*5aqH%?m z$2wT6nTmGDI)?$JimeWHNO7Kra|S#r4ugug1UgoGf)+&L0<x>3keV@p1OHE$p^lBA zt*GJGLDNniq=XZ4I+Mb*82pqbfoQ@+p_JGdB0aQaeTB!Lr#Z$97FjWL@MMe@Z^D+s z&IK)jih;Wbb%1MocDc@#$)|IKVWN*g2&aNVGFMmdoaL`cE`T^;1?Tcf@^i>q-czu= zA7p!sX62V=__ATa&S(g9I0rd{)J6Sdr^qB}JA4(U(1Y-`7)a4D)MA`g7I!Mwm6+KC z^C_nUK7sX}(ukntS*u>(uyyY=UeDi#4Mlus`)o8@(xaLmYhKp;LGw3oP&Rni)G|cQ z7Ur#P!U!VO1g(pNoJAP;`R9fA(}??`-wW?AJpaG_{Fi;Nu)eT^;QuU%IRlFc*+_>_ zx`&U5+e^|ih7FuRhmOU(<NWJqJO2OUe&H--7+Ge*Po=tXU@T};2QVp-uMyk+T*X}f zIdn8s!Mtmk;h(?w=zr@*Wwg%>m+aK71UlNUGH`jW!KA(Xf;sb)=69M;|L@O||H&xL zl74Wt!{fDxvzf&5M8E`Lo>IUfK@P&dqXA1j9Ysfw#32a=jPn2f=>Dps?=)zh0y=nF zlN*J67GXr@2Az6He%|WXWJyrTG^F6<|JoS+k`Xm{tCR{6!43_i__z|&s!LT*4`;a3 zwB^UO!_$ZGtWdT77?_S^7Dqv~y|xiDP)-YnK8%pxr7p+Lxp?<w`w+dUIzzN#oaA~F zOgUekRo;YeRqhTws@i6UmSJ#Qb9$8*V4Jn-e}*U+4ZrXLxOHwq@27QU=nxUnfppGZ zn<6q0aQ(uS4D_j19RBDWGSdpWpP7xBN4Sm-S%s|5k?)~b3Uy@uAr_DRu>4~wPvULd zUmZLLn47GQg>WUt!yAzB$G%F{zY<r-rKeG<2>S~B=am%aex&q3x^I|U4B;Xp?}AZk z^YIrlk>Jo6{xrIjl;V~Ot%d0#DhpmMHo+{Xi^Rz)*c5L{kRh`PE-|>;1QQ0h^lDfo zd@>|=U5Y91Dt-M)<#*Gl`Fr}3$-Z<?D3nU4Q=w2#n$COZmuW1T>}Nfx!+IeZ!v7G% ztcDQl>kp+vdVk8V$G)HSg>V(Daj1A4`JRB+&HA5cq3-~n7Y2oBATKb2YG`uA6X8S{ zY?6>Vt(nsVyAxRF6YnNNtUn~CLrIFaIITfuxMVt=e)j}2Or%oj&|p93A5+|pOZ*pd z#pmb`Sv&G65piAWD5e2SoNSIcgY-cWl#06J$28$_X(YT)8umd{pHg7Zo=kQW0->a_ z7yr))>upwE8ZMWr(itk!ke5-mNGO~-u?owjq}8&~H}EaBRQUYJk_kzaMJ-j~1H#0S z1rxw$&lCSsY5*5Eh9p`{{~@y^&(mjM(r6cji;VSvEmZ0dZ}u7v>WxNaH@lu48ujuc z{04p_HtH?AmEG!dXI$pv!-8`CYpz_XJ(2siAQuczyy!!@pi$wT{)yp>!Xhe@`nl`z z1^zAe8p<`=WnrFL1*!@PPZ=huBJ={PS>a{s$9bBsNe$AX5$!cHKZH|luaOs}hA*pi zw$Rj=>@_5!LqS+x4X9Y`l2I@7_L`@81m(I&E!VL96$Z9khIpPCg?Db=MU?BT)g7f3 z1oR}eOn#rEov2`=TqatC@g-cu`;n}|1~nUG-Vnn;qJfhg6hp5T(E`dSLj-kY;GX6Q zi-z9$l?TDudYiv<9<xXdBK0fE$!Eb=>p*t?+4_WO=CNA5llp|}o}F1=q4CAqvoxnl z-+26xjr)Osgn&kH{tC8-tSujYAX&ByDk<0rhH0A)eE8>_MbIX>Z9mf=3Xu{d5DSGe z{bXd;!bUBGMEs02AatuZk6h5A3ny8K=vdpjVylr_0=J@48tARLevxvQQ6xQRF2uMT zDdlo6=qryT!$n?JVgWh91v4nu1G=%?-N5?j)BLSd2l{{#%0EAV&&xf1Dr{4qxZQ5= zL(D1c=mH9)qTh-=!wPQK;G!Plb9%5!QL&)AKmk+G<LD6G0z+kv&!JV}%vKvNb~es} zeJk4n7HSPRLJZ^NZRA>}epRD9NQD(&9O0<P+eIYSg1*hY(a-jEfj2=b8_5xa4}OJX zB56)TjjEyE5U@>C6ZElh(DA_jLN=MkxobFd(kG<j&+7Zdd7)5fkl!HDHh=vwp*$K* z$ja=cEQCbV+&CGk0N^4leBy1&o0MagXPP}Dldja4m$dfTGXMghyUDKU6wie<eP~^6 z7f7fl?FKEu<WS3n{4cvf)NJokQeE50#E(S|QAWMTS}Oaywu{g(jrxO-q|4j8gfzJZ z@a6GXFPLBT_ED}=k<To*RX{m&$_NN8oOKu))lf5i@eQKpj1q6}VknrHI?E4II+H9c zF+H%o>nzu)+<NfxNo^YXCIg}g2^EdzUu!njfY>M~#d1*vxjpI7N&Q;y&0Q(nt9Ov@ z0UAx~93%#q(<@Bk9CzjhzLPRMRY32Y!M4>0SFb)OeWL#Q0u->@`-CeGuA;1us}BAQ zc@mIQK>2shoeQcVJ#!PiaLyd@Kj_ibnQy2+9_9fE%1-skgH%88v00xH6V6~l&y7;< z3z<LsMAf%3>*+Y;rwAP`&tJ>jA`DJcZ`7&@iupQ%b%(G56`bmS<#9BG;0CU_T(luy zt=;C3<w*P59bdn5Z9h3?X^?<PLy2vLf4Q%T^?ghEqpmz)aJX%Th_*Aap>Nlc<}xz{ z@bcSeLnyAw`PUGAL>*F~12pf(YnG!XZdkkO7$`Hc?ByN%$Z$rECfLDLP%2`Mw2Lkn z%iuczcuO)T(Vwa}C$&16nxS+qnzVRQ5p9I84;?;p=#nva%=pfX<JFfOO0GR}P4|P{ z*Bn`!?4K07_ST;qTQxuRz@h7U!|m4v8@AoQ_161tJGkZktqsBJ*ygUqot=wEZuaeY z&|@-r9^AA1syVe*Ywet?nEvH`^R~A|3|iNi_VrWtzVgwD?&TM6T(CG2>Yl&x;$;i_ zP|dt~<s;<EEY+oH^@Y@zTg$W%#WP7RwWeuHNn=xm36%N;{u{rILkbEX6lPT7Yk+PS z)&K`qfN2<1jYRpe7JJ;ZV8Zf+7;s*oyn?~0SjKvdQ1!gElb4HI%za+%r%eOt%9R1- zx6UTmP*)YPm~-F;kqXU=L>6wqbsm-{)G2ROAL$rK4<&wrWS4F}$7>VLjZ~K@NB#Cl zO&Qzj{Xrj9Q?1IwthH&{H`*sEN1LX>TEL$T9bDBnzAi-V%H>rqOSs{8i9DPnOQEm? zKnSNAa;HMY+M##OP3;`0pT=G%gsg(SQ~>24N?A+(Cl^G2rTi+Y_Xmo`>Wi*@@Y*8% zxO%^0<nvm9+>U>2&c=s7QU*VIcq8^q`sm^J3$P#9i<jPZ+ogB`UemR1U01*lud<i< z^yV*^lTqj~dOZ6Ykn7dTiI?)`?dWy$au`1>9SGJWj|-YQ|Bbro{q^IrwHjL#@aw6r zO5(p)w}zsz_FT2}`msf*s$lq^*3AS90U;2;%8zQ$AmjS~uU@58ERcbWhv?f>K#BeL zYN8qi*%SY*!e{wB?9^3;*7vWVA<6l3<rGR4b`9)+5s+enfC$%%Nhn5~)|Ax=T}R%b zkjxIb>`r<8_4JXqkECB$U^#wWOuf$1XFNlXZ{n58dU(CAELUC!&Oi-&kb(YyL&bkw zFG94K{HSTIT!grnt(x7Mt9azgH#FZz%{*?b|DaQ#z(AfKI!4Z}p<~>Ge#1Se1*{80 z*9-3X((C!(%0GrhVCY#e9J%8rDwB&WM#Ib#hh$(WdygIeQucm3{$<Z#PaXurDE8Ph zL%;LehHoEnn!BuM)VBd(O8s3!uiZ}X|2(CGM&@%M#UWW1wro4U<CDB?CjUe|R`M@p zPqI6v{$%Gbuq%C3i%;wne>#|=Kl+eJTk1Z-(L@12&%MZxw-kLv=48+WES(PWIT1Ks z0C<=YX2Yy?Fc%$1$a>sE6N@S(ydbyNTznjed+MR<yC<)IaP=eae|j=;-nvAhxMsqh zf%7BC+?ljGOClJQaynwv{r2|d(~FbSw@=)te7eTwwA({vk!4@If7bS&ZjUuwcG7Do zD=TAv6*jL7jZa*jd1!|%S`@T;#T}7}jsYu;cj@nriDcB?m6794S-Lo44VM-#pJ>p# zqQd(Tx2JkitUck{ZkFv%h>+T$y361us*p`!x@ITML#@u!?BZJ-!@DqEXFzk1cNoI{ zJl=+S{D?*ZKK1{XW)YK5yzt`pzw`QU#6SP_sM{sCSn6GMftpB-*B5YYd}6E1T{V8s zBM)6)8@_GeJO87$68vfVhG%-%V?Wnl^6Z65%hMOv_5&oUSnJohv?fUse?PIwpgrjj zbkDBTKUc**{+~4@<S3F;xc;DmVyDhfB6;1Iidh*|waf~$xR#_)CnMD&jReMo(<*|1 z31dhHQm8aC29#QU3vJXfTzmRf-6H8D=mjb$0}jtInq@_^IybKyphO7Y!eR$zgdnU( zEvB%AzIKM@MVO}CAo<Mg7K_AosRzQ>My<g0R3la8l-0m+or@Gc^(h{9NIr{fQV%kl zN3UE~w#1zLA@FHhIrSu7JIh-WZY4nVe8^&sG*`GBOE@uIK_*As<iV%F%5nr7mE8tp zi*k|6rL~k-Hx+C3@E<J_s*fh$xOe0|?9P)9v0qFlbQNOJu^~tBY06HD;+Qw__Wk=? z%nqgxu*2V+vA{A=aG!Fj_$QB0p9sLWeFXSL{fLaLL>+3;_M*cli^%=z;`psm^74d} zCj*Zab%E6QT+owC_c5m2HMR6aD{F5vvrm<yOJ%Rm;Zr6nld<#4OO@L~&RX`5cikn$ zo_CS5+bMLMYBaX7se_Zs9%SpLvL@vo#T<^BKm5=f4YU7ZYeNa$EcVMWW0VQAbi^U3 z*t;Y{c=>4M^bRUw2oc1;q9jPZaA_vxsFaP~U?%O27@cleW3dOF$d>Vq0Zl}ZBVHjH ztf_?4md<5`q8EHId=*llqXPIzIAX%~1B?b5_S~HV>kar}&i$g+Smv7ZlTat1QzXxJ z$_Fac3X5RMSd@80O63eVgMA|`7viFSV3ZmRpY_8pOoLm0i@%=q@I7J=7Vq5YX9ffA z{>R`WG+DU(#C;6O|HMaL<vBfyGwWTR<1xth2vQzc#1c#wRD_Fr3Gx~t@{bExA>g9l zl)V7Zh_060KjCS9biA=f=<m2LwWy{MvTS2bcGtW<F=cL5+`&)%{3+>azMILnJ&h}h zly@(WRadr83lyzrB*7h*#Kz%c#TEcwR<x>ZLH44Gb)Vv~oEAv$QE>6AfHr(F(C#@+ zLJlGHE;Y1|WL2(ysP_V;dWc_?Nl(dVTAaYOpjag5{{*~1y#T?AsgabJdOGqoA-oeB zE0oxN_!V3X&c0eE1?A93*;A)ACcg=udm8GzJ~h))e_kxCET|AT%Htl--<TuV9Rzfa z^071GVO@(exBpG~TNX}-IdM&SEQ^@K=6i&j@?MkqyZUN&`-l%R!)Xm42?)i+fN01I z_wDCNpZfL?Y7SfAi8z&ygG>e2VXnV<@TsN3YA17M0e6&-Kk=YQOE2LMDBtsJQIke# z@?QDP5g#LZ(1S@bh&gBDacz8F<R$`ib41O^&yN&Ze0o48Au$pHJkd2yxShzVEC^{o zxEVj+u(q=JjGFkE1kP-pE9bY?pF3$vb!4W+X|~*Nk@e8)b=`MmH}mHn@C!4WSGTqW zy}rdoj<Tq$cG0bo;KZ?2$&#XT?E3x2QVTP-Z@!(=FWS(2E~PwL<nKbmM4h<g4n;>` zRpD-jIg8-ap`Ym@6rNlM3=JFCvr)2b9N_9ODp{J#8`v;h=Es?IOxl<xDTFrEW^1u2 zMHxsJOkDJckGK%`L1l`IF<uffstv!sw3x-|G|q}ylq|DR7V4*W(?-%}G;}P|mQySZ zu*kP!&LF}Tk&YDIA0ZWw4UT#ZE-}&+=8y*s&65R$HHj`57P&hy;MCPVibGIFLm<D4 z1T+fqihrK)18EP~kj!YiQ&Cbsf985*mJvL-DC&!DWNiP_zZU+IQADY6{yFm-TgNoi zS-o2V(M4M>xNiKM<#Q9_2M;_jSY<GaI)mW$pL&2rnEk=`q!=(N%~kI`sC=rtDLn8} zu-KXG?La#BaBO_s6kHW8nX-Fb%j(vN)otM}^dQxZe8|KrQ8!qjze?TYv)4`h>UH}t zqe$Y&x^->4;JRt+*3Xu{ylQW~6s%=u)@<sQj)|Rdsu+M@AbVYo`6PmhYode*<Rvu> z9}!qmL7OlT#T4rTQru(OPi>~6!BlKwMiZNC$FYcG5yvTlmyw#v=M)cWYQ~gfFJVt> zq~`S7oR)6J2?icV&xW6Z&I8CNu=}8Y!-3V5*oU(pJV!{pyvacr8HA5P0nDoEQ%(JY zi_HlS4K2djpeQwr8f|LDf-$pdJEIqbnAcQ(`R2Mwiz8zq+ZHaqq%>Mu7wuYe%n&tL zfGjDLMa5%lx}tTse#w%qZMbXkq~r%<8NgEgk(yfXgz;U~-7DFX3+bnQ@#AqBY=^OF zLbS7X)|dq=R(4l+ji2DHt%>*r30Rp-(iA+JEy;u?keU%+qc(@`QA$BS9Orf!N}fVd zAL_Iua?ljh5MAJ^c}*yLOiMzDF9{(p(30MIi+m$<`Ua+XOL>c2D0t=$9GupiRQ`FA z{BOl%>K)}7|3O^Dzk_}@<DC>em{Rc@>6mR)GzU+fJP3!_lP56}Ebt+|2<0=uUVxPy z3)N6@44izF$8~7*yh5H)fjBg#!<YwNcNFgJ&FCX$+dv^2(iY|RlLr&cJ?CvhDiK^b zqdxmD0JgNT8)>VE4emB7mt}4}d2r)5g#{ZnU8q)|NhnorPaQnz>S+LontCn2s+La0 zh$jQ|3fkihRKrX7xJMtz8qh?orW`ed<POS%kXt~UVzouoVAelIN-D|StN)trSa<!! z2b%2WVza&Jz{S_E>rfqDgrtxfxOwvIr^UxInxzk2wXb_tKnHl(z^v|lS3R^;C5-qU z@k^Q^e256y0(|hy8uo+8d0&n6hRC-)<uiJi3S_C_T2Cx4r!f779Y00Q@G&L4IF%xc z6zpU$4l;FzD=A5nW+4)h6tI6zYu@qv0dAs_vF#y)UXQwkxe8-fM7yQrevJ-jLqq=M zC?}t{QSfkK&q&8wc(VXjAv>)pyDz3Z=lgVFfaOs{79<SSvt0a^8ThZFk~CRQYc9M+ zUHta13$<>aG081CD(x1Z!z{a6rfg{`f{nt;>Z~S~76JTgmet|iqonNy9qSRCrj5SG zE*k8okuHXMA1b|YZ0qc>KB6<%`;DPFQ>HnqYN&4EGLuv20mv@Zt>Scu^WHjG$A{{M zn0_!1B4y#@2tE)shK{KGiRKDSUb&Ams?2};;|q5pJXA^P3}#c(A}>+?UHMSdS`A5u zx!-7KdwaT0vc*icx+RrkWvS1Vqu=l9QLeTd`z1pXyttbcEn$YF%gs^<``o$khc~%U z9?(+A$FHjL21BG2Kpc=@FYF5APed6YZ)jh=UwQm-OL4H}p<gSH|62Js+J0Rc-0;2D zwklyDBa6wFP<U{L_zeBA84G94`Z2wh)1<8KI)rrqF!hkIa#-~wCwlAiO+Dh*HX;Q3 zMb_YQZ6t|qB0}VU;c67FDbPLRHiW-7;J!xONcZuZh2In?m<zv;PlGom$PvmqOQ`fC zzc0Lq&#AA&YgvQxA}@$Iz3}@~Dk_><%olMV739mlk7y|VeJq6h({N-N`F)AkKU*9A zZncuEumPCb0)>TTg$*!DALN=JPBdym6qG@%J)>S~Clne0KH`mlb{f%P!tPP}AjxA# z93;`Q1V$D?)kIu!LsQfhjw9EQ9F=<QgEx*9)_Z^coaIq3>y_B1`piC?(juo)nIC0- zDn9&Z<}dFxHQlKEWj$Lbgq~n;oLYO|eW)MPm|++FFVI|Qe8Ff4uCPwVdtGoTV=nn! z<sXA@XQt0!V@lY!*!!IWGbc*V#0F-9yuF}&%1mtit@qx`7O^ojU}?PAbs*lLLx{l4 z>9Mg!5}_H(v@l9y2_n5lmXZ?=E&S(lJU6Imo&ZWZIn@mAKqMS=Au89C=0ru@=+;YS z)498q9ZI9JWB0j$+}686F?+mvy={HRr$^I7WzrL;!!dIDMD^t8ryc8UdcBwRSe?@Q zeCZwRQ~JDm!Eo-)4?J-5xd4^sKe}D^^(*(gg=;zY{*Cfo)5#lh`mXYC@C%ts-TPOr zx4Ya<b^dd{A%gZJkwN7csDcQ{QZtcq!3W$l`JPB2vR!ctTxBTB83d9%-Pf>5jAH>O zc|Naas2cQjC5<M9{sC(wrwOWz&$*SHEkt9Fg@C&fg1sR7cQzB23SrB<+1Mv`o|>qX ztN*_<Y;zjbbS3;ng{(af(M|Ncu$XKIs^uVa;7hGmT%Q8gJteBL4<WSV$%eFq7JB#> zp0iX-C5(oALou489mBshd<ac}LWi(CgsaDL(eO*GXYH2uLp{vr@SV&-2TX_wJ$c zu;DVWH;0OocbL`LWcxFSsKaT)I-4jmq{X-c2t|aJQkL}QXiTVMz=F`J*S(Tc{UO0! zi%CAn@koN|GR(ehQJ(p;)$Op{@wSOMEh&o|_<kF|_h;qZJFEty)ADP!>Qx>8!DwP- z`FJ}oaQjgCpV<rxbK^lLGrfI>#o@Nx!OH&py^S(Mo<6#&dsVsr*A}PIAih}WFPR&w zCRp$^BQjucQVv0ZvdTb~5Y%*mLkorYIJsDrg^}#t?y#MKoS(VfIorvSE~hJ+Nkv_H z1NyT0bd&Z4`Byk{k++vY9$qbIp;T4E&6tF`tlp*!>j)C5KxYI&p)K>A@*LYD^nxH$ z?vczftYFCQBHl2#E4np$pk;es%l>Foya6Zs>Eu9EYEz!e5Y{R^h4l>CRPYp*(qm5H z=D~}jc&KkX?%Ns_4@L11PWDH)q8*0URaN#UIU9C%a`k~+cScW=kFDx3OHQ<-c(1A| zhLPT?d~EY|Lya>!Q^W8jeqE%Xq@>T#)`R;Q;n0=BC`ofPQDBM+{rFksZ55a(iGAa) zU*eU+_dJAYMzc*kC0`CJJP^FOO9?7Xpo<{uSO7rZNrA__;wfikngXyqdcC>NU}wp6 zrPBc|2Xff6WKjHOlr*OB8%+b_HySNtDX$lf;WU+r55_k%G}>I?y}14c>;mc66GV=~ zB>p6tL*)LIuB-?uX}lCp$PRoG3NBNh#Q-2Qmv!*o*&zk*WvQ}QR7jc9RyUZv;eI1q z1myA@D>js9##>)#Y7`z3u*P$CtoC0yo8w|Q6F271w2yF)%8KD0_2xTV;x+lRX_)S7 zLESy7mmECL$tj(~EAaM1nhN5QP)RT+`Em;B3)pSP8(VtVYgUKyj>BSg0P|KE5JF0S zre930DlR@=+*Q0v=*uq{`_A#ko)-3hEcA%gLXTvULWp5*D*ZywDm-z#xOi1heo6D& zsfhffDTW$dt<wT6I?K6nu#Yoo7L9Zz#6jgVe^DDk@E&#s&6aq<u<v30z?vUZav1mV zmcxAjlNYM;OETPFQHtj#))@nVNN2efONy$*hzrn0!poA*3Oi5yi1mOT^a1^5_fM}n zuO)1Jz+?qPwpi0!_u!3{W^+J@jcBg#<9<+r9x|)+#V4=nxokt*6Mrxxl?Pk9yK!tE zEGj}ezlf^Np3{E;jFS@@NwTLfn5^M{0`ZS~9*#&uMS&a?bfaj*P@aq784ifB`lr}} z%)gz6no)U&J1L&x4vWH?0v;1HGs{yD;uWMUKA_Y|gMs5JpcI9zBwgzCDQVYKmy-55 z9hE|=@;H1!ljLAYKA$6dPCPeKrX+(wB<hYtGNBPpq4^DSW|>I)HAE!7yiAVDOsdl1 z^kJ2l>S9UXuCtekeIpWyAb)r;s3gmj-+uKnaX)3%EDkWLFD+A&-j7eww|<vz3mw@+ z!o7J-i5e*B%!gz#%|0Q%l;2JabWbDxCwQ11P$bynZOG38kCFJ0B`TK7=h@1d0fA4t zUfe_GQkg(N2rHK?BVnyiJtW0*DPc@WAk99n_)0`HBeku?<qx6*Tz^sSo4khlcB&wD zP@&d#u=Dyiu0n<sv0C(6B+2G33YJ+9JYUaVw;PP2Uk)lr>&#xTfkW^^2cYa9_rm4Q zin3x4(yLf3=0BY<dnio{QV${T43pn+S$0@l6UI5MJFU*wn8t_iTTYO97Aj|CUP)~S z3c=1mw9{<1Z8zC=U5^wiGG2gWNVEn}dkmsICKKgRnemaDeXg_NhCtL?r$q`U9;*ck zNzw*Eu4gql;vky569C1Q^VU#J*L?QlXO2Nc*o53VM!Bk|cFAToo|-~=ncd^G-UlVY z&B`rw=P?ZX%UzbMtj<3?{QLd-BID&ICK%-6iq&&}<FsC7aVb|nfd^4krfCFD&TEjF z*5U+aw;`63ycp2~$m}tW`ix_$*NO2uJxZ4t(lr4|h`Nue0nbNrg#^T!R($Q3C!E%6 zEv~71yE=<xhi#M2ZZilwu8c+(?k$aWH8#g<=Z~E_rmo2G+}$qAwN~eZtsQMnt;4)f zZ?jrNU!r|k)tWtys_2}$u}v*KiD@u1toiyofk&w|9yQd|Hu&+aYmxuPB&-YQmo6x- zFCXLc*qxDJ&6o+Tv&S5IrSu0Dm(%)~wme*A*E-!tY{>T{IwK{%rJaGAcrfB}x_x6~ z?NgR#`|L{eSv%T*Hvmwtyp-4g+;<#Yu-bvpE@#a&$atCK%V}j(r9`g}0;71P)B2$A z^>07GDy&Am=Vx|<@=_YGAKMS!>s6Le->|zU{Oc`LG~#QV)<2JRJPc{DYNOS8_y_LC zl{@TCr<q;&YlG!-i)(4O(~2K<xGY!Gy*Qk-h-5x!4#m?bFSzwEsmm!eoyrI;arOuZ z6P)FM<=g9n`066vAkf+<xJ(^pDy9%0aBi)z@;ew5{WO>W62$lakMd)^-st?P%lI2t z)Hp`>W4-6c4x>S@{PH(^%>AB~t9w+1&30NhSzJq;*3A}|Fx76iJC$XzW&Y(3cE8JR zb!47(SvFgpOI(&s!0&j{;v!y#gh|u^kVZJ9B^rTLKq!cWhf6jz7>B3{VIyUy6St8` zt}7v#!kob_%sj7rhkZ`%r086h2XZFre!9|+So+}e;-=^KDM@y(a^Sx%DRgARg`+6@ zF2u-VGLQ-ZWzz#K(++!YiRJ=~3|GVj`!3)x5$zUkh)3uGfML}Os*EV|5hF(UJ{A{; zN;^ys#azEYS4VvUT}QTW$g@cuN;(_~!om}CfZ=y>M0q>J?!6&0ot>C}-$GouFs%Hh zTmXOk#{D|~3BT@JuRegi$szQ;LUnyKd=u@?UxB<`_Ui-kIc(E;I{yK`ZY?|iTsd&P z-Ds3oUP!mxQvQ9=j3s~$dYyr~$?Q9b+{-|eMivJd_6zn%Diy*g%^dgph0WMnjlyQm zYvbd%&X(IOX1{WrZT72MGXRGk%-(<@szG$F^a0wjK{JzM4tXi@39NXYNK<*-69LR< zHA_JJax@?fIF6fq^$B30HaB2{+{uk~5)kSg_1^k+EuCO#z)8DSy4iVj*ToiH!~Bac z@4lm}>JH~j*Yjl;)*~sL(K7eK*OTEpx-0KkaM|Wbua?%#Xj@*tK(C(|>l{C&ZhWb0 zMo~pu{jBOKI=QucYE5gb!YQVnoLhYCh8f$YkM&BY2iPFc51wjZM;I&Xyq~eb&xB70 zb!DyRW$vzMsVFjQ1?9U8snP5KICcCp+z|F5YaW9djR7^>S60XQbPOU4qinn+8ToxO zNmqH=nTD{Wfv@awt2Of=f=NR|5D_7WgKt``%4VxKRM|4nPih20e86-edqM8Km6$g( zF)F>V8F&FIKjPI0<Dq!qe6g+&rn~T5K8bHudaa%LMQM3{G$@LESPD9pDy&{Aa^|_= z(o%wu3=JMtHe*8&6wbUu(m#}=PW#bTM#wZ%HQlID1LTLMhz^SpQjlexCb;;d8aTLA z1w(2RL)0>*Fu<I{fC_sUm=6!#*o0&TO_-p%2HLwCT+##In`x$0cv9vQfGrs<X5j9S zCJurg%8!3yXXa_P13C1NG|lY%V2_YcZr0jNR)goCuPOa=#{TEnIm)}!-@osDY4dN# z+9fwDHxHENK%k(BlY6M9r}~^%|M?uj;WPk$TD<5_D>5JJohBIjc8gc^_8vam+bbN) z^b&a)S?@-wcXYVk<j_uf%B<L!S8s~C&99mGh3)Va>V5Z!+PTi!3PaWYx6x{?3=UUM zy8MhLFoOTujq!`V*3tMSxoiS#=D?7Pp0%n(Q89qC3)`8F5QUBrh37*5=v^&^@-+(> z0htu_oq#P)lq8+7G(S15;V0Pkj8^Mm@ObujJiy12bM!;%^Wpm2hU;Hg%d@u!H?ron zhpV7{3eP3fX1D@MX!O<)`U>hiqBVv!FrlFe?i{Tt*v_Hf&)NWd%*!uj=XwWu1V=%m zC=E2Y%d?O9C>(f5K@*3!6y2GKU?CtUfo5X3XhJ~Qjcg?3QbPGi<f+SB8{21f)=$se zbCybf9BAp<HLbnQ?~L2*(b(b*cEPi-ruUk|=kLA0RH=S|A?c*Ey*s`450iUm@0{Db zbhJ7r+IOGdJ>IU@?a)b<UCVsMH*eT-<XK_t&YkQronN+_EzXHcpULbTn(sq(PjGMO z;kth@ohzuG>x-J>E7bj!{QCXu3mQVoR({~yqt$+}u$pqisO>>~0Lk}B@ByTU1@@rY z>u~r$XBHw_V;CUK2l9wfE-|f+u$d`;80<3WWT;92N!SjR2{H~6qAwgjz)%Q~BE5t{ z5sXHIfmk23I8e_Z=spyPNqq^MSm$uq;)aRIt1IR@rrxz|-rh(cR#D{NJiasR3>XYL zQ?c6>sGBu5Y=Z}>%ZU`B67$U8nWmTEokDOZfCCqnPOb^fozyaELUjAIxk6bm033#B zK)9kPDhNB1%fimKXjQzX&F%7()mOHa`eSoz%C&yCm5&2z3k}+W{3v)^aQ~O=ST2;{ zqh1e}hLNfmPB0wKxK4n)$lD{=B-9?QB4!5iAyd1#&(;uI5^TqO<*$<7Dnfn947Tvt zS#<%IyV#^N7y{04=lIS3qKa4`vUlFHyQVtkR$QH&Xo%Y!jyh4ywM6DmD$Evdk4Gmh zpTE=U_G_b+^J4zew#xc4kIUUw6R(Q4Im646I|U(HBwPXSFjgH1mI-sGZI4bs!_5s5 z3VlxJW8l7`)tX5d8S9bL<VMXsn#VOi#VBcNB+qyZk^}(U%02L}LQ=a(6R_QyvPQgy ztoq)8fxr!WxP{n9(lXE$)z}Alfjhwh6a|4~^@+yjM#^bK0U`BB9YEtN9HP{6<TnIU z2T%ZMoPoX9#VK<%-qk>fPC=@;-9uH}`2fVh;~5}+A$u3Um=pMOMiBA#5(f+jB~MSC zn)!Lx?D_0_9r0+`pq+|DG;S}OtTT^^ggZJy6=Tf00YNken;J_z?vjl`&(-CAEmN*Y zCIyenIJNpZr0o0Xx|%6Qw;Ryo*9)=h0Xy!_Sk9T#&@^8c(nn0QS=duDz9H!G1RKVe zc%JC!;BeL*S`*&RKFe1V{`u~DM2I|G-q7&DbY%s5VEO^&mde^<N0gN-fA<TvGUmVV zNTa7}Oa=Ss-pVS^lZFzj*I5}0wqDU1jKxYO%$?E@U}ld=Y`LqU;jYGv_`O9nt+LG~ zx7I9s<gvxoZFJmLy%<rEl|TELZ<TLT;$QY$Ik5!KPUO2_8{4V;smw0;8Pdc?op4Cg z=WCVt>;UG{pRiU8kB^nWzuB+3UUR4BQ7)%rO`tFm8O&c}Ju*E2W7p9T9;I7yo!5lX z(M02^IocHA0|sI3XLKxj9>WcSSUt~xtJ8+~5J5C2jfxN-A*?|}r&Io+23KzE5u-v> z$p^6hGe@ZSLfq%|`r@qnoO1>zZdIP&vYv%jtSCiNV75YUt{d0P9x(tvw|d2j+HuYB z@9tg+vR3!~V7#L<UR)BNHWPx1km*~xRCqaHT|V*YOyKE>D=YyVw>~Aj&yNQK8!ugN z9UCp~oxz?gj&*j#ii=|%ov~uJU}aN%okhQriOygttN7OrFRS%-*41?$TfI8-OZKsH zO_fIsv2Dtw<NeV|tA9Q#(9--?X3MxlBDl!XV62$7Y}0~hLql}IBiJ<sg9h=ZuT7iw z+Vsq_zg*nfrS*8UU9H<cremGkt;4Zog<<?Zm~Hl<O^cP!r$4$7Psh3*?V^`-E0#oi z)Zf4kDYt|LZ#CObI(s#5?mu8Xi=%guznC;E30FN_P>H7}(~ORJa!MK2%;=)9#Q0e- z_BW5)m|^T*v&rE5TV+7}mC2O(gmsyWM(^LM{K_LvffdF7!z*rZDzod#Dcu7mwar$` z*4sUU=djGz-40u=a6w4CiClcL>lMlWR2F#kgGfL)<rV}F(!6-_;RNGX;JnSxn&S-O z2>E^!$C{h|!XpPfWluYi?|c7qNc3!frpzTKbdDdEx|9tNx80$qoyY*K46?85f0sW& z!7aa2ZZbRGWXiX!R!fDr&>YFc1tlDTfX&`!!oS+D8#!ILKE()Z+kfC_7D`;pT=h~J zBhY)eOM-}%pyjLp^|L}=3dbtO3hGJ%;x`FW2IZS?*ETc@zhv(z#m_v*Cd`@z?SI%G zDz$1|ag-7Xu5}ewtF<)b4}(GsDA&ELygY7vMMZRq|I9nAAvVB{pUSXJ24sg9wMM(o zrY%~PNZvB0^154YNvyzv?6VoQqUfS5)sk!s6`k=rvd$y_Iq}U&@DFME5PHT1kJKP} zEE^;b^Tc&c&>7%g!ecN)VE<V8w&Im*6ffj)->qyZlqJhD3)xb|seD(iW8I2Rd5A4z ze^$P$IK@fI%gP_wWaYhW%I|O^7V&L8tQdZqg7Tj9rt(MS6=qfbuKb7c6ILP~P=2EP zosEO=Vgg<I6m&_472K9B58*#Y;4T=6CS)C@B&9zje>afln`{`kuTQ?GZ?HQo+QOOT z9l{$Ong7}-Y~1)3dncttGLMU)9@dYzj8x6t-@Ho*98n&*MR;;==JZ~1Z|3qI;fhoD zo;ZPVIc$SdeJ>VhHsNXxx8JS}#q7<YT;{@x@)-Cc;*LZ(k*Z^$RD_QmaZiZK1^6nV z*rNaIklUB9ekz@_50g15>!uNUUwQid_t{L=-8{Fsd9E_Udc(|1mz31cb(?I^6JaRZ zOzye$B}*=ydBfR%5-yO9@4d2IX<q)ydq$ZbvtQA%;N=b-?0)qt@AHo|r@rEAM}ASc z;LP{)Z;hDO6rF-G#76qdH00Vc7qz0MI#OpEyJO#D`}RF1JjQo2*`S9qS`I!)KV|>r z(+>fwmj~Z*h2;hVYe<AgxXWq&MY%v|Uad4KO{+HxMm8|ye!$LS_p$TDBg#wt!uK=t z`WR9>of&)GC0`+b19}sRuI!+(055HHC{*^C?{$<c7ZV@7=|VqO$QTXeI1O&mWu<rs z@YG0p5}(Y#?!ZUTrRBH_NMQ)YKYpQ{8HozSM**aKtbSKhyrei*F)MMQ^%rX=&k?0t zSFOD4J@?F-@ya{ON7Z#nXX&a$+k0<MZd$ceZ?n`?EPeUso9bqCC*4IMt@95;qTi#n zKM`0W*HniGl{@}<#OATcI>8X}1Po$Hc}qp<{*!Dk8*^uyoeAHZJU8U%?shoMt&Xib zYl<(OwlbyH9~UkQMhyC~<8{XJKyk#ND=F6NBZJPshK^b8abrb?-d)}l>3Pm>xa~G= zd5ie;1B$=2vDk4S7Tj(w853+Y)IY!XJ2L~drKL7goin<uZmzqXlo46mqn=ayiO@-G zK}$BmP78jzIl;r(d8ob%Er|9ND05~rsH&?GIg7y@*r0;L|J1N>zKq9^I6`gfQW4iB zl2x2%Fos>-71gXdzIe8N`N3XMNYqZh`AK(2yynh_YGNH8OI>;CFJ22*)VG*q+r7%> z`^<8{Humn%zh7QzyVl^S-u|WnM2=W>gQWLXXqjH?v~2l46QA&xl}Y1RW&YR{?x?Qw zy0<uysb=a0=2aczm%Gcl*+fr3E4!g#D{{O1IvC<)T~S8V#fzlgUak3#mW9E(b*?GB z!Y`Y=iSXp0x!mR+SK4{wuPWq5ce$y{UA)rbj(OmJS3f)p9>NsUFij`?*r{2|!NL28 zsjd^jAOi;(BavJnJkV5@q6Njrx_pnV*!;-$`QZm=?(7`rmYGiaFE&qk+!E>-H~;02 zBJE6QS+!@+L?QH>z_N2MTvjXVl;wk&Q>BefNa&bv=T|ex#<8>^A^`R?a_9izLs%{U zRyz#ZBUff=dwWf5MPreXAx*?dJ(G)?HgsNDz3k3))2?Or<+tCQr@YKpImX9s`YD@k ztXaBwY0)>8)e|o6og%Pt(%Ag!lmACj$e`|sn$To(P86!}giq}j<vyduYE<sF=nd|E zHJT1Wn_WpEzB6TaxukwlCJlsmdx|iiXXG@!GwZiPj1h-TRs#x|SI7*#$78p!)%13@ z&LX*710i~o)E~1myj)4y@k;bjl8HKvnBni_S|n_sYy^u-CRYxgq0>+a3JN9kL(9`Y z{Ef9%UIYG44HLEL>^n)PM^>{TZ54Di;NP@qDndc2gsadLfSJs%0vZVKL>I%ad<WVy z#-kpy;v7j~k#Z5CA1b#^{5+TV@H=!0VA^qj|3L>q*nDoUyd%E&iq!a(OQ%d)xUk{) z(OY-yczEWP&E>UgH_q6-y0LLVWXd7s-ICJD&CSscan9_=7?KCFDf{<77Yc>TaU%cy zy(5Q9OUuirR3tkZR`1yN3+b{+bLLELcAB(Dw{0CG+Tm`l`qF8*ueg}y4qyR}!j*y$ z0Mxzk?aWg8)20S@k!zRW%<Ni?sLX%QoG&zGb`O5MUpOjWF!;W3H|kHc30$ar0B^Iw zZz%yhyOp?JPhMnNx0Kxjf112LRkjoG1Edb8Q)tAfZ*iTBPfZRAv?T9(I59Mrk*^b| z7zQcL4E0%P)7U#9pD*NPCqrIu$Tv7p)z-SStxZ~xtew-gwCzw^byXXiU6&NTyEQeq zF12lj&TP@mT=V*xnL3ME$BxnOZB^B6Qi+e=qyBrjtxD;xZfmP%->qtMWj59&|43(l zRJX}G;SP2*@$+4~exA6>qSKlWR#hD|Yju{)(cDwjt*ux`iSPOxO`=Czlrud<fhgRo zXR-glfQFVtOK3YjZA^zsu^7=E9XNF;N5nQ@cQ?j~;Q{RizXMuLKN9D|SGpL;IGxbK ziC?^MU~0kwh#ZR%WI&2jVtU+;l@!10IBts%VMTZaF;`e(LFMrkS`uIfS3ew&sVf4O zPYNEflEx-RqthyIl8DdH6}%7c!E@?AEf#1`GgcT-O1u-FQ%lMXxXrW%HMB$EpaOZk zzIvS&vM*H$=m@A&a~#Pkb>(#EbK_y0L1SShwjawriLP+%D;20XRBpcdlLLkoHhta{ z^Z{xF;tp98FCrCAgdqm6q(YM3jowOiLFwCZj(R6>PGxJRo2b$0UM!pZ&2S<>8&R`n zUrgV^M@nVkc9Q|AcjZ-*&4_qD<xWTeqNp<(5Xp{cEI4E=Ng%ndDCiJQZ=4<RhnIy- z@iH4T89Yvlg;~psyprTL#ci!xz1CY4EjF5*;3^zNUi(%jGmI$`S$T1=L|_Jo&Zw14 zItOEJzr)R#*PxFx3(`$`jY03&gisX>$p(`w8qDrlhMGW8GnNH=QI#WB9u9gff}qu! zbQZCAL9^FW<rP_JiN)z#fV|3Dy(c6gJ(?^C6?Jl@<bKd#7t2cZRo1$=WYIFwZLHgK zb&bzt7Vu52NAwATL-5)vSjYU#y`o8L5a5#_nnd;u!Qjx!23aeJ)+(pL^aG<=)B;2S zPUS+gY!Pkn3ls%r6eOtc^vrG*5^k@c^ZTNKm_D|q*s(F@^cl-bYnHm^x@%@sG!&QI zpL8WFs{OLDoWWC;8LdklrG8ISsG;0oaSCR5tdxslx%-NUfBh6+b+zbp8!sK#S!<F& z{G6paWbTZ)FR+>=p|LAIrKz`K!ZhG)m9I;zuz}q$8H2&*a%a$KunOLo)9!W|Th6I$ zoiwXyoGBg(hea#1+5+~Vw1K&p){Ik|XtHRPZl(uZm)?Z-H6oK4I$TihaQbaUL3@d@ zTvsiRyTI+9eBZ^Df>e81UA(Ofz7Xx*r4?S!lybd@%#`(wOq^QeLacmJF0J$!MEwC9 z1W4TksMIEu*=ouJ(PUsHE^jHTs*r3}vyWK=vfgKd1B`>24GzQqOWS*Z$5EYa!+WM| z@4c_KuX<grx>m)KB}*=Hmz!{J;EH=$7dkdzzy@rv=rM+bVv4~K1p*-uz`UjeUW!S8 z03o3UjIAAi_nDP!;gG<4{nzg@J9DO=Iprz$b3a-so`jY9I1>j66mTJ=@l)$fIt8a- zfa8&};F79ws#SG91uJvZ7d3mNzp6COmD?@8dbisIw|K)Gbrxs4M4>B)vAXKw0(-Mu zFK2j#tW2*P9+68698FNSO)Il33nn{_;Vc!KV{kIS-w>VoX*u#mvr4!&8GV8y#^Wl3 zoNyfBTrAIg#z^Iij%YMePQ$|jqGkzq@_DtxX0-zLY~)PsF1^gC@L183@s-?J4nk@) zXxVCm$~IA@FA9egYEEek1ls&&p4I4bq;|DcrEAt26jFy=nx$o>d1Vbz!&7DL0fk*} z_0V+QbIY5}SCuV&u6up1g?L;!`<rL1Ubdk6=)~gI7{dg@sCBtX?cu}Pafz0V4XwPt zIOxD@IaI3lR<*Cx>r&}3Di6xhT1ghHCIw(Tse_keCZxa!8>CMEC@gPmB+B{eEN#oA z1IAc_fg+2Kz<3QQEg&oBsg)HQoGB8eXNjW;IHZ6pDjz~C$4PQ#GK{|bx=oh`b&q|v zz1ET?{889VCXFt+_VV?SFlU^%X2a!uS)_n{=YRe%F?-2%{a;~HXGR@9(J^Y<iec+o zYjhv7yNJTvG-Bg02em?kI$N4+;<;WWvKQ_js&9qpnNmyV#GRe0-ORPcb<<?p4IfON zymxxDRzvtVUca;9>pfr8_`djf#7FG;gj{on>7Lh|!^&$cLg14JiQ18@Y;(tRcsrUG z3+;eso*#O7N`aS=bwnIyon$&@w6X#g2swm6!^;6&2#s}x&kI=yAv+`PiDpH|v|Rwd z7_Chj>zYZtg~AX`Lo5c=K`Me|#9587g<HAnqg9hSi|2dYIY!;pxy`Xqp0luW>AgM8 zsU=O3_6aq+x~*BG8%oC%=ahI#O20kOcJY!%vgm{TTjzJST_v1)a*2NQzy{&z26?Mw zY<ZqtWtYkHdZ(e&?hn|L`H9H|zWOC?wNq-s+K^Rijzvqe^7FH5@~3VKw_JGj{trg$ zmpn=MtJ*r}Z_R87r|1UifR*GycX$zVd=TilX4C?*4pImM#2d=20<#<DnM~QBSGYVO zRbr;$aF|RAIp9oak5$H&I|=(qn0H&!6*ixg1Z`gb7gjH8*Kj_I@HVwZlWt?+V_jz* zCzV=VC4S*64e(9Vt!?T=M;E(hM$&o<SJ%mneA*TWm`^=~8}vAJ9^KYj3(n2)gkAq^ z6E+HeFjy^lR<lwexEwNtwS(W9n6YqS|7QkLNw(p&hS(Dau<++{nhqe8&tZlg5X#`% zV&KUYL`j}NGY~ztXSU$%I+>z=Djv%|PD17Ve!3((nH1d+{kg36>_HLwOjNdpL5V*u z=6|HfKUmY*pv6QRmWYl&qh+8mnc_e+Q7Mrs2td3+mLH7y0U=4O)brQ;?-hu4YAon2 zXoRmw@qPYZJ*BY<5Wu$0BdK|9;HDCKwmrUW+v5bdkX$l;yD&#*1abG51&xgbAU1Ux zb!6{$;b3k>%ws31MT>-#o$a9~Y|A_=ctwsQ&Yq%!2ZUWXT|}Yx++VnbQD=kChukQm zE0T><5$KBlSO>8v$U24N;?uB6nt}y+0ebqEicfM>D5AgY)k3dW-V1sV^3vJoNQr&a zBJpEfLz9H)gYk>jT>&+=S#6;qV-(Ai>2UrO#wOI-Lp9YQd+mhm0yu=YN#_hOpOLq$ z?L9sx<ds;=9Ux9$PrG&JPmB?H@EyJe(g7W{@k%lY+b|#?pKTb!3XOA%Qhp+YtV2GF z8(_=<gp<md2{bu~lRSh#9|=RQv=|_p0=Ws+o4zS~U;pg&y;CwjWC^Di-qGl^!aIkQ zS;|AgJ6fGacn45f#i2tm=ITiZJ4xt}BA_?~kfTmRLIXP))!ED7YH=OkBfJc>nRNOI zjpoF3Dd1?Nq=(lT)F)18^w>*EGJDnP%wFMT?A2>doKTD3JjFkScnu?3s3c6sH9D+G z#SsvhI>TaCS~25#c}SF$Da8i`4r2pcKmRPRctm*N(ELB1MmX8lt1(|jrVAGx-$zr- zu6ULhZ_G0o{S&6_I(gly3$lG$*{67$@<;matPy_w=2j3Nu7BpmZ`Qp`-1}}Mwm)r@ zGTGU_k*}<{?&PjgqfZ+{pU&8%Gd}HH`ZdI%3S+VV-*Eir`nb8|5H<~F?$92LJtrl! zJ4>--?h<1JiKIVCi$pIhx$7(s2YNCi$vWLD?SXxuk)pxS>T{t0Bc@1f1{fD%mj=B; z;XosWnIF(9N?{074C0VzbMT{43=jkn=!aQWX%Cn@nvTK|UT%DjHzyls7Ntt(v{h?$ zkDA?f&?g&Ss5(v`==gmmFs|OmcH9TPRnvXPokB}G^#oBq!5}5`!PT!K7QtkCme*%z zAwPG2$`y@jw66f98#n)Tc`w2!NhEV(<}$+DjO3yxo<IjbjraoDMy^$I5jLPZK!c&C zOR8BgQ1y6e1al*7n4HZF$OrPY!t6s!pk|50IS^Us97&g6wglnjP&t4p6FUOhK6Dzu z1~AUyqFw?mhN>p;e=xQ%bQsx2+kN)znAayW6$Ci4qlA^o<T>C@uqVxC@94?~JFB#t zbTC$N#^8$9-OHxg9m?S1`8#T)ET_vMMzxja^>TBWPVXttjkz_9)TmJM3<5VCH5#Md z8h^YiZgy#93<P?qK`S=~a_Yi0g&ah3Mru})tZ0dpJ(2u4D_)vY>B@mf%WUiBbrG+F z<IQTdWx}vR7_98UVYxbolsB<lc0-fhu8i&MCDI*wD=#%c*5p`~rDT!YQ!}a9%@cX3 zYJOX+QKJqh7^_L;WQdwK`21C6lOw9SK%q~;aL(K*b@SIMb(C0z1(;o@fYm{A`X1@` z{0P{X>4;Z|sM-ba&`ZK+bYeOii|R4-PiVHNXH+FB6*2!InG{fP0yA<503J#ROk-<} z*re(pQVIiHP7%pk8i5N!42ldDFHjEc5*Nj#@f}fyYvLvaXu%m3ow*%!j)9RDtFd{^ zN;wiMdSnK#*86b&UzRKyQ&{-w!X-1HBlZfXcfBwCuU64Z$gcNcD~PmT{W~Eod@OwX z`qnE_2gv01hI~${)k&pSyit&!&+uBMx^ims%5e^pJlBQ?Gf%3w=Wx8!UPH!DER8Bk z%AIm|sIKnbiS8n`&%OTZ{y>XP>+}bPWx4ihTs+9vd|F;LeQr-EaCpYFsV>jMH9gn0 zXl?)4mHFA(eATx3bxo@uUA%&DsRI|cC$G_}(F&OA+WHk5ElBf>RSTFI)7Mwv?s$g! z9u4kp&*n9wdeSRgPGgCy>rnHsxKZk>D3m%u!f{r%SPlz`iRO!^Gz3wo@Q~UKASs|p znM26XjDgaCXie_?gU|l{;N{N*g3kzh(|>vxFm*2e@SoBTk<i_N>C-2kxccf7e68T> z7tWjYCb2(3hP{!_5k7fy7TMoVKJvaHpnJl8NM(n0kkb%NNVF^!RizS`MlkbYEY>ox zo`BJov6a(xp04vSIK>Ni=>41)8V-i1I?O*>+L5Jnm0y=NY5M$G(?`|l4a<c6M@>i} zb05i_8yY@+(##2C{mY-fWO=<K?vz<un`d-QNajmhHqV?;Tk5y+AbN1MR+MQYrETZe zgm|eL{#K|*+QRZlGqyA{(b|#Y$8}U247L)feZ=V1D|eCyMz5^RVzpj}Qu(3q193(i z<n<$3qg<2MzG-ZsIXJQ-Z(A>68P?#bXkXFdHkh)j>+6ek`gLtm^RV`%%XTz7+D3Oz z8rxE?({WRsGFyGT%E#D7Ztkk}8qs~&YcG}AstY1av4oRYfPwxyTz3>nZWiOKL<tL4 zL29CdNzOq3hXG^D2rk^;SB$9?`qN*GS;4(=DrfNjiZSfSF)N6xar|oG8=_e~zLB(? z22go87FRYkja$8Xh@43o$}nq+@j)2ve{6__RzR%(A-Ic64J0xhOtP6tWP0Gg1$r?% ze<Gjh!T%QUHKg6rT&Lo*((xG3e^Cz2&?|~)ct~=_|M;vlXDNNav#D5VCexwB_x~1^ z1`9SqFOhPU)YHtUnT)K$>Hqq)>>1s5FqT!cnZjT$io>v){#=BbB;qt1GGS*1GmWAB z&%t19AH`Ow2g1hGk^bj?K|B~zMNog{pv-Ih4;cdn{JA;*EpNa;bUhgw+xPG312QtX zbQ)xGi=-T*fK3#~AfXu(m<PaK1eKJ8ZQ^LeqNP(52jU!Is)nb*1Sb%U_A;@j=T-?v zpV%jSzxUO94C{7*v1ilk7c#D@(_lo58NLu=_AuMS$h8y78>i224wJiu1$y#_nBhY* z?N1NAx0fjPJxp@yww1qs5r~VnzUy3`LjI(8{dQJmaFo_hZya`>On5()3JPHE%*d3Y z{4VAjBJkF+(2p_2V93OblQHR1l^OFE#d9IPn|^6L{ve`*S1S+xZA@Ndyo$Rrm>bn( zdAC+Ca4mL~b*L&!bTzu>o}2&j&dH(vBX;YbrE=jLQ%~hP2g?8Wq*^x3-eYendnob0 ziHBgAc9G5fXZ*<UpkZu<BO%47ME%#ya2YjBR57T|3&i`-^$arH1CgFaj>ve+;EJJ~ zrU!<`Y~@l<3P*n1t2Mp}7=}V)`*iTvs6`=Jt#jIt(<SqBgm7Xh)Aw89$dkZC&uS#V zZlrAT)@f(fPExJ%;g!6Zmam;QxFR?ZrvDW7(Qyd#5PgSCUd@5nZ&YRGWyFDx4t63( z1@&H_m!FG$Jh$d)JUH#`NtytdJ^|?wH%QOVMu-2~@#2;KTeNt_my?pGFm6X7_tZ<k zi$=X~RCb0If{Xw#dy5quM{7a6A|x0Qib`Y&Ol~$B>Fbxm8m|M=kARQ|rmvt0%^yj> zxl-OAVHRI-ODd@`$*MX#s}Qb~Ox<z;H#ujEe)78f{B@J{TXLlF_?YJAQ{&n1-}<6* zsml#W>*V~NX`Y*J_Dt(3m;`Vur!6dL3z6sh6)Q<^GFj-iI~arAz&Pyw!emlrWp$-_ zp}bNZYnAnfmWI4V*A)qGL~@D{tON0#93{ueQ3{piG=7I=baJ47K*L2e0<hU=I~I^u z4w#xSQ}bt6X&a>PUk^v(nN_Hq_^KsVXqabL;TRA*y^fdwtP8U||3%%{Y4=vh##I+~ z>Jq{W3Hi91!VX>HMvtX-Od@aJf_+YFO;;lC=6GfYfL`VD@$}&MZ5C_I_?o<%7u;d* z?<eI8gcq0-V`|UySKn=MR!=C;zjNUob{k!}J+2sCi;KodWx0F|y?lJX-BvTcJim8A zFFhoYcWXjAsye?-S1$a%LN1(KK&mM<!jL(XV)UV9(^?oh2!O*H0|s8Y5}|>jGlQl| zhSFC)I0?YGN!x?8q>fL7>&Q?L2@6Vzz_an0jg2!4pDI-6C@W%YGFFku?(d6L)P@Tm zj<Rm8+hn(xEp`*uSfUEn{}^j>>Nq(RG+Q@?h7HSFn<bCPg$@`hm^s;16|wLrN7iyD zV}g~N0&MVOVt#EKMc)e_bs+YFM{91CjFFrtSq7E@%wQ2lWXNPi*H1*3v1w4<$#kYD z5DAutU`e!z=0-1kJUqe*siaBJMi`k1_DRrdV5){UBnt*ey|G-96)MMe1Q`pY*tTwN zB1?Y%PhQUJ<Swp5_^cquq&1md8nIbzkRp@E=rz9*J{c&JWhobsvCmygR11`ec8*g^ zjcCpFf)so(o3<=nz^<Qh^f!O6?!S#JCLLey-1((&NVrZoMAs0_)=g?Zy7bbIglB}i zglFg)le&F(zi9?p2|ISQ#@($!#A_AI?S2nY!ndS0nzTeNJSNE5<X~y<6AOFBB-D13 zOXpRG_(jLkYo&Z%7T5LbXI>Td&t>j9uqcNq`_YX%#E1Fe(MvxfwdXto>Yv)%Qey0j zk+MS&10M;|?h;B^q@2af*$l)Kh9@n~*|<94%MXPs-}ob$_SRd%rzHLvdtW&H&9$p< zC6+(Y6s0Ni9qC<Het(Da-pKK*Zur>Cj|PMBy5(bAJooxH476d1n0HDI&v_AL9<T%l z<}t7}ARjh7(r5nDm_sUiRueIiu_%VJeQaMU+kH~$&Q1{tkzkSeSMARJ0XwRtSUG_e zsYFOYTmb{fX$e^1hy2gbllEZ`_7A+jLV`I#BgzZlX{HS&Vd6o7BFd?OXc+wp%}Ivj zE_9}Vx^6-hQRCGB(Jhhw)5zT`ydm5nym2pQWa_MCR&KQQR4=FI(kpW-r1e!*j8dWN z(<zipRaJv(qVSN_%JpD3*TWnUem`v0F#IDm56fhXzCbQOH+(s;cTT8nSVS15RpF18 zJP;Yy7I|g;e0hPK^Z-ZLi}ybtI0R&erI;3Cioii(0<$UgXF$y|!j+MrtHoN3h3phf zU2b+#6BAC~Kdq`Huc>~=?{dP|bgwBak5^Q=lfjY7T})HDR;6N|8AhHZu`6`CCI7&a z)qZ;IOB1!)=&Y)X4JU9L+Ftk%#5q(#{Ir)LzB<#hLZw+Y8J<EUXMmi=Cj6{~d0qX8 z@SC@9hJ9=8TG*{_CV6kZy8h8E|C>tv@0N+XrnmT|LI?BDrrNiJgMIV>QbpV^ul?g6 zS8sh^IPw10qTy4!!kD(tj1x5OH6R%&dL!^bvZ(b0`Z~3*m53liw3!k(9jMw@VogwD zn@H3IxCMnJpo$<*fgcZRqPqtR4puvWt?OVfJUdEYbg*)*dVQVn&pJKgw53IB*Az>Q z!m+aUc)XqbHr`%_wNov#Lt7uNf1VbG%bo9<q{9wv36_<#gkjgWKl>c9%e)~n_b2)z zS*F+3)#>z7X>qaiHCzmBsXI)sS=LqD66%%`SAMuG-X1S0<}JeWvhHw8aj;6~^6Y%! zg`HUrUF8#JMwUzm#~4G$Q(8|MTd)rG6coo((N;y9Ev+Y7O<~bMO{+(&Ct6{&qEI=J zXabW2{5n5fRj6f34-Jpl(5VMf5_?diiGLo~Xm~xJ^KuTa7leYkg8XDY>B{`R2?&O7 z*-hmKNxqNzU5YGE8n~L9mU#1WYqFgDmj~|oQtI%L(xD<M*@KJXno?;_j&!%Lpg=rx z;I}oW#y67tCYqIpyX5BZM&Vm&XI4#)w?yNxt-J5Obq>3xn0z=?h&`(>c`^FbpfQ6l zKqMbK14|KK5aJ(X0}tWj13;BpA_Lbv8qkkmk~6zk_O5hCTzgh@jalI`n_T3w-Snrs zX60=w$e43%>C9nQ-KeEYMhPF8T`u#QbzRGsjV72(-KO&Q*KIPp+@|$T_xjNYUb^pG z13Mj~Z<nR`Y0%O!YQkDI@X%D&!H_wayk2~086dw@S;Zb(BD0H&)Qqd?f8fDWWH?sR zzq!Bv8FCdFe(J#o`nNrU61HL$g~z1#{pQ4}2Z>TR31CYuv-sfG-`;y^)vdyJ51#tr zexk0e628u<uFe@4Gev!c@}eLo6C&iPGYmgJ5jWMBP6}DmwlRI=__S@wq2ITc9B2Br zO%t-x$!(lx=$8_C%_UB`g!>pRT7j{d<|gw%BhSYB(<#F5K+H9`;|;8(G;YFn9Dfnt zV8AqTc76Dt(w~#z>&cBTz4THSV@dy=3>O}w1vfEf>}eIiD!HEfxIddYjD5?5t8h#! zbC`Jl1UAb4uG_or$P}Jg9n!z3T`P$1kwmYf6)whn3|Z6D{v^d;Ln4l5#faO%%*MIh zhqHFXb6xJ7xbUxm6=u`@8_gzLV&aBlrHvc!eqdvJ)8oeywHsO6&>Cc#Q{9LyHjpu? zDfBm8Ow>=YBdcae)7!IOHZcpZ8R~xwtK`Iw>sKksKCO_wgt=p@<cQ=2$;*;=B!89s zP4cPaACfOn$K_rYs)J3-$Uuiek)&Q3OxM_q&{w6?Umb&yl&Yu@HsL+b$lY{G#JDeN z)Kp=`{2<jaQn6c!tjLKd9YC-L0RRat2sH|1a8c#pGBCF#yi7f@z&uwcuZR5&(=KjE zY4}-sK|B$?H%ZuJRJy~g2E;4KbTJ%3B`!s2+@d4(4ENlK%Vy1M$n{UD8CJA*UnsA} z6)l+62B?ifnkVz|Miyc5L?$<|!R=X5KMbAK3G~F!o?6G8rEaN3@cQ(2gO+?OS6NIh zp0i1HPTB1WgTtVEgpfO}g;y6Q3YE>dd{<pwBFAh|+SMg&EI&wUd4o(VRmv2cOy@Kf zYBx>M$C~Rst#Wl%mQ`*2euFzN+Y!(PRk?B*lRc{ckhUVvz~+7*JzTDEd29}5?fTlJ z@I%r0ZRA!qSXo*DLV{5ZZeduDRGF_f9rG!(*|h`+B*M&K3tLv7H@sqDqSl+J*N6Ar zcjWr>82G~Yu*{?OI>J`Jvp%~6Z9=K{wOcinwHC%1pSI~nGv{1t)$45RLakM!1VV^t zvJ7FXL1$%Sdgr6P#i0Oew(E_iyf$Z+o<)#{FX?u~VvI`n25*t;q!8d4Fr4Rl{muf{ zScM|rO-KisF~bsy+VTyRrVgDVKH<*ia#@8^VJerY`o}qQedPree7=eesUIj3j>1Ku zQ^6LR%V=cGN;A+e=?!Dm(qiE1>6J4&t`XzQKY;@+mrO%eB?*8S8EXjIi3lG@8-ag> zT1PUyOoY^do`PyPu*(Cd0QMT30+cUpM-<FP!3ZKMPDFf}2j+TEdh-df$tDK$Bkn5R z<XzsrB?&x`PDbQ`MKepXC+5o3c_y<hUTF6eJGBafjn#oCSFbgxTtSsw$t!K7TWQPp z`cqp&uC`H=mL^u*!7v@3rk2XxtJY;XM>e#YgN0dcPkh5s;qSsx;p5j+(dw=dU4<rX zd$86U%9C%Y%)2+&5*pt$HW4i`X{~``Xc%T?mYZccze}dxUZ~Y6)p>TaTxMo8oD!HI zMyJ&oq@0=*TJ!VWW5<zLRaK0Ty>ph9nGFq{NkVGd>IfSs$X@gE9m3y!yLiPPh`V?4 z-5ZvTNP3j=usLRTPad;3;u-1E*oO^Ywdo*6GqAV}$Pix4lHHOu7!P!Ca7F1Spvpla z0tMS91Kq8)q@HDMkg0(C^szET?+_Rva0t4-t(@ix!WmI&PEX)iFtD)+AN8mJybq8! zWo3#2)(BQMHd@cr5t}%0a0R`4ybbq_*Dq}wzh?3<Ye9p0k18Av&kuX|-1?OI26cFT zd)RYB@19%tc$@QFE!}IzcdSs4JIKykGroPfcES_Qsy*T{-Wz)H*OM%?bj)Gqb~p=~ z)Y#FE>!A478$3;qO;D{EIera!rS}GJvcS^Py>|TYrTPiKZcyK#3eS&(>4A)q-m!fF zy(9j5n+{LZ;lb9<Y&RF4x_<oH>8<X(X7P~Bb?K$<8?Rcy**aIM#y{FL@VuF4@iyf< zN6cND$=d<t7vt|R<a3;Y{9*GX3lT$jJL;NNmk9l&vj?hOY_D*gpbs#pbULZfhL3R% zItayHqAyUt5N+o&G<5ufX$40G=}`%|v~XMrj~KtOfhRULiecAAcmqCR6h~3x*MMC_ zJQp$^?OcEcQ`>2@3=<o@Pr|^L<e?K;49rfTm(6*(vSzNSX^frovC<C97OkO~k<XP! z;W8t<(`Gj+IU)_KstRW_%0`vK!Ep@haI=oGq<SN0vtD6k>WJ6tv}rlQ`prcllYx1v z{)$s4m`Bp>+*@-Wp8e;!`NxC;rdBw4OL=VTt}6eyQD4=|m2%GQ=i2UTopJSeoiD5; z*Y}^)rVC^mklrKS2kLJD14XwQR2VO?hz~P+_&76f<P06S@3~3#M_k^^6ePf?<P>+O z1UD9EkQx{%tJepaAP{f>-C3BDO1@-_TUy4DVsc!kvFX&TP3J^6<lq?F_1B#Ajh}Gx zPt)Z-<{Dr66W;|5Z1rPg!%2gtw{fgPJ+eTiz|di2!o{AD%m76?b?T4bNxuP^KUWUE zO+KV0spl?OWD%x|@y2jyq8;eOn7&rYM6`s}l1n6eBzH?5mGq%KWGp=y8zp)cG6wy~ z@&oak=614Bxey15e3=xIM2S@X+xGw8$D1<r#qc9#QTEFeUGT?2JiM^Kw{beCWqM;h zph=9Svqa9L|F|HM|F}!s@pJoofS5_AI8b$-&8~cVVAZg+WZ`b4s+PnmVt9<6*r`;C z+HdKCh|6<Vg`X@Pa_r9@Kz0(ql6nP5j8vcHQ{s20Q6lw{Q5XZ3z>9sAWIy7Fe=B)K z@;)T7(+G|90VGg=rX8Fy`$I0GF`k2|g{5HO{XcE9Khr*buKk?5pSCAFoY?+EyW{`I z>;GTd=ef^w?lzyK2BA|Dx+HxW`k%AxKmTbh^-B*tdmMuXJ0va8f4cJ76T~&zjFYqh z{vQ@nIPiWD?OakUh2v*V6~6wt)d$ZUFogH$XID>ATA~b}40HBDfA+Ng|HH9EE(TeI z0iH?E_3=IMBO?A<K{Y3;+YW;3sIPMnECh7XV3a9$hw#n-woZ7*?e>gve@K>o2wGOR z(3=6+y(7HS|GWsTO9?3vT310r^Z@sVAJP*(%3$j<_LLOtT{`HWrHE%7gPw?~mg+r_ z9jRUd_&&s(0kH>Z)Jix2Tg7}aFfs)LG-*tD$kEtG!c;RF5T_uYsUwqWJ2uo{*}1+( zxMy5v$F>%6K`viKjE@EC8*`h#sBcWSKf3hpqhxsPq)5&BPP*JcW_ONj+15c9T&!l% z$QAqA=yGrR*yvSD_O*{*z2xS?XM|5z6x4cD-II4sIQHvR$3`xyY2Uj7%eH+h=C2;z zzHiB@(d{=cfo(5|n65sINi;ST@)?Ywbk<3jGOvm^W%`!S$Y(-G))Zp$XDlDT`<~t7 z*)OkoHr)Rr?N)3&{OmQUZ*IQ%8+<y^XCXNgcLYB$5A$*~pJ?buL?jk;Ib4|1r-%&4 zkXlkqDxFF)kEdJGE&R!lFP(HZy3<Kt2$+RFYaRfnk%DPt8nfZkWr83uX-TlgfXFQb zkr`@&tR&W`B@($D<U)<~{uC!9k<&4DFz$&)X=4`;IS9|eQ+bH~MhCa)bMbgC02BvS z1|ASFMVNbGKNBZkEWkF4c9SI635$ir{A)ut@-pj(g;t@J{~_WRl8&T9NOCO053GWu zF-RW7|2`X{&-#M7<iSu*PamneW9fbO-Iv}mxVGj_qP%12lTSXGt`&Mhb^7C4?Qw8+ zG4xko7b3lpr2cVoHI{u!WuHD75tcr#PiA~7f?UEQ{|Rg-KG@m|Bn|kY@NTn|*)+mJ z!YgI`0l3BC52p&Y%x|`a{Uu;Ff$@ae_=0|HiYbohZtxuWWfcN~68pQCO34kzyXsdN z-kmKRej`ozmoI;54wJrM#i?=<d+86t{}9K>DNhOg!rz&$iI-kjfA8{@#bcMJTGBUj z_iYgVXF>Nf=|__Z(9+4@JW5QLzIU0yyJT(2-G`oP>%96+chjaR4|iqVwRXh%aaGQN zZ-_4__CGJ|KY4hQRx!`dIsPwd0}_psc=!Sa*}EXAng@P(j2M2DLs!h8(kW9DTVg{b zCyPoM>Ipk0>>!&i?7eDHw0&IX{kN|^@9>iw7-jQtvX@-HC3VLw7r#_@xvH&rnM&YV z79vRhcR%)m3D@-hW5u#ta>|xgj><6zPe0Z@U3lQFW%IK-hAGY4AGmkxC3pNb5F;0? zt7s(3PQ0I}Yl)nWGWcJjkOR)3B`9(;K;?O=1Hi~aHCV*|4!%Qq!Ym2W2(tjx1p^O_ z%O(=pN~8r>y>Qi4FQj+un(uPW?`-h-Zs@RdnX^{4&S#H4v}yB04{hG`&~D*hM}!gT zr?;<t-0?BFXw-C#m2wQIo;X5OoR6M=)v2eB?vm#C_H=Y6eR99Nrj31n(?dA_!3Q@# zDSRjVZp(u=tei^jySa!Vd!B%!>R)*DA-ba+@6&|HK#D*WtGz@tjzwsk8`KFrG#+`- z5LQc-7OHrJ={KbBC}Zi{(|$)$)6f=07#CmzZ!hm%wyamsuk5Or?kFp$S>v#m)^=IV zU2K2GG<L7~+8Oh2Qj*ELj~&~6-TyEjC`=>jgf|bYX8Tqj_<rZ}J9f;TvxCj<UABDG z=w-t5cde)@GMjOYnl*Mm&z#>c!X9oMHg(OF^ZJinzx&v$*9lLN@M`iJsNIF$**kVT zzjKEKY~!aVNWTE)Sp%zVKJ?@fltBt^XFv?`wV*&*UC@|W(7P7Utcr;!uwM}7prNrQ zS_7aG2}e!PdA&T%4k|+cTm&TvHk_cqHNG5Dy_Id&F~U^zeU(h72rwh_4qaP+UXhRG zo<ag!d2rN~($o=kvB}tao&4itvU~ngnT{5|Ej(lTz&tu;FAf&ji<mvH8C6zIEL7`n zQ3d`+DmUzWN0_!J&^4^aU?A7~%GIhUSt49*^{|y;S4Dehs!YvP2^UQre$9e$NO?HN zSz|EPZ=8_+Ot{e#L_`yR2U$WE-lw-(*$3-|E1yu4**-VNn5}t^a^YFw`tZo0IbgLa zjqGr;_?dr<6|OK(n0(W;CWOYZE}gD6(?*gQpHdj1sa>~eppC$ejr2eTG{K)#HpqEE z@fK$SNBuA-QrH+ZL!f0;6VxAV9ySVLAjgqrY5Ml9?1{;YU6Gb3><rI}MS@Y=gH)XT z5-fVO#%<Hw3v9Q|WF<3ivn_B>+eS9g^QHrKFh_1O$<vO^CR~VsaL_cIsmv1Cjuei* zefs9j(}ii<#I}wABg`+Q$XPp#w)Hc*+Q5VU)B|UDmhseLMl73YFm9HdeRt}Afkj0I zyZKK(I)qZn1el^P@WaW><IW!P-ke`7V^XlL<0X>xC6bxt*_Sv@CAs7DRfH_Dn#k5n z1@u25ZbBZ&f{t=rd_M^!E6RV3_YxHlOox8-$OQcqXO@^B0ind_8d&nj0plnk%8*0o zbA*&cC~-ziWY<UH@>#k}QCj$vDdK#V?85RRvI_`p!;Xj}7<5E-7=Yp?*PdCVz&Vc- zBEtFNV#ruyk>moGM6oafY*=FK5rueA$6$E^r8Ev_ury07HK8;l+7k!M0VKfTb!14a z1UJw7JK>_6a$HtEYx|PF90WGN-4pzW@W&f>7X=+M@479-_Nra$2riCo5+1z&PrWu@ zwom1`=-2y6{ydAxll#&+ejw74Wm*wX<eEKl*F2T$^O$8vj;7QRl>0Ymg2Yg0Ya3B0 z3wwPz@^EvlI(y1F&LBc<b0UucSh5ua9IJjAD}#<5#ahCY@N*L3RXec>eBMs4aEuh% z;i*4`b&}7$ntt3ToaYt3@RCBN)l2q!iNTA$XTbj}6%uZxM2i`gX0)#XW`7)F<Yobj zv01W1ay7Wm?v?aOUW2zML3=0$bod7_Vq+84Nb6R{n!#<Bam2={bua*<UwH|v^-{>d z(F7vK2uy{5NYnCC0Q}GH$gCqE92{t+NJ(NsY%e{|ge`00+^x(m(Z+~SCYJ7|b0Byx z=twZQh1fi+NmeZGV@z>OIkYt(hcp_nDAmydiH+U?#veV=C>5X)A{vF2<fzmdgiazc zDnenkNMC#Eb2HMUF$M#po#b>fa)r&NkQ3(-heM@gEEYzonr^c(YK_IBQTJe5D^-}y z3aOTC5#G00lrlYIG%|Xba=OW+l4A|qa@9<fnN8RL-GZ82_MA?qgG!*)>dd-XTCLuy zCu%j(TXnB%jZPzxO4Wc6z-|u6`rNxN?Ek06=pNtm4DlM`l^5Q1$5)I>snsge|N2U) zDLclr>*WY%)l1V)lD`wBOr?-%$l}x{g<?}m(elcR3grv0D9|(i{;z+iRR8#wn(zNs zqxrU9<NNG8WTgA<GpRzbGUp51zmutq-;oVQ)hHqFTe-^gEqTqP$`YhsTP$Cblc0M~ z8<@`o<_o1xtNMZnD$p<q=Fe4nz3OxFxmvFm<bTr`jhf{bG8+&oEaT<I^mP~B$rv^4 zHbeyrKlEAeLffM<5JpjqGaASYlz~+OkWK<a4TWOVBBtxVZgCW1IB;lLIb$MklYOgS zMndc!;g*+IlYKw4eVFu;nJ*6>|1v9?Fz%iV9^;;I{r3#nAUQ)exEvgl${dFuG0rse z4kn2ce!=PJJ1fz5F2R_DQ4^DxIBX7xGd7vQPxC1g3bv*$TsYXo=848Dv!H!b{R0k+ zOmGOb^8(^VZLl=vpqfEDhItpSjRhnNEuuhe804@&635@D88L=96vkhecM-U11vsLN zKjMa^>m&eO0C%NedfQIcDAmFr)MOToHA_pt<5gN+b*&dc+(g<?baDN=2XCCL)7S~G z<P_7#YZXjcqB&&OXjDE6v8jy;8Vs*a2(Gg6rEO#j0<NIcQHBaN*>K7AjFs;wbyawo z)%KMgMOu#AE}Gcr-6?5w%-t+p>QR$Q^+_W_;bNrsq=Xsc^va5@P_94{AM@L*g_ANh z;grtUynKa@Va6}LbW_*fl9<j?h<J3~yMEXmg3Eq!Y!bUJr&|_gV~AJAxmMIidO^7h zLUGgi6P8q{>~K+`NeyXdnQt`imwg+Pg;F)6_T!}(@*rxML`pvv&Wj+TU*o7~HYmz= zLDV=~8vogvUeI#K{*;Ub@iXDs)c!kKgx9)f@eBig0U~9tUVb&hBlenM_*vb*pxW5f zqVyv2k=d!2+t~o3J(=qfrr2(FT4)|&K1;#))9)*MAj5N-$s<4$p6zd$dKml5>Vbv= z1mPK|rrux#`v&PYo2d+_D5wp%5eh+E2);uT`?Hk*Dmcf8dAyRxOLIt4!7l0`!REea znuJf==W%L;pAb%}TG%1H*Zkzuzn~gETe$F6nMuw`IXGZ%UAT}Kh;z}R{W25B;yUX6 zsFN>+k7zp(u|(o{lX?FNDuMozUMkiA6ifKGp`^g|NSPghL!c82rS<&zcg`ZM(=O}C zX&TjDU(_XBJ(cjQ*Od7x>U_WK1@G3`Qe9)#xJ--EuM;~Eg8r__KHX2fQx4+Xf6+T( z2#UiS#8LGM;dVd!3S6pR(npOSqkES^oc;yRO^`yWkDijk@k@IlwwxL72kkOJFoh+M zhr0{U4A2dLH=coC%g=w8ASGD`Op#&@Fq&c*G=Zic(>gOCMl-1taDwzdTk~JXz!Z`P zF*_E?uX*npxn)*rlr?Zf%=N}0{lJ+&<mU#mR0>1ctHSLr$Jq1FAM0?{lTKg_1t$Uv zBW3hkVWJzD?=tPL64_~||H7|DLBCXPLZ(Zq2vHpf-fn=p^iVp{3vE`t$hs0m5v7o& zB{%^(_s@P=0wIUyj=T%$S&)q7E<HKqGi}+TFE?9w!|d7MvNb;GGEbanERTR=tjxri z%)j94vjuW%`Z!G`dADdczFU`WweKf4?6*h_hPY+D@br31T(7&%JgtA4i3!EcmDg38 z<3=izp4(5U_4Svv>2qvD{9vt#Y?xrD`Pr#Z%t9=POLj4>7Og_~o+yw^^Ow9b@)&2% zCAb1oXQun;`x9k1QKIet+xJhvb};1^zF8fO9mQB{qrP*5BO-jo4@v<sZxPH42v3Bq z0a7jm1?a}~Sh_R%vu{j#<W5zoij_a|h@8cWQ~nn%URJC9%em#kDvgf0oUv-^2Y!E1 zjo``=T<M!{aODW@K=KiSYZ8u~Tb`EU$}GJ!=odBpzrzaj(CFzs{9EWYG@=LMk(7a4 z1AZYTv>vOI%1#Lya7{&d48vLyz?3}H+{eE)=e&kL-c~re%iXYG_KKc~F5+@dTDxx4 zfmJ(iJ9_BBr>bO*rs@Wxuc{=T{GZ$Em}j4}T`GKit24jI5MO@P2jI=T;FY(9J;E2y z^&I%ea1uM*_pf7p`!^F#9nG3IW@7iODUZK7;L{g<xh%f1655mzmUIW@1~9>!&L@zi zI6P=@hVEwI!;n$XpEH^GVA04J!mWR1rU(xT5C86WY$?{h5gzO$dQ4tlUO`5t@8n+k zo$xTxr0--)1N|>q@+|!?1p;g-R!{&-&IM%N`=Kpc`rjeD4!wWzBab{X?R_#2^pjs~ zAx!8H*(KbVn|?3bmVQs8VFI>n2KkAY03`YMC^;O(gVPt`*Fc7ym}!$#6~k1Q%Rttl z*blLyZ6fX-ehw+k&R9aFO?sHP&&!K2(FnC(X1)n_WwL6?mt6Mw-JFg+)rwHwdp^Hl zs``!#XLODr(TDCL_S?zHKmBUMW%Km)>ZZ;_XJ<TbOhZH4m}L!X@BY>Lt7cAX>?j-E zUYR?pp|P!NN&UKenErx4th?h=qWs&P7d&1b&0TR@)lElk6+XXRY8Sp-w{w=cP212^ z9&gTR?&@mJxoY*=o#!o1HkMWn%M|ROuPTnk1O9i)y-A~L5-2|>Xdsk@S1GY20KzCs zM5V|hi)A1xGiH^Gxn+5fz#z@MnR(&gq5n*uu>IiEUH5c7ed?>H-R`HmnMSf9Q}6=G zq>5!{Ki%E^G*Ih5ffUwahnt>CuW(S<o_<O!AdwF;C(EBcn7JJKNfvT~ALrkc`0?e= z0-TH#%rBt~Em?Kc<R6VA;#PY6vcCy^La)&Gx67U;qhEekco&2OVwPIr-FIImqn~C{ z_tTx1{f#8=f1RxO()VG$(EBmvAfU_zACsQ^4}D(>s6~VgVm|vPs&W=udbu%CQjA{6 ziC_{jfE}X|4TFc?Ps2B;>6ZrM>A+I~7!h5e3>AoY7lYjkIA}ek)?%;RW*oqlo8*6f z7Qy1NWQCt^8(uQM6OinvTjv6uV0M0vRx>|3(rhAt=-%4vkFuO~l-oToughfe1<Zy1 z$zxirmYOy@mz7hTt<`8{%2@uW;^y2Ua3-<u2^X9`EFAj#Ma=HE2y8iwymapB8?L{r zwIr(d8T6&wme2Nj9L0X8RJy{@;&c@)$?`q=aKW;GKiq0Ctk4ekcq;ZDPUic}euF-~ zVfBWk^TyU13>t8UHkOQTpF4kRD`LB6e|+5u(v^{W#I~k}o*RR`YMNxRWGzrXH)680 zL_$$O(C`mR9q5H*5q-i2YcZ@=G>TCM3kHxtwsIED45bvhV?z@}Y=#UVAKEPGUMx#+ z0bB+H<-lRl@(`GGv0KDm;)Db}MLdf(1%R5*1j9h#rol01f@LTSo?UoUxMg9LC$HhU zcMJ{bzl^oIDre5D^qRVYyu50maLdt(2E#koHRP@PRIB~O*L1kDyQpkxSy6Z8;U?cF zTJ5L)#>3T<it-lc6-}x>+$iKURM5jC!ODfChttojbXmuSf?XzWrL{5`p*N{$coiWI znoB+ueveq0-+y??B_EO+#IDqQ_|Q*ukhzW0SMCiImsI{LZ-SaJxNFM%hsaHb{1p}M z*-OtCJ_+3W3W)916Y_plS;9;ioiib4^wiGVnv7p5m0uZ~ZtI*X7ESB8t=agcQu(E^ z`L+%w(#WVL<Q%BTsqo+XO8THM_mID=#y#)+rL)}?75<1HI}YSbP%*f5S|UCfp7HF{ zGW&lDolpIdDbbfDL(Fw0EXE5YD=4}#45JujRAL8yt%<lah~bkOENvDn#f6tCg@cX) z!zlU|i)gv2l-j`)K`P(yI0vZ%Fb9^#gS3pM6`;d!sRb~0O4bDDQN|Hder^g>re)fq znR7$!ot>e`T_Y<?Y9_3z&WmI(i#2!T9`70HDlYEqR)$+IW0=cWa?*=oUJ+C*V6WtA zLWI>rdo%hfB1z%-qT$6QEyc|2p%~>48|#zg`tjqsOT!yIp5+rt=IdBPbKK5`=jJyB z^+%eLTHa^Rlj|-RWk<mFd9DQ6R$#Lg32RCeYb{+LFc)^2?Y_bbLH_VoxV$=IXWj;{ zN;niRADeO2P`A#3%vj!xap(xfAzHuGhPfC>DrEHt255c-whUEDS7^_m$^s+>R19y? z`@uwlI)&{73vrf%Mpr_D<*3|fDWyLOL+SvlRUAD1m<t24IHl*uo>B`<6=uLiGtMn> z{$s}8dCR?fs%xq@Y*<Y+p<Mm04Y6o`>x2od`NH+X)?Lu>NK^gr8Bbl=(>0Sk@*c;% z$1&4d=hbzWc;ukYlUgD@(!WX%>MFJ4C)TFF99da4dQ^3lb@u!@?9|$>Yc3%#y`Wa+ zW^aDTCXYmY$S&y3A6qFLbyO~Dzq5wR9)G@@vmY39#o@yKr}8H==S>gzr=<5ze&F}f zSWVBQYBB?C9#3_Y2eUUk#R=DL<FqR$POPe)gbKvmKhQqKywnN;awQpT8-Upl`st|G zMfAsI6XnvI?dF`lYlv(P1LxY=Z^4+!H)slZQ%Qwj5{|H!pWSr;_oxK#z#s69JR(;R z6)vc)i+aGQ*((AlZbrr^;b4ZxPDrwFl0n9(V=}}-)W}R}qVctW|1RO!_T{5$O6%g^ z=M$HO$1JC{L|U3-wXOPPz2u+!gl}$1Hd$;uAF`BIp7&s?qa*d;)A%V<Y9iUn<g|T% zUUdu6aOU1+!KP8d4#95qGcNO{Z+`pm)|&1S!JN^{3ed5?-KXWlxHG32I2}LdEuU|W znYE_%J6HdC-_(7W2aN;s-~vpFR2BkIHbJRH(44$T^Gh2Y<pQ!~{3rqNd`6HRi1J@k z>?XyKz=DJY_3EOv;R3MzL6eK4un;VCI7+OfxSnX`R^TYKhc{kv_@ax7yJ|`TKC_x6 zj4anVF&a`>3>K9h)-b-h%{(?C2Q)nS&-jWlNu6AqlxN@96>MHLuEFe6Rhu~^t1Mch z;W@dnEgNPhkU_p}@|&yl);jeSB)6t9VJWW~*)nT%6+gB~Tc##FPnQ32aqe=RIm_aM zk>;jh=5Rp{XP2I5w3>Jru}D7n2c6~NSk%K<L755a!zb%lb9NJlRKo>?ruP)(t~$t> zPm4U^e#ppeB8M#PqjcC4N2|fra^|Ot2@d8!yhP&y3fQPD5u&Ujlv$3VS8P-w4S{=J zEMb~UvU3|7bF*1TY0Q<M?~0XvUYsdm?k$Vbl4zOmoiBPo`0#dH(C;j&b9E`w!-e;r zA)U|OPb!ZwOD?-G@rT{b^nlxm`@pTleUMXjm6U=?PMG1&%Xhi+^T-$H7Tm+#B>b>% zWIM|$IRmr#?H7?vp15z{{%N}Y!q+E0e13Sx*Tnnvjve2i{ZPBWY4i<vWxy{4dn(=_ z8m1Iybks-k4a%GaC84xL`k`M6=bTGxP-%qfuZ=#9!enE6P8}0246{r?n$lrL_?JC) zQsRLt;IQzPjRVGmOyh$6vu@L7$4qP=RYk=<k9+dp!)l%Nqq~ZU-soKi?g_$79^lm> z_f3B#ykYcc6(*|?3$tuc3O<7u-#s~(jAmyDfwOmiQ#fo9@BaJWX|tndw$E}>%jfn# zdl|F2|E~kjkeL_D#4&-&ANX<^UAB};h69}+?Ew^0s1(s^4nq%wN%7-Sc41nWF^Gts zVNl^pK$!U9zI%li&IgMBGNn#0YkO_={3kCTGv@Lq=g&OUav4oWEdUi5i+Z;%BBpEi zA@VSNauB?CT!iAWZsB>#&2`Oor9*zXf>F+xkJFFhDy@x|BLOzW64K1vTjnfT_wo&y zENw~f7xci0@}qatLFSW4vb2m|l*2(D@}p?7twMiBvKB?~xd+KL=Qs{|3B>N92MLe< zn{TiV<M-2iit<wd^MdLURkAunO2ny~4pjt49sG1&79$b%{pg4&>J1}O0U1!^&<D}b zFlJHIIT9#g4EEEp2!2yKUDAE$9wA;=x-0L2{Ji_~?9M=5mEKQ?CY+uY(IAh7K3NiT z*b5IA<ld8GbNI5$b=ZqBO0HGtY6?Pjd%@v?oC7%yM<BOC7sQE9<_WMjkf3o)sl$Ow z=H8p@a0K(Kurr{qDGb?DGFi66=jD`2%W86oMagkWi?Cy-6`3zRK4+dxmSgvNk#E$t zrjpHP3tT0Es9mb$+~U4Gr`N?um6j`nKI9AnF%?N(ffZYXo`{`pcs^{G_m5c(4<6(3 zI`i=Th{O*6tAIMjmgo&fm7;n?lmhkTP+%ej&BetmJXE59=O7!tNKOdbOE{;L4LKG& zLRSTyi=Dx1XKrdtPMWlK2`M4(J3@R@n<q)64psbA$`J}VxTjCm(O>eVy0B{Pg*)$B zvno3r67>k$Uns6^Fz*OO5H|rCC80KIiY^@LaUv))!AeSh*>m@uvrV%W(KMB$N9bkx zD5!6M*R8j|_xN$CB%O8qY#|HO>EHoO^7!%oUTP*CEFluGIbfTSq+m2orMMsM5rADi zOBpwCm^cPz#)2^Fx5P@bhoBBA&mKl{%%fpCuV$efV<Hbth%e{*z|JOo_XH!{Fm)4F zFWNMf%x5Uw8(kG{fFoi4R7OG%dEz3q_0R;mYr-L`I&&J<>?r(EUkyv*5(%<xK+=oC zjGCYgJtI7e0nTD#KqzOJr_Lal1|=h2vT@S5+OHVqtJ-msHg3Fs6Z2KwSgcGMTlW=$ z`pCwiqEh<)O;v03TK$?Tg!^rrB-5{{+<5=S$~Ah~q>b$Hp>mUmWfXNs11uDEuozE5 zR<ad%YSHW~T6jgr1gya}%Cm=<J;Y|8Rpd~0B2d<Zii3iUW(f~G(gssE{h6)uOxvYa z<r1jVFsIWI6<&35A`(gL;Oa0l!^}mF#dqZ?%?^z!#~9c$&cQxb@NKinl$^ZeN#T_6 z7fQ=2(y2ajYtj@qHJ?(dHOeUph0>|)R=%UMtGbm+g-bC-kp+AUH8=NYe{FOd@o&!* zdZ-eIIguCrrV_I<@2<s;A|)Riw<Vw=_Z588j0+}jeMF>wrT2i16TGjJlO|I$$s0Hk zS9X1&pi6~V@`QNp-ho>gjl%}-k0;9DRK>dGfXm01hn0@?Gv}Cq2!Qr71d>OhHa?t? z$^c7171<KJNrs^6s42{x2jhnCeBoyP-)%tL`Pa|=vi{=TU&MtEgb(6h?7pP#%emKk zNy`;0FZ}Mpl~<4!=IGI*!u?$8CluUM!(TkbPCibW)Gv2z*uQ^6$IEKr$>WpRQ!j3h z32zLGMu(A{7+M0T{;BGNu_?m`Rgc+}W(}bhhTD+4?g$+nGG90|Q3CmJ&Ndy<=;-yI z_J`>%KMo51+>t-O-ybjIIg#U`j)R@S%OQZ_M>nV2nOU8}_4{Zu!D7fNll;lz^waJL z!$e%n>7U&FAI>7Fv><F1wx$I`>F6B~0i|3=)Q5JAE;XFJO2j3kToIaVB2zXbyQnZE z(dgOLT@lxoEv`uV|8NSqT%(-NkU2_?p{!#>XH_^{)j0wVg^6eHIu4h_h3V%OeI#Pr zr7Ug~y#w@wsI8ru005!^HVDDenc9payEPyOfNEis&uDY}nKb~coxp5i;Qm2oXFh?d zhEbYsVkG~SUDp2=r8+_aE|C2Wu5o>7>`(X6nE;661-5jO>Fb9lO)N+P6fUum#PQ>_ z&cvlS#-p8zIw0g+*uOEpa8ZH@Dq@615NL3*5Wmv@4Tps#yL)dJst*ghA0`Vo6yDyu z8<^*X?O|c*XXKj5LasWp0LW(?Q@BAq<S==b9&=5&eG$(6j9iVG1n=QEt(N``_oSJR zst{vE5$>X-BeEcff)W*J&hkBZdB{HiUf^%J4OnQziArTgI@?1AXGOO^WKk$=5m16h z$|*KrKs&Y=66IEQ!R7}y;~)8MQ}^V}n<sZ~`XD*#)UU=?=T2#zQaaf^o@sVTIcHF| zgs-<XM_NnUYTKV%durUG#tY|<oWK#eUq-lzqvl`Ouwd+|wT_%9%;wXZxKEp=TcSCv zd+h4fW5=ypHE!TnIKk|l*w#EXJ;N5TB5IW*ZYk?<PNA&%tW>49`Rv!v6aIQ=Sum@x zbQx)ZrIQH1US3j|6<U6XxaM6SE^{$TmU(3O+_}Tk?K&4cm7HWY<jH-gGwP?Md=h9` zVmdK{DM4fKEeH}Mei?PYn%LAejPIIj(x)bnmbV}@j}#sUOU&}~xsk$1@*w@6mJ6)w z)ZgBEi@T>^C5*)H#l)X!!;?=F{vJM!j8VCeV@68m(2)vKr%Z~PMQw{(FsuMxco}qr z6XO~q*v4c;U0kpq(+|PoD<tR#!<Rt*I~36*H=y;jS&ck4L2;g-7lcG6LTYdrsE~Pe zwET2X!x5gV*+Z&z#SXh`H(R_$_=h2AQUkJ-6VyD}nm5koU@K(@O2ba=J%w82`Ya-= zUK}ZRr@Q&;stVy^xhtD=R>c%-gxSk_bi#8@K;ac=y<XD3u|(kx7wwk5wHXA)S#rhn z9Gyk2RklCWVp1uTkq;BP=p-iKDCu~(nd$Tx0S*+7l)qutT9m}nX(_Sf0^Qf>l3AHC zbIpcH%!HsTcbZNaG^T&|eAKM$(8)p1YAuYBIR_i1CWGx=il3r+YN#J4C4RfJ8R3GE zTPyG#@%2P0j}8n}+8g?x%CHF5rMwOZ3>Zr3;Ew}dNIm&9DO@_mOW-db@*hGToZM3Q zzg0ZqK~hUc{{ZAHK|>N!ry&5c67f8&4fx~5-~J@q*Po=L1(!V4=l4apw@-;!RW6yr zsW}pj><zpJjbx~#(Kn%iUTZNYU@!@Y2zZEy6z?Yzfq|iiA`}s`Ko3L%KvD#1c`<>v z0P9qg`B6D%j_ummwQ)Yvv3cv}5v*~Ka^&Y9e?C&VM{-)FzVwqD#vj}~yNWUFRst|Z zQe@3`<!(WxdPvwTR0x|NQmG7kKrGBLPKJ9zxkq!YIV&$O%e<ike|8%+%FaoXI+YsZ zZlaejn3Y#om$%!fR&L+5Yr9g7LY?B~{rhiL&;uX;)1Mxv2T~LqwF5v37JJ=UuT(w! z#AD%OStMDH&M6{<ttEpw;Rf;2zx0=KL&DM`e(Aw;&gF~L58UHi&O4GCL2(h}Me#?- z{IDp&zk#ivEM!M?%<sTIVetIHa6BH9g?RRh9c3p)uRD)rTm)Z;<s-<8;)am<8QA*C z!Zg}vS;v3}o;fX^hRmAcbR_B<!kuCnD>*5l$4TiD%~%0*$``2fDD3jo`oj339Rs}& zqnj86MGcdHK2dc}96-?60JOsp1xRZYN+7H>us~3+yNF1KQ2K?@I#CGZIU+olVECxx zl*P^}g2s@7k8HbW-fx!9joVcOF~y^9EExUXvMai~XB(NZL?yfhEdD2azK59**j%(| z8M|)W8ll<mGzoX<oPMvR;`q|{E5eK|x?skhmU=08k*gnCwB^&T7+`Zf^7MB~kk9_s z6LFfd@1SFNbbwz?32(FmUMFZ(Hi-$e7m@N(SeO_<1&t;nEm06XsGr3he)J_HIqWwP zWslIf`AfCY%-&JlG3tRBckF||liZ+Cn=MGV`E#0tcN}9llb+181o;(gj}wlMx#Tb@ z(+7pUe|Q?{P~Go-DBMe~5{{%z!ZPMYHk$4eCJ7suA_gD;;?g^uW?>#$I&9A(4;Rg& zWJgx1I#GI+zzPovY&Z;g1cdlyTv$vCWGV%9p(#j{a^MSKz^9@jG#Qz-6rmLq_(DY+ z*oVSU;n>mytVpHjwqn_%mut(AAd6L>+*+kd3g0rwj;XuN;9NEQlHU+MeAoQDm>Y(T zUcV1S%|(%#=!6!lt$oSXo0%(%^NI_=u}k_=4c6~|9ej<~-2{8`39&iJu|#r`oeGfD zC)NOmpcyq)XrJ7&+9NQ`mh>iOtKPM0`rP5Rkj0zjS6v+-Yi2KOb_6U|KXJ(SmZuN( zSlijBPl*@f#kOfbQ#UkPA{WsHNoe|$FcQoIK6{;HpX4#gA0!`1en8$k2kI25u*f82 zExZEX8WogD&H?2x!Wh9*kBoapaD*8d)D>*%G+HVc0BSD?XGS#>56Yrgi`z;QtOdN1 z)x=U7Ehz<<2=-^hVU)&8L!#+Ntnd(Gs5q)1id*FaYXMsziXoN`vKW4gOX5^-w-(zh zR*TF{VDJt~k*pV<tbh!UC!=?!-Y<kh&>xGflx7H{UzVDI>k00ROHuummRZcA9Ua;~ zeg1M=R4RJC;z3-7z5-k^i2)08g6@mbJC&Zj3$9|N*TqgeBz+a}y64{XM<)#I9DE>I zAc#gM`sHX|Zd{A9yTdXD6I+zl6L7tQvUWzm=4PaBocH9VW5!&1Wd4n*ZPRDmzG>=| z&6}r8owjwx^lhmd=O3Z_o}70hGe>5Su^x_>N_iw&;^ho75rGs%`~z?(OHNs>CZpAA zG?6=N_!e@B74nVAc+wWK*+Q34%p?qIqRkzkN_rNGP9A{|J4>ha*>zs8-|O*v@A7yI zPMT=Mt$VOgYjfDlY7oYF3pIA1!>n=mJ^rn7jmA_|<aN6XEpt4PsMl}R8Z80YoX|F# z+Uo^(h(ckE`aLGC(O|UMj3&L-?DoHm9F{Im6gfGy7unPv4?Rr2+2hewM3F06I}#5A zZvZ4xKwp7x#g_Pl^r`0!?LgeY@u;eKv|7e50-Hn4*jd6c;k8+_NFK>wzX%kH&n%=z z%%6uN`rl$%q#@FnbsCLOiOf|<{fb)9@Ocrt!)UTk%<^Sc93cnY_Fyl43f!LFoq}$$ zjxBCH_Sx-b{Uswpp%L_dbCcd2tBaZK0V%^Nbt=2oZuZkvgVtt1)Q8Mk>&nh{)t2mx z`Ld!WtIn^^isJl^Am`?AqTa3{_K00=*IzMssda<9uV`M^YR<07Hlscmu}0`ah|feh zzVY?218?%t(4j!&i^z<VO2lo@jKht<>C6Oo$TH+0zg%(?`aEVO^jzBK!e()Wr$i7y zsX{nL7IJJ2jE`r!6y`EfL>lZ>qAwYpj`of??RBC<2AoK0hKE2nC@+M?O!TG%29Nl_ ze^M$UujuXK|K>F$l_3wJ&T8Eu>6b~9x&DW-vq#OC(Vk!9ZD=6L?1abSvUu!)?8>~F zP(fI3a$AdRIeD$6Nn#CW7uVMp<VIq#_IY#LbGYvt_QNZ8Krjn})bEV+-?wo0!iBpD zb9HO?<kp=>A6va*#p=h%C8HN~)K#3<pdkLv#0fbtMG4u7L?`ooso(jI%cm)uv%Gzp z@KB_5GU@yzmS<KPwR(#yFPw-4v-KLO+G=*?#getzo#BR(qNYfvdCsmm=|>q|Y|^eR zR~AK>-_x5el#>a^j|=xGD!MD$D}{%y)Q>DI6CS#V37t|`j2v0PeTyX($KekcnBy4a zXx2gxbpvG;fi^k{zOR=hf58aOgZMK99L!80X-dI$MF(SyYhhd5Rz`>4l5pmSWPbQk z#4ZQpvS8E_j0R<(@--Ps0aG$-Iav2mhR`6tErHW4fGLXuWDxnO2S+DNj5cwshxnhs z0PK%@nexFxL(qb|M>8WdoqNSC*%=*I+<|e@Z$ay#|7Btf5-y0AMkfl9!IQ31!a-2} z0FZ#O7{^k?wCJJ}%iwij#X_Vn6!#52CiD=JX}~xQqCVOqrX%XZx0ZVeFim3P#y+Ik zIJ*yF<c7iO2*k^9Mj)aEm8lg-S+REFt0(6(4ec$r@7zghXFVAkH#VF2bGpXl3ZKy> zd2w=HzqN6C<@D{2OB^jLdoEZwzLU8@WpLZ0_H4zb(PNPXgd5%U%K5^(Z@qQHb=UE) zW!lyfN5b*8X_=YvAg!IvmdqZna8x+{8hGT8<FM_AVX=Gd#px?^bDy&w7@28?Yf8Nj zBy7U(eHE|Tnm;Qq5pE|F6J^IN)xKZL<s4(E^!=(Poo}}~j1Bg{u!ft8s)WBgEKWlM zn6lJ1V@vYJV(2A*{_~#et`q*z$b3I{)20A$FoCkz*43e4adGeqdvfDOzayL*cEn>_ zR)wlYT{m^zcIU;85nC>*m*wbuptyB~JX6m*f7Wt#!s7JBqec}c%12)CR*ipH%u`Fg z_S8fc7Ybj!hCekmL<c^4^4MeP*UVlssJqCN?rx%+Jh{Ju=qhnu`qhsTqedl|yJ~9- z3JMEn5$yyUBAA%k+NvtDE)RdK_;cQQd3g_!OX!j5ZdyS9R8<KVS65Hg%$>!_C)(|& zY%zr*;3?1dTV@fR7nUb%`@L~RP-j)jW&$wgNw36RD{xolfbbR3rB_a<a_E&ZV5o8` z9eVgF!`eB)Du)K{YE{@v3(cVWZ4|zK@x_{&i!QIm=&Ce$Op(~@_?nU<FpWykCkOkd z3OoTp^vki53*bxJFZs3Pu;h<)WQ9PH85S|LN`o@05tKmEA6hPw?#Ngv+8czII!5%8 z@uqS#d{N%Xc(;)s%won77)ntN8Z7#QBG@D{I}#-PORq#h1-O(cjxhn!u1utXNx&#F z@PNnzFxcTU;t2C;Y1k7i3A@9r0m`a@Q5mgHJDE`$@`PyV$zOHW^_rLlByjF9Ge*Q2 z=&kI8nIxV~OSG)3dH9@RRqh%irx|7<Ps{mEm26=iZy3SLL8s8A!6t}nHg(qRH;WhP zQgi=)5$7;^5zGhlBJXP2RpOzICgz7WJ_jQSqcX)pvgJd?0%ldXILjR_^{>hCl0_=c zav)S9Zttv)n}qpNrRf4WY*^?0h450PKeo87y2Wl*EA(K&Qz-ZC)+=~s`F3upT%#mQ zD+W%{to-*=h#u*r?j>54(1Y}eCSnR&aXTA%|3_0XwXqD0=St`-CBPd^#5lefabH(R z_Gac`OsG`)<%4uFFz*gXoRA<zMsAukCL#*6aNQ(=aUHO{nJ~&YT3anxNa+NO!53tg zxQa=f!Qsn=YifW^GI3@?&V;|>!W1u)5q~4m((-dPA8D<{<hL0;?n?5=1=5nzA3kqv z4rN8E8jVd|odrb=O;KNwr^{y?-ZQ4CltfKETZ{#Uy1YnRR$-Pphg_!9WECov+jcuE z^o6^3GZ*B?T9a}4_T8bZv8A;_UO{6)K_h#AQOWe4CH0AgbE@@~t+{3!e}eh3mb7+Q zIH)-8oiOv$>IR3#ij*}=vm()!ss_8(ruR9F%d*4&kGb~_jH*ie$LHKKHPc(_WG2bX zg!DF<1V}Oo5K1V45Qx;!JA__D7&;0lMG!$SE24;s;@U-w?%I`AS6p>1aaUd4RoB;D zT}U#Q@8`LbgrK<YyTA93A7O4U=bU@abDsKnda=|++w4o!v;H_b&81tRDtJC_2k&;3 zNU*3TOAoL=e6*&ts3bRXZQL!ol1lbldULMyx5X8q%}c_4gXy!9t=3!vclwGC$14nw ziNAxaPve}Bl`Kful<FaUuwN{IyBNke%`(Ug4JQn^tCCl}52?Z_jRcK<5_mA7K~oL1 zaYxzL&^Ck)yuBY`W+qdgdiN}$P|dU#9@HkNM`PnjYr&|7GXG!Cs*&bRz4mN?-GMXQ zebQ|&6%CzxVE^0)-1U7-ropq6A#H-@;z>29ZNvq?a;IcW*mv@~9S511Xthz~oXu+4 zFp<r}1w^lqRIj@p4)76RGK9;8FVw*8R+j!uM7N@~3j+KjXrbtVU#yrAt;*oYzxV|i zk8GKE>$p6jrK_U*x$o~PTU5sSQT_gXMIY>}9Qzx0p<#K&)cJ){SPDfezTqimnj+mM zoIrj5vx-x_$>tH3^EgE9TtV_2qTGct357-r#1Pucf4|Q>5Y{|Ec>yy-9(-saeD)}0 z8Bs~-6G@Mg%&;Iprx4jMu;>ZX)N?!1%3AVNTIn}h6~74f%t=)pEme~m=`I$iHV#i` zq4eR#Y8Eh9nz<G_9FZUSGu!+(%Mo9x*^g^FhSsfKUdKN!zy5AuM0@X+b6Iry>Sf8E zj^v9#kVD9>L69yyLSoSxFyj&NKv#yS+-1|_e$EF)ST}g->eAPxubJu9l)71?N=z$E zn+EMX{n(BDcWRU?mD-M;?kDg9|A~(ZJGY=<cqYcp?_OmlO+v3h*$Ygj>dgGd_TKV* zUPiS_qv11u$&00@AEE)04PyFH2U23766Kg{;f_L%E%<z$s$UDpqQgmAB7AuG2k~-+ zF<MOu4{n6N4T(PZlnyBC=$>x4as~g|yh#;nrk2f{(%4+j6%Dy|XN}UTnw*;`7TrGS zSEo1sY0KE{J}9a*;tFI4;8uxo?!?{=Re3;q|Dekg{?pTlY3T(#LG8@;Epi?|IX@p% zFekW+^VgKkziUd<nk_Gy7u`3tkYj+?scLxU)DfmVJTPP}QO4**UF1+~tUsP<{ADYK zgZrP*)kM2BoGw2mMz5(GM~`GB@K0JJk*g;3mCzB(HnddI=_!Eeict-#KiTssBZ%k+ zKM(|8LAnW;`h!3o^fSA%|Cvdj%+_k(f_Z&T<hVER>Lo=e?B&MKi5{E%@x+ejxll`_ zMX5L={cGaKvvJ{DTKQVQ9VuQ7$k)opW`8oNEhJyt5-pEX0!=l^7|k+;RCMXup#~(+ ze}@8odR%~fk&*mPIih+_w)F6pDXZ5#GJ#vyr{hWgwmK$A-~Zv-vrBuc`j?a&dl}*? z;Y6=gOsuYGi0rs_{1fZLqq%;??LQ2i?-+Pq`sc(uURxm+_*1-96Z@o5ASBU-XuD*0 zqv^>A)#y4jq`|Erc$GR5B3Y^1$XP1oGqi2BlMiMTI~I}lG&5gyha?&Beq;pe{EJF7 z^3;KzciE=+(;b!Kq9VK2m*~n&jZJqrlG18(vTM^^cBel!HPe;os~s0TnIi9GcV3g7 zQ=69LaHP{UKfOghiw6ScgYqIo|6oLER}3l%)L0W!60N>*+|TZW$*7Z<5S!pIn5=Q} ziAiyBQ0O>tAW=RlZ?RBI^lV~$^z4r=jE_rjw7}fcB89qsO}uGXT}>b<E7qOd+jsNO zpWTuBPgu5BiNuF{kb0~T{*E5})QSrV7(<xiVwkmXA#ApV1w}`gL*I+ED9AdA`9O&d zi#tuQAp#deb|6G{kF-L#vLX+N#|%(5BqK<fD}8nZnKI6uV^iLIiWgVSzcZqElTA6t zZH;_1e-)0hJFpi~9Fabo%iX~%;DmQY*??jeEgMZ4G}36e`Q;IYv4(l0z#*4crSO|p zN48<`d?_`yaD!=sy|LP4wzFRYxJ9l*t2E4Rmapo%D0+<_iUNjup&tul6^+D65^gbM zSdhIOr9X!UJp{cc9uF}eN`!e}?t%zRJ(`lBfY?K=3yUZ^DH%gk;b5%t`2#c;AXAjq zRg~ss1Af21&z#{y3rb!2I(MIjRiheD%{+hP^vIHg(Z(dUNxHP}`|V@*yf|m<?pg2; z&*&ZBc>TzwzKT&}8-|qV_y-mZug_yK4wtYYKG8WOznTvzQ<Hinz{}@<_CD(^o?N?r z#MZ=-a~jeYJ=ECz_sJE3gDGk3;8Ez(=e%;u1Yh~o>06iXEq-ZAZAM>rvNOBSoNAMK z;hpe4&d?=fi_`L<rKmy^5S>G7!Tv|MsD$s5!}%%dUe-;eI-tCjt$oDv($L1l=b*`f z!p#u-YLC+XVAoV3&lE1;ME`^*77zY4H7#8uaQSJ)P&-&B`n8?`g|%xr)0F8+=>-X_ zuFsTeXQ_X{h;ZGEN9Xdw#8V5NoM_Ya%~*2H(t~%-Zd#V3PIdH33ziJcn0Ih?PcJX_ z>HSq&y*H85>$tRBqcLq@u{O!Jv{q$mY)DcY6MMyry{mWU?w`4GP=3?n)7kt-7cWeR zT~Isd)bcqe=B>0(?mfP=zdvCI_gPPmFuC8$HeSMxO@>uKaYg3cG*aw)DD@3&xaG_O zSO>5;Ih+Z-1ki3w2zUCiMpwM-6)UY<xnsvlwh>;kZ&H+3MA0?N@wCOolH=<Y_l+DU z{Zo2P`scWjHy{hzl|HP|@7GyILd#dgLLjEMbDgDOLbqE#L|=NN{2n>NOn$fU&=qfF zQm1=tmnZC=D+(jie{%7_G(gdpv9NX%Di?+a7<lx46O9djA=rHQEjXNl49ZWj2h?X| zzQGL=;-(yB0PMmvO6&rTkjw_!PK=@51C^M(MSyDn_HUD3NKcJDQ#ok!nKPT0K6va& zODS8-+>(3R9J?r<+1$76lu_$2+EXp3CZ1tx)>pbH-6&lgQC%tBZt*<t>^OlOamX;Y zWXAQaWCe$f`PcOy$y*AKjp@eEc!Gti-R;R|qzh;E{Jp;7W)|K&YyWSV`b@0U;Vd%f zpwXVZaq}4_KNnA$a(~5CDKq}g4-mMz1ew1cgH;}GnMJ-tsR?eY@*FASACOl^GAv3p z)OTPGhS|T%o@^zU9|GcnCIeqgcEQIkh>iz7kCYgr%N2~)sfa>?<&(n2oK{DteOQQE zgp&q|sm_kM&Qx)b=yM4^m+vo$wn*5Pm}uj|Hg+EwgChzo!f~@Sr;&MX3`;nznd4-- z9`;`@hJ~F;Nlq#3%E{ptrY9z*Cq~9cj)wy^HGyz+$&GJX#9kP_qHo_7!=>Ic<#}N{ z=9CMV7jg(&fMRse73eEM8ut^!Puqk7C5I7!c+09$2U5b6Bl{G-KMu&==nDGixVjJ7 zqAcWfu5e<?7auD~i&Ui*6r^!y)0o=XkwM%1&IalI`%g>1f56GVLkBvRH8B7Eo4-3X zn=LI!+hpGKf%Ln(e~{))dz#K}#y-nG@jcr=?Mzw$_vh-u!s@~?V@4OGrWM?D;sNRH z(_P!M9{3-&Iklj^{%+}aA8umW_X^VFJ(mCBCh3Rw3Mj5Z2dAy?F&EOeO+f!&E@O)G zP76RCQ{-6b98?WXVFgZDR8y3^oSd4BS2V9+H)_&C+AxYnLDP_;!X*R?a08@WnT5vO zW5;3O%OLcOW+gOA5GDk9;-QDCE(Z#eY8Gk>hqD}E!MK_yCvlF(mEXtlPb^t}+*c~? zbn)Jln2c2E_1n#EW8c*^c~;wqS({S~PPg7yT9srgJQ~;M;*mceJ_tFWM0$CtHzp>t z|Ja66NhVdS$tWcDFLQ^k@$$m;8nuTTSv=|<Pmy|9NlelMNtwk<>L(?xDNE{gY}D{g z&mnd^r&qu75#E8LZZ8|*GfX<!ad1)7{`ZBg(&Kjan|>u7O||NbI8LSFw@j6;fiY?F z2dN$3r`@$P-Vi(7T{|^YEFI}pvFFZ{_b@IqZ>S|dpc7pwMTu4*wpguciSdruob3aW zm%3sA*mRCl83KcE8=2w>#mqLxq<nNuaK_sBA+GW@Ms{va?TpA%W~FKU!aXwvO&vU6 zsy3ESnix7Db(~$8QOe*3LNY$)KbbFzNAx@4#3TO+HJ;pc!M~<rn97Pn%>CY<JyQ&2 zBF&sWj~i?)gdluDu)9u&;Bgb!dpWa$kLAt3Gu*TBjwhbndGiVVt72JUX@xev*gu(j z=bYh0*YVec@&Y;@@aG5Fg5+$aF_9Y+ITE?4UW_v<vt6!irNybtV%wONn>tpEHH$f} zmJ15bbo7xgUV83tr<z06tC!~u>X)|T#|MT!`n#9P)G-#WqCzn0)qP)l^NknF)CPm- zaaRI~K-2dH{?#`0aQX+n0EDa&d_fZM%4Cm6$h#2WAuM{pnsx5bNQZxz*@h;g;ocb< zf?PFVkvezyRynt1bCdL~ya9pzjcuQ9Vc{*GZj<szQg4RXZ)$?)BR2Tml1Ucozin!6 z57U+i8GXyAY;ebJ++{KFEwXU0Xl~-0u!UmE-%#dZjPPn84<0#kfQr~9lZ&!p1o~kd zBmiv)vR$XHw&%s=M4aKiBVQ?NJbtX@6O$8SUx`gj#3Dg*R0g*6PfYB;F;Hm-GG*MP z*hG7=BQbUgc>bWB8&(yNE(EHunOyNqplaRr#`ZTFw{LG0@*1~uk1nC7&_ZepR2CIg z2HG5s&*|9b-Rl*H0+p2kX{O!&a7HC}<nrCyyZCeB;oxN>dl7mPn1}vkIOnbpgHPq) z_et;X`;rBvGtwaG4E!<Hb8}Cw=m@Pid2$8cvf?Crj`Mfi0`6bIdUJPOK7NwAgOg-G z8IN%oGJ;Q0%vLN=EJ5~)^@`2#fZn4x08fc##ht*_KM92O#}!X0&MKZ&yo#>@^At~n zEV=|`@*uL>(@EDb5rVqO%i<uA2eCu>--v*E5Nz$i2JTf^$q9v)s8}k)8Jas(RwQBa zL)qqWdhtwn3HVj1K^~gJpw+{Q#X?9pP6zLS;|aVUR1PSwaFf#<G&>RShtxrSr8iY{ z+BKZlZx&UBfS=0c&}(>~U&94>YpRv0Dv<gOWzsQcv04#td!3K7J<B8Krb%it7n!BS z=6Gj{@T@J4KWB?eu)WAq-V{=tK$P2QDmJkjEp+yGPPghQYg~t)ZIMpiB%NflEg2o- z8TW?q%u{+3cS2fwmP5L2Qx^9C6GCQ}qeFVPf~_=FO7(1*x}!;CW27AdM#<ig^y-mk zkDY+~>b<U8S+9>j7G8fw$*(j;_MMmhfbW?expq7IJfog@zuC+)hx%PnE!D8%j+SHi zCzR!FO#dCn-@9R$$ZfDE3({>GjSZ^@)M{sn#b&d4V%0Hhgph30XxMZy*@kPNXAxMM zk<HVpV?B2K^TaA+q(jW(&>N&PLUPCJY^rqB#3u?!J}DhkzR1Qur{-A8OD~z)M=Qnt zBjzCG)$1W?cOom6?h%Z*`m|DHtEyP#T^~MuTFnPwo;T@FGrdlF`3UR%)kkXS!jPA_ znAT4+fp_{WD>UwsKK(F@ZExq$5O%Z|`~(FlAIYVD_*nY9<9g{cmhk64SF<_Dh+#wv z+%^i5DD_nt|DQ1L6tYpZTMLPA-95e?g^z9G0JiYhrjCDZdQ5oZ!BCErm=mhZ<{LIW z!)CTsZ9aQ;bK1k~9>Oq}Y&rd+^kx(2&2_L)P-gF5=;4BbM<=1+NaQ!C9SE7sqVPs{ zL_&%yR=~g6!6P}Pl(N$HI%|Am6q`PApmc5I`9%}Uo48`>*iz)on3iskK9E8yXYs## z_SCk+3)qm??6sBR+|^Q&^z1cb-(XW-zoBy6;>feowS&g7ja={czHB;YTQOnQDybZa z?`;K@qn)p_nuP~9KhQ}Vkmu`PvhOcZa&prI(?LH_aceO=)r$+=3{xGkEAnxk1YKuw z5aG#mNX`!BEOx499Nx6<rDy+i^UZ&H_NDMz@o+2SzC3j3OU6n6v*Fy4wf8>Xdf-6o z^Y^Zuv--htuiSUvcfsG^eDI?Oo0qJ8bNQRc?|Vg9)vhibfAh`bON9&T=gw`vtF)4j z4BxeDcn6=El{$ZZ3co|R<#1I;U17n@d0?W6k3NpMdA!U;Qv?=djbG9`|Kj;5j|%$I z6KO@JEig2G;Id7$x#WfPsmnHlwy}_K{A%0c_OI@0PrK`@b#t`8T0C=jHp_T=f5$$< zw)>8AAKG0mdnA<}03atUBVW^!-A_xYPTrm?Zy&(&uDiba>aJzaBYbZ0ulhaq*L@xP zt4ch71kLrM4a#L%LI7>2JZ*${lLQ13%GH*QZ0`Yh?Un(xdjS0ThQWWg9x*8sL7iv8 zk983um{!7@bv>-C*8^vCk77TtFpewEV?>bZhg^^~P?_2(dd>OcAD~5@J${susOJx^ z0=V<%e{{ak9{iaroB=wEK>wfo5CbDqf0{5D!p)1Zfhi-k+n)|5qiALTI2{Ial%%{? zDmpGi)Z%SzFLC?1V{I>uL^`ABzY60VV={g&c|F@WVvcdnD*RS=t~)B1FxygQU&?IQ zxV+u|xOXYi3|@Ks+u=*Qp6m5Swr_a+@eLavdrW%I-?x8Xf76tBKDpoIq+m&Euy#bS zSGqlAuo2vNn#N^_cf=$G10JZQc1x$&s7n55$5iQkG5zJ2rFWJty}8H#n^JN;hLoHX z`sqD6DJeOg+(|hpIrN*Di;(s=(|+_%x^KkND-SIlk#@y1@%+@sHbzU!u1o8s0V1|N zzpx@h>&QyZ$yG5O@(u&TtT!|AI$p^k&lb)1Jo?^JjK5uwbxiORzfy(;hx?P@JUQB^ zSY|XP-`;xkXe%!rZN2^WR@PdPec|2gii&LZKvszRE|kR{$gW`9>D*Deuxas8p``6h zRz*dY*q@fa`W2RVBk`f>pkMD{Jr2|hxoTyBC`To8<s=bB70sB|NhwLZ1Q}?$A(GHN zs5=ouhkg>3q)1Oqd_b{yfC)Fh_5RWNLu;1Ip0#Av!Ma1gdE@r!@79a%M76=*cZT%+ z`YoSqV+rS0oj<x~%hu!LW^UOq*)_{-OE&-E_TKZ#3e-k>T%QLgJtGOF{1dM|zxT+S z!3nE2Z&@`V_}HySo~$VolB{+^Y@lKOvUj$=&P-!>+<jul*lTA@4trfT%W&K6Z+Nr3 zcB3_+-{AJM-XvouFB=BwOMpHn6IwZHbvWXX`T!0-q#=OI4aE--76~M7lD7+l&NcC< zDpAfW0B)~~)Ik{!(K9NSy96iB2#7->g+-XuAkmG;=TH&U%;jH|SFgI`+P`8dF_u3_ zmvq3r+u`L-zZO-SnBt5&0YNaQ<9+;<Poc*}dODW#Es`SE%db%-#cEA?xY!qODC{rr zK-BT+Ey)hA%7-fUsCU#KzfP_<95*mi6CVx?WTZo5hy-N+ZJk90kgkDt?b`<?(+W@} zfL|*j`~K@%TlX?AHHY-ay;eN=lEO;QOX;Ch`48((zS+@O5)N~o20n-sYlddAYIu*| z>H)y0*Tc&Uy*Fwymos|=p&j!Syv;3=-ezC2iIM8-Uz6ITRz89wPj@`WoqSFDhFiqO zNv%>FyM~2fsp|+?dRsa|Ca4F(7LO42@QTPR?$(YDUI+tnGTiYO?pAq&g=b0%ORl*? zVY3MebFPI0egUGPVf*<S0^(p~&uYd5O@=R(UxuRo_luxYj)(o(g;z$i?!3qh*ZB%^ zaP(k)@c;r88WR<dm@nDP_8+{G*}Z_c#LX%zK5}?mU7e-aQdfuVpIy*J|L%NUTXyH8 z=&I0LW}EADm?`KleA;C*zeR77AMuN?V<BiD!(j>iMJ}6_?z`$wF4R@e)UBp_M*)Lt zRET+5@AxupZ<dK5@33^fx3(-^dO`Z51t)RAzj=s&B;E9{Yy8RlGR30xQ>;)ZJXV-q ztVTvqFvKiI`9`p?vLQeN6&?@an2e3(YA871UDHi(_#kw^keTR5XFzTV>ws<~y6aFC zs$4u5YHXy22sbhX$7#n@Pf;bRrc{psUJCx{@Sl$n^*Xpe>(g?qTD>ktr`K9@()3OX zKsm%1o-Tny?;U$rcN|!~SCf=8GBEBP2lw1t<^gH$EZ6+L^Ici)v;pR~o>L{fGpgd6 z3=<*>LKGqu3UdVlr?zsO70@jf4UaT+9(BChrb5Q>xYQINB%~stUX03ygB}68Dow|+ z)i>O*x@^hy3#Y_?5DLY>U!*jne0PSoyxg0yyF8<`Bz@$FPdw|JZ=!h<I{64__)u`H zO_;Ti*cDb33ZH|agyt_#D(RRy72l+k0CA?q<eZ*D(uAVbuuE2DtYrM{Oo*RoKX_gs zF#uxhC>=S}?dc2vdH6a#b?oX$O#h8f&HB~XrkD{U1~xAACR|bs=vIRd9U6P>BO#gY z58pa1D~VGqt^de{7#d$}#AB;oVojJqCx5+k)9#yIx$ySV2c6OjsWyvwUv3r@@M0Kh z@hf%i?4Prq**;XI`?Pt{iv#D?e!4Ni-=!H($X*C~n^2JC2xq&TuEaS@kc0qp&V3aL z@$W_2_bf_wCqtqm#XB_jSE}2i{D%U5D6QaeN6<{@fp3DFd{LoMgJ%%T3I;*tf{B9< z%D@_EHCU)f%)8R#gfvmalyIH1q!_;T_3x#&?_a;RYT2rR@mYeH9N)XKG#$}Mc~dt& z^Y$|vr{?j@m|oi0J3d(yvf>A>T2>{6k=i~Asesn22{0(d8|7SA6*J0`lgnmQ<c}y$ zjlrYvKy5;-(<JDUQ(ZQjD=j%jFvL0&w0IJp7n52%f*&EF8R$p$2>L<K&Q3&gVv+0` zmgCG5WbY{tLHNNEif~Im^lHHb82gFuL7EfzqI=M@pfuLO8;Pt59^!Vu0C7l9k6|Y& zSU&K@`N$qiktMQQG_l2wRI&Q3GR0v}QSL24sLCwqrbX&hYqoB~Z<VQ8DdIBenpsk7 z`G!TcX=$~KHk7wYoI<JLg~$m2>W||r33e72nPH0u+Vy8msqDTzhd(siII)*BiaTYC zPq0gQhxdGNA#-pjEiE)S^8)d39CYSku|tlnfi_5?A_rwcm4{z)RF?=7N0+wFoWr0n z#TOPVX=E$HPY6rzz1K>5Kj;#n4vcOd_{WAA-HuPToMaiNps<o{F=YGUTRxPYfa#{k zrBT-+!E}mQ4sZQ@uhF_!`m2SkMA5rsKC{yfN(hw-3_3#ih-x`W(PZFY+LH~yP6kCM zDGv*yWmA~MmUy510%_yA@rTd<_59)SSS^3`HnvV`mz9;X$V?P9ONsc}QX?H@N@>Gw zuP%>XO*gG$>*U9@g)i5INQtb=5W<*u%c8M!fCW{k;P(BqO&IXO!Uk75P#n+?kPY+} znUbiKU4`b$_nbzf$|Y%(UmM+gPkQh4p5qk=bRA$<XSICQlBG^6Gh3AvkvlI}Lip_< z>2G&aD{t;`tGu~6mJR&yZe}0Uc-oX;o4ax2Tw8+abbF_%jM^aDALO~F3YgTeIm?5y ztG$5&f%g7|`cW5wJ_SSo0cgHJSEU36MbCGAjdfS6-~NAWj4?6yt1CWeP+Zz-utc_9 zu9k>?g|CC9#jy3#(U-4YL3ASX;n!HE(@<57%s1_gJ-?Rxt>oC!d4wMF-_(u19n_fJ zki(rLq>G3}hm8}ot`n)a*nMRqh`-zj_{i&uW@zHId0M8K19!R*Rh)1KEQT#}$8??; zS9+A~J^Ej^5_N-@j|LWLnL10Ipk3O8w(jw9=1uB6F|B0Xx}UTn>3%>nloDdrOQ6%Q zfpw8AGY$^v-hbNfJwHQ4sE1(IbRgZj381okfy|I#x&%#Ozz@R1;2~~;*A#U*q)V1! zHvHp&{Q0AF20ZYU<OY%Aub;d3-gB=rf5$$sE-g!E9Xd2?scc~8E?&QK<@H?X2^#88 z$S3%}AC|s3Wx9eC^>{ps5~OngYql?4Y6o0%<dscq{-#X`^8BIn_@7$uE{zfmxDN@& z5hILJ2Utg$&XwNX`lsUvL>Cn7l2S#qp&EFnli(eFl|BddSqWdUG*}>I!WtblG7ZD5 z*mK~)0x1tD_<<0k;w)!g7_u;>D1bnWc0+SP67|ai)Wwun^t7QBj%4Y($KH~T^;`bN zzFM{BhCgjv@yBcA{?p^jOMOxv-76nNfa@La<9|o^qvJd?yc+m$8yb>tK?C9dLJ0yN z3XMHS<m7L{k4hc!N$)?SoOSG@mD~Qh-xwW(p`KR_nXFlg9wjx~d~t1e%Zn2o&Lr1c ztiro$uXM3P1rt7wBqqNlJ&Pk~LuIF3V+h)C0_++;--hTj|CaD}5hmzV3p$%p?t3z; z7X;)idS7>+Goj0cdo~T4&@KJzk&mBTz5^A9munB|didgX&N!xjvh~Tmr(W(Hl?rr0 z#AB<TSU%&>p&84c;7g;OPu{(fnxX9;mO2tr)($uRlxCZsU@3Pz#f(WQYp2Mg@h_d- z5O~*^BunpREq9l8bay=|bT?rj$b5=yck2U*;mSEP3Xw!o9SyA>vuE(K$K=n>qvv;O zG&vwbJBMF6pANq-di=ig|9)P5XQwtE576uyapn9v{J!Y%`_9Yl`qO!qyClf-Y^j{j z(E&_n4uEYi>spF~fo=vRAj`U4j-Oplp_jV_7xi&5apCuv|CIF3$t|Dk&=F;6rf=Fj zAzFx6ATYiXt<Qw$iHnzKB7SYG^u&jEOMl&KHSYa<>tSX&Wr}{b;}fFyyll0;9DUG) z<8p1<J3o&+#p2t*Dyj+#>!2O3B+4nHpc52T1?xdBm7slTo!l0*sbC$W@`k7LD>=Jn zR@DNa$-fV{r);hE3F&?Ljhlb2jLi3hR-28B+e4SD#38E~9uYn9L@PB#E9Rk7ETg-9 zq6eRdzNO>qpUkWBw;}ydl!xr%&uGF#9FU9aDy+;d%0<KrIytgPH+x7VhGzE2ZBzzs zI?Ys_Tv+7QAH5R<HY|i85ySRLjHvwU?#|@prHE2!`MzzJxj*o8u+VpNeO#cED~zsC z0pjuHv6I$4a$s05M1Ts|AwcCqx`Vn8$`6bZdFmJMO)V%$l~%v#`YgBqnu?{{kG=F# z#6!o#a6xL@$<zX_?u(mCO4#o-&3o_tB62@Yj7f#dO7vZ#0&~PrvV@UbAkd&BouJ<U z3<lYe5$vKYIp9pxp`F4pXs(2J3Y<ceP{HT$HJk5yVb)P*I_Vp=;=Wn^w<c-RbS_6m zffopand4OM*|lZ;8^(o#lPdBP^nZNtCF!4WNpUU*XDl3%>EQ33|ICfEi?&G3jgOz) zFf3H!-<LTpbJXAhQF|nL!e?xpt8#YT-jU^1ZRHhp1!HC}pObt4vr^>6tWkNHn#6Iu zan!s8s1C{3m)4-|wnCmLC&Us3j8`Z&SSBhYsuPT+BXfXN0P`zX2s0c0fKuG;5Qpha z6?9m-V90Q*NQPcZG5=cpJtAi|EzB+5GIjURL5v?5o2ZOcS&eFS!2mI(f63$+t+8qS zmnWuAKk=o6)v6KS9R*ou&R15gdPVy3*590zCU2j=>J_e_K_hBCnf^d|_THv>W7XsP zIe5L@wq0c(tW~K8hXQ#jX+-Bkuv-7>@h^wX7H85!q;t}judJH1mF<7%_qXE7<aURD zvRoL&3$n^OVn12|5=#)uGNhXEborSf*0g)u(&>9fJ}Bf<O}{W1`RS*0BWk9kwk@{D z4)*c?;6=PG`U9d2W}1U^v_x=sZE^BtB@s8dHv_1qd)aMw6lv^aQsj)n4SYf13NmmU z#KQLQBI%k3JYC)+l=8r1$0ek?C%2|f2?iUa^#}UtbDt18KNn(+daG40HCy#9daKk- zJFHROiMWRrF-8Abq#9D$-Nn^2%HZ;J%R{$}uvs_Pe+&?ba3{dObo)>5jy^ZiQZ)3N zf*V!`W-OmRxnH`u4FAlHLn+A&^}(>}Uvm8l6@+fsRX^&92osReGUO%dP$3U71PV}E zK2nFt7z-+qT)&cW?d6I(+;kdn#ps=v>-oq<jb^(>Z_r%4s4?iVNgF>p60twx_14*) zS5){A8*<2IO-xFR_jcDe^6}3<<nm)5@fHWXb^PVZuUUg&)*Mf<w^P3b79Ad-@d~0} zG8Y;3)Q`>}_O5Q|AsXT#4L(ySAtzr_v_aV|D}gwKbR9VGwm9aK+asZPABUsxY{yvv z*J0a1XAgvK{{-7%G%)5goRn>$4%y2EfqWhnG{kUY4|x2ZKq2YKk=!s<sc31Dz6r9y z(hTV^{${YjLFt>87HDhxu{Erpq?rG%QXz#}!Yv&wJgpc&)_4V`D|!!o+vs~}u1Q7x z3It-3!PCf}ssgGOkmR&NOJ@Qk8czc8{p}B*H<=vmtqzmv{KM_w%f6M9IN`~l^-pc- z2yc8`e8rfaZhS?2d?O#;@>E-koU@6&K`>AB4~=@oyXCR{bMNm;z(nuw&T{&*W%*My zXK5$`tDL;aLXnoADONPqD|?QL73sM{Wdvt&=?2iD75M%XV^5ejXdVzy<mQ#<D#}yp z)NnY6W2El^Fg1EL<hS~`ShGpWwI|uE1{b@;hd4*%ufn{<Jf}2}i;G;!lGd>P=2Sxr zmm~<|+vg#1=a<@Cr?AYHXuPE0XLTH9TCTeNPjSim5BSgcj%NmPYdB+~Qu+>BCX@^9 zj4?@gT!>QWiLVatyB}eyBa76PNb17LsP|i}V)P}Y`cC8?j>akHD*D5+-ocd20`FNb z=zL!`kd0)MfJ3>G{hB?;-h%-~;^0sy5>gteU7(sk7V~H(X1`Avl($KA@+qU&V6MeA z49F>+;5z>3tP31eh+3+04!T|kcxOlSiGtTaX^#<)0C+XHW<-~Oe<AtS8R(q$$QBAV zj;1=O-SIMi5gr!3uh`*4mI9}P9)ZAW{6S}$hVSGE7MAlA-9-~51#qc=-%oe~cn$KH zmqXh~XXu176-LwOJM9j7GmHUH`_qzYhI{BVy;7-4@jIM|pYVxzA1aR9@f0*nKE;*M z9YJs&0Yp<!JGm%$DCkpwP>^XeP{jLG0a&Ev<36z*n$Lg|I&(VWrEFU=#2jo9Du>`K zPD67Pl>^7bF27lcdgCSPR3-95qs&S`(a;eR_#J#PAq)CY8md-tkP0H-1+ItU*OaPM zl*uUol^Z+qJ*oBrFI7ubjNFg-Lw)2&i2z%tRw0jG6rX*h_F3Wr92=E@N)@Sm);PE} z)g?F_rTVcc*+aJFrRTOS(T|C4=5Q~wUa1Kw#lE6Mv1tS{2)9oA$J&HN*R2@IeW$jn z*!Xa9UV|etGV)vJ*nD8>a-vnOj58#tG`hqjm)@C}8gH@bRDlNMPc;tbQhbS`KF7dw z+Fn|t(b=DsFHUsZ)utiN-hjA4TIq!Ryn^&Kxn(o=TyM)L@|4E_3o9_SZ+#jQRltg2 zd~fGq3uem1MSTax0`@#Z1NB6fUQG0*a3c&FbxcD*t70}wd}^Z8;E7MrY1N5(r}VvM zluJlRw7G|;#_9XH^detUXdL1)Wa#V;lk4JH*C>t0nwXHD)L$Q$>NOSy1<jL&KGwAC zocK8YJ++zV_2%>}7Av)Wao1g6+*LehE>mffHY95VQTk2|n3lIWL8;WGY?Th0dX*Y2 zfO!`OJjZ)CGv{6RG5cW;fM(29#`uy#XzEp3PN`AFAh)blm|H5uxJ*E4{B<l>oSPM+ zHfwq(v60A);qSG&K}_9PTsTJW6n^vk)Z<f>PA*v!lclu+oy%I!*|-_fsiC!Mb!F&{ zHvkdSEW{d+%*JTUFldrFQ_O3>et~Ng8&+lb2AFy6n8M<XJ4{}cCeG@p5`{v0kL`wp zN{t@*a2JSTeM*mQp~|SvPDm}tbXteZnRD};_ZMXM>pNJPzM$;`U9!_$vbdV#askxc zE05z3*EuZ7I<3Z$l%&xbY=$ItOd>v+aWJPH5b$M|d(2*KoJB-t0-&4dl<B}V;ylS| zO(p9BCT9|hH^mxw1DBI1SaNy?2J6*u{Wb9Gq<@XRL2Km=u||U-G1gqPuCyuD?Lk(s zULr6ZkT(-gj8*&0?uztYfoctxA8SM>N{rDYnk;&aHqm8Q^A7;_Xu9{>B&)C@V@q$n z+h7RIFd4OM=~}-3*8J)2xFm~UO}chRvZ42u45iUDz0zE{c9DR#yk;Kn_wBM;RBGF% zz8tsd__F24k1t;)`Opy)R$x%+_(A=i6dD@P?6%RPL?ic7pOtZHrNwk}61UN*-}OQ; z|G8WBcEC3g#*m7Q%fOIS>+?l5fSvFVrm>l=I>4=&ODi<$9KAj%4b2kSY%mR6p^FL3 zD-P6hT;C5WN*0$DZJ&a~2>|Z0I(2$oUB8sq?e=~7sScjEC-x1q+~O*qhYcHw{u67n z2*~4bc2b|6#q$C&x|P)?Lq3X+#Ms0$^wR(+8T_u1Jf@M)`wGtt=0dx|E+Y_0Qk9E2 zSf%Bt#D6w!pE6~8Wa*Ucjg8wQ<4WgkyZ$%OF0#^hcl`dADcO9+!1-&3JuxF`^2Ek! zU(AR@(&-b@2Om7WacTelp4?2j3AfWy%<p?mO<}sz08n*zZpomLGv-$w8CSS$^30L7 zeG8KTJ!f(i6%Oe$I!F?e>~kQ;w?-pW2>WmrWpjbCMTx*ZM`xxYLUg1Ur*5EYYXMjx z*hMhU7YgJ>1BF<Z35T3-0PBp)aW@`f1u=&{L5_@;x&E#_pIiB3EJUG~bV_>d<IS5t zW<_iiE26E)f}bKiFEN?i$R>U5+?v!RS;S9D9Vy2YcEkC<B_D=mPF|mrJ~+oW!h<DD zOeF!Ti!GZ!Mnu(>Z~N_4aG@i^O%lDU)fB1;r1my1A$`FTbMMpuU(@|ICPy?%-!#(6 z#)+FYO^j~sJ$J6-MtDsSCreATEc!@i>=Yn-Wh)bSH3qzip5CZ1@C9UUibU=%*<Y5K z3LL8N#jpxGKa1f)3%yPiqImh5z@(}Rh=re2r3zI|3e*S+;$<T(P!+rBst#NQJx8+y z8)GwF#>*EsQ&7?sWlHESQ&cHTK}bD|V2`6XBwv)BmjjjH<Iljda&ml7&r<xTh$xPN zYpDtRs0fk9E6d2-{}<)qA=*;Z(*Iw|1E-$<yY>N(+u4VlkgFk?L^BcmCtpha?@Ph| zN8bkm(j`&27P_QFyd4Zvst2wI(Nviv^g@+{P&H!qg#~i@kBu*DZLz20@^sHgFInSb zV$#!NViGLuYozv&(r~y2r`d0DPBdqTtr=#~s-Sl$cyRLYaaAz4oq)B>HV>9=ztRJ@ zQ8#cT0)^%xdD~fxGki#DfsP^+3Q6BKA<!fgVj=j#v|w#&YGS647;cps!;#k3@ZP=Q zR?Zz}&GKfnIq^O@uAwX214&&$Q1ME<pKxIyU&;Z~0A~i0mq!Hp7W|R|<^YhxP!QP% z7NvyKksSdC@*k~9F7w#c7_m~gT_J@@ivoju7+Ad*aZrh0dvq<~C@{Uld>8`-Dt!SZ zlERb=IC__W^PT_Na0hZdU`aV2Xe)vi!w3s=G|K1(R7y*2s8OH|NrH{)hzj9NKshYn zNzt=bSJn-ohn+QKJ!=U~q!$u)S5+x{FtSq<MS$8V+CY%T0~!<wZe;l3f3)a)7)8f8 zr&>o8;WiXm#IGH7MHTSl6!L+tTlg^5C3-L2$kF}sK336IXvY@)<M4~%kN&}jsOz27 z0GDM!Gon->pY|Z7h)zmTIz7~DRZw~%IeSUEh@9z^rajEAGZs8vFbeUdjnShe=^c$F zgGS*XWJ<JimyD^zJWsj-B!Pos$BQqGzoKHI-IQ>#C*c%VT}X;~B1Za-x!cjPOV~^4 ziH{>)dxxUy)l6|giz|-s=n%}EUcxuyTq7<*CU+`Y30_Sfvl9<VhdTMuJ4Yi&g#!MN z-GGEhFwwc~D0BcsJ1UkVA67DRdjmKJKO;yt5P@I{FmTZ9BGntD(m*uhHZbi_i=PH> zt8Pzrs<pS?s#QDnE+-$eV+S(KI@{-bI<(*X)q(B3GT0#Qm1#5PuURvH#<aZIiHYkU zo0^q1^|AFc_`zeUN<*Wnz)nh~>~BLRUkOnJuoaQp$%zjXqzG&S6Ixl3^jh!1eVU9& zuH{)=q*70Pa;jQY*c5~O^vd+w#$}DQ=}O_o;sGMB?w1p+;vshr=8LbuA0iz}SjM^~ ztb=&Orj}C=FhH${=v%+Jm=XiYNEry&a0^Th<d!2;Edtzx5SdEN)}zDl<K}MO%uU^l zr03(0NZ;MQ^1UMykKh}ZGXs~n=<$DSl79c7^xgw7Wt?K!8@_*h5o_oPtHu1>BfXyf z>(lt(D>9@PdsBK&`VLQcZ{_XGaO8+IbjSC1HQph;^W?qKA5YG>=PO=$MRnvpr|9O@ zz*~wxnuUKHnMR)Xm*;62(=Td603V?YTlMWwmRj{fNN){Ks%n?H0RgN7#$4CAW|>i- zgN<}q=V4*k<%=h=@@84zN)N+h=vpM%rar1rhp{4G)&M+K>JcRdT?}dI&}1rfuTK4M zO4N(S1AiY16^@#t%Q2&ogR-n57P|CnQHu+7!N7=yGFTvx8bUhhKA>y??NnR@ncx-d z5ko~f*GNoHTZ_#4G^SS=Bs*=gzuBj*ooZ))qn$`aRc>xouCROJjr%t5yK!RmlIgPr z%TS9jd-{^<cE#0>3L(nA5DD>NJhJV3nZuM9q7E;Ww@L>NER{D*cy?}8$CSa#syv>m zWrKA)-+c5*mB*uc^3gYU>aKdUr;allIwu7Kx`4yd<?=v%G8(pMg0+Ub45rlCUaXuC zcrd1+j{qGo@OBTnHncxQ#bWq;bMyIVn}n$DjotgA+(wZbhV5Qj-Jz&nx_g+_>9o?G z(6uLqk#lCz+_};ssr_=5Atmm?h}gr#%f}*plh!}<-R8~TJ+wYa<w^IbuH22%PjnLW zk8B_+z{CH4Rl`i?u^}K3q0^i{74`eYYPEJKH2gQ3{)=}G{e0-o#r^;DnpBmSwe{Qh z_tWc>lh>dA`$nR_MEft7onoo}H(#f-?1*zj(cxMDOJ4*<ujj|qmli)Z>+@NU;S2t! z-{9Os4|N!Jy_}Kp@~$iU)4=~_iBqraPfC@Cut5Hc&UF1e?##UF(XIaTO8lfF74F$n zNImL`?_h*=dobwXk4Q=o4#_!czsI0fA<MD#M`y_|0;EA622=U?l-~KZMb~6yW@cSe zRGZ&BC7u^Lu6A_l<-0-_Lzwok2nA=4X$aM1R|3h|RheBAY8W#+c(r5XE7Nro>d?iX zC@_o9#dnddy+pL-V29`iXdqPPkfAXtkqjNQ(vmKLWf+%`TXy%RpThV+J86L%RRp#X zoy1s_v=%@m47R+Ohj8Q$<>ge#i&R$ZM_w6-#oGB=`DlUPpux$?0#QA>vb3tt?34ue z^qu+z%BI>#c=UYfwV}JF=|ts@$wfJXgfPG%Cg$}+WMrM|K3cctrb_SnD@g2(>y^eH zPV4mp9d=)rUa97)a>8p0hlwm)kW!qlx@r0kg{9Ka*xcHt<)c~p;F+z{cCpDD?E`46 zQTr&Aji3|xKw?*rVpx`wv5tfKmYRtghgt^B0+~aO5+U)l>&ou7K>Qf;Z17Q*%uo0d zB%Y8<Ftx_f303Z@2~~%Dp+F6};)b{fQ;JnXMI58!?uWN8O}09x?V59odZ^*Lk&)WI z3(}-;;eols3wBL&T9d_aRZgUdGf{YG<l9S%*9&U`nJJQ@Fe`=acPFs#<hapqyDs2% z=R7yCOxQKetlT+AGNflp^GD1M=5mVuW9A-6VGm8)C6rP9WgbSh^}@RWUXoKOk1;TJ z{P>upW`Ps9>@to48Lba+qh(Q0B`SI1KdIXk1j!&HcNvu^WAxIYa>je34d`$pGf@<C zBuGX|ILP5FH73xADfm4aWdzH*Y@<+#LjLJv70&X(qSQY3z=64ovxba6FgGWgTZWn7 z!2B`N{S$6Fe9V<rl>^`4QTY`tL|f8FiIz;0siMG!tc|X;FCr^q9f6u`FK39z5-I2W zGH22JQG;1sW-(L*uWe7Gb}ua&kmHkH3Gd1eh_2-Wd|KE7&54_8=N>Ts{lMJF^oAYw zdMEedz#)d9C#On#NLyQQNr8>cdUd?r>nI3mnhinTd_i3kNUt)y6hfHK+!rb`XLcy8 z^|}FB+--rHb)J0b-JJ63oHyR6&QgyIWDGKcVs`dDSsqN2@$t};Fbq3+!ZPOVW>)AU z&<8<Rf;tObOID2##w>;!Bt^NC!dKgaF-b;YxeH>%$|KqdyGQ3{v9P{uVH($WMN_SW zgf7ybA|KT@-LsP2nGqQ^eV@9rsaDxCG4dOKsG|}AS0=NzFqsc^v|w93D4Pq9PcIQe zTHtjKsG5YaoNv;zvREXjU>Ma(MM-|gKW=|XIsywr?dhAEYTYaE32&P=VwStM>0%3; zc4R%TFY?8^Q*&&|J~vV`8nSwqq#KPbN#03S?s%W-s6Hp*d0Bxak4f3rumBjWpjkdY z1wG3Pvd0klNdQw!YdN5n?}Q{le7-W3C-3xBOn=d_YwfX#218sw#xg>hWYVVsUPC;L zT~RuS+c3n7eC*X>tF1Hi;xg6RiRMjX>o(fzX4y8@U9-h7VU_AyZP1aIk{>tcKxu&_ z_OH+Pm1*u=zeiK%%M0<F<ELrLeYsWqGL@j7t}gO$k7lH>_L7<+4As{|gLom7>o3zR zi$B0uTvAM~VS7povmNZi1lPpv+WPskMoM?G`$o=MI#zqb#Mo3xp~^J5bh?}8lsEaL z&4tQvo-Z<n8|TZb$~EdEAF_kq!m1oYjFghN%q1;y_ljrNX7(!@9RK;B1s227^%h-j z|2&`M;+hPGy#Df7SI9oYg)#yO<(;4z;cAqQCIFm~`TH*7ADsm-YW+m|WwJ)3t!pCq zDdDq%lzKXUq`SMNS5?uFDDgXo=zs~a@au?95krbGSqv$jx8I?iHYB%b@xX+nNgER< zm}XZ+3ZjH?|D1t+4*b>4-1J|>d>|>L@GHebsbv*~h!tpRocdm`z9s2pG!KNv1xM5b z8oA!V5#hu0KHvt}$EvnXdT-eRX?JL3lnl<fC6!B^djQUP;O4u2ooz&XqgO#$Y^Nx| zk`WrEJl9357(n1y)P*UTh$7KLY6PHJ8f7R#xf3~&xJaHHK_2C)1O3Y8wA#r(KG-#V zM0+WdF8~+>9*@3`Xn+9jA>v4Ji5SG9x^M0-XT5z#LuC5g1AjLkm|MFk(F{VBU>~sj zNl(x)WMHtM7PP7A0f*NfuhwtYR^{MuvnJGDslG5Xv*HC%rJB%7hN^VvZ4<Kw=<2Pz z%!4ulBh^{eZ@iIHU7jPoo9|gy6W~`nD~_F>G(oz5%=`mjy18Z9Idcz;ACk402(i>I z4i2WdjvcPZXQOQKIaS+Crc6ts^bu{Rxmcsc2CVE^j@ZbG0gH0J<ea1*g~G_-&8}(t zTX80<8$4>f^olQMKv5~pdTHCG*8;MB7-JsBf`?)9kAvn&##OnR=MDl*tWXA0yo6sz zxLzq($%%cS5Cm`)MIjJG5yNCn9)|oi@Y;FDqTdFuoj>TUKy``JTLr@~rqSxR##mU+ z(`x%Fo90Y5v&3xEYc<2MzR{-nK&$2T!iO5$F1>|sU9Puuye;3HWzjD;SghKP3cXHi zj^Tz%V-bvbZ{(pEvsP>1pN%nFBNt*5RH+&SeVM6Bs8A=4r3R7By`ymm1QHHes~AO< z>*D80ff5Y@0gVSzLUbN<z{qihkpv2bZUYG!Oax0`&**FKs2WuCIudkP58Bkv9Y#n2 z@r=wDF0Y?jKUkS9y)AwF{PN|`GZV6InB=YZuVRJZD;qo(=`TaxlXjR5CNo<g-9gVG z7@XMT+h$JKm!{>5mp?Ck`=jScHSi*T_}d$A{FV*vGNbgYcQ$B^oau_eN)K(2--ihb z97gvLas)}S<<Ehtgsk$EoA^Jt>?ck0Bl{6I@z&V}9WabcIzcen5?o&E(5a0>yaP-o zozbKY=#9K7D=;ei=HEWY$KX<Jw%Ys)m+pK1IscC;k7h-@%6vAI>MuRq-4eO8EtXMw zfzu-|k<k#Nnm%mkv_ykJ$GDi`Hmd+sY}>QD_dY{c!Ib_BR|)x7X?AA6;)T(sC!Qj7 zsa4e?x@Dgdg+_3y{2CV2@cy7v1Lsi{<64Q>MH;#06ODr;H*0-X`j~6xnj?+aXRVU^ zS>|b!!dxpUR_TO%868fhi#ji(+dgSzVd~?uyejLB$dAPj(up@Y;fv!8`ZZ$E9|U48 zBKxoGy4>r?L-1uoOQZB9bEc17FZJfL*b7o`WC3vED050*rjO-^UZs+cB1+BK@C+`Y z8^gGzioJka{|AqI29Lvy4S>-5X{RJz^#{<`rJ-%Cuq#BfYz_dD(|83cLe7F+y|T-y z3aoeHTMLSz&_nmc7Uc_&4XzGcBX1!(o<cjI_5*KGz<eIJ3O>SixC(c9@>)F*#KD=7 zHjq3zAes}YPlIBKd_p{O@^fwn9BG1ZTMr5wgTsTt;T`_P&5QA0*s!>E#FE9$9RrRn zU3Tow&yNWkk1bnz3_BekOaJrCb#Jd-`}TFu@b^j*;tZtaZ{Iq8?EZ7yNa;IdK}AXh zwoYK{v&uCK4@nmeZ~3A&ca*N)UHj#h!_tLA3pM3gY{7nZ+n-w54O~L>^+Ar_UOb83 zxp*;?%g`df_!#^A*s;%#N$G4IGp;?~c7Cm(TeNWep|_VWee>WXcs}DWJ_BAW2!-nl zZ+Y@I>B6l|(@L&&toBY@d@EDm_T()%K7DZ$`pir?;2pv|tHHN`zp%m$?`kX%k|mP? za?XKA5aldafi0F1k>M001GOU0F?k*3AmthPA-Mqa2NFUKM0{UqyYvIo0=Y*k9e8}x zrpGt2EWMyl&-O2UX)x2dTrtUGlKZ_ReV;rAo5@T!=+!0u>~vhBP0I^;L|fIMrqc0u zd3~NxUK+O?8K%$RNk5!<iXGlGal)oe6DCIPPRLH{<%t_?A0$6T?{f8r|FO%Zca5Rv z*$2mYdZlG2*jxrnykJO;cOd6^yv5*>=Yp{8H>LsxT)FJ6+G)LqtOZ3HoNIFBE%H1< zE>)G1l4M~<#V(e}-Nh0A%b9#`gygz^qCUQT;^v7HH?u-*TAyUCZ|%kv2?@!4(zK5B zeswn$-k9%jXdGpZXO;}ZQsZzuQ?zSzzx07;rGK71i-bUHdP1GTa}Q6N82P~#E5@l~ z)6*=LI5F0i-6tzxD7rDP^8rhTMjv^$$Pmct1FyB1v-C9fMMr4mJ@>5STd>5JC4N4v zd|V8}kB@x#WC2n}V+4RVq(DeDmpO8cjPEH6-O8lOaoazWo_*j!>DkY>PY7|(=BBcn zy#w+g`#&u`otl$BAdT(!h~e>-k&6#XEuU}O_BjhZ$f-gT+TZmMz+(OYkMs&F_6*1` zOp(@-PKTi^2SEd7QJ)hLSp-uBq8Jf;kqSgGkKF()Jq0qWLG6j&77*=G2QIi}`H(?8 z007oP90I<W#mS%?42blZ6e{r@>Ag7V`$`rVB^@7QAHOV%aRdD$i%jwCy6oil9oBb} ze8)J}x1ZfJ-@ULRw*O=nI=|0azQl80|Cx$CVHnsap1sD{j`GNNo>|;u`H@Ro;BfLR zZ+oR+=@`+cF5nV-r}pXCJ-v(_&hWEO0|U4MmdoYjRR6vIJNtwAoGMMpSUy)?AXR&i z`k24y%QwKElgkozwTEh=e638QwXo?d0av@X2gM`F6Cuv5T=3ddXbL1vfNQWy)_;)S zaEhN2%n^+v+9k_NMpAGD36>WUQ!WNyki6b8bAuJ8)F;pYK-_|KZ*x>&V467c@aW0R zT*1ijk9gwZeJKUt4JK)pZ{0DOmyW4cZQePFyJ0q;7$@la4Eb=A34DW+nFbAc@qQL- z)nkxwi;pG`(CWngh6S7_LD0w9Y{ObN8#z6$GY+hH?E!y`&b#Q=<Pxn;C^gite@A*( zdQy7#o%QSAVd+SooBqznSD9eAP4PY|j;D?rpkA<c<9KD{jB4Svo5uHj`6OpC>a{6N zN8J7J$o|GToYy7jlhXN`Pc|C?BY@Wq>UZvb<}k%5tuZl8hg`T$tkN$i(da`pA8m}` zs0#W)f018~Vq7i|x8W*NmP|8P=iKU0q!2m|Bg>lChtE}<reO{t$onvpn7l{@2#Vol z#hgElFj+85@z;I(`!7~S;+v&^7D``**+K}7BL^|Zq0irz?s`%A+ur>2b2oi1{gdr) z(9Mua+D@NtJFQf3Yqoyl*WA6Aow)seX?|qRO*bb=WuA*{{Rd1JJRm(IeHf|RV&E2S zVihZtxZ`vijVr`aLXY&aY)x=0fC&o08i-!Ri_;i_M<`J^mD8_;F|eF$2Z*Z2Jm`0^ za##n^uh3smc0plva0Vvu+oaE=0rPuXst?Z6>6Yj-zFt<mNflR9Sg$tf;zZ}T65|ew zy|A`d;iSRdvQiDiCr7XNzV}==<aG1?c?p^7e%WKECm8o!&p=WHuKtd9r7tfjSoVcY zY&09dGABxZG4SS*OStUc^;LsMWa7wFl`~KKbid4DCGdVM^m9V*G)`sFtNF<zb!C~! zgJ%ZDzk15&s~dQdjaxKKnkPNK{*vN@`=)i$IMg5WSt>003L;_x`E0@@3UE#g1_BKN z3@gEV19lb(NCgH!a~fL3Ky>B&G;EOG`26wb4ohFnthq)IuBn;HY=@sazFK<yo+QHq z(r-WAN<8+X{0WxN?mV=8_KNFQ9D4DELo2tfoVV>3F>&GE^%L86W$bF3xPI@#`Ky@v z=5JX4(~lBw%2sw<Xp!z+S24PTP5t!GY-(v;<#p11C^yL`CVaPV;pGv4ourzmg33cm zJpe%9GoXMdB>7qdEnX#WQ9wEY`kV~?<KT%ag3^whb8(04;L1EXq<R5SY~S$5o2T7h z!0s;jOgeYsse3-X>+5Xugcq6Z@qbhxwP>8nsJQe{Xm)*G&5Y`~qv!8k{px_ii!V$W zv-FlVkL65d7r1xDcW>JL2X1Uh-rnaYj=ue$Tk4iE)zap^_psSNj6iw|3!BWA#|NiY zEj#%rd$4Y5b?!ZjwzaPvGqG;aM_XU#hTM4eEUFlte^g=2KSn~={;@|`)T(LkG6r^Q z-2&K>XD6IdDXjX7FhGLpz)T4<WW>!HNj&O+cm!dqG2$kVCnb!N%+1RecHlxQ|9S@w z!AmJbmtlch`4-uNN#$~2Ui>S{<s{3owUBIS)L-Pk&bK2$j;s^RWW~G)m4cGu1akmD ziE&koQRVgB@O*Vi8a#4iEmnambd^q)zRm03U-*I*VU_pL+a@WKvt<kmUOUvCQI?Ww z*II1#eY1y^79uU%+ptuH>PuE^nRjIJHCD|x<L{l_KTnLM8{59f>;D#;HY0mTb$(2I zRYL!>$Bw-;+}A6lkI^}E^WD=QpthBB*NCfSeMz<AUd8j6Rf%z-&K~`P8#lbmqm@Dz zAz6=hAR&-f4+U<@OUxz|y%NMYpwJa~Hd9hw0}1;03#5`GI$X}poe@`LbigZu#T1;5 zzDhYe2|UJbMn9y<D!L0%lUl3uGuoh1fS)<N10?`nC#YmsQR!xS9-YL?S1T9qJ#_5& z!J8K?F3*S&iV8($Ni3K-HN1KEO<TfKlv-nqJx#J#RoD~FMy;m2O4J%noJCz#WpY{c zN>yd0#g)Kb%*h^E`_6ao)Q-wDGEGr|*4vly)8^c~?~OP2_AX8|njjPUbhCF48aR92 zz|g|YjSp=dyldx+FYOG(a%$xNwI|!n`~sJ&<2*}Wo3mie>UU~KX6Gbpbh>!GMm2Xv z_~tDe5-cEn`i=M8dGLCja&dVmRMFJ5ch;ChwK|dU;|8pqIkmW?B#06Vyw%H%l1r>D zs}fC|(V)^+R+*A4VpXNtl`v$*!Z{;rCrqdvHQS>~Fq;ym^=Eb5_QqM~_U?Pbq$?;? z^Stt=Su?5!)(&crru7@V^})$6?Ap0AkisGTxmt7@xf4d`LMbU@v^8f!?Z`Pz><zWe zq>opP&nU^)=EmtwLTRWs^_e8tTs}dcNkG3}MjAG6F#<;oAT~La7Py=kUbw~=dogF= zk6>!R?E_ZLz-MrnDde~Z!t4Vql<Z;x2YlH~FT%b+UmgR+D+eF~q#9~Bs2GB<X&HE> z(daPh%QxKm@rsq-JbZk5ids-=^<v9>wuK!!%a9$=mQrZ8XzaOWm@MM6teH${P-|f8 zfd8*@Zb8mkX>)?tXVCvSeYn-CGx%0+-@R#ec}c@{t9DK+u&0bw+WQvuwMg%0jazqm z=JY$JRK`UbtE&c&b{YE2UQpRrsZ6q(f+PFomycgQv6sdOggjw+{)1!E-!je1uj^&d zTC;C;s5Cr)iK5A3InI=)RK>7+lB)_bbh=jWFq=*1=rcB5nOAqy_|ZEj4(^qx;nr8W z1DwM<DwxoB#r#qE1%oG!NQoRBlbhv;o0?s62WQI#szH<ol=Z)<po8S0H4oG<N?y9$ zQ2LNYvokigd&>(YB>C537(sJ|+!H_AXVCJJHXb@sXt6LfNtIPb%1p9ZbU)Irl#?Mx z6N7^g60wY~F2QKoMIj?SwuNvT94%UjcDBk_^w<;?LyIo^uQU?*ZR}h|ku{=TsXeya zEEIakg?{`b`Jq>|j}bB{wGnx+b(%M2>kDQA2FIme#QyBz*VA45C}v@_Y0*|f7>*$= zR5LDw+)xS;RRvgDcQf#c%i9djOjl{OaM4iKjGLnuM&1$>EkCKVL9YMst2Y#hK$!m( zoqfU&&PDDM-pe3s6vurzlAe&!NEAngqW`mY7)ufOXU;@p%%6Tb8g<^af98y)!~Nei z%`FJbzslp}fPZ?t)cXIey=;)9(t#QRtXO#U6KE2eiW*2>{NFW@=#&)5IwQ44Tjm26 zZL0Rh|E^iMzLEl<%kF4<<7x6^BfbBN#voZb%JU|5(h(B=z^!zyFhzH<P^<-km$7DN z*U}e%F-*35C4w<Kwy^sR@LrFu+M~y@jOrBunnC%1<g6o#f?&6voa+QX@XD5wZk16n zJG;4D4*ML<POvPfYa67uIRy=pz2_{6mU~!>F|wFm&D|vAM^8g7eqt!jo!d*7tt6EN z-tEP>_@g{Wc`42!s)FjSkf)nCf*;0M=v3cdrlwF~Q-3HVmtN(YTJ5gH^tKlHy`gAS zsv<qH;|xRnQB^)fXWClQ6L-m1atfvp{(!H(D-q^ZMZ8ZwA4+WhK=$#E=UbuxVYr;G zX=#!9c*1sU$DA7V#6^k8mJE}q-z&<@5^+JWd^$yMv1k^}Ui>kvRi7q0ERk?*Y~*0% zpw?hDW0%7&H=CR7Zja?c?Tt{jw?<mU?`@v8u+6PPz@qMlA4HuEx)<y+c~^g^UHiH4 zgT7t+p729kMEK#ob|_pg>xRvssDZBeh77ebca8FZsFLHv6-T-Z;WVtM*qlOdHA`-l z8Y|YS627=%xBY}#$tf&Wy;=z*9jg+|dRxe*hJw+Gx!tBlWB&9Ae@UUWwt-3K88$@l z?DXA99&$q-qR15^_;PZH?bHExWmM@}L!&KAM<Q`3U>(a<kbel9+bwXE3#Dc*i(;I1 zufCP0|8wDt`=z#`lo%T?#EM>n#~5!gihJ+=mfgm_V7GDdeYo}Vf0lzJb?@D4xxYjU z@EV=bA$knn_`JM+{&A6;PBH(z_folKI^Lt)IW%|u7{OHN)Hags1bP`TPe2O?)G}D+ zG{E~oAnmFU>8S(0Vjm>)auK>PctA4L%f+r*voEFD(vdfB+Bh~LHs|2AnWY2DUSreV ze3Ol&3Rl;>AhqRJipE%h7ZFq&!>RJ@y<%OuBad7*8F7#FsByIREWG2Z>ziI3QqVYl zWW{`+QoZ9VX8B6maSDy0exRR04LT#31S8l&b--DYGbsHUraZ9m>-%QRxbJKEJ8A@l z_%HN8CA`%2M5Td2ZDw&uBY`ys@e3woc}d$qF7-!FOYib4Bd1xqaFn*W5z>2f6fMaV zqb{{5?-xUI9J-Q0;m`YcXv$Q65-5Vj4yT3Mkv4JAB07}!Yo)W&uRptSYF5Lbddq@g zu_tnFtDn5gndJyp7S5WX)~_iItzvcUeA`#j6lo+=HM1(F96Hs0OZp9J&4wM)Cu1)D z>R0tU;@R~&HGSi#9#sK(kte@<as+3*)q@TUyk~___Th(-tsj2K$}lk~*l}(p>m~gm za=r8h-AnyCs(S`w0bj8C&ii4faRy<hL4tB1U&Fyo6(l!h+2jwT8KNLY28Vk{o#e3t z+>jLFq+#4(I0o)6VD><g>%5N2!S9TzNsgO0FD|(zW^%wCkPf)x*s0X2LHS!YHx9LF z^@CZ<ex-=exo3QTQ3?VdlfbPgR*9VSwX@C{W2mO$3oV|yC2^&taZBnvjg80Lx%Oa< z*Rb@uL1DGD(GbH_4Py)lm=uuKWm8zG<ZBZWl5`!v83R#>k5O{!84i_Ay3wHFG=NN? zx=)vNGr92N8wqO<*?OV|8N`ptMi`KD@@4SChU^rf<c%uO0?0(;q&W@hjm~)nT6kat zcM7JE84;ArK`ZPd5fp-l(xy`MDTp~Q?Urh#J?C|W<;&{o`@YY5E#qSiY_VlfW_d%y z+Og6@vsu<3d)L=3YrA9Y+J=VmvIZXPz1F4c)!f|NOXt$+beXqIYM6A3W9`_6vhoJ* zq280@atdIyxfOPl!@0R}Q+khDUU5*%Y4j$3q&FK+8CyO?O4r;{wp{v){E`N#QRmWW zwHfK@8CtD2S(jO$(G*;umyKPEKEV_NE^*4IFvsPQ_Mx1IUPmBL2agMiyP#Pa1J(~} za0?W8Do=5akP8WF05jF^Im_71e_;z3&2B%;=A8KbA6_0jLHb&{W7pH)bNr{j&+BXA zu2s9sM~v$4aBREy!XfUnb$@wv|Cryu@YJO<i;j(Q$M-9gwgrc9#e-SnZ@*)sr}o`6 zY1q19CGmit6h~~lrK`WnzV%Tw`UHgnJq^8)W?<@&aC-`1wvBStg&GB-upm!R5C?^+ zC?N^_3&-4CW270P0ZXCS4FS?dYikwU$D{L-T=!(u9`m~wsz`{RAmEggz=3>pX;9%s z71kh+VDS{59tlUCd@6#4pa+BZfimy?A>Z%XcVTz^o);Hx`f}(W7D~6j@+;~6x7V$E zoB4iqo-LL_+#}0iDF5csE=&2NNOp1jy4(GY+uhkQ+Uy?|t-4|Ng}n=3+*7}L{&n}X ztb1E}AJhYnc!#T&nj;b{_Fd+6>H9CGWz7shBqizS+ivhFt@wt7)zXPa5cDv=8KD?v zAUZQ~U*ymPer($#j|;ck_C>y86Qr1qd)Rb<>TbNH<D+H#xJX>%<c_=82yT7HM;w|$ zp0kx<=mg20dmTE8oRJ*T9i$hetbueF-4^jhqK=SQ<6IJg3_I6>?lmlQg=RALW16?A z>@=F7uPMaEvi%gq(q2&P;&AWfd+;noWBots-UB?2>gpTcduL{QlXkVMu2oz0w%T14 z+p?PFZp*z}bycit6*r0n#x`K8u^pO?3B83-LJh<~0)&JTLJK6s7*a?=38`Rf{Qb_% z$d(Psn|$x{J^$x#YiI7<xoz$}_uO;OJw<uuW6owL{&1M8-N(mZ%VM0OPyHmT!O487 z`Ki7Ff6RPm)Kr7BAt8FUD?7lP2CH-`9hKue>OB27?qt;@uqGejpF5p{d=MAqr#Fzo z?`}uB*XQ%5JEEZL?tI;0b69aK116lB$mtxvY7i#=08co^1YX{Nz5*jdCAX%rRGdvp z$_5ZJ9SV*l=%tNup#*+LI{2$tXbJOxvjwhIS(SbYm>+mlx+V*J3=vB-(VAW(+9w|| z8chc0iQ6*^olz;?6kk*`c#p~sP(EUhZuV8?7ba#!yS$0{1+ntAo=aDf(9X(BJzcQ{ z`H5avbXH<vex<J`rnQPbx~es%Ckjp*Q=*)Onc`}nlfP&58;?k$IeM(JCo`kUm*H$C zl9&pID8D-)?4OsF6RMb<wzL=0N4-naW><uAvgY~23GRxS7?qh7&J15wMrKdt7;FYm zx16T`4DczDiWs7lF>!P-Crlb$6gpEfKs<k8`S^G_<B#r;7d||GA>aKCXEZ|9-~wio z|G~t^U@y+by1(J@gz)|^FfLh;NvOoRL<>d-!fV7;1n-cHT)?{~f>;W$p;hfptB&!) zW!m0_jAsBV>Tp`&1wT^D=FIXdEUFCWsVHJQDO7;IuRdgO8ggQ-)|5oEciZdd>^c_i zZS>?<d*^o3aEP9T1K0idisOH{>+=`)SFx(+{>avNN3Q#-#hVig#l`5EGo!7+>Cr7r zx67O3b;aAFdwZj8@$psB?2#!=F$G1jiGsNzdFHHheztAz*2D$g>U_`K{cr3aSa8LQ zpWSucN1n$%lArrs+>=}Hzbe%hH9fwI@viu)3|ssa^>XYBX}0L9_*<WS?%VOxqoS<| zpeZuozvh>~A0}Nt$Vj3PmAMLZh(kbpaUo<Rs|48JR>X5thz%5kMGrcDrx!qhctbY6 z(sNm%sAzoQoDjym1aGoY`sMi#Z{Pm#`5zD8kh=HdzQ@jKh3R5bV!@IPi}MqV-o)Ol z?BN5^1>yDUW+ysEuIS9kS+nbfZChTvV6{IvFPtC6^{)6}Mq#4cu`)BWzAe}6uRnjq zyz|!0E>3fqxoy?<?W<OA-~I!~{hQ`gFUYN1zI1V^-Bnamnvq^KCCi>xl#t9>$Kv>c ze1D)I&1NWDJ#@+X1y}88sR%CK&|O+MJ1@y>j`oLFgq<$NsupC%`oqOjlHw}D)nyIg z**Gj9_*Lm9RexP~_UQrff-tKUDQ3)aMdwRVN~dkWk!W~!r@6y$WoJH(ou%5%nu!rK znJJ`&*-3f5>giV1Kc7U)sq!{BZ-O@cDQ$S2uZlSf!3knc5BWI3_KCPoM4}P;IpdiZ zovG8#4zcX7_U`>keg{|fDYZwL`zohO2})--{P=hFeswC>0+pZj_0K>XPt&jD(eP_M z2|S>x^P}g)>d7UrBmb_izScjd$4rw)`d7VEruN1u<os`Yqn|oM9isoD3-H;KaG(V; zM-aQuB)LC~1vZT?1_B-^KNb5iQocBK4|u?JrOBwRuv!?V&Gf%Y7hJBSFUOK_zLc(C zxBSbc%Y}?MDClpPt9a~Wy0{E^2MnSEN8?K7$HwFr5<M|7o<vq5%sla>V2DjsWa2fC zo2fUS1e1YS4TPa4!Z&^Jfewg4(^-ze{=Ep4(rnVR13VEPpHOxn3x6cW0XDr*2#QD% zv!<D$&Wk|!jIaxby;xsyeh)%`LFk&~Hj$myNLmUNk?lMp4+vZdKPzo@3>#+^9@iDl zG7dXPu9QXM)47l51nHU?#}4CL@dw=s_1^4*Oh*phrN>Kgna9sxcTvQ3+3Gt~dG$M1 zU*?Kjw9Yc401;##{f>ee0`=hdhQg^+3;6*APaNeCsXiQ^F6O|Lc3fID!ssNqS?Q|N z;TXi{i0Skqho_0}%I)m&l>?M$V5K~h-I!la;c~!#DsaiKK_>{XGY=10=>i>o!Q}={ zoXC`0sz97`f{OH0A%YTxkK{TXqWO%|Goe%wa-|TJApE*ot`_8S1I%SsvoeR-ES5|0 z^5csPu}7U|ldwQW=mQ*9A@pOqAtjqxO<^S^o4LpkcT|0UDn#X&h#iHa^M4+VJ*l(W z?MGwf$FRIPS^2~r4@YB}`i{+_ck+u9cdM1=fT-)iI<p_(MEaUhm<KvYheUbd@j!?Y zNLG+x{wvy+FzBIJ*%W5)+rNL`4)&V-3Jb`^C)crR`N%rmN&af}z}?UM{h7N5swV>M z!+raO%l7X((ZXJ10sMb${GjgSI*2O#02$aI5a<g(KDVUg+#j<FAiN4Stj^7B*Z_c) zHmzN{%(5(a>vIvOfCMLT<4f<uKObu!|Bd{1FB_3B>t#7SVdK5`vi^JT9sjd@<M>DX z1^Jy`Hp)hO!8Lec{3Cqh#JZvKk#eA4q&vkq(l|;wr(Ut<=OXSGota=O$`oWRYHx7J z(KT;g*EoLo6X$)PS|q%{cKoQz2MDx@KIJ~%tiAaurJE-x$>+%_69x>AxTC)si}%O7 zqb1y))S}S=l1?}|Q$H>}j+t(TyrLIAzu*rBQfOta90(K<dI|>^Y%gGpN+|5@5@Ju> z2%{ho_6px8KQjLL^K#&MV?Zj77;unrqY$e+8ilG8Ccep*7sG-lO!_tBH}ZDx_)ht! zF?qJ}OND>n$*aJH%5OW0IYFl`=p}3f(wU+|o&~b2EI?NGa2Sl;1GrNl-_n$wS_b+G z{YBiiXf}5EurQ-*&+adq*~)+JyFkuXY#WTVt&+zd+xAMOYo4p}m2Hp7<Ez>}X9wAD z*}>2Gk)z{ptj*x8X>N043uEUUJ@Vvj9orAS-@THtmEG?j+}?59ljKkyD-Xem>C|{m z?6X|p{^w~r-_VmF&t|kQJ@o_j%Y#dK0}+^5dp$%Pu(DJMf0I^XLV8>{0na#J$oH^i zB$hkgEM!@YK6%&cugkl9Myu5*zGK9e?QwYn-}5V6jxDb`o?W$kd6oE1)pEXZY)p4@ z`*xYEAL!KZiCZbhN!>m7U``s3XQK>p{ec4q+^4gVB}rP3v1tVCr_icIqS^Fck0W(R z>p-lM&P^$XvqFhy`K*WsCqN$qznC!e#D%f0@;$GmWvnu1WmQF1hVo5fe&fjSHFK|n z`;buL{GZB;=WSdvrLu5t7N*fNEcEfEi<2e0&Bp4w<llMrbltoE3I5s-7r!*(ipq8- zr{qO0TE8^Pxb)JyFC6vN>V>q7m`cq2^QT^T@Y-KK&jJ_E8hqf+-`xG-=A}!$aLSm( zW8tO)AENO-@f~DMgX~Up;_C{TLG<CMRyj+ybKqA{`K2UASyl?xCxSRthPWj}Z$RT~ zGg3TjF9OP8vdo(Q?7fQAZY_w1!tC$m<M9R7g!pIsctU)l$?S<U+4G&oa8zzo*yzl+ zo8mlXQ(}Aq?|U|0epF#_@;w7jA?Gpq_)`M|PeI8UZULVHkKjf5qgS?Vdxa&ka+aus zUi_y0&$3{GzN$)}5G>FaS`WRyYGzDav02P<@7c0tk2^;+7stiST=o7TYoY!Yg|)iz zteU9K-fgeQADva9T>K3?DWYNOfxn4YM14F9{fkv+VjtzA$!W+^IbgV#0qpgVQBjQj zQU5zwCS+TQ1>lCLr?RU6PXPf?J<_@LQocAXM=#`82<car?Ym^n%UAE}xMa(%%((x1 zsVgfb-)Hgl$?W$T)~LLf*>KLjuC9IEC*Iw#de7dc_8s3lvS;ec{O=7#<G;u)XF^>* zyU)0B`#U#Y64`b2D{C(uN?`dbZcdhJS0=sbHAKt5i7BcJ{NBy(>Y`%4dV1QPk-cB- z`~JQ?EBmf~8DB+v#tC|#By?9}UYt76RtaeaqX3X(QxCh9BW{=rQ0!We3<>QBNr+bw zGT}Zr!%F79DyU`B`gV%G6$UjI#fQnVQu4Gszc0zFM8zbOrX+>(R|Lzml1fcZi?P=% z8n%6S!F!*|CqB8SqvM`Wn5f*@)n^mMjVMelmK_T;Rwl<p!<eOy;_B0<WTZQ7aTzJO zQxe?Mt@_1=c=M5mSRIO+T&(=)Sz8VCN7hL}T7_{pK~`g-t{Htq>y*OH0f`2Q>_W(x z182D4#S{OPeRTp!_b77?n?ynJQO@YNfow2h>XGCRq&U+3S#TW-$e{;6^N?szh<#^l z?b@+5?6RqKcKK?^ga`)9Hg<DeoWm9fCB+H+IcZrsI23M!!Icta5et9rT|L*w?lgd5 zW03pu*2KnU=q*L*RoP@~?OfrS6v1S1>xbl@2#{Z~h(BIaQ@v(Qb<KEsARSV#k5~;{ zFxvLWhvc#&x$*k=INQ{OD87mvzV-ds3|RT)g4G@C;4F`wmzF*L54eM3w%a!zEiYT= zYe?`|eJ-boHOcpt7$q)Qa?JO_LMN;onuuX<z^wVuq!SZ?X)U0hOJMsf0w0-J;RGla zs5(H*H6bpMO0*zcGSQ(S<O7__6YbXU2$&NL>0~}L2nm_eWFh50i1D(2-ou2Ik>+r4 zP4D=#%w>Pa?vj61W{#Hs7UQz<d{Z==XLk!zj=vy(VRyUj%=#j`mN^oq<(2v?;$azu z+2hOoc{x={QT%blSDlWJn}~-thLXNqO+OLOcrr8HzG8!X?ht!v+)AZaEplW;@xR&K z&&%ik5_9OUcDLMa$>?d>oL8{9drd-uF=@@(9aD<7bgqhz|1aZ}c?%Al^aV7m)?$YO znIZ|y9TJxFV*w_{4J-k|OBgJBV2?q_pQKR1v#0lvy94afhMB~|=)bZ$xPY^WNra4` zd%)P!dq9mN3Jf46296b!2yD1fjuM4!xPf=agR(HfUS@`OeQcUdZ<dTKGm{x5v)+~# zyWX4OFqw>uXT-1Yxv{UPSU5c?MK6^2{UzlI(?<lMIxWuaTX9po-<6q3KL6&<jd?5# zKWl@7^mO3BE%dOurDZie_Kl46U1wRp#UvIa80{8|6yr(~$6(b7E+Hk0#coU}5KUXw zTRhXO#^|V`Wo30%L(jYN7w`6L%UYAcShUePO}GQ<b71Xek;}rlZ_IUlkNnIHv8h88 zaX?;q;6;j9^9QE;!y1a}!;<$?`S;igf}=+l;~4feDy^FWejBY4)3FwlKdmOL#{;nW zw_UeecO^Xf5kaMD)dVxNJJ;@K$DjRtDjjWy(ccp%nrEMMPCWll_kWe2an*A1x0Ty^ z<;v9urryTScv4e*=~JvM^Fie%tG6?sBsFqey=hP1m{QBfn$@zED_^hNWc8+AwYW1L zPS_QD&`L7~*;QYEIIhMC>P>t4ri5w{D*da|pTIgmV@wv|=fNseH+=qH22wy9jj(oy zGjj&*C}o7y)e<a1%t4HpBC4rPJsoNL5Q{_gsxUDY(6FL7nzq_&Fg+AWKqCLacO)aY z5YZ&rK#~ESh*0<azg2esOPFpocC7a)5By_qFe5!B$?y08Q_3H|;efX^BP}~CLv^Wu zG!woX#+CG}0XJy-T!h;zEaMe+sY1`WQVsPt!qRP2Fy>K~X^M%nSo580U-lTB&S1<R zZ&#QO*Q>0Df|I({Ot)Ko&`oJuS(KCRud2;~jd5^gHdM4ME6yqmwv?$}RH#jwV~F>Z zEY%c4CLZYy1CLh{Y3Ff0IEsqUfJ=5Nq~51D;1RWJa=4IZFpgt<NY0{D_g#gaSGe0` z`W^TTRBmPvQYq+G;5v}^BsL3Pje`H^Kn7TkdX$t;feQ1m9e^AdI#}_N>4Hj37@l~L zRbg{0f|<yK#NcM(j2P~G)#1Qv_#a0`jFl2rndUTPK&pg_)fc4-3m&W=XmCk{lttr| zxTvbk(A*4jT5)DoR2(0k2u;!6$jhVVrB}@=Ef#FT+Jo6q2^rBbG0_<bQP~IA>YdO- z{><*kjyi0ydw#YrYX8=hg#klKL(w@`WltBS;_Rh!3q!-58S%mcr&7eH7bL~0X+&d2 z+2mBw|E4NtPh{y-7q8~9i9I(|o@z|VN()`6-MJFWqSND}QleP<l8m`gCR5bhj3w=y zCu}jKvubaNZ8Njnz@pmY3{?x_r_5Lyg%+Zn<^ppddhWUM5lSKd?FRX?c29bWnt~N) zoJx`LFUkgPB^p-U*STO(d;v+QDd*RiQ$C`&iGvUNjl)l|_N2^2Z0%s`h~_CBf>0uw zr(p6IGH_?e#SZD+VHtG5>pV!cfas$M0=uWUUG&&RUF35FK}>%5Bgx3hPRl6u9@s!I zeA5RGe^N?%M$o(FhVf^QjXz~gv)*a7>Z@`2IDTgB1#4clrST&gxbM}#pM6N~?dU<B zCuJ?c!mQ$DEfpISw&qPawN?J~oT8O&Q!snRFQZ~nYMNEA$JO?6+|28`*Sreu(`kON z8#Z3Ls5b!M^hdymzEDU4IvVnW6o5PjsXBqeN9U9Vu;?RYdK#T|V11++r5QcJ5xFY* zK?39Gud}VA39U8|grExDmdap5eWEupiv4zhEylKHHy292h|OQWf6mR<#4*uhpIeX{ zla%Z+#Lh@buZZhhv3T#Q7`;mpESvg@7cxOIJ$8n2-grV?;KhIi7OC5+SKjNlr^*%f zb0p(@?m1TTu|DeR?>Fr|q~~c%f~`fdMZP#pPJ<_@esS8$-VJ*jJ*zxc{nTh?;*Jw% zsOf=9h0L4uF6`0AflkF)83}?I^ymjt^YQ>12ni5h7GxE@QF@Vhzvvt~we*5YRXPn+ z7Jw~R73m@{3YYreyV2mKWI!4G_fVShW@UBvMrF(>5)-X%Gj~=yUHl7&QSWK2PPyYT zhu)lI^se9WVDs*qvQ~usx3bj2LLUxz8$)>>$pCo<_Tg7E&UvaIrVuyHlZ41E%RMQs zZQ`r3NhuC*rTmXe@|P?qf;@rMJfDT;uNl9?U}J*Qw9e?t*pss6fos>_adBv@yDpJ= zvjVgHsoB%lZEDUnae@8qSnsiCFL#;bYg^@SX9yKlHp349Lk#Ea+aX^!4L;&_qjyLY z7Jsx0M#&l=k<AuBMQH);0Ew+F!7>g-1iX@0Irvuhh6ZmD2d7*;GfV*%25AW<8#Yo7 zM%wQRo;CpUl3)?^mz29pdv>7*DN(o#1`ekC65gLyvNzi@OJC#zGxD%0t0L@YqFkL* z0n5`_?1}Mz<OKBkicB;6K)%^utk;Lr^>%jT7mz^kI^0jB+v5^qo_JTv_>>7O*5XT< zlW+ysGheiDn?rOITgx`^oV}sy_tSDqGyfQ8PfML23ys*XVq!AW=eqxVu_Goeb3xQI z5o2;Jlt{~SvdV>~=zZB0cNb2T+kAOqxvxAM@`k>tIaxtgEmh~F7ffAmo}QUez?(B! zq3t~HqE!D&=Vfv~{2oXwWkH<Rl6Vc1ctJ0_L;m~hIqywL3|AH1JuP>iH<Oj8F7kSu zKKU?vA-&NR9h)YvWsA}mM7iMPwB?5m$?ZIvGnFa+>U1ZQArIGz(OQT7z#vXtXu*Lh zNw7+fr4V<T_9@tH`E*3vV+@qND7NpMVFmNVW8<$ZX;}5hMHhy+2+JI)JGtDM-V7IX z|A;rBBQ$}m3SI>U$;|RXmO@;9TSW{6lni!#G=Gd)`=dsz(dKj4wnI7j)oa}DH7CD? zD2vN{Zna!*sLT=m`Kie^r2_o>th`uuuEl<dxZ!Ai8uuB#D+Ehe)B_L8AJ@%VFZU<9 zmv2kVPJHlum_9NY9_AI_U7MU`ay#8tkI^d}A9~*AGFLl)<B~u5eagI)D}G)5yv=Pw z#AYFAi1kWxSe_+d&ub87CuZl3*NNtQ{g2qeP)NwP%8#2n)(k+cDrT_yuC*JU;#0B{ zw=H)kCc4jmFiJEKnNMrWw?tX$2G6hv@|<*zq4tu71iX3!`hb=hAMKpr_#n#-<{LCf z;pQpJlNIBKo}UX^Zy*!U<;X=LAX4gl=$pk~v+uXR-+Rr)UtH6?+-Inrf5(R(u*FAx zwG}x(z3C=<QtFcJvkDwSS=sEJEBnTm%zt;5i|0Pqlb#k|I51^>!kk#&M)sYzZ@T&B zo8G?WAA3`(suTZy=iQ%ta`&qFwv5)fN90%9ndH0t&e!i>Gb8QrxA|Mgrks=?pSxvy zrfdDxap5VMOXKsCoy#h__w`Mi5ABFaeEfJ_4!FJbpn8EBvj7qk#3|-BTu<Pep^_aI z5RJ{GX9|P$K!P`TXh34+FdZLBK&FynXYqi=_{5xi&-K5*;l|-mf#{uDbN#EYvf!%^ za&t;xMMX@E`8~hbSh<#6P@1!3Mq})pok`;5^})*01(1TAJ$Z3ppDmaXX9`r0-g3+6 z@LjIF{Fq<JFTL?58;>oTzUAuS7LTxpIY;^$AI-Wkr(@P~uWLq4c4kz2O>nb6I46|* z`PbHj34Yi@MQ%>{CK_tmI^&x`+|e-8vPinV#M+~1)t47m2#TZC15=G|ifk2bV2@2^ zhlwXWbsb5DtfH(;w>8@$8l|X=UCUmW7X?`qYqmKi9d8WPyF8b0qr+(}wWn9-&&<i2 zl~<i^FSR-CMt%unXLG|Y@<@)A)h@lmV@>k7;+(w6wJ?3birdl`x|+Bn)*X{%^*Hpd zOOqr|p-0MfnUd3!@n>{rOCEOoY(5y%Ilvd(h&}Eaj6aYvfh!HAGWCg808%E#0YNbq zM|8r3J`?o^NtO}nQ9&I&M%qf07bG!7!&X}3t~V<ZOm=&8ZFEw2`rPT(%pD68gNg6K zb%EEt)RP(Ks|r`G4hL6F3s<GYXT~mxigOzc?;**8of+2Y^QH%r9JTIfyD6di9chg1 zIj3@K(N%_oj6`3)D=X2FxcK5!t3{vGkZLK<v`JEWPIf{<c22q^IWj9PsSQbbi`94O zA|%Xm=cOcM#v86E-d1_ZHq3$3=k^P+mnZ1g@aX><2F|u%An8;%C<Gi>vaJdn>|Fl* z{Ah4cKuftncqnjiDL2}kwo+SqjS2@f>9(NF;V`mGneL3q03fihtRbms4G5+O7i0hk z{PX?uxHC=#0*jr1pooCLtO9|_l_z)v%UN@Q5pP(rbxl~$E~(@XfII^t;8hIVZZMZ5 zW&b4TiI#-$Rv}~xf}tRWIa-G)AbHEGL=e>`-HgH7kjEpKOTCVUnnq($mwb=>>$N{G zTHtidd~C_ic~5}mHd*xgXC1z=V|!)Y#fx_}=31Hl(vOd@z8_1jicmv&(B8rQr88TC zwdZcG)$0n^Hq6c~(no(%m^9s=uTOc=esAb}XR^VNFxQu9OY!5x-6G$SWQbkGSz=*Y z6!?4kGS&|-LncRB!R*2Z#QDwVTvfAp^PE)mOhvJu+5nn)J?uY|Y#W&T!0(fOX<20k zSS>mIBd$Jh`=lSxBi!Ge@e6XuR??gyl#mhaQslCsi$I62%0<eR{&dup_0|LV(+_q| zTe#5fpXawPm{Z$%a7xL8Z)LfTej-Vqen1Hdryc67n+@ci<yTW2npXJ0o0&04k$h18 z%c0Hh99+Bh;5(ZSG26k};{)RZ{A&Kg@u}ler5}##$bSJJD@d^~m|fp_Xj;*OZ)bWw z`dqL7^q4FA?FaK}4t33#wa}gm$tL^4*>znvQ3_Q4C%yiY4_w)AJy<mDrmm`m3+yR{ zhnWM0mfzj7`CYQu?BL1cT)u#9=Q7*=<xkj+LK%a1uoFKP*1%+WH9G=Z<ww+giB8eI za${`?qkrLMOg${bh9ZVYN^pNOOPO77AhlQESyt+TvK=(Dak`jQ2G>nX_(SpIo&5*5 zuJg_<xa@@&gkS$dPWGmkh2|~kt-7Vc?Uq0M=t*JuiQi-z`R#3uagp;R|Exp(C&ruh zyQEn!UM2{az4-1|UrbvzFmF*wDt|8i#$YHM<i8q!lznmhuCi#+zU;E3y0nLY22@+` z%6XvyJik;})~x_G?ALA4U8VaS-fJ8mY?C1Of#VTEkF*c?hKI>7z=a^?c*2NfST3Ty zz>Dfnxxv(EbQW#MfJD_4gfzpdeL5n#uusA2qbxPb8wDd{K1!rtFG6~qwzPC?tlX$q zDS#zAi;`p0M_W5(5y!HGy^2DuQyXY0=OFh8(<=?~2ust-)6&W>%$b^<la!ouZ}!xj zoaCgO@8sY<b>haXOXYX&Kj+P>7RPj5xFva7d9tqzzkXkGd18re@WLx*MI|?dk0md8 zaPL5yO>U@et)AXKosZ7_R_pw$%8J)?gjQuh_*I;{jCt#(R?45Q5vSy71(czXqVm<f zo7RPc8)x{kR?R(992;Fw(_1^m<MML1V2+P<uK4oe^n@uZmQ+Yq8^FcyJeVDqUQo7L z{C#CnQDxCrONWy4@{)&=^Yd}}HzEGg;TJmZIl5)#^84TZw){q<BB1<BiCfQH56#uP z{<3`2_I(F_)lkeI3@lt2C|$TvKH7YHZ^M+E`noo_^yR^Lcl~oi1M(khs}IJrp}cA} ze_e5XBXgxR8w!sMm3LKKa^v|+gE-iMqCuhGJ#dj&T_G8yD2I#bV_`(&($AAi8Yl1J z;~+aiQUbv&xJICzxx!V1yf$FKi4nzw38lkj06YoAlujlxg#CK?z%Q)lHMU)LS=+j) zUA_AcA3b{bwx6(7eSQ7-$D+?7A^7Ihl#AxAy7Kuer$pLGzT)-Gl&+s`I-5E`a}<3s zI!n*O1Js!SV?c5SSU)70a^<*8uSh?GP5{^uka_gFlJDF)TmEp_t*;!OK5y)iv3b*< zzOJp!{#<bWO3S70ct7-2A1}5CrxeTIkygeH)~^{GTT?$6SD)|TInkV)z0leBBFMN> zr~>{W*Xs7^bnq95Nhd+b*g%>|I9Ds=XpaNl7$9mbK)DJnAfIGt22BE}FF><Coy^i9 z5vep_F$;qY2$F`V8rVlidFo;f3Rd~cvSW*z#YjR+Iie!bWz1JxlHv0p;JLQZ=WF!o zP3DUDKzgC)yd}pQD_G?Np32O5mbJBqZjgM|1bd8;<qQulD5@BUniF#SI9!<4rx-43 zUU#sz^Nv*&KTAx=+m-)J9QLlxMt4$=1)esQVwn+QSPK&R8&aFfa?h)sdeJ!p#qtO8 z^~5V;x7llxrsPho&KPZ5ytwU-^y-pudT9bk@3wddhrxA+-Zm$#IydOOY`xe#<H7n@ zEHKMfduaS9B)jz%qx{Q(B6oR(J`i2zHRo0@jODtA=hgisb!loT54`IYN>f}bV>9+R zYUiLRxWa%uP0bQ>ah)|(A*NZf>WdiUZ1~}Lzr8*&=uNbgms_JU;zKDlP7IeqOX(CG znyKuaPHzJs{0+hYRI(Qx=wTTc8{!p!ys!&Ej^K0q!5knV1}Rw#R0#&CH+%(^2aB;P zrlDcmZT(VHabsm;V6DFYwrvd!F;zy(_)nQ(u|<GTcf93ygVOpEyf0ZVJ#o+yk2t}y z7%tEn0}JNQnZKxbu`qO^kd&x}*BvH9SyW|c-PT5NR%&KuT7%TMbzP`3s?1;-zw-yv zjB%DA3cYKQKyOoL3A;v6R?re>oc06b)U*PRr^q**)(hghsoz=xf9KeN1C;PJI6N2f z$gI9<$wKo8m@G_z9t|(c0LQ}>g^$fFq*Rm|XxyL)&`jd7VF!W!LMG}lSZ$J?%`yt+ zygSYpvvL>C$z&{Z&VqcuwB?R0G&a+iU|Ii$G(UevEMu`V@?jjBms#SUUp-@u{Fcy| z+d$C`xsAfxKdubf4Wu@xnE9X%&N+uY4;NbV=Tez-=ND$=9Xqx%hYytEi_<P>5q!RY z*BeMp5!YRitn`g&nth8{m6Dd0QYAj0ZxqJ;!r>+5bAHQflhf0aYx(Url?1GY6U}5F z<h~QlN~a$#_YbiaDLK6)Hnt=^Ipf|(78AJO+&Bh2xjzE0OvoL@>ylvy$dA2fK(`58 z4KJ8nnOPF^3Rx@@8g_Vg6GI*_Bng?U4A#>qx-1Jv@{q$QbMPz!SyL+_iFRlz_(NHK z0V0O}tchz`Cb(6e7?+~x9pfb%8)c-+N~ShwBa6&z&P!?UfKd=_feP)X9~S=&MC3F( z*fN(l@lMz-Sg_16J{@jx<&VV<$8Y)g2W-?OuM)0zALCcypa7@C54l}4jp82+hE{_p zzbA6zM`9T_Oj{2RAI9}Nc{4Y$2PA<_)4TPX&X=UEl76Wmy`q=?CUS>c{DGdm^`|%G z(s%#%Hrw?koB7l6V{b8-VY{XAvxUrI5`qnSe&|K^v-^%e^oLtN=Nq48kKc0Q$&at- zZW5)<Yu_LHD79o%5}uT#B{xgLAK=IB3z0<`#LVS-)?|<h+KudWv#^_82j_q#24UJV zu0LmvD3<r@h4Terx2PZ5ElB)2U|j{q6&fxHm>*hobU>eO7s-$XtWXd)6mnm%lcTUi zK&*foQA{K#vaRajK9rcS7^w0jBmjFlBtBqCDQ+x<ThG#>!lKgTGJR=daf)T>G+sSz z>3!F|bshfrxlql3dksJ;yki`JCk>MLXg+mixfSh^nFV61GuCX5b*731Gb8O4vs+sD z4ZYW1+uL*PwerFv_UNOOT|#!KNGU?!W7<_aPf)(m1c|p*IQ7F$KslqsvIdML5`{$z z0qCeH@IM!*f^8%E$}_%2`zkHz<S&moTc%zV)lVxfoL%H|8Wz@$AE{jkt${@$$q<Ms zNXqf&Bo)L2_(LvRGtHuj>lwXZbDe}9@bPMTFJd+e=i*a)@X7LHY13w}nwL}8*;!Y- zX2blTm}2po@Xu>WVIroz;-*=>PVN;djL-t96631*$$`%G82II>ph;?=TR4h2OMLSQ z2;d3;a80}nlz<;SHDQ`N9Q8jut4l5tVPQt5)YGAfWfy`Xy6Bw73Vm@xer|4VenPRn zqA@3W4m762OLl&L=g#koX_H0iV;tizI$~lRyxb8pIi6uPkq;}DBs2pY@?nAnJs^TD z8|!JS5EC74lgaH!6f4?##+LEvRQOK$x77r0bYambGsZy|W;q?ZfFQGZ5=^R43MD)+ z6i<$Qt^anS2UQ>elc`i$>dK&I$F<#sLe2x&ChT#9G~oMJ&o1ngsLNFmOi*H=P&BPU zE%f!18&NkWEbGE^zTUBW{);XJ1bwMMA8S@RNVDicF2Bdt*M5m!(Yp7|v1MQDVfLib zz2nWNI`Y#~z5BOQaVG)<*(#Jz?qZkt@@afP>W-7vV$y2Q#<~IOO|h;-EJ;N!4Tpo^ zU@8)hpk4hC!wy5Z)+7DJvtx7J<F7nkw|R$W1DgXQpK~tJq>cFpS9~Tv{OBpIM#U2D zk8XI`IcLd|InI}FIB@^{{6VN6P;wTAVBz=ve3qTy(=>t;n$`JeDcSLbsnk>E0m)Rm zW;_r~w&+rLE)V!M3z+;R)%Nb?WP5k7{P1TeUF_R`TC8z@?dLmK?~c#!(i*JSku2pS z--8<Fl~??k%~i4=pZW4vH>$Fh@<%s*^)j0|Hg>bt>QjBE@Ipwk1==?343tL<JVjs~ zrc0GBgfbDGp7JccFN;pkJf-3TMa$OJ=D&FPiMua<F~4@*vZ95HE`92?r!HM2-=xW6 z=dC>N;5Apv7hZkM!Shz~&+WynJAc08`uE<ue#g&uwiesZyQT}Nk*Vt%?$SQys}HX1 z_zXOm?b{9VpFZojlG>`A{YtbCi2_ziC%N89v&j=UV=9qCt+GB%BC8;6h8AOLkTMEk zmx-ycsJ!u=#_~lu7w>+0_wJ|J&2VsFBTHw1WwLR$zLvoJ2*eqifiaekEnhy?+g>qu zZUvMf6i_~XSZe<2FrZa>nW!ptu~C5*5DIxY4HuAXNgnh}=7P5nA$+QwLt^``9#_+H z`mfOG+2|DlO&aD@zvygqs~}VbIiMpZi`#jGF-KZ`QT1chMfGWp>G|yL{OMzgD2xcf z&2eS^aeS+cMN(CcBrQxb--Af)ayk_`(~P!%i4=x2Cw_f+-HJeUbzsH1aM}F%>=s2% zM?Q*#8b&>34M=@f(d_9+*56D?Cr|Z%*N>-GX<n)T0{>SyHS;W-Dk(&ZigO8Ro{e)| z{{oOe9gI!SmzU>HpVXWG_x(8bB|uKEg4`tZS&zOeJJplyEu|O751;DAFHVI{_uT2Y z6Ay~b#|bRYM44Q%QFaXTC?4xNd0<LU<5A9NY@EqZIfR@++`#N%sfSb_v6rF!zGmD} zRf#0d5x5cJ?_U4l{nuW5e@=xbEgYJiQ<z%Pea}UA)YY+Fqu8#@zI^S>&1-8@TY3-3 zAO33h?)O>J{;hv};kxBFUs|-Ta#}6_1WHvE^7Ha@@(<-7N99dz$V+mztm%#Hmv<&K z_OGe&&w<si5%~DN>u#3!(#WjKp8E2Vr{y2@G|Zkmfe#|!58R;hVaITt?gwBL01ilO z3ZFxoXLNL_9Mm{*e31+Tuo^8#Vy7NKITuBG1;>E_=_lK;$bl%VrP|4lA`n66UO>>; zpAzE?H7L6DBr}1{9C5%&p}?Iip-(U^m1ib7u@_Ve$B7W}G$G9eeN%KUjA3F2^CMpj zvrcdO;LWT-zsonhwPf=-f#p2T?lwu&)02+B5bsY<5-Z~UZ`Z}G%5qu^PJba{q69~t zw^lIQDm{`Y`26svo|_baJZrQ*Ve_>mGaE|ck`i1wfvGuDvl5*~y<jxMfWJ2}+ni84 zYa0LgrLM{aOMTAd%7vy!bApxK++%TBj6PSx`K`@X9*Id69Opqk|6;Zbn#|n^u7v3w zi(mLk{@v@#RtoXXIM2CB@O6YApS`QizsPO2>P@+UWrg#?xstWW=82!@sC2}|#8tq6 z1uss{tST(5%51I5b4wBzoR++2wv}z|>)jj-<rF(jR(F!Cv~*5&F^mkQ#&|4=-ngai zhIxl~%b)(n*SKz43eF3bSbob2cD&ZJxlf3(dZXMXSL$6m<d5#noy>0_YgN!Z4Eqh( z#6fa_%rF{Q1v5Y;0ydA&QhX3^yT+8|J8?KE#u@u7&SESEi`)VT={;J_d%r;+;Wzwy z`F^YXkR>tBFoVH5i)5BB`N-3CTL!=3n-mH#v0$Eu)+w8El3a>)m8>vm`-(DXhJ*72 zfB;Ys@uq;74|>^vV{n17eegk})k9i06F*LvrJ-`HvSF-#DuPq%pM?4DF;&QKObL%2 zQT~zg`_%RrVb6)tnD(jjcNGXaiW=7y?3%yx$tQO{E`P}kk3X`5zd%pp6+76as&b8@ zU_*`m|Ge#d&-nju+s^jL|4-T;DkW>X|8HSt&z}Dqh|&C2D)4Sn=$j%~7X&3a0q<B# z{`+<V#{UyYU$}AO!v7k^odn~CF@QR8n#fvx10)HT<0P;HCqA2W=j(RquFxIO9m3iO z;TcUl5R7IR=BM+2vJ9de_Iq(wPR=wrX$*r`FDg>O9yeGA>hr{%c;twgFkKCw@86vM zU*w<2r`PgL+@<Tx=J6|FCT+3VoIlG|KBr^Dfs;BSq&GZ0bNwre^YJQG71Uj=+-_H{ z<LV9e+31nM1{eYpk&_e3?@r1kYq^w6el?kTg~VDswFAwFH|MYUecQ|f8;*l#PgMQl zIax_H`DU|xhmvpg*RDaO3RS-O>u=xvT6$`$KR7uhb^|n?gu0S&eo_F*ooTumu!(V= zZl~^Y-G1Fc-EF%2bl=lGMHYOq$2OcI`G_3II`xEo_ry70SQ(#iz^~oa@jCrH5kGmy zJ_W2ETHF<&An7^cLxTBu8f*fdiSj4%Pu%}i`De#ZJnPAUJ!rq_HRHOP=`LF}_A0y@ zcK)Ih7c197<+^uLSd9@EtJFHUXa_d*&MWN7@mMUd&Llst+&mekM4U0rm5xH)b?j@o zU;no;YHjSuk-J8pCE9(H$I~C>^+r80de;&59co*2;iRil))_J5r?v-tY{P*CF1zo{ z#ubhP(#hu%%uP%xM=f*lzl~ArQudG}>!_1ttj*QX_1g%DP)J0dO3L||o7^TqmPPqb z=F2lc$0-yW(U8RE2lYqdqG7P}v7et1?FU;>Igx^jJ4xB%bOYQ6I?|w14k+s==dU<; z5{^Zs#Cqfto>+)aAK}UJU*9nzr65A9=B8&Jkzf4YxyNp9V(f=EL6S{iM$R0@eaE&M z4V!+zgez}lMepqxKepqE9Xp<2xAd$tg0}G*%$2pH&u`p$#AdFmF&knf?ld;_aN(l& zFTCoXSF@GN2i|U7y}I@7{uOsJ-RJVT%LS{cINAqZ@*);^>|s`Lr`gbZ-|x<QOn!Bt zV2X(~6<JMIvGUif<c=$u^vpJsdE;yHdzn<{j+44=Z_d;k&B1K5IlOoAz!NQ2#}9X| zy>qJBoD(z|^>f}mZ^yAq^oCu3R%L4-r#J=<4Ooig-dkn*oo4Vcpo!xc5B0c5-8YXx z9<_P$zK>ykW1Gpy#<}k7{oBM*k(&4D5!!vz1!Jx7UlbpNg3bzDughUkIULxV_62H7 z&e$4jd|Sm4Jm@!a1&{r{fX0m<o?ry<X4S|!N9iZ=hU<typz;$1)Jq%!s#}pOQofyR z?LzY&4o<KQASDGHL&C}$okgYqKr}BXaDsAn--zGZYc_xUvDv&AXchN(1kQNo!;`!1 z?SGX_%O<)e_bK%a`V?bBp6!Y6^B>#A)izODZ;2mMy?5QEHV=2Dxs#qx*uFl*>@IxD zH>5q4SAJR4odE;XpDK=5V2K=Ie~qj!WP$M^`4y@88)$ge!Gkz5eC?a)b>h|P3>@nR zOyQ$H3SmF`hq^b=Cw`dw@Icyv>?c9K4I4K%+<qw90;D7WB=08S3+0{1ovBQ7#cK~{ zJS>6W6p%q!19G?!yjT2)z|)GK&;jrWc$9ufXrw99RU~#s+9!Ivp!ekG66gjP#Z3p< zWrf^OC6;;=IT?@oUh;VTS#}W!29oPYf&h@xSz8^+;>fmI>_Mlz+UPYHjRvpLa46lH zZu48M>TN4U8H^q$+mm)p*k35lnP2Va9)nA77bL;(oZ$7P>9bePaOGO99DY~?A+KC- z-mr9PZ(_0`qco*pxjk{J(-z2b720ezb3uuX;|we_InI+FNlRV*h?Bv*SWI4S4un}v zz9?^bY)Xs`PKC2KNG#E26O$p??%<|$?upBF*=??Z=O0a3zA2%or)zrF-!YI6VZ<I% zJh06NLv#M;Vn$R{c65}K@rKc8^w1}H7N^^6ep{L?-D=IUrf;HnqtWSEU7hDooZq_K zot(jA^fBfbhsPZ&N4t~kZu87Cr_I7xL4i952S<woOLv+Lr6r~9bHWa>y1aKN#^Q>N zho*lbG9`&ZV$+_G-Q(;lDolHHrqg1Lj;r)Uxuzv^y@^Q<39iR-GD983og+!Pdc7f# zGkr>3ZE`q1HaYCi_gUf|WTxie_VRVhmI$0}{U#995sm{M1Psmu+(nVTFiG8&3NFY6 z0#d-lBW`Auh&UWFA}T#q3emX3@)?<l55ajY<NzQCfk)!|aee0luq#y%mD*`HbS62b zhF8e{Sh1Q#(o3cl1#+X;t<slDd;eIFKYp2f@%FkBhJ$WiRKJ~V;ZN`Rquwb>>wGE8 z8^(W`=#XZQZ^VJCzzb$w0n2^QY_AV6<M<m3=8BfMtg761GUdh7;QGbd5oaqd<2%^i zzf3E%#dcT|>c`iuJ$LIU2sGt9MDY(51x|P|XznE%2NWz97{`x-sjWl?W*k(jiGvfG zDiDdSL_&N6#`n?<{w!D}jB=H_Aa-0RrKP7q%Q#T#ff)y|RTQm_5E7I@=;Q19D%Uf{ zC8OPB!tNcuieO*U0@L@RAnGN(5ofW--`}>4J-FefM7Q-&Pr<xAc9$eLqkS<sQ87kw zjXUG6a@fq9COXoR3R6b=4ar3T-@}uS<oJh=h#sTUU=&!08wIE2Y1_)YMhApMZs2Bv zMNbX}^cKnfDSHP##@_kWzS+2y!<5W)d!5%A=d?-!B1&(lx@l*UFWr%Ly_}t#F-?e` zjI^<?NV?*a+&EYICswo=@b8vD>r^L!vqV<QJdi>lSbzYxi?9i!!v#fD(@+Ji>SV#- zhrj^|6jX77FNHXf^jV~GO~?b8NYf39?)r3}PJo~<{Mq1@w@`q%2GVhCca;BtyKn|< zXhe&f^^&dd{GQR2s6(}EvApiiIG-Rc&6Kv~rR66}htK`F{QgbX$ba3C?3jA{w|3`b zr)HZ(;ryT6vaLaMl&78Z<-=EJW_r@$Of2-8JihypoJ%i0FDvWHEzf;A#~$DC>sO1@ zX06G{ByTx$pz^MdO3wuHD4f|7ND{bIkzEVtS4P+LTdKKbNzU%XkR#1^2o^jl4*c@i zkC<RgZtuHig^>29{1%^*IPcMLXz>*_ytsO4p+`P+Gs}46yzb`8j?$VKy(qAx%uKT- zrgr|+jE#S()aTUJ$Hh8LuDF)imQ1(UeDk^*i`DCIW9Kr{?)k6De;iJ=#KUOuYS`xs zoY%c3KHl2kzvRjtxw$;X5g(h7U^S;qHTw2n{?aYOZHZ})IaB=$hUEr~U*<`x{vGMB zIH@WI1-e49IE7__@IR<U68JDcb&-o1L}gY9W%_vdy9KFfaC3<4fgP(H$S|o8roACE z%e{VHB~msfgmqb%I%UbCUBG}#(~@Q`uiPDpw!+e5N@YUE^t{YiH=KL2jlpOB1Q&W= zeg1H##2jY7SlR_krL38)9&z)(EV}snuYLdGMe2<W*8C3UPk$o6C(DmCCYMO_u6XK$ z&;EYwmAR>vQ?2sb|1@$Qf8OgCH^+F}um0fT-Y0Kv<)7!@Q<0VAPVkx~L3EgHnVH!c zsj)UT{*&!bw8WO~IKsTQ=B&usVtY;ACCk@aZ@x7F?j%!Qdzub`o>p)AYhG(JE_&ea z@~to2%nJVc`nMuE-etEA2d<DW_$ymkFQMeM`=0vQtKZ+diYK@4eHBv!@+6>X6dX$S z?24eHO)}jB(9OOQdfE5G_7CJv$wDR0Q^|5=>Hqebte64SYEojbq#NTV`3J?vEy+FL zEa89kd}PpB?8F}|a{k-9_}%jC6GzBqs!*L>4#Mbv&Y~0vmY>t<^x^lPh7Ny)3d*x3 zs_eLta-xLK|A#w`4bv52eOrX}?JA-*0j;27Ag1Gi5TB44g=ctmEu!r-9mU|CVqzsq zf(9D4&=aD5m?c%PVO#);3<ncrghh!-!2*e0w@Zpr9>D-sq!N=zI}Liha5PM|k0Bvc zhE$6D5LJg|Cey|;!$_e|zT*k6&1MgHpD42hX4*RBKfmVWv8g%EL9iPJojIwo-1(aP z=MLM<fUWEaZvcjVyieSb6mQCfvuMRJ<V&I{Ax(@=pn~Fq9<3ba_=a+r<E(NL;>ENC zlPJHW__Pcs<(lHzEvY@WQZE{{;jq8doXPTUlwbHXIyc2-j2?T7WC7nAi#EDaa-%<G z6*tOnWSUF;hc}>A-cnmns=lx&RbO@RAPk%5=Soykq1~<)B)@SZtN7-E<QHya`DYd+ z<>qHFDoCGNR7m4^nhuYq9Tg)YmlhQ)6kbmT-1T^(v4)5SiTP=d47`;gJ!5Fx``YNp zd$)BP5c=8Z4a|Knn<?M2Wvkipi2TMQC*s%|CCmyQxr1NNn>PL8=7_<t;L2A=m5}LT z-AQqpeCw$E((RARFTN0W5nD6D%5Hy*mA??@SxH2bwl^^A?63gtLCZ+u+?8%&>8`9Y zuK~nM0Zg)GW#R`jNPe9CPd0sY>O7ug0)&TeDZT%ml7|+=d>$juV8s{8ud#PO@BEBy z|H0y?`7~P4<Y(pge}3+{KWAwG$F!gS>6`W&C*()jdimRIQ))>^fOn&m3paOu*0Flg z(~H(Cxsd;KNqqA+P=(mDo@9pA&{<unYt{9_%ESfmLiMQbS>4OJcXS`=KE*de6w41m zS8OY=Wq>RtCWKzuVnB~s-D?OjdSwft>=M9@P`DCd5(W=@1Il_&s}49BSbvbCiZKu7 zoMHu5XIJ?an5Gno35N*;4|X6BD2bW@l8)grnwKcj<An$=2n;>bN>ei^<xx<HR*RWP zfq6L*q!d|{QSp)_g~g&^fgsJBBiTC(lEEJ_2nNYOHqb3bi$$NDk-(g$7^@|moU_5} z3}ohc7BwX2L>sP>^eOfPJ#S_D(gwG<q)`u57?E!`SOX<d^>YI!YV=NrJx&muiF}3C zkd|Y$;4&VQF&&F|bTqD#=(3jA_^k<vH5bhY^{(!7UvOxem397gW<Xf7IoDs6A%-^8 z`*z**z|2_}Z(UiW4>rX3jt|*QZdZv-x!x;ArzOHEl`|?)ybUsBt~6te+nqYz>vSY0 zOmjLN;VS->=yW)!8EDM+9dKG2PB!O<SYfQ2#l{ys{y<iQ!<0XV=BgmVkFsQjrzV^# zdYQw3JywD(x-d8K@^i0ZGulNSpK4>HMvL9x@JIi};?MN@jd$K;N@9Me{AFUOJ=SCs zQtnJvD~s35??&as8l&hUgu_->bai}!HQF`K66^fd@>;jc%BwfZU(TB@G_IH6;do|2 z*X%X+jaS}WIrZY9C8lNPS9r@}3^h%=XFC@+ck)4Zi5*|9T+zTJxCh5)i>?z>+-ag1 zlbt4sUSUJRbbNL~VpW=Re5oT&6r${oczpaZPuS@&=ZAf;`mc*+e%c8s|B7_YS{Ob! zba!fDj-A90wXgur@8?=r)LB@(7M66d{iB8Th~KP*4Z1}<OA8xyR(_2ZHtEd#5iJav zRQ`z;w(F9G8t{3T2n%^Q9UzVpg&8o+Ra%$><2<Z|1<0=cR11qb4<jBCrI&OW_%1c9 zM|_hOHt4?1c4%RvE|zcA!X}-YAJ)PaT`qq{3)^*51p&N?0mvI~g`d-I*uv<7k1-!K zH(PLS5kY7sLjBNa+KO-h6lMu9VIjgbz#qN1pUyR`JVkWF$Ty_qZbwR8-N4}1q3+JE z5np}FrigE5OMm-TU!b@oT<ELm?e!_IhJ8bk;mFXYNINn#pgsL)MGf#1l{Ns1HiGDZ z{*ju^k>P<pJS;{`C*)mv(Yhf#Mmk4(TM%dfg|+}%r}L1z7Iv%`BHRGp{YuDGFGMcr zqc$vDuykHcZRNtH4Kr3YE?i7e|3Qt*m9H8`A5rUkx*)!-48LN8C;COVJTf%gJ<#t9 z7M2wjD<Aov72b#siQrSH>!?d3I5?tC^r0IDlxvsr=9`9!^0Xn{M8i6eL(Qq?p=at& zDr*RJv?G0=(rrD6Ye6i<cVj^qMQEawe&nL3Hl!Y=VQlP;v<ycuP92dU-^hS(q$}b( zJ+#A-wh{X9jsd*Hn+^<?Z)B*YJ<``Q)Z=Rz85!zs9aWO_4~%rTMTWJ39zrbyOlJ-C z(1`EUSbq~N>Q2LwP662wfN&*9^dj_}`n@e@lv${JnXYSOWDt5i)VvlImI}KE{+kkt zFj8u-^edxPgv{SmW>GIbvVS;&_X>?ew}17IKZiFAl#qZ^!acf6amI9&?rPWy+N-;g z5xR!ERY;K=m=WGt&CG&bnhoTpgE^rB7|mSF&0?_Vd08y{wZyXoNLwU<Oif`vFg4S# zd(B{(%n$vOY?i}vVXP*fk;#Q3Rt%G+0anU_ECiyn3^o*@bpksK5KqVQJDpXt8hBZ$ zWA$(W+rVbBS!^~$8t1~d!hE)XEo6;s5nIfbV5hf?EoUp(O8A9Y&DOBBY#m$Any~+C zVXeStpXqF@jkU7~>tLO%i*>UNtOv}uKIl^putByFHc*Dy2u#9mVw>TOd@I|=&cVj` zJcv(jXJhOFb|KrrE`r;^U2HcbNiKov>K=9(yPRFYu4GrStJz+54co`|vjgl~Fv@lv zyPn+uA3+CUq5CFwnBC02&2C}0vfJ40><)Okx{KY-?qT<```CBb{p`E!0rnt!h&{}{ z#~xvivd7?V^$GSQ`#yV$J<Wc=j=&n{v+OzcL-r%~JbQt?$bQUTVn2Zg>X+Fo>{S@i z{TX|m{hYnQ-ehmFx7j=F7wld39{VNx6?>oknjK{yuw(2)_7VFHtf~GEo{K(ae_(%P ze`24oPuXYebM|NU1^Wy8EBhP!JNpOwC;O6p#g4NRY@EsLB-e4qITyIdB@S*1H|o;3 ziJQ3v-hpf!h6A~iNAYOx;%*+pJ>1J<c^r@D2|SS}aqwGU)j5@?@pPWSVL5_l@ob*M zb9o-m=LH-(x4f8_@BlC6K_22^UdGFL1+U~&_*6cPgR#S_c@3}Sb-bR>;0=5xpT%eM zIeadk$LI3}d?9b-i}+%`ME5#h%9ruwd<9?0SMk++4PVRG@%6lkH}e+W%G-E5kMIsC zJ#_JIzJd4fUf#$1`2Zi}8~G3)<|BNRZ{nNz7QU5l<LB^m`FZ?&zMYTp3;2b62fv8# z<h%H8elfp<U&{CJ%lPH|3VtQO3Yw~W`89kW-_H;5Z}DsSb)fri;5YJv{1Cs1ALcjn zZ}VIDt^78AJHLb9$?xKK^LzNc{6792en0;%e}F&8AL0-5@9{_Yqx>=cIDdja$-mE^ z;!pD*@FV;g{w#lv|B(NPKhIy_FY+Jrm-tWkPx;II75*xJjsJ|l&VSC|;BWG`_}ly) z{tNyte~<r?|BAoQf6b5b5BM?uA^(W~hX0oTj{ly2%>Tgu$p6GY;h*x)_~-o3{0sgU z{#X7t{&)Tl{!jiT|B4^yCpdIt`AI<snhl3{pxY!t4|5boSb{bS7QqVJPIkc|IAIq$ zT5t(&AqKkGULjV96XJygAyG&Yz>E`oLaLA^qzf5Brr;N{glr*4$QAO0e4#)9FHR^H zN`!z=Dg<GHGAxt{<wAu}DNGTj3e$utVY*N))Cjdgolq~#5E_J;!YpC7Fh`gx%oFAd z3xtJ2qp(O=EG!Y03d@A$!U|!fuu51htP$1<>xA_}lh7=*2(3b!&@M!T4xv-%61s&A zLXXfZ^a=gKfG{X*6o!OhVMG`eHVK=BEy7k|n{bYBu5ccdNVW@O!Ue*G!VcjgVW+T5 z*ezTvTq0a5>=7;#E*Gv4t`x2kt`_zR*9iNB{lWp^Tf()%b;9++4Z@AWLE(^alW<tL zS@^bai*T!On{c~uhj6EGmvFamk8rPWpYR>we&M^q1G;@uXK%~!u+%p?+})-hj<gK5 zbr~c5n<BjfgAu6<&m-dSNXw9!E=`fX!I7=vD5w^(qr11yIMUSw3Zyf_N4g9Y?j9cD z13mhoNZ-Jwh+*5nKwndLzfrjljE)Ec9Uc1N?#}*}UZHKEQ^Ha?+$DB_wlSi#NK;Gi zh&a;S7ZHaBTH3Ac1DpGM5uj+}#Djixkm987{?>slmcibZtxav+Lv6hg)HxVw88Kj~ z236H%q^2kZ_71f5h#kExoo0MY`(W2Ve`MIaX`pwsFVckeShOHjVA8^)gZhm_Z3FEQ zLo2!icVVQZQ^aprY#kWrG17%rcxiB`yMILA*3uUlY7uF9#rxiNefLNU7DCHNWXniX zSA?iQvl8Ci-9FM~#=Fk`rrt=$h*b?@$sCCcS=0xGGPJ4T4Wq*&-5py+`W8!fe>>8t z`LwW-*51+57NK5i+SJ`1888fXw~dSrMf8J_{<iL3b6?9~6SXxmq;F}b0@1^0XQaJ* zL>lgD8Hz}4T@myU4VZ0sBr@34+S1muxn-!`*3p74oOm)$1Vrj|X|M%A0Kga+G=Tb{ z<W?p5#Dh|j_8>(zfKalco=rmo>X+Ll9+Xco4fc)>HxXc%`?~wJphX2DCE761qugy9 zM<eJG6hetj-TfT{YPR9Fp$G_%u7MGomQ95U6EdnHb8AcgM6hLOXkfF_lNL3ow8E%{ zM+ePnK!FIQiwKU;oZ;?mk*1E(-d?K~9`0-D?R7@BwDq?1wVY~}*xB7NB7$)2z#JKh z7$aK&Xc!F>1=@NCh9g$=SATbZr_y!_{n;Newzc#|`rBKE^h4Mx4D=b=2KxFi-uk|l z&i=@Vd7{5Y2T%1QwGZGvvN;kNvEkDP2dT(5Ojv6NpfEC|R%X#2s0j|O;hQ2uAV*tz zqqOI)fuZhgL>=~;0P#(2fQu39$mZ@5z@^&p1Y`vE%9B-v_$E|7G$8auwu+d|!$z&i z!?uyG(Z1H<rqMy_IEVH`&826Pf=IerdOIu%c2RMPfd&*P!q(f}-vi)ON7yhpI^2cN zvSB7ghJZGJVfuR%6w=+VN9BWETP>a4sG(Jb0~I?^HBv8dP`{+icZ&kzYDM;m$*Vq^ zl>|y=gZ9D3iEq`bCF@6lhT3{805MD&>fm-^Xn0uYYHv5T0vgbH{bFmRx7X4}-P(bU z9f_E`FpNzqbSpuc?*=6_I%rbv)FDwSa5kNW$mla-lmZ-QM2!xfnTd)44j*WZ=r<2x z&UZ;8EyF#-dSF!anW=TCJJQjHO^lf!SDhzP=g`3DAka#Gj|6}mZP&L(T7V&hw$Tv` z<=|HHV9THaKiz}kF!rxz8l9$A0BR2)ZeR$&#YcPjKrb-HP<KycqzeUhc9}+jqlQpy z1Z`;TjYt6A?lz$L(Y78Fh7s+-^tGP~Dc$bu92n>X@;`+GER!N6jA3M}8GRlZX`(O1 zJfR>asT!bewWvX*uP|?b+53mZ;ejE58ZJsUgA&5znONBfM6gDvuqLA20|1y#z<)cI zq}Bn9u|)%CN@<+{ZF(RaKLU6i!7gvm2uL5o*tY;90_T~5+q-}?M|)e1zzZ1X&WK&< zVx<|hbXnC$6;chfls5IXTab68YhW0iA2AM(c8}1A840MUMtvI=sz?MY%mA=5t(3}g zLZ8q&+TDxU(rHBIL0WfAEq$oHrN1qr?~AnebdOj%s7a`0Lj+BaU>)dE`d#cO?ubOS z4~$}<n$S*MsWYR`h*9D1j3~h08P7B-=F|BtYEa2&RKtW(mGUX6p*=F(gJnbC+cHQu z1yDw;eFLrZUCL~<YVfYWn|b5tz=+y3iyBnN8DHDqkB?E)N?84Sx0*FnfR1raMuF6a zj!9^cp3RXhgEU1E#OPuG2Zt2`L>lfxL!=I@5dA`5q|4BW)qSv~-3T<Nz=e@$3Cd<y z0t#vYT(=w1$5_2udNG6ABPOLmNY?8(h3_;31Z1Kv7Rsa-+knMPl%)yFWe*`6K&99e zD66ncT3IZ^qnMGHzTJZW>(N#<gk<HV*1^$j+o<olBW)2Zpj04HIrh^*B6Re_UEPu1 zcKgIaqqZiBmZ&D6SHRF{_iz__bO^{ULJQB9wss&WZPivVfC3<A#HavrMie2a$(a-c z)iu)B8xq@whfDQ<O`uG(idCs26)ZZ8)zJlb?;afP9&S3lAVr;un^?5Orqbe4kPIOG zs8M>XWN0tGc7k%CGBuR1L>hY|AZH0@r~w6H(Zn`&H8Uw_or*%qB>}U#<kK@P!kE^y zvZ(-a8d3ndl)6laj1CE%t%JhoaJ$gmKO}4z+$s!>whBE%n}ybqHX@TFrc-m)so<g3 zt!Uz4S4%5qWK(INBKlOU#xaTvd%hk;pJkhfR&a3C8Bg>c#gzu>60&Z^YC75)QI|ID zLEM62Hqk|iK9z<#)6fpM0Z|Q<4gzojd4a~lbLUV?pS}Y$ZO@R<(%vt2l$4d&Tf0YE zf!KkK)nNc8>>aX<C^sd_(K~>OP7_nMNzbE$liw0tIVZhUr}$=&xdWSr4Vb1w1KsTs zCdTL%G_$*v)|TO(t%F$921bX5H;!Ua0673q8PInCE%!!5y3hhX(mf~)kJ8YF!v@;i zbZ?3Xt)rcMQ;)Pc(%m|MjYB{Fkf1DJSH2z7LB-q@7mQIqU}6pKRY`Dq6}GnzfF4k` zA6n;^m0LG~6bDtRv<a!oi*4%4rbILiP*i{}rF5aODi6^mOqVjcl+&fcFxubUP*PKj zzHTW&Oa*1CD5XcrR6&_4C{qPxs-R326=GAcSjo{!A>;@aqncoGP%W(%1qF+dDOik5 z!D3_z7E`8@V!F`V63SFUnMzPiumsfvODIPP<tU*XC0g6+iq%r<C|`i`1t?#D@&za# zG}~~Yd;!WApqfglrc%lQYtFb(j#908^;&`TC2GO-N(#zas#OWUiAuNBhqXHu9;7mY zRBMoG4N|Q^<ppI8YFTGc#UZLVM8$?EQ;0H!C{u_sg(y>qGQmzuQ!q?9!juDcjB%kH zVXdhR$~(#wF2j&?DDNm!8NDc@Ol6d*j9!#cHDy!{B%P7CjY3pS8RaOa9OaaQ;37zH z5hS<>5?llcE`kIXL4u25IpwIJ92Jy<fFcN>z$GYl1e9R}P#~ndpd17gApiv~$Ppr- z2oX?(icv?X7<GgQB0>ZaA%cidafP%g0$hq9fkcSP3K2+z2qZ!T5+MSK5P?L9Kq6E^ zl?14g0OcTH2oW%Z2pB>H3?TxB5CKDofFVS{5F%g*5io=Z7(xULAwpjvn6|=&a+Fez zQp!<EIf9fUNI8O(gN8mtLm#4{hqMA+C`XWT1Sv;|a?rSkXxu|I?jaiY5RH3?#yv#i z9-?s%(YS|b+(R_(AsY7(jXUg}(S>q^DF+4}7s?T?KyM=lE|dd<ju7RbK@ZWOhcM{4 zP!1aO5Dj{W20cWB9-=`H(V&ND&_gunAsX}$4SI+MJw$^ZqCpSQpoeJCLp10i3_329 zgD^peFhK~Ipd(NgQRYXWT%Az?swqrEAEu!XYxp2gu1==_)fXlJ2onH=2_=LHmclgt zVH*E1jenTNKTP8vrtuHc_=joy!!-V38vihjf0)KUOyeJ>@ekAZhiUx7H2z^4|8PK^ zmVp|rg*ED&57Y$Ime-VOcXh%AYP6=-s53uMQ>MKy*X|SL)o9PP+PzM@*K79~>b+L0 zw^pmSR;#yGtG8CGw^pmSR;#yGtG8CGw^pmSR;#yGtG8CGw^pmSR;yP-nt?j4-a4(` zI<4M1t=>AV-a4(`I<4M1t=>AV-a4(`I<4M1t=>AV-a4&b4Yvj~+#0CY>aEx6t=H<+ zFl<1>uz`B5-g>Rxdad4it=@XA-g>Rxdad4it=<`0KhO9-gZkGMYOgEQURS8Su2BEF zLjCIsN-365OI@Lsx<V~=g<9$gwbT`AsjDkwvWfBkf8e|lBap)f#1ddZ5TB9h5Re3( de*jv40|X!y3}<W?od?mU{cQ|D^cBO5od6617EJ&E literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.svg b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..855c845e53 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg> +<metadata> +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. +</metadata> +<defs> +<font id="FontAwesome" horiz-adv-x="1536" > + <font-face + font-family="FontAwesome" + font-weight="400" + font-stretch="normal" + units-per-em="1792" + panose-1="0 0 0 0 0 0 0 0 0 0" + ascent="1536" + descent="-256" + bbox="-1.02083 -256.962 2304.6 1537.02" + underline-thickness="0" + underline-position="0" + unicode-range="U+0020-F500" + /> +<missing-glyph horiz-adv-x="896" +d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" /> + <glyph glyph-name=".notdef" horiz-adv-x="896" +d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" /> + <glyph glyph-name=".null" horiz-adv-x="0" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="448" + /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="1792" + /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="1792" + /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="1792" + /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="1792" + /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="1792" + /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="1792" + /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="1792" + /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="1792" + /> + <glyph glyph-name="notequal" unicode="≠" horiz-adv-x="1792" + /> + <glyph glyph-name="glass" unicode="" horiz-adv-x="1792" +d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> + <glyph glyph-name="music" unicode="" +d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 +t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> + <glyph glyph-name="search" unicode="" horiz-adv-x="1664" +d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 +t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> + <glyph glyph-name="envelope" unicode="" horiz-adv-x="1792" +d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 +t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z +M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> + <glyph glyph-name="heart" unicode="" horiz-adv-x="1792" +d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 +q-18 -18 -44 -18z" /> + <glyph glyph-name="star" unicode="" horiz-adv-x="1664" +d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 +l502 -73q56 -9 56 -46z" /> + <glyph glyph-name="star_empty" unicode="" horiz-adv-x="1664" +d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 +l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> + <glyph glyph-name="user" unicode="" horiz-adv-x="1280" +d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5 +t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> + <glyph glyph-name="film" unicode="" horiz-adv-x="1920" +d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 +q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 +t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 +q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 +t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> + <glyph glyph-name="th_large" unicode="" horiz-adv-x="1664" +d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 +h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> + <glyph glyph-name="th" unicode="" horiz-adv-x="1792" +d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 +q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 +h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 +q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> + <glyph glyph-name="th_list" unicode="" horiz-adv-x="1792" +d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 +q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 +h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> + <glyph glyph-name="ok" unicode="" horiz-adv-x="1792" +d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> + <glyph glyph-name="remove" unicode="" horiz-adv-x="1408" +d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 +t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> + <glyph glyph-name="zoom_in" unicode="" horiz-adv-x="1664" +d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 +q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 +t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> + <glyph glyph-name="zoom_out" unicode="" horiz-adv-x="1664" +d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z +M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z +" /> + <glyph glyph-name="off" unicode="" +d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 +t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> + <glyph glyph-name="signal" unicode="" horiz-adv-x="1792" +d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 +v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> + <glyph glyph-name="cog" unicode="" +d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 +q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 +l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 +q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> + <glyph glyph-name="trash" unicode="" horiz-adv-x="1408" +d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 +q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 +q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> + <glyph glyph-name="home" unicode="" horiz-adv-x="1664" +d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 +l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> + <glyph glyph-name="file_alt" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +" /> + <glyph glyph-name="time" unicode="" +d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="road" unicode="" horiz-adv-x="1920" +d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 +q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> + <glyph glyph-name="download_alt" unicode="" horiz-adv-x="1664" +d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 +q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> + <glyph glyph-name="download" unicode="" +d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 +t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="upload" unicode="" +d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 +t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="inbox" unicode="" +d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 +q25 -61 25 -123z" /> + <glyph glyph-name="play_circle" unicode="" +d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="repeat" unicode="" +d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9 +l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> + <glyph glyph-name="refresh" unicode="" +d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 +q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 +q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> + <glyph glyph-name="list_alt" unicode="" horiz-adv-x="1792" +d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z +M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 +t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 +t47 -113z" /> + <glyph glyph-name="lock" unicode="" horiz-adv-x="1152" +d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> + <glyph glyph-name="flag" unicode="" horiz-adv-x="1792" +d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 +t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> + <glyph glyph-name="headphones" unicode="" horiz-adv-x="1664" +d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 +t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 +t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> + <glyph glyph-name="volume_off" unicode="" horiz-adv-x="768" +d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> + <glyph glyph-name="volume_down" unicode="" horiz-adv-x="1152" +d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36 +t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> + <glyph glyph-name="volume_up" unicode="" horiz-adv-x="1664" +d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36 +t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 +t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 +t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> + <glyph glyph-name="qrcode" unicode="" horiz-adv-x="1408" +d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z +M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> + <glyph glyph-name="barcode" unicode="" horiz-adv-x="1792" +d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z +M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> + <glyph glyph-name="tag" unicode="" +d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 +l715 -714q37 -39 37 -91z" /> + <glyph glyph-name="tags" unicode="" horiz-adv-x="1920" +d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 +l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> + <glyph glyph-name="book" unicode="" horiz-adv-x="1664" +d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 +q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 +q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 +t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> + <glyph glyph-name="bookmark" unicode="" horiz-adv-x="1280" +d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> + <glyph glyph-name="print" unicode="" horiz-adv-x="1664" +d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 +v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> + <glyph glyph-name="camera" unicode="" horiz-adv-x="1920" +d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 +q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="font" unicode="" horiz-adv-x="1664" +d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 +q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 +q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> + <glyph glyph-name="bold" unicode="" horiz-adv-x="1408" +d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 +q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 +t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 +t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> + <glyph glyph-name="italic" unicode="" horiz-adv-x="1024" +d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 +q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> + <glyph glyph-name="text_height" unicode="" horiz-adv-x="1792" +d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 +t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 +q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 +q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> + <glyph glyph-name="text_width" unicode="" +d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 +t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 +q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 +t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 +t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> + <glyph glyph-name="align_left" unicode="" horiz-adv-x="1792" +d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 +t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> + <glyph glyph-name="align_center" unicode="" horiz-adv-x="1792" +d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 +h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> + <glyph glyph-name="align_right" unicode="" horiz-adv-x="1792" +d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 +t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> + <glyph glyph-name="align_justify" unicode="" horiz-adv-x="1792" +d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 +t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> + <glyph glyph-name="list" unicode="" horiz-adv-x="1792" +d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 +t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 +q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 +t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 +q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> + <glyph glyph-name="indent_left" unicode="" horiz-adv-x="1792" +d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 +t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 +q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> + <glyph glyph-name="indent_right" unicode="" horiz-adv-x="1792" +d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 +t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 +q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> + <glyph glyph-name="facetime_video" unicode="" horiz-adv-x="1792" +d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 +q39 -17 39 -59z" /> + <glyph glyph-name="picture" unicode="" horiz-adv-x="1920" +d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 +q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> + <glyph glyph-name="pencil" unicode="" +d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 +q53 0 91 -38l235 -234q37 -39 37 -91z" /> + <glyph glyph-name="map_marker" unicode="" horiz-adv-x="1024" +d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> + <glyph glyph-name="adjust" unicode="" +d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="tint" unicode="" horiz-adv-x="1024" +d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 +q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> + <glyph glyph-name="edit" unicode="" horiz-adv-x="1792" +d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 +q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 +l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> + <glyph glyph-name="share" unicode="" horiz-adv-x="1664" +d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 +q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 +t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> + <glyph glyph-name="check" unicode="" horiz-adv-x="1664" +d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 +q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 +q24 -24 24 -57t-24 -57z" /> + <glyph glyph-name="move" unicode="" horiz-adv-x="1792" +d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 +t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> + <glyph glyph-name="step_backward" unicode="" horiz-adv-x="1024" +d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" /> + <glyph glyph-name="fast_backward" unicode="" horiz-adv-x="1792" +d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710 +q19 19 32 13t13 -32v-710q4 10 13 19z" /> + <glyph glyph-name="backward" unicode="" horiz-adv-x="1664" +d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" /> + <glyph glyph-name="play" unicode="" horiz-adv-x="1408" +d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> + <glyph glyph-name="pause" unicode="" +d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> + <glyph glyph-name="stop" unicode="" +d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> + <glyph glyph-name="forward" unicode="" horiz-adv-x="1664" +d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" /> + <glyph glyph-name="fast_forward" unicode="" horiz-adv-x="1792" +d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710 +q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" /> + <glyph glyph-name="step_forward" unicode="" horiz-adv-x="1024" +d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" /> + <glyph glyph-name="eject" unicode="" horiz-adv-x="1538" +d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> + <glyph glyph-name="chevron_left" unicode="" horiz-adv-x="1280" +d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> + <glyph glyph-name="chevron_right" unicode="" horiz-adv-x="1280" +d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> + <glyph glyph-name="plus_sign" unicode="" +d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 +t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="minus_sign" unicode="" +d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 +t103 -385.5z" /> + <glyph glyph-name="remove_sign" unicode="" +d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 +q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="ok_sign" unicode="" +d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 +t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="question_sign" unicode="" +d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 +q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 +t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="info_sign" unicode="" +d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 +t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="screenshot" unicode="" +d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 +q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 +q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> + <glyph glyph-name="remove_circle" unicode="" +d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 +l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 +t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="ok_circle" unicode="" +d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 +t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="ban_circle" unicode="" +d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 +t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> + <glyph glyph-name="arrow_left" unicode="" +d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 +t32.5 -90.5z" /> + <glyph glyph-name="arrow_right" unicode="" +d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> + <glyph glyph-name="arrow_up" unicode="" horiz-adv-x="1664" +d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 +q37 -39 37 -91z" /> + <glyph glyph-name="arrow_down" unicode="" horiz-adv-x="1664" +d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> + <glyph glyph-name="share_alt" unicode="" horiz-adv-x="1792" +d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 +t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> + <glyph glyph-name="resize_full" unicode="" +d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 +q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> + <glyph glyph-name="resize_small" unicode="" +d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 +t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> + <glyph glyph-name="plus" unicode="" horiz-adv-x="1408" +d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> + <glyph glyph-name="minus" unicode="" horiz-adv-x="1408" +d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> + <glyph glyph-name="asterisk" unicode="" horiz-adv-x="1664" +d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 +q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> + <glyph glyph-name="exclamation_sign" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 +q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> + <glyph glyph-name="gift" unicode="" +d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 +q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 +t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> + <glyph glyph-name="leaf" unicode="" horiz-adv-x="1792" +d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 +q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 +t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> + <glyph glyph-name="fire" unicode="" horiz-adv-x="1408" +d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 +q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> + <glyph glyph-name="eye_open" unicode="" horiz-adv-x="1792" +d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 +t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> + <glyph glyph-name="eye_close" unicode="" horiz-adv-x="1792" +d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 +q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 +q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z +" /> + <glyph glyph-name="warning_sign" unicode="" horiz-adv-x="1792" +d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 +q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> + <glyph glyph-name="plane" unicode="" horiz-adv-x="1408" +d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 +q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> + <glyph glyph-name="calendar" unicode="" horiz-adv-x="1664" +d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z +M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 +q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 +h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> + <glyph glyph-name="random" unicode="" horiz-adv-x="1792" +d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 +t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 +v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 +t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> + <glyph glyph-name="comment" unicode="" horiz-adv-x="1792" +d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 +q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> + <glyph glyph-name="magnet" unicode="" +d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 +q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> + <glyph glyph-name="chevron_up" unicode="" horiz-adv-x="1792" +d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> + <glyph glyph-name="chevron_down" unicode="" horiz-adv-x="1792" +d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> + <glyph glyph-name="retweet" unicode="" horiz-adv-x="1920" +d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21 +zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z +" /> + <glyph glyph-name="shopping_cart" unicode="" horiz-adv-x="1664" +d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 +t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" /> + <glyph glyph-name="folder_close" unicode="" horiz-adv-x="1664" +d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> + <glyph glyph-name="folder_open" unicode="" horiz-adv-x="1920" +d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 +t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> + <glyph glyph-name="resize_vertical" unicode="" horiz-adv-x="768" +d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> + <glyph glyph-name="resize_horizontal" unicode="" horiz-adv-x="1792" +d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> + <glyph glyph-name="bar_chart" unicode="" horiz-adv-x="2048" +d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> + <glyph glyph-name="twitter_sign" unicode="" +d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 +q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 +t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="facebook_sign" unicode="" +d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 +q0 119 84.5 203.5t203.5 84.5h960z" /> + <glyph glyph-name="camera_retro" unicode="" horiz-adv-x="1792" +d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 +t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 +q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> + <glyph glyph-name="key" unicode="" horiz-adv-x="1792" +d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 +l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 +t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> + <glyph glyph-name="cogs" unicode="" horiz-adv-x="1920" +d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 +t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 +l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 +l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 +q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 +t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 +q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 +q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> + <glyph glyph-name="comments" unicode="" horiz-adv-x="1792" +d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 +q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 +q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> + <glyph glyph-name="thumbs_up_alt" unicode="" +d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 +t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 +q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 +q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> + <glyph glyph-name="thumbs_down_alt" unicode="" +d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 +t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z +M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 +h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" /> + <glyph glyph-name="star_half" unicode="" horiz-adv-x="896" +d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> + <glyph glyph-name="heart_empty" unicode="" horiz-adv-x="1792" +d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 +q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 +q224 0 351 -124t127 -344z" /> + <glyph glyph-name="signout" unicode="" horiz-adv-x="1664" +d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 +q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> + <glyph glyph-name="linkedin_sign" unicode="" +d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 +q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="pushpin" unicode="" horiz-adv-x="1152" +d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 +t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> + <glyph glyph-name="external_link" unicode="" horiz-adv-x="1792" +d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 +q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> + <glyph glyph-name="signin" unicode="" +d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 +q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="trophy" unicode="" horiz-adv-x="1664" +d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 +t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 +q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> + <glyph glyph-name="github_sign" unicode="" +d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 +q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 +t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 +q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="upload_alt" unicode="" horiz-adv-x="1664" +d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 +t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> + <glyph glyph-name="lemon" unicode="" +d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 +q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 +q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 +q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" /> + <glyph glyph-name="phone" unicode="" horiz-adv-x="1408" +d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186 +q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14 +t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> + <glyph glyph-name="check_empty" unicode="" horiz-adv-x="1408" +d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 +q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="bookmark_empty" unicode="" horiz-adv-x="1280" +d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 +q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> + <glyph glyph-name="phone_sign" unicode="" +d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5 +t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5 +t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z +" /> + <glyph glyph-name="twitter" unicode="" horiz-adv-x="1664" +d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 +q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> + <glyph glyph-name="facebook" unicode="" horiz-adv-x="1024" +d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> + <glyph glyph-name="github" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 +q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5 +t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 +q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z +M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" /> + <glyph glyph-name="unlock" unicode="" horiz-adv-x="1664" +d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 +t316.5 -131.5t131.5 -316.5z" /> + <glyph glyph-name="credit_card" unicode="" horiz-adv-x="1920" +d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 +q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> + <glyph glyph-name="rss" unicode="" horiz-adv-x="1408" +d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 +t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 +q187 -186 294 -425.5t120 -501.5z" /> + <glyph glyph-name="hdd" unicode="" +d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 +h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 +l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> + <glyph glyph-name="bullhorn" unicode="" horiz-adv-x="1792" +d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 +t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> + <glyph glyph-name="bell" unicode="" horiz-adv-x="1792" +d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z +M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 +t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> + <glyph glyph-name="certificate" unicode="" +d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 +l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 +l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> + <glyph glyph-name="hand_right" unicode="" horiz-adv-x="1792" +d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 +q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 +q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 +t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> + <glyph glyph-name="hand_left" unicode="" horiz-adv-x="1792" +d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5 +t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z +M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67 +q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> + <glyph glyph-name="hand_up" unicode="" +d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 +q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 +t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 +q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> + <glyph glyph-name="hand_down" unicode="" +d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 +t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 +q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 +q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> + <glyph glyph-name="circle_arrow_left" unicode="" +d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="circle_arrow_right" unicode="" +d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="circle_arrow_up" unicode="" +d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="circle_arrow_down" unicode="" +d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="globe" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 +q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 +q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 +q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 +t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 +q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 +q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 +t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 +t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 +q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 +q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 +q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 +t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 +q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 +q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> + <glyph glyph-name="wrench" unicode="" horiz-adv-x="1664" +d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 +t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> + <glyph glyph-name="tasks" unicode="" horiz-adv-x="1792" +d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 +t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> + <glyph glyph-name="filter" unicode="" horiz-adv-x="1408" +d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> + <glyph glyph-name="briefcase" unicode="" horiz-adv-x="1792" +d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 +t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> + <glyph glyph-name="fullscreen" unicode="" +d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 +l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z +" /> + <glyph glyph-name="group" unicode="" horiz-adv-x="1920" +d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 +t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 +t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 +t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> + <glyph glyph-name="link" unicode="" horiz-adv-x="1664" +d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 +l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 +t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 +q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> + <glyph glyph-name="cloud" unicode="" horiz-adv-x="1920" +d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z +" /> + <glyph glyph-name="beaker" unicode="" horiz-adv-x="1664" +d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> + <glyph glyph-name="cut" unicode="" horiz-adv-x="1792" +d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 +q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 +q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 +q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 +q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> + <glyph glyph-name="copy" unicode="" horiz-adv-x="1792" +d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 +h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> + <glyph glyph-name="paper_clip" unicode="" horiz-adv-x="1408" +d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 +l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 +z" /> + <glyph glyph-name="save" unicode="" +d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 +h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> + <glyph glyph-name="sign_blank" unicode="" +d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="reorder" unicode="" +d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 +t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> + <glyph glyph-name="ul" unicode="" horiz-adv-x="1792" +d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 +t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z +M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> + <glyph glyph-name="ol" unicode="" horiz-adv-x="1792" +d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 +q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 +t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216 +q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> + <glyph glyph-name="strikethrough" unicode="" horiz-adv-x="1792" +d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 +l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 +l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> + <glyph glyph-name="underline" unicode="" +d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 +q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 +q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 +q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> + <glyph glyph-name="table" unicode="" horiz-adv-x="1664" +d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 +v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 +q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 +q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 +z" /> + <glyph glyph-name="magic" unicode="" horiz-adv-x="1664" +d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 +l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> + <glyph glyph-name="truck" unicode="" horiz-adv-x="1792" +d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 +t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 +t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> + <glyph glyph-name="pinterest" unicode="" +d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 +q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 +q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="pinterest_sign" unicode="" +d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 +t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 +t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> + <glyph glyph-name="google_plus_sign" unicode="" +d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 +h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="google_plus" unicode="" horiz-adv-x="2304" +d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 +q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" /> + <glyph glyph-name="money" unicode="" horiz-adv-x="1920" +d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 +v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> + <glyph glyph-name="caret_down" unicode="" horiz-adv-x="1024" +d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> + <glyph glyph-name="caret_up" unicode="" horiz-adv-x="1024" +d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> + <glyph glyph-name="caret_left" unicode="" horiz-adv-x="640" +d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> + <glyph glyph-name="caret_right" unicode="" horiz-adv-x="640" +d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> + <glyph glyph-name="columns" unicode="" horiz-adv-x="1664" +d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> + <glyph glyph-name="sort" unicode="" horiz-adv-x="1024" +d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> + <glyph glyph-name="sort_down" unicode="" horiz-adv-x="1024" +d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> + <glyph glyph-name="sort_up" unicode="" horiz-adv-x="1024" +d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> + <glyph glyph-name="envelope_alt" unicode="" horiz-adv-x="1792" +d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 +q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> + <glyph glyph-name="linkedin" unicode="" +d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 +q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> + <glyph glyph-name="undo" unicode="" +d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 +t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> + <glyph glyph-name="legal" unicode="" horiz-adv-x="1792" +d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 +t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 +q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 +q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> + <glyph glyph-name="dashboard" unicode="" horiz-adv-x="1792" +d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 +t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 +t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 +q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="comment_alt" unicode="" horiz-adv-x="1792" +d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 +q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 +t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> + <glyph glyph-name="comments_alt" unicode="" horiz-adv-x="1792" +d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 +t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 +t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 +q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> + <glyph glyph-name="bolt" unicode="" horiz-adv-x="896" +d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> + <glyph glyph-name="sitemap" unicode="" horiz-adv-x="1792" +d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 +q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 +z" /> + <glyph glyph-name="umbrella" unicode="" horiz-adv-x="1664" +d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 +q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 +q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> + <glyph glyph-name="paste" unicode="" horiz-adv-x="1792" +d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 +h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> + <glyph glyph-name="light_bulb" unicode="" horiz-adv-x="1024" +d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 +q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 +q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 +t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> + <glyph glyph-name="exchange" unicode="" horiz-adv-x="1792" +d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 +q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> + <glyph glyph-name="cloud_download" unicode="" horiz-adv-x="1920" +d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 +q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> + <glyph glyph-name="cloud_upload" unicode="" horiz-adv-x="1920" +d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 +q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> + <glyph glyph-name="user_md" unicode="" horiz-adv-x="1408" +d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 +t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 +t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 +t271.5 -112.5t112.5 -271.5z" /> + <glyph glyph-name="stethoscope" unicode="" horiz-adv-x="1408" +d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 +t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 +t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> + <glyph glyph-name="suitcase" unicode="" horiz-adv-x="1792" +d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 +t66 -158z" /> + <glyph glyph-name="bell_alt" unicode="" horiz-adv-x="1792" +d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 +t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> + <glyph glyph-name="coffee" unicode="" horiz-adv-x="1920" +d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 +t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> + <glyph glyph-name="food" unicode="" horiz-adv-x="1408" +d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 +t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> + <glyph glyph-name="file_text_alt" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 +q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> + <glyph glyph-name="building" unicode="" horiz-adv-x="1408" +d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> + <glyph glyph-name="hospital" unicode="" horiz-adv-x="1408" +d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z +M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 +t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 +v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> + <glyph glyph-name="ambulance" unicode="" horiz-adv-x="1920" +d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 +t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 +q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> + <glyph glyph-name="medkit" unicode="" horiz-adv-x="1792" +d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 +q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> + <glyph glyph-name="fighter_jet" unicode="" horiz-adv-x="1920" +d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 +q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" /> + <glyph glyph-name="beer" unicode="" horiz-adv-x="1664" +d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> + <glyph glyph-name="h_sign" unicode="" +d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="f0fe" unicode="" +d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="double_angle_left" unicode="" horiz-adv-x="1024" +d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 +t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> + <glyph glyph-name="double_angle_right" unicode="" horiz-adv-x="1024" +d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 +l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> + <glyph glyph-name="double_angle_up" unicode="" horiz-adv-x="1152" +d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 +q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> + <glyph glyph-name="double_angle_down" unicode="" horiz-adv-x="1152" +d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 +t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> + <glyph glyph-name="angle_left" unicode="" horiz-adv-x="640" +d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> + <glyph glyph-name="angle_right" unicode="" horiz-adv-x="640" +d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> + <glyph glyph-name="angle_up" unicode="" horiz-adv-x="1152" +d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> + <glyph glyph-name="angle_down" unicode="" horiz-adv-x="1152" +d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> + <glyph glyph-name="desktop" unicode="" horiz-adv-x="1920" +d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 +t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> + <glyph glyph-name="laptop" unicode="" horiz-adv-x="1920" +d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z +M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> + <glyph glyph-name="tablet" unicode="" horiz-adv-x="1152" +d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 +q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> + <glyph glyph-name="mobile_phone" unicode="" horiz-adv-x="768" +d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 +q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> + <glyph glyph-name="circle_blank" unicode="" +d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 +t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="quote_left" unicode="" horiz-adv-x="1664" +d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z +M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> + <glyph glyph-name="quote_right" unicode="" horiz-adv-x="1664" +d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 +v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> + <glyph glyph-name="spinner" unicode="" horiz-adv-x="1792" +d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 +t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z +M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 +q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" /> + <glyph glyph-name="circle" unicode="" +d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="reply" unicode="" horiz-adv-x="1792" +d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 +l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> + <glyph glyph-name="github_alt" unicode="" horiz-adv-x="1664" +d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 +q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 +t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 +q0 -87 -27 -168q136 -160 136 -398z" /> + <glyph glyph-name="folder_close_alt" unicode="" horiz-adv-x="1664" +d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 +q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> + <glyph glyph-name="folder_open_alt" unicode="" horiz-adv-x="1920" +d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 +v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z +" /> + <glyph glyph-name="expand_alt" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="collapse_alt" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="smile" unicode="" +d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 +t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 +t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="frown" unicode="" +d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 +t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 +t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="meh" unicode="" +d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 +t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="gamepad" unicode="" horiz-adv-x="1920" +d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 +t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 +t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> + <glyph glyph-name="keyboard" unicode="" horiz-adv-x="1920" +d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 +h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 +h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 +q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 +h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> + <glyph glyph-name="flag_alt" unicode="" horiz-adv-x="1792" +d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 +h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 +q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> + <glyph glyph-name="flag_checkered" unicode="" horiz-adv-x="1792" +d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 +q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 +q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 +q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> + <glyph glyph-name="terminal" unicode="" horiz-adv-x="1664" +d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 +t9 -23z" /> + <glyph glyph-name="code" unicode="" horiz-adv-x="1920" +d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 +l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> + <glyph glyph-name="reply_all" unicode="" horiz-adv-x="1792" +d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 +q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> + <glyph glyph-name="star_half_empty" unicode="" horiz-adv-x="1664" +d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 +l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> + <glyph glyph-name="location_arrow" unicode="" horiz-adv-x="1408" +d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> + <glyph glyph-name="crop" unicode="" horiz-adv-x="1664" +d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 +v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> + <glyph glyph-name="code_fork" unicode="" horiz-adv-x="1024" +d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 +q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 +q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> + <glyph glyph-name="unlink" unicode="" horiz-adv-x="1664" +d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 +q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 +l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 +t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> + <glyph glyph-name="question" unicode="" horiz-adv-x="1024" +d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 +t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> + <glyph glyph-name="_279" unicode="" horiz-adv-x="640" +d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 +q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> + <glyph glyph-name="exclamation" unicode="" horiz-adv-x="640" +d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> + <glyph glyph-name="superscript" unicode="" +d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z +M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5 +t-65.5 -51.5t-30.5 -63h232v80h126z" /> + <glyph glyph-name="subscript" unicode="" +d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z +M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73 +h232v80h126z" /> + <glyph glyph-name="_283" unicode="" horiz-adv-x="1920" +d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> + <glyph glyph-name="puzzle_piece" unicode="" horiz-adv-x="1664" +d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 +t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 +q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 +q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> + <glyph glyph-name="microphone" unicode="" horiz-adv-x="1152" +d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 +t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> + <glyph glyph-name="microphone_off" unicode="" horiz-adv-x="1408" +d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 +q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 +t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> + <glyph glyph-name="shield" unicode="" horiz-adv-x="1280" +d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 +t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> + <glyph glyph-name="calendar_empty" unicode="" horiz-adv-x="1664" +d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 +q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> + <glyph glyph-name="fire_extinguisher" unicode="" horiz-adv-x="1408" +d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 +q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 +q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> + <glyph glyph-name="rocket" unicode="" horiz-adv-x="1664" +d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 +q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> + <glyph glyph-name="maxcdn" unicode="" horiz-adv-x="1792" +d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> + <glyph glyph-name="chevron_sign_left" unicode="" +d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 +t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="chevron_sign_right" unicode="" +d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 +t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="chevron_sign_up" unicode="" +d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 +t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="chevron_sign_down" unicode="" +d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 +t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="html5" unicode="" horiz-adv-x="1408" +d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> + <glyph glyph-name="css3" unicode="" horiz-adv-x="1792" +d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> + <glyph glyph-name="anchor" unicode="" horiz-adv-x="1792" +d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 +q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 +t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> + <glyph glyph-name="unlock_alt" unicode="" horiz-adv-x="1152" +d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 +v-320h736z" /> + <glyph glyph-name="bullseye" unicode="" +d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 +t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 +q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="ellipsis_horizontal" unicode="" horiz-adv-x="1408" +d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 +q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> + <glyph glyph-name="ellipsis_vertical" unicode="" horiz-adv-x="384" +d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 +q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> + <glyph glyph-name="_303" unicode="" +d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128 +q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="play_sign" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 +q16 -8 32 -8q17 0 32 9z" /> + <glyph glyph-name="ticket" unicode="" horiz-adv-x="1792" +d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 +t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> + <glyph glyph-name="minus_sign_alt" unicode="" +d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 +t84.5 -203.5z" /> + <glyph glyph-name="check_minus" unicode="" horiz-adv-x="1408" +d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 +t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="level_up" unicode="" horiz-adv-x="1024" +d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> + <glyph glyph-name="level_down" unicode="" horiz-adv-x="1024" +d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> + <glyph glyph-name="check_sign" unicode="" +d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 +t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="edit_sign" unicode="" +d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 +v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_312" unicode="" +d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 +q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="share_sign" unicode="" +d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 +t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="compass" unicode="" +d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 +t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="collapse" unicode="" +d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 +v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="collapse_top" unicode="" +d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_317" unicode="" +d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 +t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="eur" unicode="" horiz-adv-x="1024" +d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 +t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 +l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> + <glyph glyph-name="gbp" unicode="" horiz-adv-x="1024" +d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 +q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> + <glyph glyph-name="usd" unicode="" horiz-adv-x="1024" +d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 +t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 +t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 +t53 -63.5t31.5 -76.5t13 -94z" /> + <glyph glyph-name="inr" unicode="" horiz-adv-x="898" +d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 +q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> + <glyph glyph-name="jpy" unicode="" horiz-adv-x="1027" +d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 +l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> + <glyph glyph-name="rub" unicode="" horiz-adv-x="1280" +d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 +q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> + <glyph glyph-name="krw" unicode="" horiz-adv-x="1792" +d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 +t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 +q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> + <glyph glyph-name="btc" unicode="" horiz-adv-x="1280" +d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 +l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 +t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> + <glyph glyph-name="file" unicode="" +d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> + <glyph glyph-name="file_text" unicode="" +d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 +q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> + <glyph glyph-name="sort_by_alphabet" unicode="" horiz-adv-x="1664" +d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 +v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 +l230 -662h70z" /> + <glyph glyph-name="_329" unicode="" horiz-adv-x="1664" +d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 +v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 +v119h121z" /> + <glyph glyph-name="sort_by_attributes" unicode="" horiz-adv-x="1792" +d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 +q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 +q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> + <glyph glyph-name="sort_by_attributes_alt" unicode="" horiz-adv-x="1792" +d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 +q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 +q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> + <glyph glyph-name="sort_by_order" unicode="" +d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 +zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 +t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> + <glyph glyph-name="sort_by_order_alt" unicode="" +d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 +t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 +q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> + <glyph glyph-name="_334" unicode="" horiz-adv-x="1664" +d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 +q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 +t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> + <glyph glyph-name="_335" unicode="" horiz-adv-x="1664" +d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 +t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 +t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> + <glyph glyph-name="youtube_sign" unicode="" +d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 +q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 +q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 +q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38 +q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5 +h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="youtube" unicode="" +d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 +q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 +q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 +q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51 +q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> + <glyph glyph-name="xing" unicode="" horiz-adv-x="1408" +d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 +q25 45 64 45h241q22 0 31 -15z" /> + <glyph glyph-name="xing_sign" unicode="" +d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 +l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="youtube_play" unicode="" horiz-adv-x="1792" +d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5 +l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136 +q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" /> + <glyph glyph-name="dropbox" unicode="" horiz-adv-x="1792" +d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> + <glyph glyph-name="stackexchange" unicode="" +d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" /> + <glyph glyph-name="instagram" unicode="" +d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 +q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 +t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 +q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" /> + <glyph glyph-name="flickr" unicode="" +d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 +t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> + <glyph glyph-name="adn" unicode="" +d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="f171" unicode="" horiz-adv-x="1408" +d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 +t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 +t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 +t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> + <glyph glyph-name="bitbucket_sign" unicode="" +d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 +t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z +M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 +v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="tumblr" unicode="" horiz-adv-x="1024" +d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 +q78 2 134 29z" /> + <glyph glyph-name="tumblr_sign" unicode="" +d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z +M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="long_arrow_down" unicode="" horiz-adv-x="768" +d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> + <glyph glyph-name="long_arrow_up" unicode="" horiz-adv-x="768" +d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> + <glyph glyph-name="long_arrow_left" unicode="" horiz-adv-x="1792" +d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> + <glyph glyph-name="long_arrow_right" unicode="" horiz-adv-x="1792" +d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> + <glyph glyph-name="apple" unicode="" horiz-adv-x="1408" +d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 +q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> + <glyph glyph-name="windows" unicode="" horiz-adv-x="1664" +d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> + <glyph glyph-name="android" unicode="" horiz-adv-x="1408" +d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 +t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 +h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> + <glyph glyph-name="linux" unicode="" +d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z +M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 +q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 +q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 +t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 +q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 +q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 +q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 +q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4 +t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5 +t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43 +q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49 +t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54 +q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5 +t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5 +t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> + <glyph glyph-name="dribble" unicode="" +d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 +t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 +q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 +t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="skype" unicode="" +d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 +t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 +q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 +q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> + <glyph glyph-name="foursquare" unicode="" horiz-adv-x="1280" +d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z +M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 +l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> + <glyph glyph-name="trello" unicode="" +d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 +q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> + <glyph glyph-name="female" unicode="" horiz-adv-x="1280" +d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 +q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> + <glyph glyph-name="male" unicode="" horiz-adv-x="1024" +d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z +M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> + <glyph glyph-name="gittip" unicode="" +d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 +t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="sun" unicode="" horiz-adv-x="1792" +d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 +l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 +q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> + <glyph glyph-name="_366" unicode="" +d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 +t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> + <glyph glyph-name="archive" unicode="" horiz-adv-x="1792" +d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 +q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> + <glyph glyph-name="bug" unicode="" horiz-adv-x="1664" +d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 +q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 +t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> + <glyph glyph-name="vk" unicode="" horiz-adv-x="1920" +d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 +t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 +q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24 +q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 +q39 5 64 -2.5t31 -16.5z" /> + <glyph glyph-name="weibo" unicode="" horiz-adv-x="1792" +d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 +q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 +q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 +q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z +M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> + <glyph glyph-name="renren" unicode="" +d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 +q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> + <glyph glyph-name="_372" unicode="" horiz-adv-x="1408" +d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 +t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 +t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 +t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> + <glyph glyph-name="stack_exchange" unicode="" horiz-adv-x="1280" +d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z +" /> + <glyph glyph-name="_374" unicode="" +d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 +t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="arrow_circle_alt_left" unicode="" +d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 +t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_376" unicode="" +d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z +M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="dot_circle_alt" unicode="" +d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 +t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_378" unicode="" horiz-adv-x="1664" +d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 +q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> + <glyph glyph-name="vimeo_square" unicode="" +d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 +q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_380" unicode="" horiz-adv-x="1152" +d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 +q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> + <glyph glyph-name="plus_square_o" unicode="" horiz-adv-x="1408" +d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 +q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_382" unicode="" horiz-adv-x="2176" +d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 +t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 +q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> + <glyph glyph-name="_383" unicode="" horiz-adv-x="1664" +d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 +q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 +t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> + <glyph glyph-name="_384" unicode="" +d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 +q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 +t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> + <glyph glyph-name="_385" unicode="" horiz-adv-x="1792" +d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 +t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 +t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 +t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 +t273 -182.5t331.5 -68z" /> + <glyph glyph-name="_386" unicode="" horiz-adv-x="1792" +d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> + <glyph glyph-name="_387" unicode="" horiz-adv-x="2048" +d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 +q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> + <glyph glyph-name="_388" unicode="" horiz-adv-x="2304" +d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 +q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> + <glyph glyph-name="_389" unicode="" +d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 +q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> + <glyph glyph-name="uniF1A0" unicode="" +d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 +t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" /> + <glyph glyph-name="f1a1" unicode="" horiz-adv-x="1792" +d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 +t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 +q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 +t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="_392" unicode="" +d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 +q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 +q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 +q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_393" unicode="" +d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 +v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 +t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="f1a4" unicode="" horiz-adv-x="1920" +d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 +v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> + <glyph glyph-name="_395" unicode="" +d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 +t84.5 -203.5z" /> + <glyph glyph-name="_396" unicode="" horiz-adv-x="2048" +d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 +v-369h123z" /> + <glyph glyph-name="_397" unicode="" +d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 +v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 +q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_398" unicode="" horiz-adv-x="2038" +d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 +q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 +q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 +q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 +t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 +q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 +t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 +t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> + <glyph glyph-name="_399" unicode="" +d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 +q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 +q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 +t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 +q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> + <glyph glyph-name="_400" unicode="" +d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z +M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 +t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 +q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 +t135.5 51q85 0 145 -60.5t60 -145.5z" /> + <glyph glyph-name="f1ab" unicode="" +d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 +q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 +q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z +M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 +q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 +q20 0 20 -21v-418z" /> + <glyph glyph-name="_402" unicode="" horiz-adv-x="1792" +d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 +l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 +t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 +q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 +q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> + <glyph glyph-name="_403" unicode="" +d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 +t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 +q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 +q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 +t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 +q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 +q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 +t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> + <glyph glyph-name="_404" unicode="" horiz-adv-x="1280" +d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152 +q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> + <glyph glyph-name="uniF1B1" unicode="" horiz-adv-x="1664" +d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 +q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 +q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 +t100.5 134t141.5 55.5z" /> + <glyph glyph-name="_406" unicode="" horiz-adv-x="768" +d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> + <glyph glyph-name="_407" unicode="" horiz-adv-x="1792" +d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z +" /> + <glyph glyph-name="_408" unicode="" horiz-adv-x="2304" +d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 +t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 +v-400l434 -186q36 -16 57 -48t21 -70z" /> + <glyph glyph-name="_409" unicode="" horiz-adv-x="2048" +d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 +q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 +q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> + <glyph glyph-name="_410" unicode="" +d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 +t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 +t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> + <glyph glyph-name="_411" unicode="" horiz-adv-x="1792" +d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 +q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 +q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> + <glyph glyph-name="_412" unicode="" +d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 +q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 +q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z +" /> + <glyph glyph-name="_413" unicode="" horiz-adv-x="1792" +d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 +l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 +t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 +q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> + <glyph glyph-name="_414" unicode="" horiz-adv-x="2048" +d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 +q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 +l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> + <glyph glyph-name="_415" unicode="" horiz-adv-x="2048" +d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 +t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z +M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> + <glyph glyph-name="_416" unicode="" +d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 +q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> + <glyph glyph-name="_417" unicode="" +d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 +q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 +q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_418" unicode="" horiz-adv-x="1024" +d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" /> + <glyph glyph-name="_419" unicode="" horiz-adv-x="2304" +d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 +q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 +q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 +l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 +q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236 +q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786 +q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> + <glyph glyph-name="uniF1C0" unicode="" +d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 +t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 +t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> + <glyph glyph-name="uniF1C1" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 +q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 +q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> + <glyph glyph-name="_422" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5 +t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" /> + <glyph glyph-name="_423" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 +h-290v-107h68l189 -272l-194 -283h-68z" /> + <glyph glyph-name="_424" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> + <glyph glyph-name="_425" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> + <glyph glyph-name="_426" unicode="" +d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 +v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 +q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> + <glyph glyph-name="_427" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 +q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> + <glyph glyph-name="_428" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> + <glyph glyph-name="_429" unicode="" +d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z +M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 +l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> + <glyph glyph-name="_430" unicode="" +d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 +q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> + <glyph glyph-name="_431" unicode="" horiz-adv-x="1792" +d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 +q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> + <glyph glyph-name="_432" unicode="" horiz-adv-x="2048" +d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 +q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 +t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" /> + <glyph glyph-name="_433" unicode="" horiz-adv-x="1792" +d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 +q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 +t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> + <glyph glyph-name="_434" unicode="" horiz-adv-x="1792" +d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 +t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" /> + <glyph glyph-name="uniF1D0" unicode="" horiz-adv-x="1792" +d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 +t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 +t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 +q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> + <glyph glyph-name="uniF1D1" unicode="" horiz-adv-x="1792" +d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 +l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 +q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 +q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 +t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 +t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF1D2" unicode="" +d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 +q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 +q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 +q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_438" unicode="" horiz-adv-x="1792" +d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 +q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 +q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 +v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> + <glyph glyph-name="_439" unicode="" +d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="uniF1D5" unicode="" horiz-adv-x="1280" +d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 +t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 +t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> + <glyph glyph-name="uniF1D6" unicode="" horiz-adv-x="1792" +d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 +q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 +t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 +t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> + <glyph glyph-name="uniF1D7" unicode="" horiz-adv-x="2048" +d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 +q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 +q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 +q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> + <glyph glyph-name="_443" unicode="" horiz-adv-x="1792" +d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> + <glyph glyph-name="_444" unicode="" horiz-adv-x="1792" +d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 +l863 639l-478 -797z" /> + <glyph glyph-name="_445" unicode="" +d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 +t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 +t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> + <glyph glyph-name="_446" unicode="" +d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 +t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_447" unicode="" horiz-adv-x="1792" +d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 +t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 +t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 +q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 +q0 -26 -12 -48t-36 -22z" /> + <glyph glyph-name="_448" unicode="" horiz-adv-x="1280" +d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 +q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> + <glyph glyph-name="_449" unicode="" +d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 +q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> + <glyph glyph-name="uniF1E0" unicode="" +d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 +t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> + <glyph glyph-name="_451" unicode="" +d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 +t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_452" unicode="" horiz-adv-x="1792" +d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 +t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 +q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 +t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> + <glyph glyph-name="_453" unicode="" horiz-adv-x="1792" +d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 +l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> + <glyph glyph-name="_454" unicode="" horiz-adv-x="1792" +d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 +v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 +q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 +zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 +t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> + <glyph glyph-name="_455" unicode="" horiz-adv-x="1792" +d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z +M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> + <glyph glyph-name="_456" unicode="" horiz-adv-x="1792" +d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234 +l401 400q38 37 91 37t90 -37z" /> + <glyph glyph-name="_457" unicode="" horiz-adv-x="1792" +d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 +t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z +M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7 +t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> + <glyph glyph-name="_458" unicode="" horiz-adv-x="1792" +d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> + <glyph glyph-name="_459" unicode="" +d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 +q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 +t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 +q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> + <glyph glyph-name="_460" unicode="" horiz-adv-x="2048" +d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 +t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> + <glyph glyph-name="_461" unicode="" horiz-adv-x="2048" +d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 +q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z +M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> + <glyph glyph-name="_462" unicode="" horiz-adv-x="1792" +d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 +t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 +t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 +t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z +M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 +h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_463" unicode="" +d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 +q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 +q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" /> + <glyph glyph-name="_464" unicode="" horiz-adv-x="1792" +d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 +q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" /> + <glyph glyph-name="uniF1F0" unicode="" horiz-adv-x="2304" +d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 +q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 +q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_466" unicode="" horiz-adv-x="2304" +d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249 +q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z +M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32 +h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4 +q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75 +q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14 +q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22 +q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12 +q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122 +h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5 +t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_467" unicode="" horiz-adv-x="2304" +d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 +q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 +v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 +q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 +t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> + <glyph glyph-name="f1f3" unicode="" horiz-adv-x="2304" +d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z +M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 +l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 +v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 +q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 +q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 +t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 +h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 +t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> + <glyph glyph-name="_469" unicode="" horiz-adv-x="2304" +d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 +t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 +q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 +t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 +l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 +q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_470" unicode="" horiz-adv-x="2304" +d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 +q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 +q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 +q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 +q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_471" unicode="" horiz-adv-x="2048" +d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 +l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 +l418 363q10 8 23.5 7t21.5 -11z" /> + <glyph glyph-name="_472" unicode="" horiz-adv-x="2048" +d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 +q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 +q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> + <glyph glyph-name="_473" unicode="" horiz-adv-x="1408" +d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 +q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 +q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> + <glyph glyph-name="_474" unicode="" +d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 +t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 +t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_475" unicode="" +d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 +q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 +t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 +t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> + <glyph glyph-name="_476" unicode="" horiz-adv-x="1792" +d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 +t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> + <glyph glyph-name="f1fc" unicode="" horiz-adv-x="1792" +d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 +t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> + <glyph glyph-name="_478" unicode="" horiz-adv-x="1792" +d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5 +t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38 +t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448 +h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5 +q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> + <glyph glyph-name="_479" unicode="" horiz-adv-x="2048" +d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> + <glyph glyph-name="_480" unicode="" horiz-adv-x="1792" +d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_481" unicode="" horiz-adv-x="2048" +d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 +t9 -23z" /> + <glyph glyph-name="_482" unicode="" horiz-adv-x="1792" +d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 +q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 +t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 +q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> + <glyph glyph-name="_483" unicode="" +d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 +q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 +q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 +q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_484" unicode="" horiz-adv-x="2048" +d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 +t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 +t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> + <glyph glyph-name="_485" unicode="" horiz-adv-x="2048" +d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 +t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> + <glyph glyph-name="_486" unicode="" horiz-adv-x="2304" +d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 +q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 +q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 +q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> + <glyph glyph-name="_487" unicode="" +d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 +h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 +t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> + <glyph glyph-name="_488" unicode="" horiz-adv-x="2048" +d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 +q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 +q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> + <glyph glyph-name="_489" unicode="" horiz-adv-x="1280" +d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 +t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 +t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 +q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 +q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 +t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> + <glyph glyph-name="_490" unicode="" horiz-adv-x="2048" +d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 +q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 +t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 +t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> + <glyph glyph-name="_491" unicode="" +d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 +t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> + <glyph glyph-name="_492" unicode="" +d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 +q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 +q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> + <glyph glyph-name="_493" unicode="" +d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" /> + <glyph glyph-name="_494" unicode="" horiz-adv-x="2048" +d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 +q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 +q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438 +h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66 +l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946 +l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82 +zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" /> + <glyph glyph-name="f210" unicode="" +d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" /> + <glyph glyph-name="_496" unicode="" +d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 +q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" /> + <glyph glyph-name="f212" unicode="" horiz-adv-x="2048" +d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 +q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 +q209 0 374 -102q172 107 374 102z" /> + <glyph glyph-name="_498" unicode="" horiz-adv-x="2048" +d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 +q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 +q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" /> + <glyph glyph-name="_499" unicode="" +d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 +l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 +v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z +M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 +v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 +h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 +t-43 -34t-16.5 -53.5z" /> + <glyph glyph-name="_500" unicode="" horiz-adv-x="2048" +d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 +q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" /> + <glyph glyph-name="_501" unicode="" horiz-adv-x="2048" +d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 +t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 +t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 +q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" /> + <glyph glyph-name="_502" unicode="" horiz-adv-x="1664" +d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 +t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 +q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> + <glyph glyph-name="_503" unicode="" horiz-adv-x="1664" +d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 +t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 +q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> + <glyph glyph-name="_504" unicode="" horiz-adv-x="2048" +d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 +l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" /> + <glyph glyph-name="_505" unicode="" horiz-adv-x="2048" +d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 +q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 +q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 +v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 +q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" /> + <glyph glyph-name="_506" unicode="" +d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 +t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 +q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 +t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" /> + <glyph glyph-name="_507" unicode="" horiz-adv-x="2304" +d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 +t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 +l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 +t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" /> + <glyph glyph-name="_508" unicode="" +d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 +q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 +q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 +t158.5 -65.5t65.5 -158.5z" /> + <glyph glyph-name="_509" unicode="" horiz-adv-x="1792" +d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 +q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 +t127 -344z" /> + <glyph glyph-name="venus" unicode="" horiz-adv-x="1280" +d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 +q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" /> + <glyph glyph-name="_511" unicode="" +d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 +q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_512" unicode="" horiz-adv-x="1280" +d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 +t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 +t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_513" unicode="" +d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 +q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 +t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_514" unicode="" horiz-adv-x="1792" +d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 +q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 +t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 +t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_515" unicode="" horiz-adv-x="1792" +d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 +t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 +q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 +q0 -226 -154 -391q103 -57 218 -57z" /> + <glyph glyph-name="_516" unicode="" horiz-adv-x="1920" +d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 +q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 +t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 +q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" /> + <glyph glyph-name="_517" unicode="" horiz-adv-x="2048" +d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 +t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 +t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 +t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" /> + <glyph glyph-name="_518" unicode="" +d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 +t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 +t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_519" unicode="" horiz-adv-x="1280" +d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 +t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 +t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_520" unicode="" horiz-adv-x="2048" +d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 +t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 +t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_521" unicode="" horiz-adv-x="1280" +d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 +t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> + <glyph glyph-name="_522" unicode="" horiz-adv-x="1280" +d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 +t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" /> + <glyph glyph-name="_523" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="_524" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="_525" unicode="" +d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" /> + <glyph glyph-name="_526" unicode="" horiz-adv-x="1280" +d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 +l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 +q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" /> + <glyph glyph-name="_527" unicode="" +d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 +t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 +l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" /> + <glyph glyph-name="_528" unicode="" horiz-adv-x="1792" +d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 +q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" /> + <glyph glyph-name="_529" unicode="" horiz-adv-x="2048" +d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 +t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 +t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" /> + <glyph glyph-name="_530" unicode="" horiz-adv-x="2048" +d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 +q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 +t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" /> + <glyph glyph-name="_531" unicode="" horiz-adv-x="2048" +d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 +q-26 0 -45 -19t-19 -45v-384h1152z" /> + <glyph glyph-name="_532" unicode="" +d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" /> + <glyph glyph-name="_533" unicode="" +d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 +t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" /> + <glyph glyph-name="_534" unicode="" +d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 +t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" /> + <glyph glyph-name="_535" unicode="" horiz-adv-x="1792" +d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 +q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" /> + <glyph glyph-name="_536" unicode="" +d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" /> + <glyph glyph-name="_537" unicode="" horiz-adv-x="2296" +d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 +q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 +q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 +q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 +q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 +q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 +q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8 +t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 +q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 +q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z +M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86 +t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 +q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4 +l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130 +t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 +q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 +q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" /> + <glyph glyph-name="_538" unicode="" horiz-adv-x="2304" +d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 +t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 +t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" /> + <glyph glyph-name="_539" unicode="" horiz-adv-x="1792" +d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 +t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 +t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 +q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 +q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" /> + <glyph glyph-name="_540" unicode="" horiz-adv-x="2304" +d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 +v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" /> + <glyph glyph-name="_541" unicode="" horiz-adv-x="2304" +d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 +h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> + <glyph glyph-name="_542" unicode="" horiz-adv-x="2304" +d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 +h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> + <glyph glyph-name="_543" unicode="" horiz-adv-x="2304" +d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 +h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> + <glyph glyph-name="_544" unicode="" horiz-adv-x="2304" +d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 +v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> + <glyph glyph-name="_545" unicode="" horiz-adv-x="1280" +d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" /> + <glyph glyph-name="_546" unicode="" horiz-adv-x="1024" +d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" /> + <glyph glyph-name="_547" unicode="" horiz-adv-x="2048" +d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 +h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" /> + <glyph glyph-name="_548" unicode="" horiz-adv-x="2304" +d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 +v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" /> + <glyph glyph-name="_549" unicode="" +d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" /> + <glyph glyph-name="_550" unicode="" +d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 +z" /> + <glyph glyph-name="_551" unicode="" horiz-adv-x="2304" +d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 +t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 +t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 +t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_552" unicode="" horiz-adv-x="2304" +d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 +t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z +M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_553" unicode="" horiz-adv-x="1792" +d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 +zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" /> + <glyph glyph-name="_554" unicode="" horiz-adv-x="2304" +d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 +q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 +t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 +t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" /> + <glyph glyph-name="_555" unicode="" +d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 +t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 +t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> + <glyph glyph-name="_556" unicode="" +d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 +t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" /> + <glyph glyph-name="_557" unicode="" +d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 +t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" /> + <glyph glyph-name="_558" unicode="" +d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 +t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 +h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> + <glyph glyph-name="_559" unicode="" +d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 +t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 +h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" /> + <glyph glyph-name="_560" unicode="" +d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 +q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 +t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 +q72 69 174 69z" /> + <glyph glyph-name="_561" unicode="" horiz-adv-x="1792" +d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 +t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 +h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" /> + <glyph glyph-name="_562" unicode="" horiz-adv-x="1792" +d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 +q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 +t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 +t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 +q0 -42 -23 -78t-61 -53l-310 -141h91z" /> + <glyph glyph-name="_563" unicode="" horiz-adv-x="2048" +d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 +q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 +q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" /> + <glyph glyph-name="_564" unicode="" horiz-adv-x="2048" +d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79 +t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24 +q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26 +l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" /> + <glyph glyph-name="_565" unicode="" horiz-adv-x="1792" +d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 +q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 +v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 +v-384h32z" /> + <glyph glyph-name="_566" unicode="" +d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 +v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 +q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 +q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 +q0 -53 37.5 -90.5t90.5 -37.5h668z" /> + <glyph glyph-name="_567" unicode="" horiz-adv-x="1973" +d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 +t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 +q13 0 22 -8.5t10 -20.5z" /> + <glyph glyph-name="_568" unicode="" horiz-adv-x="1792" +d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 +t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 +q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="_569" unicode="" horiz-adv-x="1792" +d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 +q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5 +t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 +q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 +t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" /> + <glyph glyph-name="f260" unicode="" horiz-adv-x="2048" +d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" /> + <glyph glyph-name="f261" unicode="" horiz-adv-x="1792" +d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 +t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="_572" unicode="" horiz-adv-x="2304" +d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 +t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 +t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 +t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 +t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 +q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" /> + <glyph glyph-name="f263" unicode="" horiz-adv-x="1280" +d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 +t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 +q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" /> + <glyph glyph-name="_574" unicode="" +d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 +q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 +zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="_575" unicode="" horiz-adv-x="1720" +d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 +l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" /> + <glyph glyph-name="_576" unicode="" horiz-adv-x="2304" +d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 +q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 +l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" /> + <glyph glyph-name="_577" unicode="" horiz-adv-x="1792" +d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 +q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 +t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 +t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 +t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 +t191 -286t71 -348z" /> + <glyph glyph-name="_578" unicode="" horiz-adv-x="1792" +d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 +q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" /> + <glyph glyph-name="_579" unicode="" horiz-adv-x="1792" +d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 +q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 +q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" /> + <glyph glyph-name="_580" unicode="" horiz-adv-x="1792" +d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 +q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z +" /> + <glyph glyph-name="_581" unicode="" horiz-adv-x="1792" +d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 +q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z +M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" /> + <glyph glyph-name="_582" unicode="" horiz-adv-x="2048" +d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 +v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> + <glyph glyph-name="_583" unicode="" horiz-adv-x="1792" +d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 +h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 +q-68 175 -180 287z" /> + <glyph glyph-name="_584" unicode="" +d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 +q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 +q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 +q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 +q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 +t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" /> + <glyph glyph-name="_585" unicode="" horiz-adv-x="1792" +d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z +M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 +q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 +t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 +q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" /> + <glyph glyph-name="_586" unicode="" horiz-adv-x="1792" +d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 +h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 +v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" /> + <glyph glyph-name="_587" unicode="" horiz-adv-x="1792" +d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 +t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 +t47 -113v-96h128q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_588" unicode="" horiz-adv-x="1792" +d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z +M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 +q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_589" unicode="" horiz-adv-x="1792" +d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 +t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 +t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> + <glyph glyph-name="_590" unicode="" horiz-adv-x="1792" +d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" /> + <glyph glyph-name="_591" unicode="" horiz-adv-x="1024" +d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 +q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" /> + <glyph glyph-name="_592" unicode="" horiz-adv-x="1792" +d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 +q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" /> + <glyph glyph-name="_593" unicode="" horiz-adv-x="2048" +d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 +v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" /> + <glyph glyph-name="_594" unicode="" horiz-adv-x="1792" +d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 +q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" /> + <glyph glyph-name="_595" unicode="" horiz-adv-x="1792" +d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 +t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 +t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> + <glyph glyph-name="_596" unicode="" horiz-adv-x="1792" +d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 +t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 +t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 +t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" /> + <glyph glyph-name="_597" unicode="" horiz-adv-x="1024" +d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" /> + <glyph glyph-name="_598" unicode="" horiz-adv-x="1792" +d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 +q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" /> + <glyph glyph-name="f27e" unicode="" +d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" /> + <glyph glyph-name="uniF280" unicode="" +d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 +h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 +l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" /> + <glyph glyph-name="uniF281" unicode="" horiz-adv-x="1792" +d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 +l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 +t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 +q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" /> + <glyph glyph-name="_602" unicode="" horiz-adv-x="1792" +d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 +q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" /> + <glyph glyph-name="_603" unicode="" horiz-adv-x="2304" +d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" /> + <glyph glyph-name="_604" unicode="" horiz-adv-x="1792" +d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308 +t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20 +t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" /> + <glyph glyph-name="uniF285" unicode="" horiz-adv-x="1792" +d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" /> + <glyph glyph-name="uniF286" unicode="" horiz-adv-x="1792" +d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 +q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 +q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 +q16 0 16 -16z" /> + <glyph glyph-name="_607" unicode="" horiz-adv-x="2304" +d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 +q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 +t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" /> + <glyph glyph-name="_608" unicode="" horiz-adv-x="1792" +d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 +t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="_609" unicode="" horiz-adv-x="2304" +d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 +q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 +q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 +q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" /> + <glyph glyph-name="_610" unicode="" +d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 +t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 +q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 +t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" /> + <glyph glyph-name="_611" unicode="" +d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 +t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_612" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 +t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" /> + <glyph glyph-name="_613" unicode="" +d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 +t103 -385.5z" /> + <glyph glyph-name="_614" unicode="" +d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 +t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" /> + <glyph glyph-name="_615" unicode="" horiz-adv-x="1792" +d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 +t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> + <glyph glyph-name="_616" unicode="" horiz-adv-x="2048" +d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 +t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 +q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 +h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" /> + <glyph glyph-name="_617" unicode="" horiz-adv-x="1792" +d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 +q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 +q15 0 25 -12q9 -12 6 -28z" /> + <glyph glyph-name="_618" unicode="" +d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 +t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" /> + <glyph glyph-name="_619" unicode="" horiz-adv-x="1024" +d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" /> + <glyph glyph-name="_620" unicode="" +d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 +t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 +t271.5 -112.5t112.5 -271.5z" /> + <glyph glyph-name="_621" unicode="" horiz-adv-x="1792" +d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" /> + <glyph glyph-name="_622" unicode="" horiz-adv-x="1792" +d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 +q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" /> + <glyph glyph-name="_623" unicode="" +d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 +t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" /> + <glyph glyph-name="_624" unicode="" horiz-adv-x="1792" +d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 +q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 +q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" /> + <glyph glyph-name="_625" unicode="" horiz-adv-x="1792" +d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 +q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z +M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 +t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="_626" unicode="" +d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 +l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z +M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" /> + <glyph glyph-name="_627" unicode="" +d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 +t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 +t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5 +t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="_628" unicode="" horiz-adv-x="1408" +d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 +q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 +q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 +q3 -1 7 1t7 4l3 2q11 9 11 17z" /> + <glyph glyph-name="_629" unicode="" horiz-adv-x="2304" +d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 +t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 +t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 +h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 +t9.5 -70.5z" /> + <glyph glyph-name="uniF2A0" unicode="" horiz-adv-x="1408" +d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 +q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 +l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 +t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 +q-18 -19 -45 -19z" /> + <glyph glyph-name="uniF2A1" unicode="" horiz-adv-x="2176" +d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 +q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 +q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 +t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 +t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 +t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 +t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" /> + <glyph glyph-name="uniF2A2" unicode="" horiz-adv-x="1792" +d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z +M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 +t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 +t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 +q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" /> + <glyph glyph-name="uniF2A3" unicode="" horiz-adv-x="2304" +d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 +q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 +q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 +q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 +q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 +q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" /> + <glyph glyph-name="uniF2A4" unicode="" horiz-adv-x="1792" +d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 +t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 +t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 +l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" /> + <glyph glyph-name="uniF2A5" unicode="" +d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 +q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 +q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5 +t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="uniF2A6" unicode="" horiz-adv-x="1535" +d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 +l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 +q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 +q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" /> + <glyph glyph-name="uniF2A7" unicode="" horiz-adv-x="1664" +d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 +t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 +l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148 +q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26 +l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" /> + <glyph glyph-name="uniF2A8" unicode="" horiz-adv-x="1792" +d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 +q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 +q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 +q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" /> + <glyph glyph-name="uniF2A9" unicode="" horiz-adv-x="1280" +d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 +q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z +M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" /> + <glyph glyph-name="uniF2AA" unicode="" +d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z +M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 +q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 +t84.5 -203.5z" /> + <glyph glyph-name="uniF2AB" unicode="" +d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 +q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 +t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 +t103 -385.5z" /> + <glyph glyph-name="uniF2AC" unicode="" horiz-adv-x="1664" +d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 +q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 +t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" /> + <glyph glyph-name="uniF2AD" unicode="" +d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 +q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 +t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 +q119 0 203.5 -84.5t84.5 -203.5z" /> + <glyph glyph-name="uniF2AE" unicode="" horiz-adv-x="2304" +d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 +q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 +q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" /> + <glyph glyph-name="uniF2B0" unicode="" +d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 +q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 +l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z +M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" /> + <glyph glyph-name="uniF2B1" unicode="" horiz-adv-x="1664" +d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 +t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" /> + <glyph glyph-name="uniF2B2" unicode="" horiz-adv-x="1792" +d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 +t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 +q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 +q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 +t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 +q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 +q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 +t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" /> + <glyph glyph-name="uniF2B3" unicode="" +d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110 +h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> + <glyph glyph-name="uniF2B4" unicode="" +d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 +q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" /> + <glyph glyph-name="uniF2B5" unicode="" horiz-adv-x="2304" +d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66 +l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180 +q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z +M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421 +q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" /> + <glyph glyph-name="uniF2B6" unicode="" horiz-adv-x="1792" +d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107 +t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39 +q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" /> + <glyph glyph-name="uniF2B7" unicode="" horiz-adv-x="1792" +d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5 +l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5 +h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94 +q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" /> + <glyph glyph-name="uniF2B8" unicode="" +d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465 +l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161 +q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74 +q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" /> + <glyph glyph-name="uniF2B9" unicode="" horiz-adv-x="1664" +d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576 +q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216 +q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" /> + <glyph glyph-name="uniF2BA" unicode="" horiz-adv-x="1664" +d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5 +t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96 +q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216 +q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" /> + <glyph glyph-name="uniF2BB" unicode="" horiz-adv-x="2048" +d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z +M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568 +q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9 +h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2BC" unicode="" horiz-adv-x="2048" +d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925 +q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568 +q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5 +t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113 +t113 47h1728q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2BD" unicode="" horiz-adv-x="1792" +d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5 +t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF2BE" unicode="" horiz-adv-x="1792" +d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61 +t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" /> + <glyph glyph-name="uniF2C0" unicode="" +d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5 +t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145 +q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" /> + <glyph glyph-name="uniF2C1" unicode="" horiz-adv-x="1280" +d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5 +t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352 +q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2C2" unicode="" horiz-adv-x="2048" +d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56 +t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23 +v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728 +q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2C3" unicode="" horiz-adv-x="2048" +d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z +M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64 +q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47 +h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2C4" unicode="" horiz-adv-x="1792" +d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117 +q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5 +t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" /> + <glyph glyph-name="uniF2C5" unicode="" horiz-adv-x="2304" +d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21 +t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46 +t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54 +t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29 +q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5 +t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314 +q2 -42 2 -64z" /> + <glyph glyph-name="uniF2C6" unicode="" horiz-adv-x="1792" +d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 +t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF2C7" unicode="" horiz-adv-x="1024" +d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5 +t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192 +v128h192z" /> + <glyph glyph-name="uniF2C8" unicode="" horiz-adv-x="1024" +d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5 +t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192 +v128h192z" /> + <glyph glyph-name="uniF2C9" unicode="" horiz-adv-x="1024" +d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5 +t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192 +v128h192z" /> + <glyph glyph-name="uniF2CA" unicode="" horiz-adv-x="1024" +d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5 +t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192 +v128h192z" /> + <glyph glyph-name="uniF2CB" unicode="" horiz-adv-x="1024" +d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z +M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" /> + <glyph glyph-name="uniF2CC" unicode="" horiz-adv-x="1920" +d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41 +t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19 +t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768 +q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19 +t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384 +q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" /> + <glyph glyph-name="uniF2CD" unicode="" horiz-adv-x="1792" +d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9 +t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9 +t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42 +q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9 +t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23 +t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" /> + <glyph glyph-name="uniF2CE" unicode="" +d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5 +t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70 +q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20 +q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5 +t72.5 -263.5z" /> + <glyph glyph-name="uniF2D0" unicode="" horiz-adv-x="1792" +d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2D1" unicode="" horiz-adv-x="1792" +d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2D2" unicode="" horiz-adv-x="2048" +d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47 +t47 -113z" /> + <glyph glyph-name="uniF2D3" unicode="" horiz-adv-x="1792" +d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10 +l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2D4" unicode="" horiz-adv-x="1792" +d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 +l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2D5" unicode="" horiz-adv-x="1792" +d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF2D6" unicode="" horiz-adv-x="1794" +d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12 +t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5 +t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5 +q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5 +q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34 +q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5 +t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF2D7" unicode="" +d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89 +q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5 +t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" /> + <glyph glyph-name="uniF2D8" unicode="" +d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7 +t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5 +h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113 +v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" /> + <glyph glyph-name="uniF2D9" unicode="" horiz-adv-x="2176" +d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584 +q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5 +q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15 +q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82 +q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104 +t302 11t306.5 -97q220 -115 333 -336t87 -474z" /> + <glyph glyph-name="uniF2DA" unicode="" horiz-adv-x="1792" +d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178 +q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199 +t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297 +t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208 +t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" /> + <glyph glyph-name="uniF2DB" unicode="" +d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16 +q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28 +t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32 +q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16 +h48q16 0 16 -16z" /> + <glyph glyph-name="uniF2DC" unicode="" horiz-adv-x="1664" +d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45 +t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33 +q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313 +l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106 +q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" /> + <glyph glyph-name="uniF2DD" unicode="" horiz-adv-x="1792" +d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321 +q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" /> + <glyph glyph-name="uniF2DE" unicode="" horiz-adv-x="1792" +d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62 +t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71 +t286 -191t191 -286t71 -348z" /> + <glyph glyph-name="uniF2E0" unicode="" horiz-adv-x="1920" +d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3 +t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53 +q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5 +q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5 +t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5 +q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z +M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21 +q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16 +q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" /> + <glyph glyph-name="uniF2E1" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E2" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E3" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E4" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E5" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E6" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E7" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="_698" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2E9" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2EA" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2EB" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2EC" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2ED" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="uniF2EE" unicode="" horiz-adv-x="1792" + /> + <glyph glyph-name="lessequal" unicode="" horiz-adv-x="1792" + /> + </font> +</defs></svg> diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..400014a4b06eee3d0c0d54402a47ab2601b2862b GIT binary patch literal 98024 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less new file mode 100644 index 0000000000..66ad52a5ba --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less new file mode 100644 index 0000000000..f1c8ad75f5 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less new file mode 100644 index 0000000000..c577ac84a6 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less new file mode 100644 index 0000000000..110289f2f4 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less new file mode 100644 index 0000000000..c3677def31 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; +@import "screen-reader.less"; diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less new file mode 100644 index 0000000000..159d600425 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less @@ -0,0 +1,789 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-feed:before, +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } +.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; } +.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; } +.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; } +.@{fa-css-prefix}-linode:before { content: @fa-var-linode; } +.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; } +.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; } +.@{fa-css-prefix}-vcard:before, +.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; } +.@{fa-css-prefix}-vcard-o:before, +.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; } +.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; } +.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; } +.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; } +.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; } +.@{fa-css-prefix}-drivers-license:before, +.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; } +.@{fa-css-prefix}-drivers-license-o:before, +.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; } +.@{fa-css-prefix}-quora:before { content: @fa-var-quora; } +.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; } +.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; } +.@{fa-css-prefix}-thermometer-4:before, +.@{fa-css-prefix}-thermometer:before, +.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; } +.@{fa-css-prefix}-thermometer-3:before, +.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; } +.@{fa-css-prefix}-thermometer-2:before, +.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; } +.@{fa-css-prefix}-thermometer-1:before, +.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; } +.@{fa-css-prefix}-thermometer-0:before, +.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; } +.@{fa-css-prefix}-shower:before { content: @fa-var-shower; } +.@{fa-css-prefix}-bathtub:before, +.@{fa-css-prefix}-s15:before, +.@{fa-css-prefix}-bath:before { content: @fa-var-bath; } +.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; } +.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; } +.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; } +.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; } +.@{fa-css-prefix}-times-rectangle:before, +.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; } +.@{fa-css-prefix}-times-rectangle-o:before, +.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; } +.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; } +.@{fa-css-prefix}-grav:before { content: @fa-var-grav; } +.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; } +.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; } +.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; } +.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; } +.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; } +.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; } +.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; } +.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; } +.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less new file mode 100644 index 0000000000..c9d646770e --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less new file mode 100644 index 0000000000..0b440382f6 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less new file mode 100644 index 0000000000..beef231d0e --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less new file mode 100644 index 0000000000..835be41f81 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less new file mode 100644 index 0000000000..f6ba81475b --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less new file mode 100644 index 0000000000..11c188196d --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less new file mode 100644 index 0000000000..fc53fb0e7a --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less new file mode 100644 index 0000000000..7ddbbc0115 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less @@ -0,0 +1,800 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.7.0"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-500px: "\f26e"; +@fa-var-address-book: "\f2b9"; +@fa-var-address-book-o: "\f2ba"; +@fa-var-address-card: "\f2bb"; +@fa-var-address-card-o: "\f2bc"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-bandcamp: "\f2d5"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-bath: "\f2cd"; +@fa-var-bathtub: "\f2cd"; +@fa-var-battery: "\f240"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; +@fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-drivers-license: "\f2c2"; +@fa-var-drivers-license-o: "\f2c3"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eercast: "\f2da"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-open: "\f2b6"; +@fa-var-envelope-open-o: "\f2b7"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-etsy: "\f2d7"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-free-code-camp: "\f2c5"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-grav: "\f2d6"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-handshake-o: "\f2b5"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-id-badge: "\f2c1"; +@fa-var-id-card: "\f2c2"; +@fa-var-id-card-o: "\f2c3"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-imdb: "\f2d8"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linode: "\f2b8"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meetup: "\f2e0"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microchip: "\f2db"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-podcast: "\f2ce"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quora: "\f2c4"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-ravelry: "\f2d9"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-s15: "\f2cd"; +@fa-var-safari: "\f267"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-shower: "\f2cc"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-snowflake-o: "\f2dc"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superpowers: "\f2dd"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-telegram: "\f2c6"; +@fa-var-television: "\f26c"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thermometer: "\f2c7"; +@fa-var-thermometer-0: "\f2cb"; +@fa-var-thermometer-1: "\f2ca"; +@fa-var-thermometer-2: "\f2c9"; +@fa-var-thermometer-3: "\f2c8"; +@fa-var-thermometer-4: "\f2c7"; +@fa-var-thermometer-empty: "\f2cb"; +@fa-var-thermometer-full: "\f2c7"; +@fa-var-thermometer-half: "\f2c9"; +@fa-var-thermometer-quarter: "\f2ca"; +@fa-var-thermometer-three-quarters: "\f2c8"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-times-rectangle: "\f2d3"; +@fa-var-times-rectangle-o: "\f2d4"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-circle: "\f2bd"; +@fa-var-user-circle-o: "\f2be"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-o: "\f2c0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-vcard: "\f2bb"; +@fa-var-vcard-o: "\f2bc"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-window-close: "\f2d3"; +@fa-var-window-close-o: "\f2d4"; +@fa-var-window-maximize: "\f2d0"; +@fa-var-window-minimize: "\f2d1"; +@fa-var-window-restore: "\f2d2"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpexplorer: "\f2de"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; +@fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss new file mode 100644 index 0000000000..8a020dbfff --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss new file mode 100644 index 0000000000..d4b85a02f2 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss new file mode 100644 index 0000000000..7425ef85fc --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss new file mode 100644 index 0000000000..b221c98133 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss new file mode 100644 index 0000000000..e63e702c4d --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss @@ -0,0 +1,789 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-feed:before, +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } +.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } +.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } +.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } +.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } +.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } +.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } +.#{$fa-css-prefix}-vcard:before, +.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } +.#{$fa-css-prefix}-vcard-o:before, +.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } +.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } +.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } +.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } +.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } +.#{$fa-css-prefix}-drivers-license:before, +.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } +.#{$fa-css-prefix}-drivers-license-o:before, +.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } +.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } +.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } +.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } +.#{$fa-css-prefix}-thermometer-4:before, +.#{$fa-css-prefix}-thermometer:before, +.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } +.#{$fa-css-prefix}-thermometer-3:before, +.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } +.#{$fa-css-prefix}-thermometer-2:before, +.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } +.#{$fa-css-prefix}-thermometer-1:before, +.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } +.#{$fa-css-prefix}-thermometer-0:before, +.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } +.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } +.#{$fa-css-prefix}-bathtub:before, +.#{$fa-css-prefix}-s15:before, +.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } +.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } +.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } +.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } +.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } +.#{$fa-css-prefix}-times-rectangle:before, +.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } +.#{$fa-css-prefix}-times-rectangle-o:before, +.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } +.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } +.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } +.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } +.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } +.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } +.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } +.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } +.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } +.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } +.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } +.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss new file mode 100644 index 0000000000..41e9a8184a --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss new file mode 100644 index 0000000000..7d1e4d54d6 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss new file mode 100644 index 0000000000..c3bbd5745d --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss new file mode 100644 index 0000000000..bb457c23a8 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss new file mode 100644 index 0000000000..a3558fd09c --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss new file mode 100644 index 0000000000..637426f0da --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss new file mode 100644 index 0000000000..aef7403660 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss new file mode 100644 index 0000000000..498fc4a087 --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss @@ -0,0 +1,800 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.7.0" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-500px: "\f26e"; +$fa-var-address-book: "\f2b9"; +$fa-var-address-book-o: "\f2ba"; +$fa-var-address-card: "\f2bb"; +$fa-var-address-card-o: "\f2bc"; +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; +$fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; +$fa-var-ban: "\f05e"; +$fa-var-bandcamp: "\f2d5"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-bath: "\f2cd"; +$fa-var-bathtub: "\f2cd"; +$fa-var-battery: "\f240"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; +$fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; +$fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-drivers-license: "\f2c2"; +$fa-var-drivers-license-o: "\f2c3"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; +$fa-var-edit: "\f044"; +$fa-var-eercast: "\f2da"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-open: "\f2b6"; +$fa-var-envelope-open-o: "\f2b7"; +$fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; +$fa-var-eraser: "\f12d"; +$fa-var-etsy: "\f2d7"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-free-code-camp: "\f2c5"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-grav: "\f2d6"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-handshake-o: "\f2b5"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; +$fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-id-badge: "\f2c1"; +$fa-var-id-card: "\f2c2"; +$fa-var-id-card-o: "\f2c3"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-imdb: "\f2d8"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linode: "\f2b8"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map: "\f279"; +$fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meetup: "\f2e0"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microchip: "\f2db"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; +$fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f2ae"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-podcast: "\f2ce"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quora: "\f2c4"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-ravelry: "\f2d9"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-s15: "\f2cd"; +$fa-var-safari: "\f267"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-shower: "\f2cc"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-snowflake-o: "\f2dc"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; +$fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superpowers: "\f2dd"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-telegram: "\f2c6"; +$fa-var-television: "\f26c"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thermometer: "\f2c7"; +$fa-var-thermometer-0: "\f2cb"; +$fa-var-thermometer-1: "\f2ca"; +$fa-var-thermometer-2: "\f2c9"; +$fa-var-thermometer-3: "\f2c8"; +$fa-var-thermometer-4: "\f2c7"; +$fa-var-thermometer-empty: "\f2cb"; +$fa-var-thermometer-full: "\f2c7"; +$fa-var-thermometer-half: "\f2c9"; +$fa-var-thermometer-quarter: "\f2ca"; +$fa-var-thermometer-three-quarters: "\f2c8"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-times-rectangle: "\f2d3"; +$fa-var-times-rectangle-o: "\f2d4"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-circle: "\f2bd"; +$fa-var-user-circle-o: "\f2be"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-o: "\f2c0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-vcard: "\f2bb"; +$fa-var-vcard-o: "\f2bc"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; +$fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-window-close: "\f2d3"; +$fa-var-window-close-o: "\f2d4"; +$fa-var-window-maximize: "\f2d0"; +$fa-var-window-minimize: "\f2d1"; +$fa-var-window-restore: "\f2d2"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpexplorer: "\f2de"; +$fa-var-wpforms: "\f298"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; +$fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss new file mode 100644 index 0000000000..f1c83aaa5d --- /dev/null +++ b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; +@import "screen-reader"; diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index b49e6cd61d..4cc88760bb 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -29,6 +29,7 @@ <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/themes/default/theme.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/select2.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/select2-bootstrap.css' /> + <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.min.css' /> <tmpl_if name='logged_in' value='n'><link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/login.css' /></tmpl_if> </head> -- GitLab From 3f058ea1311d2906b31c0616205ede623e2522fb Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 18:49:05 +0200 Subject: [PATCH 409/571] Remove unnecessary files --- .../font-awesome-4.7.0/HELP-US-OUT.txt | 7 - .../font-awesome-4.7.0/css/font-awesome.css | 2337 ----------------- .../font-awesome-4.7.0/less/animated.less | 34 - .../less/bordered-pulled.less | 25 - .../font-awesome-4.7.0/less/core.less | 12 - .../font-awesome-4.7.0/less/fixed-width.less | 6 - .../font-awesome-4.7.0/less/font-awesome.less | 18 - .../font-awesome-4.7.0/less/icons.less | 789 ------ .../font-awesome-4.7.0/less/larger.less | 13 - .../font-awesome-4.7.0/less/list.less | 19 - .../font-awesome-4.7.0/less/mixins.less | 60 - .../font-awesome-4.7.0/less/path.less | 15 - .../less/rotated-flipped.less | 20 - .../less/screen-reader.less | 5 - .../font-awesome-4.7.0/less/stacked.less | 20 - .../font-awesome-4.7.0/less/variables.less | 800 ------ .../font-awesome-4.7.0/scss/_animated.scss | 34 - .../scss/_bordered-pulled.scss | 25 - .../font-awesome-4.7.0/scss/_core.scss | 12 - .../font-awesome-4.7.0/scss/_fixed-width.scss | 6 - .../font-awesome-4.7.0/scss/_icons.scss | 789 ------ .../font-awesome-4.7.0/scss/_larger.scss | 13 - .../font-awesome-4.7.0/scss/_list.scss | 19 - .../font-awesome-4.7.0/scss/_mixins.scss | 60 - .../font-awesome-4.7.0/scss/_path.scss | 15 - .../scss/_rotated-flipped.scss | 20 - .../scss/_screen-reader.scss | 5 - .../font-awesome-4.7.0/scss/_stacked.scss | 20 - .../font-awesome-4.7.0/scss/_variables.scss | 800 ------ .../font-awesome-4.7.0/scss/font-awesome.scss | 18 - 30 files changed, 6016 deletions(-) delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss delete mode 100644 interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt deleted file mode 100644 index 83d083dd77..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/HELP-US-OUT.txt +++ /dev/null @@ -1,7 +0,0 @@ -I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, -Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, -comprehensive icon sets or copy and paste your own. - -Please. Check it out. - --Dave Gandy diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css deleted file mode 100644 index ee906a8196..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/css/font-awesome.css +++ /dev/null @@ -1,2337 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper-pp:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-resistance:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-genderless:before { - content: "\f22d"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} -.fa-optin-monster:before { - content: "\f23c"; -} -.fa-opencart:before { - content: "\f23d"; -} -.fa-expeditedssl:before { - content: "\f23e"; -} -.fa-battery-4:before, -.fa-battery:before, -.fa-battery-full:before { - content: "\f240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} -.fa-mouse-pointer:before { - content: "\f245"; -} -.fa-i-cursor:before { - content: "\f246"; -} -.fa-object-group:before { - content: "\f247"; -} -.fa-object-ungroup:before { - content: "\f248"; -} -.fa-sticky-note:before { - content: "\f249"; -} -.fa-sticky-note-o:before { - content: "\f24a"; -} -.fa-cc-jcb:before { - content: "\f24b"; -} -.fa-cc-diners-club:before { - content: "\f24c"; -} -.fa-clone:before { - content: "\f24d"; -} -.fa-balance-scale:before { - content: "\f24e"; -} -.fa-hourglass-o:before { - content: "\f250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} -.fa-hourglass:before { - content: "\f254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} -.fa-hand-scissors-o:before { - content: "\f257"; -} -.fa-hand-lizard-o:before { - content: "\f258"; -} -.fa-hand-spock-o:before { - content: "\f259"; -} -.fa-hand-pointer-o:before { - content: "\f25a"; -} -.fa-hand-peace-o:before { - content: "\f25b"; -} -.fa-trademark:before { - content: "\f25c"; -} -.fa-registered:before { - content: "\f25d"; -} -.fa-creative-commons:before { - content: "\f25e"; -} -.fa-gg:before { - content: "\f260"; -} -.fa-gg-circle:before { - content: "\f261"; -} -.fa-tripadvisor:before { - content: "\f262"; -} -.fa-odnoklassniki:before { - content: "\f263"; -} -.fa-odnoklassniki-square:before { - content: "\f264"; -} -.fa-get-pocket:before { - content: "\f265"; -} -.fa-wikipedia-w:before { - content: "\f266"; -} -.fa-safari:before { - content: "\f267"; -} -.fa-chrome:before { - content: "\f268"; -} -.fa-firefox:before { - content: "\f269"; -} -.fa-opera:before { - content: "\f26a"; -} -.fa-internet-explorer:before { - content: "\f26b"; -} -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} -.fa-contao:before { - content: "\f26d"; -} -.fa-500px:before { - content: "\f26e"; -} -.fa-amazon:before { - content: "\f270"; -} -.fa-calendar-plus-o:before { - content: "\f271"; -} -.fa-calendar-minus-o:before { - content: "\f272"; -} -.fa-calendar-times-o:before { - content: "\f273"; -} -.fa-calendar-check-o:before { - content: "\f274"; -} -.fa-industry:before { - content: "\f275"; -} -.fa-map-pin:before { - content: "\f276"; -} -.fa-map-signs:before { - content: "\f277"; -} -.fa-map-o:before { - content: "\f278"; -} -.fa-map:before { - content: "\f279"; -} -.fa-commenting:before { - content: "\f27a"; -} -.fa-commenting-o:before { - content: "\f27b"; -} -.fa-houzz:before { - content: "\f27c"; -} -.fa-vimeo:before { - content: "\f27d"; -} -.fa-black-tie:before { - content: "\f27e"; -} -.fa-fonticons:before { - content: "\f280"; -} -.fa-reddit-alien:before { - content: "\f281"; -} -.fa-edge:before { - content: "\f282"; -} -.fa-credit-card-alt:before { - content: "\f283"; -} -.fa-codiepie:before { - content: "\f284"; -} -.fa-modx:before { - content: "\f285"; -} -.fa-fort-awesome:before { - content: "\f286"; -} -.fa-usb:before { - content: "\f287"; -} -.fa-product-hunt:before { - content: "\f288"; -} -.fa-mixcloud:before { - content: "\f289"; -} -.fa-scribd:before { - content: "\f28a"; -} -.fa-pause-circle:before { - content: "\f28b"; -} -.fa-pause-circle-o:before { - content: "\f28c"; -} -.fa-stop-circle:before { - content: "\f28d"; -} -.fa-stop-circle-o:before { - content: "\f28e"; -} -.fa-shopping-bag:before { - content: "\f290"; -} -.fa-shopping-basket:before { - content: "\f291"; -} -.fa-hashtag:before { - content: "\f292"; -} -.fa-bluetooth:before { - content: "\f293"; -} -.fa-bluetooth-b:before { - content: "\f294"; -} -.fa-percent:before { - content: "\f295"; -} -.fa-gitlab:before { - content: "\f296"; -} -.fa-wpbeginner:before { - content: "\f297"; -} -.fa-wpforms:before { - content: "\f298"; -} -.fa-envira:before { - content: "\f299"; -} -.fa-universal-access:before { - content: "\f29a"; -} -.fa-wheelchair-alt:before { - content: "\f29b"; -} -.fa-question-circle-o:before { - content: "\f29c"; -} -.fa-blind:before { - content: "\f29d"; -} -.fa-audio-description:before { - content: "\f29e"; -} -.fa-volume-control-phone:before { - content: "\f2a0"; -} -.fa-braille:before { - content: "\f2a1"; -} -.fa-assistive-listening-systems:before { - content: "\f2a2"; -} -.fa-asl-interpreting:before, -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; -} -.fa-deafness:before, -.fa-hard-of-hearing:before, -.fa-deaf:before { - content: "\f2a4"; -} -.fa-glide:before { - content: "\f2a5"; -} -.fa-glide-g:before { - content: "\f2a6"; -} -.fa-signing:before, -.fa-sign-language:before { - content: "\f2a7"; -} -.fa-low-vision:before { - content: "\f2a8"; -} -.fa-viadeo:before { - content: "\f2a9"; -} -.fa-viadeo-square:before { - content: "\f2aa"; -} -.fa-snapchat:before { - content: "\f2ab"; -} -.fa-snapchat-ghost:before { - content: "\f2ac"; -} -.fa-snapchat-square:before { - content: "\f2ad"; -} -.fa-pied-piper:before { - content: "\f2ae"; -} -.fa-first-order:before { - content: "\f2b0"; -} -.fa-yoast:before { - content: "\f2b1"; -} -.fa-themeisle:before { - content: "\f2b2"; -} -.fa-google-plus-circle:before, -.fa-google-plus-official:before { - content: "\f2b3"; -} -.fa-fa:before, -.fa-font-awesome:before { - content: "\f2b4"; -} -.fa-handshake-o:before { - content: "\f2b5"; -} -.fa-envelope-open:before { - content: "\f2b6"; -} -.fa-envelope-open-o:before { - content: "\f2b7"; -} -.fa-linode:before { - content: "\f2b8"; -} -.fa-address-book:before { - content: "\f2b9"; -} -.fa-address-book-o:before { - content: "\f2ba"; -} -.fa-vcard:before, -.fa-address-card:before { - content: "\f2bb"; -} -.fa-vcard-o:before, -.fa-address-card-o:before { - content: "\f2bc"; -} -.fa-user-circle:before { - content: "\f2bd"; -} -.fa-user-circle-o:before { - content: "\f2be"; -} -.fa-user-o:before { - content: "\f2c0"; -} -.fa-id-badge:before { - content: "\f2c1"; -} -.fa-drivers-license:before, -.fa-id-card:before { - content: "\f2c2"; -} -.fa-drivers-license-o:before, -.fa-id-card-o:before { - content: "\f2c3"; -} -.fa-quora:before { - content: "\f2c4"; -} -.fa-free-code-camp:before { - content: "\f2c5"; -} -.fa-telegram:before { - content: "\f2c6"; -} -.fa-thermometer-4:before, -.fa-thermometer:before, -.fa-thermometer-full:before { - content: "\f2c7"; -} -.fa-thermometer-3:before, -.fa-thermometer-three-quarters:before { - content: "\f2c8"; -} -.fa-thermometer-2:before, -.fa-thermometer-half:before { - content: "\f2c9"; -} -.fa-thermometer-1:before, -.fa-thermometer-quarter:before { - content: "\f2ca"; -} -.fa-thermometer-0:before, -.fa-thermometer-empty:before { - content: "\f2cb"; -} -.fa-shower:before { - content: "\f2cc"; -} -.fa-bathtub:before, -.fa-s15:before, -.fa-bath:before { - content: "\f2cd"; -} -.fa-podcast:before { - content: "\f2ce"; -} -.fa-window-maximize:before { - content: "\f2d0"; -} -.fa-window-minimize:before { - content: "\f2d1"; -} -.fa-window-restore:before { - content: "\f2d2"; -} -.fa-times-rectangle:before, -.fa-window-close:before { - content: "\f2d3"; -} -.fa-times-rectangle-o:before, -.fa-window-close-o:before { - content: "\f2d4"; -} -.fa-bandcamp:before { - content: "\f2d5"; -} -.fa-grav:before { - content: "\f2d6"; -} -.fa-etsy:before { - content: "\f2d7"; -} -.fa-imdb:before { - content: "\f2d8"; -} -.fa-ravelry:before { - content: "\f2d9"; -} -.fa-eercast:before { - content: "\f2da"; -} -.fa-microchip:before { - content: "\f2db"; -} -.fa-snowflake-o:before { - content: "\f2dc"; -} -.fa-superpowers:before { - content: "\f2dd"; -} -.fa-wpexplorer:before { - content: "\f2de"; -} -.fa-meetup:before { - content: "\f2e0"; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less deleted file mode 100644 index 66ad52a5ba..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/animated.less +++ /dev/null @@ -1,34 +0,0 @@ -// Animated Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.@{fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less deleted file mode 100644 index f1c8ad75f5..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/bordered-pulled.less +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.@{fa-css-prefix}-pull-left { float: left; } -.@{fa-css-prefix}-pull-right { float: right; } - -.@{fa-css-prefix} { - &.@{fa-css-prefix}-pull-left { margin-right: .3em; } - &.@{fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less deleted file mode 100644 index c577ac84a6..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/core.less +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less deleted file mode 100644 index 110289f2f4..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less deleted file mode 100644 index c3677def31..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/font-awesome.less +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "animated.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; -@import "screen-reader.less"; diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less deleted file mode 100644 index 159d600425..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/icons.less +++ /dev/null @@ -1,789 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook-f:before, -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-feed:before, -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before, -.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-resistance:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-y-combinator-square:before, -.@{fa-css-prefix}-yc-square:before, -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } -.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } -.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } -.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } -.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } -.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } -.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } -.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } -.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } -.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } -.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } -.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } -.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } -.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } -.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } -.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } -.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } -.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } -.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } -.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } -.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } -.@{fa-css-prefix}-intersex:before, -.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } -.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } -.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } -.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } -.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } -.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } -.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } -.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } -.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } -.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } -.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } -.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } -.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } -.@{fa-css-prefix}-server:before { content: @fa-var-server; } -.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } -.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } -.@{fa-css-prefix}-hotel:before, -.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } -.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } -.@{fa-css-prefix}-train:before { content: @fa-var-train; } -.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } -.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } -.@{fa-css-prefix}-yc:before, -.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } -.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } -.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } -.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } -.@{fa-css-prefix}-battery-4:before, -.@{fa-css-prefix}-battery:before, -.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } -.@{fa-css-prefix}-battery-3:before, -.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } -.@{fa-css-prefix}-battery-2:before, -.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } -.@{fa-css-prefix}-battery-1:before, -.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } -.@{fa-css-prefix}-battery-0:before, -.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } -.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } -.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } -.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } -.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } -.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } -.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } -.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } -.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } -.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } -.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } -.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } -.@{fa-css-prefix}-hourglass-1:before, -.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } -.@{fa-css-prefix}-hourglass-2:before, -.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } -.@{fa-css-prefix}-hourglass-3:before, -.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } -.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } -.@{fa-css-prefix}-hand-grab-o:before, -.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } -.@{fa-css-prefix}-hand-stop-o:before, -.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } -.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } -.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } -.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } -.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } -.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } -.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } -.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } -.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } -.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } -.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } -.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } -.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } -.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } -.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } -.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } -.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } -.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } -.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } -.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } -.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } -.@{fa-css-prefix}-tv:before, -.@{fa-css-prefix}-television:before { content: @fa-var-television; } -.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } -.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } -.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } -.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } -.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } -.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } -.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } -.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } -.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } -.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } -.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } -.@{fa-css-prefix}-map:before { content: @fa-var-map; } -.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } -.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } -.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } -.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } -.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } -.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } -.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } -.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } -.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } -.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } -.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } -.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } -.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } -.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } -.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } -.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } -.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } -.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } -.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } -.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } -.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } -.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } -.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } -.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } -.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } -.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } -.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } -.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } -.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } -.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } -.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } -.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } -.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } -.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } -.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } -.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } -.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } -.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } -.@{fa-css-prefix}-asl-interpreting:before, -.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } -.@{fa-css-prefix}-deafness:before, -.@{fa-css-prefix}-hard-of-hearing:before, -.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } -.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } -.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } -.@{fa-css-prefix}-signing:before, -.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } -.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } -.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } -.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } -.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } -.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } -.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } -.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } -.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } -.@{fa-css-prefix}-google-plus-circle:before, -.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } -.@{fa-css-prefix}-fa:before, -.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } -.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; } -.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; } -.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; } -.@{fa-css-prefix}-linode:before { content: @fa-var-linode; } -.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; } -.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; } -.@{fa-css-prefix}-vcard:before, -.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; } -.@{fa-css-prefix}-vcard-o:before, -.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; } -.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; } -.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; } -.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; } -.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; } -.@{fa-css-prefix}-drivers-license:before, -.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; } -.@{fa-css-prefix}-drivers-license-o:before, -.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; } -.@{fa-css-prefix}-quora:before { content: @fa-var-quora; } -.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; } -.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; } -.@{fa-css-prefix}-thermometer-4:before, -.@{fa-css-prefix}-thermometer:before, -.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; } -.@{fa-css-prefix}-thermometer-3:before, -.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; } -.@{fa-css-prefix}-thermometer-2:before, -.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; } -.@{fa-css-prefix}-thermometer-1:before, -.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; } -.@{fa-css-prefix}-thermometer-0:before, -.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; } -.@{fa-css-prefix}-shower:before { content: @fa-var-shower; } -.@{fa-css-prefix}-bathtub:before, -.@{fa-css-prefix}-s15:before, -.@{fa-css-prefix}-bath:before { content: @fa-var-bath; } -.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; } -.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; } -.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; } -.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; } -.@{fa-css-prefix}-times-rectangle:before, -.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; } -.@{fa-css-prefix}-times-rectangle-o:before, -.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; } -.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; } -.@{fa-css-prefix}-grav:before { content: @fa-var-grav; } -.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; } -.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; } -.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; } -.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; } -.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; } -.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; } -.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; } -.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; } -.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less deleted file mode 100644 index c9d646770e..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less deleted file mode 100644 index 0b440382f6..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less deleted file mode 100644 index beef231d0e..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/mixins.less +++ /dev/null @@ -1,60 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -.fa-icon-rotate(@degrees, @rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} - - -// Only display content to screen readers. A la Bootstrap 4. -// -// See: http://a11yproject.com/posts/how-to-hide-content/ - -.sr-only() { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// -// Credit: HTML5 Boilerplate - -.sr-only-focusable() { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less deleted file mode 100644 index 835be41f81..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/path.less +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); - // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less deleted file mode 100644 index f6ba81475b..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less deleted file mode 100644 index 11c188196d..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/screen-reader.less +++ /dev/null @@ -1,5 +0,0 @@ -// Screen Readers -// ------------------------- - -.sr-only { .sr-only(); } -.sr-only-focusable { .sr-only-focusable(); } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less deleted file mode 100644 index fc53fb0e7a..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less deleted file mode 100644 index 7ddbbc0115..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/less/variables.less +++ /dev/null @@ -1,800 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -@fa-font-size-base: 14px; -@fa-line-height-base: 1; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.7.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-500px: "\f26e"; -@fa-var-address-book: "\f2b9"; -@fa-var-address-book-o: "\f2ba"; -@fa-var-address-card: "\f2bb"; -@fa-var-address-card-o: "\f2bc"; -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-amazon: "\f270"; -@fa-var-ambulance: "\f0f9"; -@fa-var-american-sign-language-interpreting: "\f2a3"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asl-interpreting: "\f2a3"; -@fa-var-assistive-listening-systems: "\f2a2"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-audio-description: "\f29e"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-balance-scale: "\f24e"; -@fa-var-ban: "\f05e"; -@fa-var-bandcamp: "\f2d5"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-bath: "\f2cd"; -@fa-var-bathtub: "\f2cd"; -@fa-var-battery: "\f240"; -@fa-var-battery-0: "\f244"; -@fa-var-battery-1: "\f243"; -@fa-var-battery-2: "\f242"; -@fa-var-battery-3: "\f241"; -@fa-var-battery-4: "\f240"; -@fa-var-battery-empty: "\f244"; -@fa-var-battery-full: "\f240"; -@fa-var-battery-half: "\f242"; -@fa-var-battery-quarter: "\f243"; -@fa-var-battery-three-quarters: "\f241"; -@fa-var-bed: "\f236"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-black-tie: "\f27e"; -@fa-var-blind: "\f29d"; -@fa-var-bluetooth: "\f293"; -@fa-var-bluetooth-b: "\f294"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-braille: "\f2a1"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-buysellads: "\f20d"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-check-o: "\f274"; -@fa-var-calendar-minus-o: "\f272"; -@fa-var-calendar-o: "\f133"; -@fa-var-calendar-plus-o: "\f271"; -@fa-var-calendar-times-o: "\f273"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cart-arrow-down: "\f218"; -@fa-var-cart-plus: "\f217"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-diners-club: "\f24c"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-jcb: "\f24b"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-chrome: "\f268"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-clone: "\f24d"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-codiepie: "\f284"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-commenting: "\f27a"; -@fa-var-commenting-o: "\f27b"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-connectdevelop: "\f20e"; -@fa-var-contao: "\f26d"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-creative-commons: "\f25e"; -@fa-var-credit-card: "\f09d"; -@fa-var-credit-card-alt: "\f283"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-dashcube: "\f210"; -@fa-var-database: "\f1c0"; -@fa-var-deaf: "\f2a4"; -@fa-var-deafness: "\f2a4"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-diamond: "\f219"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-drivers-license: "\f2c2"; -@fa-var-drivers-license-o: "\f2c3"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edge: "\f282"; -@fa-var-edit: "\f044"; -@fa-var-eercast: "\f2da"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-open: "\f2b6"; -@fa-var-envelope-open-o: "\f2b7"; -@fa-var-envelope-square: "\f199"; -@fa-var-envira: "\f299"; -@fa-var-eraser: "\f12d"; -@fa-var-etsy: "\f2d7"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-expeditedssl: "\f23e"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-fa: "\f2b4"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-f: "\f09a"; -@fa-var-facebook-official: "\f230"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-feed: "\f09e"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-firefox: "\f269"; -@fa-var-first-order: "\f2b0"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-font-awesome: "\f2b4"; -@fa-var-fonticons: "\f280"; -@fa-var-fort-awesome: "\f286"; -@fa-var-forumbee: "\f211"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-free-code-camp: "\f2c5"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-genderless: "\f22d"; -@fa-var-get-pocket: "\f265"; -@fa-var-gg: "\f260"; -@fa-var-gg-circle: "\f261"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gitlab: "\f296"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-glide: "\f2a5"; -@fa-var-glide-g: "\f2a6"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-circle: "\f2b3"; -@fa-var-google-plus-official: "\f2b3"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-gratipay: "\f184"; -@fa-var-grav: "\f2d6"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-grab-o: "\f255"; -@fa-var-hand-lizard-o: "\f258"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hand-paper-o: "\f256"; -@fa-var-hand-peace-o: "\f25b"; -@fa-var-hand-pointer-o: "\f25a"; -@fa-var-hand-rock-o: "\f255"; -@fa-var-hand-scissors-o: "\f257"; -@fa-var-hand-spock-o: "\f259"; -@fa-var-hand-stop-o: "\f256"; -@fa-var-handshake-o: "\f2b5"; -@fa-var-hard-of-hearing: "\f2a4"; -@fa-var-hashtag: "\f292"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-heartbeat: "\f21e"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-hotel: "\f236"; -@fa-var-hourglass: "\f254"; -@fa-var-hourglass-1: "\f251"; -@fa-var-hourglass-2: "\f252"; -@fa-var-hourglass-3: "\f253"; -@fa-var-hourglass-end: "\f253"; -@fa-var-hourglass-half: "\f252"; -@fa-var-hourglass-o: "\f250"; -@fa-var-hourglass-start: "\f251"; -@fa-var-houzz: "\f27c"; -@fa-var-html5: "\f13b"; -@fa-var-i-cursor: "\f246"; -@fa-var-id-badge: "\f2c1"; -@fa-var-id-card: "\f2c2"; -@fa-var-id-card-o: "\f2c3"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-imdb: "\f2d8"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-industry: "\f275"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-internet-explorer: "\f26b"; -@fa-var-intersex: "\f224"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-leanpub: "\f212"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linode: "\f2b8"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-low-vision: "\f2a8"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map: "\f279"; -@fa-var-map-marker: "\f041"; -@fa-var-map-o: "\f278"; -@fa-var-map-pin: "\f276"; -@fa-var-map-signs: "\f277"; -@fa-var-mars: "\f222"; -@fa-var-mars-double: "\f227"; -@fa-var-mars-stroke: "\f229"; -@fa-var-mars-stroke-h: "\f22b"; -@fa-var-mars-stroke-v: "\f22a"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medium: "\f23a"; -@fa-var-medkit: "\f0fa"; -@fa-var-meetup: "\f2e0"; -@fa-var-meh-o: "\f11a"; -@fa-var-mercury: "\f223"; -@fa-var-microchip: "\f2db"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mixcloud: "\f289"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-modx: "\f285"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-motorcycle: "\f21c"; -@fa-var-mouse-pointer: "\f245"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-neuter: "\f22c"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-object-group: "\f247"; -@fa-var-object-ungroup: "\f248"; -@fa-var-odnoklassniki: "\f263"; -@fa-var-odnoklassniki-square: "\f264"; -@fa-var-opencart: "\f23d"; -@fa-var-openid: "\f19b"; -@fa-var-opera: "\f26a"; -@fa-var-optin-monster: "\f23c"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-pause-circle: "\f28b"; -@fa-var-pause-circle-o: "\f28c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-percent: "\f295"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f2ae"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pied-piper-pp: "\f1a7"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-p: "\f231"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-podcast: "\f2ce"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-product-hunt: "\f288"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-question-circle-o: "\f29c"; -@fa-var-quora: "\f2c4"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-ravelry: "\f2d9"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-alien: "\f281"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-registered: "\f25d"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-resistance: "\f1d0"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-s15: "\f2cd"; -@fa-var-safari: "\f267"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-scribd: "\f28a"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-sellsy: "\f213"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-server: "\f233"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-ship: "\f21a"; -@fa-var-shirtsinbulk: "\f214"; -@fa-var-shopping-bag: "\f290"; -@fa-var-shopping-basket: "\f291"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-shower: "\f2cc"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-language: "\f2a7"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-signing: "\f2a7"; -@fa-var-simplybuilt: "\f215"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skyatlas: "\f216"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-snapchat: "\f2ab"; -@fa-var-snapchat-ghost: "\f2ac"; -@fa-var-snapchat-square: "\f2ad"; -@fa-var-snowflake-o: "\f2dc"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-sticky-note: "\f249"; -@fa-var-sticky-note-o: "\f24a"; -@fa-var-stop: "\f04d"; -@fa-var-stop-circle: "\f28d"; -@fa-var-stop-circle-o: "\f28e"; -@fa-var-street-view: "\f21d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-subway: "\f239"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superpowers: "\f2dd"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-telegram: "\f2c6"; -@fa-var-television: "\f26c"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-themeisle: "\f2b2"; -@fa-var-thermometer: "\f2c7"; -@fa-var-thermometer-0: "\f2cb"; -@fa-var-thermometer-1: "\f2ca"; -@fa-var-thermometer-2: "\f2c9"; -@fa-var-thermometer-3: "\f2c8"; -@fa-var-thermometer-4: "\f2c7"; -@fa-var-thermometer-empty: "\f2cb"; -@fa-var-thermometer-full: "\f2c7"; -@fa-var-thermometer-half: "\f2c9"; -@fa-var-thermometer-quarter: "\f2ca"; -@fa-var-thermometer-three-quarters: "\f2c8"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-times-rectangle: "\f2d3"; -@fa-var-times-rectangle-o: "\f2d4"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-trademark: "\f25c"; -@fa-var-train: "\f238"; -@fa-var-transgender: "\f224"; -@fa-var-transgender-alt: "\f225"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-tripadvisor: "\f262"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-tv: "\f26c"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-universal-access: "\f29a"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usb: "\f287"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-circle: "\f2bd"; -@fa-var-user-circle-o: "\f2be"; -@fa-var-user-md: "\f0f0"; -@fa-var-user-o: "\f2c0"; -@fa-var-user-plus: "\f234"; -@fa-var-user-secret: "\f21b"; -@fa-var-user-times: "\f235"; -@fa-var-users: "\f0c0"; -@fa-var-vcard: "\f2bb"; -@fa-var-vcard-o: "\f2bc"; -@fa-var-venus: "\f221"; -@fa-var-venus-double: "\f226"; -@fa-var-venus-mars: "\f228"; -@fa-var-viacoin: "\f237"; -@fa-var-viadeo: "\f2a9"; -@fa-var-viadeo-square: "\f2aa"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo: "\f27d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-control-phone: "\f2a0"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-whatsapp: "\f232"; -@fa-var-wheelchair: "\f193"; -@fa-var-wheelchair-alt: "\f29b"; -@fa-var-wifi: "\f1eb"; -@fa-var-wikipedia-w: "\f266"; -@fa-var-window-close: "\f2d3"; -@fa-var-window-close-o: "\f2d4"; -@fa-var-window-maximize: "\f2d0"; -@fa-var-window-minimize: "\f2d1"; -@fa-var-window-restore: "\f2d2"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wpbeginner: "\f297"; -@fa-var-wpexplorer: "\f2de"; -@fa-var-wpforms: "\f298"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-y-combinator: "\f23b"; -@fa-var-y-combinator-square: "\f1d4"; -@fa-var-yahoo: "\f19e"; -@fa-var-yc: "\f23b"; -@fa-var-yc-square: "\f1d4"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-yoast: "\f2b1"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss deleted file mode 100644 index 8a020dbfff..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss deleted file mode 100644 index d4b85a02f2..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss deleted file mode 100644 index 7425ef85fc..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss deleted file mode 100644 index b221c98133..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss deleted file mode 100644 index e63e702c4d..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_icons.scss +++ /dev/null @@ -1,789 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-resistance:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } -.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } -.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } -.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } -.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } -.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } -.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } -.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } -.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } -.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } -.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } -.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } -.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } -.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } -.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } -.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } -.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } -.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } -.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } -.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } -.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } -.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } -.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } -.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } -.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } -.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } -.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } -.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } -.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } -.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } -.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } -.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } -.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } -.#{$fa-css-prefix}-asl-interpreting:before, -.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } -.#{$fa-css-prefix}-deafness:before, -.#{$fa-css-prefix}-hard-of-hearing:before, -.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } -.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } -.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } -.#{$fa-css-prefix}-signing:before, -.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } -.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } -.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } -.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } -.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } -.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } -.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } -.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } -.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } -.#{$fa-css-prefix}-google-plus-circle:before, -.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } -.#{$fa-css-prefix}-fa:before, -.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } -.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } -.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } -.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } -.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } -.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } -.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } -.#{$fa-css-prefix}-vcard:before, -.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } -.#{$fa-css-prefix}-vcard-o:before, -.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } -.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } -.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } -.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } -.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } -.#{$fa-css-prefix}-drivers-license:before, -.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } -.#{$fa-css-prefix}-drivers-license-o:before, -.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } -.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } -.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } -.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } -.#{$fa-css-prefix}-thermometer-4:before, -.#{$fa-css-prefix}-thermometer:before, -.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } -.#{$fa-css-prefix}-thermometer-3:before, -.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } -.#{$fa-css-prefix}-thermometer-2:before, -.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } -.#{$fa-css-prefix}-thermometer-1:before, -.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } -.#{$fa-css-prefix}-thermometer-0:before, -.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } -.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } -.#{$fa-css-prefix}-bathtub:before, -.#{$fa-css-prefix}-s15:before, -.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } -.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } -.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } -.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } -.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } -.#{$fa-css-prefix}-times-rectangle:before, -.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } -.#{$fa-css-prefix}-times-rectangle-o:before, -.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } -.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } -.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } -.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } -.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } -.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } -.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } -.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } -.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } -.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } -.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } -.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss deleted file mode 100644 index 41e9a8184a..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss deleted file mode 100644 index 7d1e4d54d6..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss deleted file mode 100644 index c3bbd5745d..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_mixins.scss +++ /dev/null @@ -1,60 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} - - -// Only display content to screen readers. A la Bootstrap 4. -// -// See: http://a11yproject.com/posts/how-to-hide-content/ - -@mixin sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// -// Credit: HTML5 Boilerplate - -@mixin sr-only-focusable { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss deleted file mode 100644 index bb457c23a8..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss deleted file mode 100644 index a3558fd09c..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss deleted file mode 100644 index 637426f0da..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_screen-reader.scss +++ /dev/null @@ -1,5 +0,0 @@ -// Screen Readers -// ------------------------- - -.sr-only { @include sr-only(); } -.sr-only-focusable { @include sr-only-focusable(); } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss deleted file mode 100644 index aef7403660..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss deleted file mode 100644 index 498fc4a087..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/_variables.scss +++ /dev/null @@ -1,800 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.7.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-address-book: "\f2b9"; -$fa-var-address-book-o: "\f2ba"; -$fa-var-address-card: "\f2bb"; -$fa-var-address-card-o: "\f2bc"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-american-sign-language-interpreting: "\f2a3"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asl-interpreting: "\f2a3"; -$fa-var-assistive-listening-systems: "\f2a2"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-audio-description: "\f29e"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bandcamp: "\f2d5"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-bath: "\f2cd"; -$fa-var-bathtub: "\f2cd"; -$fa-var-battery: "\f240"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-blind: "\f29d"; -$fa-var-bluetooth: "\f293"; -$fa-var-bluetooth-b: "\f294"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-braille: "\f2a1"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-codiepie: "\f284"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-credit-card-alt: "\f283"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-deaf: "\f2a4"; -$fa-var-deafness: "\f2a4"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-drivers-license: "\f2c2"; -$fa-var-drivers-license-o: "\f2c3"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edge: "\f282"; -$fa-var-edit: "\f044"; -$fa-var-eercast: "\f2da"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-open: "\f2b6"; -$fa-var-envelope-open-o: "\f2b7"; -$fa-var-envelope-square: "\f199"; -$fa-var-envira: "\f299"; -$fa-var-eraser: "\f12d"; -$fa-var-etsy: "\f2d7"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-fa: "\f2b4"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-first-order: "\f2b0"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-font-awesome: "\f2b4"; -$fa-var-fonticons: "\f280"; -$fa-var-fort-awesome: "\f286"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-free-code-camp: "\f2c5"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gitlab: "\f296"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-glide: "\f2a5"; -$fa-var-glide-g: "\f2a6"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-circle: "\f2b3"; -$fa-var-google-plus-official: "\f2b3"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-grav: "\f2d6"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-handshake-o: "\f2b5"; -$fa-var-hard-of-hearing: "\f2a4"; -$fa-var-hashtag: "\f292"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-id-badge: "\f2c1"; -$fa-var-id-card: "\f2c2"; -$fa-var-id-card-o: "\f2c3"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-imdb: "\f2d8"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linode: "\f2b8"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-low-vision: "\f2a8"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meetup: "\f2e0"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microchip: "\f2db"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mixcloud: "\f289"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-modx: "\f285"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-pause-circle: "\f28b"; -$fa-var-pause-circle-o: "\f28c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-percent: "\f295"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f2ae"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pied-piper-pp: "\f1a7"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-podcast: "\f2ce"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-product-hunt: "\f288"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-question-circle-o: "\f29c"; -$fa-var-quora: "\f2c4"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-ravelry: "\f2d9"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-alien: "\f281"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-resistance: "\f1d0"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-s15: "\f2cd"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-scribd: "\f28a"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-bag: "\f290"; -$fa-var-shopping-basket: "\f291"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-shower: "\f2cc"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-language: "\f2a7"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-signing: "\f2a7"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-snapchat: "\f2ab"; -$fa-var-snapchat-ghost: "\f2ac"; -$fa-var-snapchat-square: "\f2ad"; -$fa-var-snowflake-o: "\f2dc"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-stop-circle: "\f28d"; -$fa-var-stop-circle-o: "\f28e"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superpowers: "\f2dd"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-telegram: "\f2c6"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-themeisle: "\f2b2"; -$fa-var-thermometer: "\f2c7"; -$fa-var-thermometer-0: "\f2cb"; -$fa-var-thermometer-1: "\f2ca"; -$fa-var-thermometer-2: "\f2c9"; -$fa-var-thermometer-3: "\f2c8"; -$fa-var-thermometer-4: "\f2c7"; -$fa-var-thermometer-empty: "\f2cb"; -$fa-var-thermometer-full: "\f2c7"; -$fa-var-thermometer-half: "\f2c9"; -$fa-var-thermometer-quarter: "\f2ca"; -$fa-var-thermometer-three-quarters: "\f2c8"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-times-rectangle: "\f2d3"; -$fa-var-times-rectangle-o: "\f2d4"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-universal-access: "\f29a"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usb: "\f287"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-circle: "\f2bd"; -$fa-var-user-circle-o: "\f2be"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-o: "\f2c0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-vcard: "\f2bb"; -$fa-var-vcard-o: "\f2bc"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-viadeo: "\f2a9"; -$fa-var-viadeo-square: "\f2aa"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-control-phone: "\f2a0"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wheelchair-alt: "\f29b"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-window-close: "\f2d3"; -$fa-var-window-close-o: "\f2d4"; -$fa-var-window-maximize: "\f2d0"; -$fa-var-window-minimize: "\f2d1"; -$fa-var-window-restore: "\f2d2"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wpbeginner: "\f297"; -$fa-var-wpexplorer: "\f2de"; -$fa-var-wpforms: "\f298"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-yoast: "\f2b1"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss b/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss deleted file mode 100644 index f1c83aaa5d..0000000000 --- a/interface/web/themes/default/assets/stylesheets/font-awesome-4.7.0/scss/font-awesome.scss +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; -@import "screen-reader"; -- GitLab From c28310c9d349b165e2e9238b6c453798ed0b7016 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 19:30:44 +0200 Subject: [PATCH 410/571] Rename not enabled to inherited (#4277) --- interface/web/mail/lib/lang/ar_mail_user.lng | 2 +- interface/web/mail/lib/lang/bg_mail_user.lng | 4 ++-- interface/web/mail/lib/lang/br_mail_user.lng | 2 +- interface/web/mail/lib/lang/ca_mail_user.lng | 2 +- interface/web/mail/lib/lang/cz_mail_user.lng | 2 +- interface/web/mail/lib/lang/de_mail_user.lng | 2 +- interface/web/mail/lib/lang/dk_mail_user.lng | 2 +- interface/web/mail/lib/lang/el_mail_user.lng | 2 +- interface/web/mail/lib/lang/en_mail_user.lng | 2 +- interface/web/mail/lib/lang/es_mail_user.lng | 2 +- interface/web/mail/lib/lang/fi_mail_user.lng | 2 +- interface/web/mail/lib/lang/fr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hu_mail_user.lng | 2 +- interface/web/mail/lib/lang/id_mail_user.lng | 2 +- interface/web/mail/lib/lang/it_mail_user.lng | 2 +- interface/web/mail/lib/lang/ja_mail_user.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pt_mail_user.lng | 2 +- interface/web/mail/lib/lang/ro_mail_user.lng | 2 +- interface/web/mail/lib/lang/ru_mail_user.lng | 2 +- interface/web/mail/lib/lang/se_mail_user.lng | 2 +- interface/web/mail/lib/lang/sk_mail_user.lng | 2 +- interface/web/mail/lib/lang/tr_mail_user.lng | 2 +- interface/web/mail/mail_user_edit.php | 10 +++++----- 26 files changed, 31 insertions(+), 31 deletions(-) diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index a67a83c07a..9d4828b557 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 3b9a27390e..1b9595da42 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -7,7 +7,7 @@ $wb['active_txt'] = 'Ðктивен'; $wb['email_error_isemail'] = 'Формата на емайла е грешен.'; $wb['email_error_unique'] = 'ПовтарÑш Ñе емайл адреÑ.'; $wb['autoresponder_text_txt'] = 'ТекÑ'; -$wb['autoresponder_txt'] = 'Ðвтоматичен отговор'; +$wb['autoresponder_txt'] = 'Ðвтоматичен отгово'; $wb['no_domain_perm'] = 'ÐÑмаш права за този домейн.'; $wb['error_no_pwd'] = 'Полето Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð°Ñ‚Ð° е празно.'; $wb['quota_error_isint'] = 'Големина на пощенÑката ÐºÑƒÑ‚Ð¸Ñ Ñ‚Ñ€Ñбва да е чиÑло'; @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разреши получаване'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Разреши доÑтъп'; $wb['policy_txt'] = 'Спам филтър'; -$wb['no_policy'] = '- забранен -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'ДоÑтигнат е макÑималниÑÑ‚ брой на пощенÑките кутии за твоÑÑ‚ профил.'; $wb['limit_mailquota_txt'] = 'МакÑималното отделено мÑÑто за твоÑта ÐºÑƒÑ‚Ð¸Ñ Ðµ доÑтигнато. МакÑималното позволено мÑÑто в МБ е '; $wb['disableimap_txt'] = 'Забрани IMAP'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 2aca5c3736..2abe1931f6 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Habilitar recebimento'; $wb['greylisting_txt'] = 'Habilitar greylist'; $wb['access_txt'] = 'Habilitar acesso'; $wb['policy_txt'] = 'Filtros anti-spam'; -$wb['no_policy'] = '-desabilitado-'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.'; $wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponÃvel em MB é'; $wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index e380b55d2d..08c9bc78ec 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l\'accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['no_policy'] = '- inactif -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boites courriel pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boites courriel est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index 1946d4150f..fb09f0c0a0 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -22,7 +22,7 @@ $wb['maildir_txt'] = 'E-mailový adresář'; $wb['postfix_txt'] = 'Povolit pÅ™Ãjem'; $wb['access_txt'] = 'Povolit pÅ™Ãstup'; $wb['policy_txt'] = 'Spamový filtr'; -$wb['no_policy'] = '- nepovoleno -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Byl dosažen maximálnà poÄet mailboxů pro Váš úÄet.'; $wb['limit_mailquota_txt'] = 'Dosažen maximálnà prostor pro mailboxy. Max. dostupné mÃsto v MB je'; $wb['disableimap_txt'] = 'Zakázat IMAP'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index 7c1f02cd4f..e653fbe288 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktiviere Empfang'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; $wb['access_txt'] = 'Aktiviere Zugriff'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- nicht aktiviert -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mailkonten für Ihr Konto wurde erreicht.'; $wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist'; $wb['disablesmtp_txt'] = 'SMTP (Mailversand) deaktivieren'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index 8c0957d353..34bf076359 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -24,7 +24,7 @@ $wb['maildir_txt'] = 'Mailmappe'; $wb['postfix_txt'] = 'Aktiver modtagelse'; $wb['access_txt'] = 'Aktiver adgang'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- ikke aktiveret -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Max. antal af mailbokse for din konto er nÃ¥et.'; $wb['limit_mailquota_txt'] = 'Max. plads for postkasser er nÃ¥et. Max. tilgængelig plads i MB er'; $wb['disablesmtp_txt'] = 'Deaktiver SMTP (afsending)'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index f735d6e7b3..76c266d591 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'ΕνεÏγοποίηση Λήψης'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'ΕνεÏγοποίηση Î Ïόσβασης'; $wb['policy_txt'] = 'ΦίλτÏο Spam'; -$wb['no_policy'] = '- ανενεÏγή -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Έχετε φτάσει το μÎγιστο πλήθος των θυÏίδων για τον λογαÏιασμό σας.'; $wb['limit_mailquota_txt'] = 'Έχετε φτάσει στο μÎγεστο χώÏο της θυÏίδα σας.Ο μÎγιστος διαθÎσιμος χώÏος σε MB είναι'; $wb['disableimap_txt'] = 'ΑπενεÏγοποίηση IMAP'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 82cab6d70c..69ac0a00a9 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -27,7 +27,7 @@ $wb["postfix_txt"] = 'Enable receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb["access_txt"] = 'Enable access'; $wb["policy_txt"] = 'Spamfilter'; -$wb["no_policy"] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb["limit_mailbox_txt"] = 'The max. number of mailboxes for your account is reached.'; $wb["limit_mailquota_txt"] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb["disablesmtp_txt"] = 'Disable SMTP (sending)'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 418fd2dbfa..be329c304a 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -44,7 +44,7 @@ $wb['name_optional_txt'] = '(Opcional)'; $wb['name_txt'] = 'Nombre'; $wb['no_backup_txt'] = 'Sin copia de seguridad'; $wb['no_domain_perm'] = 'Usted no tiene permisos para gestionar este dominio.'; -$wb['no_policy'] = '- deshabilitado -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['now_txt'] = 'Ahora'; $wb['password_match_txt'] = 'Las contraseñas coinciden.'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index a764e95693..45ea1d9b8b 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -18,7 +18,7 @@ $wb['postfix_txt'] = 'Salli vastaanotto'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Salli yhteys'; $wb['policy_txt'] = 'Roskapostisuodatin'; -$wb['no_policy'] = '- ei käytössä -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Tilisi sallittu postilaatikoiden määrä on ylitetty.'; $wb['limit_mailquota_txt'] = 'Tilisi sallittu postilaatikoiden koko on ylitetty. Vapaa tila megatavuina on'; $wb['disableimap_txt'] = 'Estä IMAP'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 732f3d8cb7..8df58233a3 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -18,7 +18,7 @@ $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; $wb['access_txt'] = 'Activer l’accès'; $wb['policy_txt'] = 'Filtre antispam'; -$wb['no_policy'] = '- inactif -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Le nombre maximal de boîtes aux lettres pour votre compte est atteint..'; $wb['limit_mailquota_txt'] = 'Lespace maximal pour les boîtes aux lettres est atteint. Lespace maximal disponible est de '; $wb['disableimap_txt'] = 'Désactiver IMAP'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 7406e2d656..170aaa6b61 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Disable IMAP'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index db8edf775e..65962cd21c 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'BejövÅ‘ engedélyezés'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Hozzáférés engelyezés'; $wb['policy_txt'] = 'Spam szűrÅ‘'; -$wb['no_policy'] = '- nem engelyézett -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Nincs több mailbox lehetÅ‘ség.'; $wb['limit_mailquota_txt'] = 'Mailbox tárhely elfogyott.'; $wb['disableimap_txt'] = 'IMAP Tiltás'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 670550062c..3bedbd9b93 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -24,7 +24,7 @@ $wb['postfix_txt'] = 'Dapat Menerima'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Dapat Mengakses'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- tidak diaktifkan -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Jumlah maks mailbox untuk akun Anda sudah tercapai.'; $wb['limit_mailquota_txt'] = 'Ruang maks untuk mailbox sudah tercapai. Ruang maks yang tersedia dalam MB adalah'; $wb['disableimap_txt'] = 'Nonaktifkan IMAP'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index dad3f69654..a1a0f8cfd5 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -19,7 +19,7 @@ $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Abilita ricezione'; $wb['access_txt'] = 'Abilita indirizzo'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- non abilitato -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Hai raggiungo il numero massimo di caselle per il tuo account.'; $wb['limit_mailquota_txt'] = 'Hai raggiunto lo spazio massimo per le tue caselle di posta. Lo spazio massimo in MB è di'; $wb['disableimap_txt'] = 'Disabilita IMAP'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 803a278d5b..b58b9d13dd 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'メールをå—ä¿¡ã™ã‚‹'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'アクセスを許å¯ã™ã‚‹'; $wb['policy_txt'] = 'スパムフィルター'; -$wb['no_policy'] = '- 利用ã—ãªã„ -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'メールボックスãŒæœ€å¤§æ•°ã«é”ã—ãŸç‚ºã€ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“。'; $wb['limit_mailquota_txt'] = 'メールボックスãŒä¸€æ¯ã§ã™ã€‚ 上é™ï¼ˆMB):'; $wb['disableimap_txt'] = 'IMAP を無効ã«ã™ã‚‹'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 39cd0bd0f0..9a644a129b 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -23,7 +23,7 @@ $wb['postfix_txt'] = 'Ontvangen inschakelen'; $wb['greylisting_txt'] = 'Greylisting inschakelen'; $wb['access_txt'] = 'Toegang inschakelen'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- niet ingeschakeld -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Het max. aantal mailboxen voor uw account is bereikt.'; $wb['limit_mailquota_txt'] = 'De max. ruimte voor uw mailboxen is bereikt. De max. beschikbare ruimte in MB is'; $wb['disableimap_txt'] = 'Uitschakelen IMAP'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 8a35e7742e..593f83531e 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Zezwól na odbiór poczty'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Możliwy dostÄ™p'; $wb['policy_txt'] = 'Filtr spamu'; -$wb['no_policy'] = '- brak polityki -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Maksymalna ilość skrzynek pocztowych dla Twojego konta zostaÅ‚a przekroczona.'; $wb['limit_mailquota_txt'] = 'Maksymalna pojemność skrzynki pocztowej zostaÅ‚a przekroczona. Maksymalne dostÄ™pne miejsce w MB to: '; $wb['disableimap_txt'] = 'WyÅ‚Ä…cz IMAP'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 56a1f16d30..0b7ffe3d37 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Permitir Recepção'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Permitir Acesso'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- desactivado -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'O número máximo de caixas de correio para a conta foi atingido.'; $wb['limit_mailquota_txt'] = 'O espaço em disco disponÃvel para criação de contas foi atingido.'; $wb['disableimap_txt'] = 'Desactivar IMAP'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index ccdcc49fdf..97dfdafd88 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Enable Receiving'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Numarul maxim de MAILBOX pe contul dumneavoastra a fost atins'; $wb['limit_mailquota_txt'] = 'Spatiul maxim pentru MAILBOX a fost atins.Acesta este '; $wb['disableimap_txt'] = 'Blocheaza IMAP'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index fcfadd9db9..07bab6fd4f 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -19,7 +19,7 @@ $wb['postfix_txt'] = 'Разрешить получение'; $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting)'; $wb['access_txt'] = 'Включить доÑтуп'; $wb['policy_txt'] = 'Спам-фильтр'; -$wb['no_policy'] = '- не включены -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'ЧиÑло почтовых Ñщиков превышено.'; $wb['limit_mailquota_txt'] = 'МеÑто под почтовые Ñщики превышено. МакÑимально доÑтупно MB'; $wb['password_strength_txt'] = 'СтойкоÑÑ‚ÑŒ паролÑ'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index c081446557..da0282e118 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'Aktivera mottagning'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Aktivera Ã¥tkomst'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- ej aktiverat -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.'; $wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is'; $wb['disableimap_txt'] = 'Avaktivera IMAP'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index eb70b8eba9..d9a68404ae 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -20,7 +20,7 @@ $wb['postfix_txt'] = 'PovoliÅ¥ prÃjem'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'PovoliÅ¥ PrÃstup'; $wb['policy_txt'] = 'Spamfilter'; -$wb['no_policy'] = '- nepovolená -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Max. poÄet poÅ¡tových schránok pre váš úÄet je dosiahnutý.'; $wb['limit_mailquota_txt'] = 'Maximálny priestor pre poÅ¡tové schránky je dosiahnutý. Max. dostupné miesto v MB je'; $wb['disableimap_txt'] = 'DeaktivovaÅ¥ IMAP'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index c7dec33b99..9e964e5e8a 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -27,7 +27,7 @@ $wb['postfix_txt'] = 'Alım Etkin'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; $wb['access_txt'] = 'EriÅŸim Etkin'; $wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; -$wb['no_policy'] = '- devre dışı -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta kutusu sayısına ulaÅŸtınız.'; $wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)'; diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index c7f36a89e0..83a02e0ed2 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -80,7 +80,7 @@ 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 (".$app->tform->getAuthSQL('r').") AND domain NOT IN (SELECT SUBSTR(source,2) FROM mail_forwarding WHERE type = 'aliasdomain') 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)) { @@ -99,7 +99,7 @@ class page_action extends tform_actions { if (isset($_POST['policy'])) $tmp_user['policy_id'] = intval($_POST['policy']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r') . " ORDER BY policy_name"; $policys = $app->db->queryAllRecords($sql); - $policy_select = "<option value='0'>".$app->tform->lng("no_policy")."</option>"; + $policy_select = "<option value='0'>".$app->tform->lng("inherit_policy")."</option>"; if(is_array($policys)) { foreach( $policys as $p) { $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':''; @@ -220,7 +220,7 @@ class page_action extends tform_actions { $tmp = $app->db->queryOneRecord("SELECT maildir_format FROM mail_user WHERE mailuser_id = ".$app->functions->intval($this->id)); $this->dataRecord['maildir_format'] = $tmp['maildir_format']; } - + //* compose the email field if(isset($_POST["email_local_part"]) && isset($_POST["email_domain"])) { $this->dataRecord["email"] = strtolower($_POST["email_local_part"]."@".$app->functions->idn_encode($_POST["email_domain"])); @@ -239,7 +239,7 @@ class page_action extends tform_actions { $maildir = str_replace("[localpart]", strtolower($_POST["email_local_part"]), $maildir); $this->dataRecord["maildir"] = $maildir; $this->dataRecord["homedir"] = $mail_config["homedir_path"]; - + // Will be overwritten by mail_plugin if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') { $this->dataRecord['uid'] = -1; @@ -248,7 +248,7 @@ class page_action extends tform_actions { $this->dataRecord['uid'] = intval($mail_config["mailuser_uid"]); $this->dataRecord['gid'] = intval($mail_config["mailuser_gid"]); } - + //* Check if there is no alias or forward with this address $tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE active = 'y' AND source = ?", $this->dataRecord["email"]); if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("duplicate_alias_or_forward_txt")."<br>"; -- GitLab From 65fc415b9a4715bc411548e782235b8c788a2c18 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 20:37:24 +0200 Subject: [PATCH 411/571] Remove double or empty titles --- .../web/dns/templates/dns_naptr_edit.htm | 6 --- .../sites/templates/web_vhost_domain_edit.htm | 39 ++++++++----------- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/interface/web/dns/templates/dns_naptr_edit.htm b/interface/web/dns/templates/dns_naptr_edit.htm index 8fd928c3de..15a944d629 100644 --- a/interface/web/dns/templates/dns_naptr_edit.htm +++ b/interface/web/dns/templates/dns_naptr_edit.htm @@ -1,9 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - <div class="form-group"> <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div> diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 6092778af8..e39b889d4c 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -1,8 +1,3 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - <tmpl_if name="config_error_msg"> <div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> @@ -94,7 +89,7 @@ <label for="document_root" class="col-sm-3 control-label" readonly >{tmpl_var name='document_root_txt'}</label> <div class="col-sm-9"> <div class="checkbox">{tmpl_var name='document_root'}</div> - </div> + </div> </div> </tmpl_if> <div class="form-group"> @@ -291,13 +286,13 @@ } adjustForm(true); reloadFastcgiPHPVersions(true); - + jQuery('#client_group_id').change(function(){ clientGroupId = $(this).val(); reloadWebIP(); reloadFastcgiPHPVersions(); }); - + if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm' || (jQuery('#php').val() == 'hhvm' && serverType == 'nginx')){ jQuery('.fastcgi_php_version:hidden').show(); if(jQuery('#php').val() == 'hhvm'){ @@ -311,10 +306,10 @@ jQuery('.fastcgi_php_version:visible').hide(); } //ISPConfig.resetFormChanged(); - + jQuery('#php').change(function(){ reloadFastcgiPHPVersions(); - if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm' || (jQuery(this).val() == 'hhvm' && serverType == 'nginx')){ + if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm' || (jQuery(this).val() == 'hhvm' && serverType == 'nginx')){ jQuery('.fastcgi_php_version:hidden').show(); if(jQuery(this).val() == 'hhvm'){ jQuery('#fastcgi_php_version_txt').hide(); @@ -333,7 +328,7 @@ // new Vhostsubdomains/Vhostaliasdomains if(serverId == '') jQuery('#parent_domain_id').trigger('change'); -/* +/* if(jQuery('#directive_snippets_id').val() > 0){ jQuery('.pagespeed').show(); } else { @@ -347,7 +342,7 @@ } }); */ - + function reloadServerId(noFormChange) { var parentWebId = jQuery('#parent_domain_id').val(); jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : parentWebId, type : "getserverid"}, function(data) { @@ -356,7 +351,7 @@ if(noFormChange) reloadFastcgiPHPVersions(noFormChange); }); } - + function adjustForm(noFormChange){ jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) { if(data.servertype == "nginx"){ @@ -399,7 +394,7 @@ } }); } - + function reloadDirectiveSnippets() { jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getdirectivesnippet"}, function(data) { var options = '<option value="0">-</option>'; @@ -414,7 +409,7 @@ options += '<option ' + isSelected + ' value="' + data['m_snippets'][i]['directive_snippets_id'] + '">' + data['m_snippets'][i]['name'] + '</option>'; } options += '</optgroup>'; - + options += "<optgroup label=\"{tmpl_var name='select_directive_snippet_txt'}\">"; for (var i = 0, len = data['snippets'].length; i < len; i++) { var isSelected = ''; @@ -430,7 +425,7 @@ $('#directive_snippets_id').html(options).change(); }); } - + function reloadWebIP() { ISPConfig.loadOptionInto('ip_address','sites/ajax_get_ip.php?ip_type=IPv4&server_id='+serverId+'&client_group_id='+clientGroupId<tmpl_if name="use_combobox" value="y">, rerenderSelect2</tmpl_if>); ISPConfig.loadOptionInto('ipv6_address','sites/ajax_get_ip.php?ip_type=IPv6&server_id='+serverId+'&client_group_id='+clientGroupId<tmpl_if name="use_combobox" value="y">, rerenderSelect2</tmpl_if>); @@ -438,11 +433,11 @@ //$('#ip_address').add('#ipv6_address').select2(); </tmpl_if> } - + function rerenderSelect2(elem) { $('#'+elem).select2(); } - + 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 = '<option value="">Default</option>'; @@ -474,7 +469,7 @@ if(noFormChange) ISPConfig.resetFormChanged(); }); } - + <tmpl_if name="readonly_tab"> jQuery('div.panel_web_domain').find('fieldset').find('input,select,button').not('#directive_snippets_id').bind('click mousedown', function(e) { e.preventDefault(); }).focus(function() { $(this).blur(); }); jQuery('#dom-edit-submit').click(function() { @@ -485,7 +480,7 @@ ISPConfig.submitForm('pageForm','sites/web_vhost_domain_edit.php'); }); </tmpl_if> - + if($('#domain').val() == ''){ $('#web_folder_domain').text('[DOMAIN]'); } else { @@ -498,9 +493,9 @@ $('#web_folder_domain').text($('#domain').val()); } }); - + $('#more_folder_directive_snippets').click(function(){ $('.folder_directive_snippets:hidden:first').removeClass('hidden'); }); - + </script> -- GitLab From 4b508f66ccbbe28535bc2b975016cb83529a270a Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 21:10:02 +0200 Subject: [PATCH 412/571] Remove double or empty titles --- interface/web/client/templates/client_edit_address.htm | 8 ++++---- interface/web/client/templates/client_edit_limits.htm | 6 +++--- .../web/mail/templates/mail_domain_catchall_edit.htm | 4 ++-- interface/web/mail/templates/mail_user_backup.htm | 4 +--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index 23318b218b..835b264400 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -1,7 +1,7 @@ - <legend>{tmpl_var name='Address'}</legend> - <div class="form-group"> + <div class="form-group"> <label for="company_name" class="col-sm-3 control-label">{tmpl_var name='company_name_txt'}</label> - <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div></div> + <div class="col-sm-9"><input type="text" name="company_name" id="company_name" value="{tmpl_var name='company_name'}" class="form-control" /></div> + </div> <div class="form-group"> <label for="gender" class="col-sm-3 control-label">{tmpl_var name='gender_txt'}</label> <div class="col-sm-9"><select name="gender" id="gender" class="form-control"> @@ -146,7 +146,7 @@ </div> </div> {tmpl_var name='required_fields_txt'} - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index 0508ab5090..db0b370804 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -1,7 +1,7 @@ <div class="panel panel_client"> - + <div class="pnl_formsarea"> - <fieldset class="inlineLabels"><legend>{tmpl_var name="Limits"}</legend> + <fieldset class="inlineLabels"> <div class="form-group"> <label for="template_master" class="col-sm-3 control-label">{tmpl_var name='template_master_txt'}</label> <div class="col-sm-9"><select name="template_master" id="template_master" class="form-control"> @@ -361,7 +361,7 @@ <label for="limit_cron_frequency" class="col-sm-3 control-label">{tmpl_var name='limit_cron_frequency_txt'}</label> <div class="col-sm-9"><input type="text" name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" class="form-control" /></div> </div> - + </div> </div> </div> diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm index 0ccae15a8f..8da10f1f09 100644 --- a/interface/web/mail/templates/mail_domain_catchall_edit.htm +++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm @@ -1,4 +1,4 @@ -< <div class="form-group"> + <div class="form-group"> <label for="email_domain" class="col-sm-3 control-label">{tmpl_var name='source_txt'}</label> <div class="col-sm-9"> <div class="input-group"> @@ -22,7 +22,7 @@ {tmpl_var name='active'} </div> </div> - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input type="hidden" name="type" value="catchall"> diff --git a/interface/web/mail/templates/mail_user_backup.htm b/interface/web/mail/templates/mail_user_backup.htm index 0de61a3297..bbf1abaf87 100644 --- a/interface/web/mail/templates/mail_user_backup.htm +++ b/interface/web/mail/templates/mail_user_backup.htm @@ -7,8 +7,6 @@ </div> </tmpl_if> - - <legend>Backup</legend> <div class="form-group"> <label for="backup_interval" class="col-sm-3 control-label">{tmpl_var name='backup_interval_txt'}</label> <div class="col-sm-9"><select name="backup_interval" id="backup_interval" class="form-control"> @@ -21,7 +19,7 @@ {tmpl_var name='backup_copies'} </select></div> </div> - + {tmpl_var name='backup_records'} <input type="hidden" name="id" value="{tmpl_var name='id'}"> -- GitLab From dbc5be35d3f8bfbae7a0e12bc38e82147f1cabc5 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 21:34:10 +0200 Subject: [PATCH 413/571] Edit checks to be RFC compliant --- interface/web/dns/dns_a_edit.php | 2 +- interface/web/dns/dns_aaaa_edit.php | 2 +- interface/web/dns/dns_dname_edit.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/dns/dns_a_edit.php b/interface/web/dns/dns_a_edit.php index 19cb7d1c01..595ebcc92c 100644 --- a/interface/web/dns/dns_a_edit.php +++ b/interface/web/dns/dns_a_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/dns_aaaa_edit.php b/interface/web/dns/dns_aaaa_edit.php index 7d6972854f..780fbcc80e 100644 --- a/interface/web/dns/dns_aaaa_edit.php +++ b/interface/web/dns/dns_aaaa_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'AAAA' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'AAAA' AND name = ? AND zone = ? and data = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->dataRecord["data"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } diff --git a/interface/web/dns/dns_dname_edit.php b/interface/web/dns/dns_dname_edit.php index c33c0cce71..b4cd8ffaea 100644 --- a/interface/web/dns/dns_dname_edit.php +++ b/interface/web/dns/dns_dname_edit.php @@ -48,7 +48,7 @@ class page_action extends dns_page_action { protected function checkDuplicate() { global $app; //* Check for duplicates where IP and hostname are the same - $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); + $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id); if($tmp['number'] > 0) return true; return false; } -- GitLab From 9245e4d5b859f9af208319fc843564fec28a5533 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 15 Jun 2020 21:34:57 +0200 Subject: [PATCH 414/571] Correct duplicate translation --- interface/web/dns/lib/lang/ar_dns_a.lng | 2 +- interface/web/dns/lib/lang/ar_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ar_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ar_dns_dname.lng | 2 +- interface/web/dns/lib/lang/bg_dns_a.lng | 2 +- interface/web/dns/lib/lang/bg_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/bg_dns_cname.lng | 2 +- interface/web/dns/lib/lang/bg_dns_dname.lng | 2 +- interface/web/dns/lib/lang/br_dns_a.lng | 2 +- interface/web/dns/lib/lang/br_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/br_dns_cname.lng | 2 +- interface/web/dns/lib/lang/br_dns_dname.lng | 2 +- interface/web/dns/lib/lang/ca_dns_a.lng | 2 +- interface/web/dns/lib/lang/ca_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ca_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ca_dns_dname.lng | 2 +- interface/web/dns/lib/lang/cz_dns_a.lng | 2 +- interface/web/dns/lib/lang/cz_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/cz_dns_cname.lng | 2 +- interface/web/dns/lib/lang/cz_dns_dname.lng | 2 +- interface/web/dns/lib/lang/de_dns_a.lng | 2 +- interface/web/dns/lib/lang/de_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/de_dns_cname.lng | 2 +- interface/web/dns/lib/lang/de_dns_dname.lng | 2 +- interface/web/dns/lib/lang/dk_dns_a.lng | 2 +- interface/web/dns/lib/lang/dk_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/dk_dns_cname.lng | 2 +- interface/web/dns/lib/lang/dk_dns_dname.lng | 2 +- interface/web/dns/lib/lang/el_dns_a.lng | 2 +- interface/web/dns/lib/lang/el_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/el_dns_cname.lng | 2 +- interface/web/dns/lib/lang/el_dns_dname.lng | 2 +- interface/web/dns/lib/lang/en_dns_a.lng | 2 +- interface/web/dns/lib/lang/en_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/en_dns_cname.lng | 2 +- interface/web/dns/lib/lang/en_dns_dname.lng | 2 +- interface/web/dns/lib/lang/es_dns_a.lng | 2 +- interface/web/dns/lib/lang/es_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/es_dns_cname.lng | 2 +- interface/web/dns/lib/lang/es_dns_dname.lng | 2 +- interface/web/dns/lib/lang/fi_dns_a.lng | 2 +- interface/web/dns/lib/lang/fi_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/fi_dns_cname.lng | 2 +- interface/web/dns/lib/lang/fi_dns_dname.lng | 2 +- interface/web/dns/lib/lang/fr_dns_a.lng | 2 +- interface/web/dns/lib/lang/fr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/fr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/fr_dns_dname.lng | 2 +- interface/web/dns/lib/lang/hr_dns_a.lng | 2 +- interface/web/dns/lib/lang/hr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/hr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/hr_dns_dname.lng | 2 +- interface/web/dns/lib/lang/hu_dns_a.lng | 2 +- interface/web/dns/lib/lang/hu_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/hu_dns_cname.lng | 2 +- interface/web/dns/lib/lang/hu_dns_dname.lng | 2 +- interface/web/dns/lib/lang/id_dns_a.lng | 2 +- interface/web/dns/lib/lang/id_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/id_dns_cname.lng | 2 +- interface/web/dns/lib/lang/id_dns_dname.lng | 2 +- interface/web/dns/lib/lang/it_dns_a.lng | 2 +- interface/web/dns/lib/lang/it_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/it_dns_cname.lng | 2 +- interface/web/dns/lib/lang/it_dns_dname.lng | 2 +- interface/web/dns/lib/lang/ja_dns_a.lng | 2 +- interface/web/dns/lib/lang/ja_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ja_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ja_dns_dname.lng | 2 +- interface/web/dns/lib/lang/nl_dns_a.lng | 2 +- interface/web/dns/lib/lang/nl_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/nl_dns_cname.lng | 2 +- interface/web/dns/lib/lang/nl_dns_dname.lng | 2 +- interface/web/dns/lib/lang/pl_dns_a.lng | 2 +- interface/web/dns/lib/lang/pl_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/pl_dns_cname.lng | 2 +- interface/web/dns/lib/lang/pl_dns_dname.lng | 2 +- interface/web/dns/lib/lang/pt_dns_a.lng | 2 +- interface/web/dns/lib/lang/pt_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/pt_dns_cname.lng | 2 +- interface/web/dns/lib/lang/pt_dns_dname.lng | 2 +- interface/web/dns/lib/lang/ro_dns_a.lng | 2 +- interface/web/dns/lib/lang/ro_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ro_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ro_dns_dname.lng | 2 +- interface/web/dns/lib/lang/ru_dns_a.lng | 2 +- interface/web/dns/lib/lang/ru_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/ru_dns_cname.lng | 2 +- interface/web/dns/lib/lang/ru_dns_dname.lng | 2 +- interface/web/dns/lib/lang/se_dns_a.lng | 2 +- interface/web/dns/lib/lang/se_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/se_dns_cname.lng | 2 +- interface/web/dns/lib/lang/se_dns_dname.lng | 2 +- interface/web/dns/lib/lang/sk_dns_a.lng | 2 +- interface/web/dns/lib/lang/sk_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/sk_dns_cname.lng | 2 +- interface/web/dns/lib/lang/sk_dns_dname.lng | 2 +- interface/web/dns/lib/lang/tr_dns_a.lng | 2 +- interface/web/dns/lib/lang/tr_dns_aaaa.lng | 2 +- interface/web/dns/lib/lang/tr_dns_cname.lng | 2 +- interface/web/dns/lib/lang/tr_dns_dname.lng | 2 +- 100 files changed, 100 insertions(+), 100 deletions(-) diff --git a/interface/web/dns/lib/lang/ar_dns_a.lng b/interface/web/dns/lib/lang/ar_dns_a.lng index c191ff19d3..577bb47d5b 100644 --- a/interface/web/dns/lib/lang/ar_dns_a.lng +++ b/interface/web/dns/lib/lang/ar_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_aaaa.lng b/interface/web/dns/lib/lang/ar_dns_aaaa.lng index 03f18f18da..da7eeb8a0f 100644 --- a/interface/web/dns/lib/lang/ar_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ar_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_cname.lng b/interface/web/dns/lib/lang/ar_dns_cname.lng index 636c4e7a7a..382397abf7 100644 --- a/interface/web/dns/lib/lang/ar_dns_cname.lng +++ b/interface/web/dns/lib/lang/ar_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ar_dns_dname.lng b/interface/web/dns/lib/lang/ar_dns_dname.lng index 382397abf7..483e1d14b5 100644 --- a/interface/web/dns/lib/lang/ar_dns_dname.lng +++ b/interface/web/dns/lib/lang/ar_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_a.lng b/interface/web/dns/lib/lang/bg_dns_a.lng index f789a19f47..6b4950722b 100644 --- a/interface/web/dns/lib/lang/bg_dns_a.lng +++ b/interface/web/dns/lib/lang/bg_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето за хоÑÑ‚ име е празно.'; $wb['name_error_regex'] = 'Избраното име на хоÑÑ‚ е в грешен формат.'; $wb['data_error_empty'] = 'Полето за IP-адреÑа е празно'; $wb['ip_error_wrong'] = 'Формата на IP-адреÑа е грешен'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_aaaa.lng b/interface/web/dns/lib/lang/bg_dns_aaaa.lng index d2ca072bec..27062fce22 100644 --- a/interface/web/dns/lib/lang/bg_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/bg_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Вие нÑмате право да добавÑте за $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_cname.lng b/interface/web/dns/lib/lang/bg_dns_cname.lng index d9863d10e8..4705cd73d8 100644 --- a/interface/web/dns/lib/lang/bg_dns_cname.lng +++ b/interface/web/dns/lib/lang/bg_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_dname.lng b/interface/web/dns/lib/lang/bg_dns_dname.lng index 4705cd73d8..5fc67ceaeb 100644 --- a/interface/web/dns/lib/lang/bg_dns_dname.lng +++ b/interface/web/dns/lib/lang/bg_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето Ñ Ð¸Ð¼ÐµÐ¹Ð»Ð° е празно.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_a.lng b/interface/web/dns/lib/lang/br_dns_a.lng index 7204ce11ab..deb66ec97a 100644 --- a/interface/web/dns/lib/lang/br_dns_a.lng +++ b/interface/web/dns/lib/lang/br_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IP está em branco.'; $wb['ip_error_wrong'] = 'Endereço IP inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng index 5678f2c67f..b4274c7b51 100644 --- a/interface/web/dns/lib/lang/br_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns ne $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'Endereço IPv6 está em branco.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'O endereço IPv6 possui formato inválido.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_cname.lng b/interface/web/dns/lib/lang/br_dns_cname.lng index e36fb57909..4a8f98cb02 100644 --- a/interface/web/dns/lib/lang/br_dns_cname.lng +++ b/interface/web/dns/lib/lang/br_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'O alvo do host está em branco.'; $wb['data_error_regex'] = 'O alvo do host possui formato inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_dname.lng b/interface/web/dns/lib/lang/br_dns_dname.lng index 4a8f98cb02..c2ba45f86e 100644 --- a/interface/web/dns/lib/lang/br_dns_dname.lng +++ b/interface/web/dns/lib/lang/br_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.'; $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).'; $wb['data_error_empty'] = 'O alvo do host está em branco.'; $wb['data_error_regex'] = 'O alvo do host possui formato inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_a.lng b/interface/web/dns/lib/lang/ca_dns_a.lng index e91bff2c73..f486bb6d49 100644 --- a/interface/web/dns/lib/lang/ca_dns_a.lng +++ b/interface/web/dns/lib/lang/ca_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'L\'adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_aaaa.lng b/interface/web/dns/lib/lang/ca_dns_aaaa.lng index 94a7deeddb..0aed36e119 100644 --- a/interface/web/dns/lib/lang/ca_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ca_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'L\'adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_cname.lng b/interface/web/dns/lib/lang/ca_dns_cname.lng index 94d523c4e2..480f1ddd4d 100644 --- a/interface/web/dns/lib/lang/ca_dns_cname.lng +++ b/interface/web/dns/lib/lang/ca_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_dname.lng b/interface/web/dns/lib/lang/ca_dns_dname.lng index 480f1ddd4d..d9d8296fdb 100644 --- a/interface/web/dns/lib/lang/ca_dns_dname.lng +++ b/interface/web/dns/lib/lang/ca_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d\'hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_a.lng b/interface/web/dns/lib/lang/cz_dns_a.lng index cfc3c60854..1aa476275c 100644 --- a/interface/web/dns/lib/lang/cz_dns_a.lng +++ b/interface/web/dns/lib/lang/cz_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['ip_error_wrong'] = 'IP - formát adresy neplatný'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng index 67fc7c7906..371d3f591b 100644 --- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny.'; $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; $wb['ip_error_wrong'] = 'IP - formát adresy neplatný'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_cname.lng b/interface/web/dns/lib/lang/cz_dns_cname.lng index c41b619588..7003f707c4 100644 --- a/interface/web/dns/lib/lang/cz_dns_cname.lng +++ b/interface/web/dns/lib/lang/cz_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'CÃlový název hostitele je prázdný'; $wb['data_error_regex'] = 'CÃlový název hostitele má chybný formát'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_dname.lng b/interface/web/dns/lib/lang/cz_dns_dname.lng index 7003f707c4..1419acf02f 100644 --- a/interface/web/dns/lib/lang/cz_dns_dname.lng +++ b/interface/web/dns/lib/lang/cz_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Název hostitele je prázdný.'; $wb['name_error_regex'] = 'Název hostitele má chybný formát.'; $wb['data_error_empty'] = 'CÃlový název hostitele je prázdný'; $wb['data_error_regex'] = 'CÃlový název hostitele má chybný formát'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_a.lng b/interface/web/dns/lib/lang/de_dns_a.lng index af10bb1d19..c60afbbc1f 100644 --- a/interface/web/dns/lib/lang/de_dns_a.lng +++ b/interface/web/dns/lib/lang/de_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'IPv4 Adresse ist leer'; $wb['ip_error_wrong'] = 'IPv4 Adressen Format ist ungültig'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_aaaa.lng b/interface/web/dns/lib/lang/de_dns_aaaa.lng index c54663a94f..0251a9dc26 100644 --- a/interface/web/dns/lib/lang/de_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/de_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'IPv6 Adresse ist leer'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IPv6 Adressen Format ist ungültig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_cname.lng b/interface/web/dns/lib/lang/de_dns_cname.lng index 0342276336..6aed8fb825 100644 --- a/interface/web/dns/lib/lang/de_dns_cname.lng +++ b/interface/web/dns/lib/lang/de_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'Ziel Hostname ist leer'; $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_dname.lng b/interface/web/dns/lib/lang/de_dns_dname.lng index f2154e37ad..492613e75b 100644 --- a/interface/web/dns/lib/lang/de_dns_dname.lng +++ b/interface/web/dns/lib/lang/de_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.'; $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.'; $wb['data_error_empty'] = 'Ziel Hostname ist leer'; $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig'; -$wb['data_error_duplicate'] = 'Doppelter A, CNAME oder DNAME Eintrag'; +$wb['data_error_duplicate'] = 'Doppelter CNAME oder DNAME Eintrag'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_a.lng b/interface/web/dns/lib/lang/dk_dns_a.lng index 7506edcef5..6ce7aa5072 100644 --- a/interface/web/dns/lib/lang/dk_dns_a.lng +++ b/interface/web/dns/lib/lang/dk_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'IP-Adressen er tom'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_aaaa.lng b/interface/web/dns/lib/lang/dk_dns_aaaa.lng index 107b28be91..c8d4dac13a 100644 --- a/interface/web/dns/lib/lang/dk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/dk_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'IP-Adressen er tom'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_cname.lng b/interface/web/dns/lib/lang/dk_dns_cname.lng index e213d6e3d9..1815eab77a 100644 --- a/interface/web/dns/lib/lang/dk_dns_cname.lng +++ b/interface/web/dns/lib/lang/dk_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'MÃ¥l-værtsnavn er tom'; $wb['data_error_regex'] = 'MÃ¥l-værtsnavn format er ugyldigt'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_dname.lng b/interface/web/dns/lib/lang/dk_dns_dname.lng index 1815eab77a..0e651af8d3 100644 --- a/interface/web/dns/lib/lang/dk_dns_dname.lng +++ b/interface/web/dns/lib/lang/dk_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Værtsnavnet er tomt.'; $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.'; $wb['data_error_empty'] = 'MÃ¥l-værtsnavn er tom'; $wb['data_error_regex'] = 'MÃ¥l-værtsnavn format er ugyldigt'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_a.lng b/interface/web/dns/lib/lang/el_dns_a.lng index 6202d2e88b..96667ba7a2 100644 --- a/interface/web/dns/lib/lang/el_dns_a.lng +++ b/interface/web/dns/lib/lang/el_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'Η διεÏθυνση IP είναι κενή'; $wb['ip_error_wrong'] = 'ΔιεÏθυνση IP με μη ÎγκυÏη μοÏφοποίηση'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_aaaa.lng b/interface/web/dns/lib/lang/el_dns_aaaa.lng index 5341e9022d..5c66fee51d 100644 --- a/interface/web/dns/lib/lang/el_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/el_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Δεν Îχετε δικαίωμα να Ï€ÏοσθÎσε $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'ΔιεÏθυνση IP κενή'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'ΔιεÏθυνση IP με μη ÎγκυÏη μοÏφοποίηση'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_cname.lng b/interface/web/dns/lib/lang/el_dns_cname.lng index 1d19eb0c23..ba6404887a 100644 --- a/interface/web/dns/lib/lang/el_dns_cname.lng +++ b/interface/web/dns/lib/lang/el_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'Το hostname Î ÏοοÏισμός δεν Îχει οÏιστεί'; $wb['data_error_regex'] = 'Hostname Î ÏοοÏισμός με μη ÎγκυÏη μοÏφοποίηση'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_dname.lng b/interface/web/dns/lib/lang/el_dns_dname.lng index ba6404887a..6623e1f8af 100644 --- a/interface/web/dns/lib/lang/el_dns_dname.lng +++ b/interface/web/dns/lib/lang/el_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν Îχει οÏιστεί.'; $wb['name_error_regex'] = 'Το hostname δεν Îχει σωστή μοÏφοποίηση.'; $wb['data_error_empty'] = 'Το hostname Î ÏοοÏισμός δεν Îχει οÏιστεί'; $wb['data_error_regex'] = 'Hostname Î ÏοοÏισμός με μη ÎγκυÏη μοÏφοποίηση'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_a.lng b/interface/web/dns/lib/lang/en_dns_a.lng index 3f9f4aa047..99ca6418b8 100644 --- a/interface/web/dns/lib/lang/en_dns_a.lng +++ b/interface/web/dns/lib/lang/en_dns_a.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_aaaa.lng b/interface/web/dns/lib/lang/en_dns_aaaa.lng index d55ab7ffd3..3b642474c3 100644 --- a/interface/web/dns/lib/lang/en_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/en_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DN $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb["ip_error_wrong"] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_cname.lng b/interface/web/dns/lib/lang/en_dns_cname.lng index 7ffb78e0d3..d9b41a012e 100644 --- a/interface/web/dns/lib/lang/en_dns_cname.lng +++ b/interface/web/dns/lib/lang/en_dns_cname.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'Target hostname empty'; $wb["data_error_regex"] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_dname.lng b/interface/web/dns/lib/lang/en_dns_dname.lng index d9b41a012e..95e81423e0 100644 --- a/interface/web/dns/lib/lang/en_dns_dname.lng +++ b/interface/web/dns/lib/lang/en_dns_dname.lng @@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.'; $wb["name_error_regex"] = 'The hostname has the wrong format.'; $wb["data_error_empty"] = 'Target hostname empty'; $wb["data_error_regex"] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng index 0f19854e2d..6d3c01ebb4 100644 --- a/interface/web/dns/lib/lang/es_dns_a.lng +++ b/interface/web/dns/lib/lang/es_dns_a.lng @@ -1,6 +1,6 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['data_error_empty'] = 'Dirección IP vacÃa'; $wb['data_txt'] = 'Dirección IP'; $wb['ip_error_wrong'] = 'Formato inválido de dirección IP'; diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng index d9c38070f3..85ff1ba5a7 100644 --- a/interface/web/dns/lib/lang/es_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/es_dns_aaaa.lng @@ -1,7 +1,7 @@ <?php $wb['active_txt'] = 'Habilitado'; $wb['data_error_empty'] = 'Dirección IP vacÃa'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['data_txt'] = 'Dirección IPv6'; $wb['ip_error_wrong'] = 'La dirección IP tiene un formato incorrecto'; $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng index cd0ed67c11..ffc748f106 100644 --- a/interface/web/dns/lib/lang/es_dns_cname.lng +++ b/interface/web/dns/lib/lang/es_dns_cname.lng @@ -1,6 +1,6 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['data_error_empty'] = 'El nombre del host de destino está vacÃo.'; $wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.'; $wb['data_txt'] = 'Nombre del host de destino'; diff --git a/interface/web/dns/lib/lang/es_dns_dname.lng b/interface/web/dns/lib/lang/es_dns_dname.lng index ffc748f106..c28f8eeb3e 100644 --- a/interface/web/dns/lib/lang/es_dns_dname.lng +++ b/interface/web/dns/lib/lang/es_dns_dname.lng @@ -1,6 +1,6 @@ <?php $wb['active_txt'] = 'Habilitado'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['data_error_empty'] = 'El nombre del host de destino está vacÃo.'; $wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.'; $wb['data_txt'] = 'Nombre del host de destino'; diff --git a/interface/web/dns/lib/lang/fi_dns_a.lng b/interface/web/dns/lib/lang/fi_dns_a.lng index be6b4cc42a..701b5281af 100644 --- a/interface/web/dns/lib/lang/fi_dns_a.lng +++ b/interface/web/dns/lib/lang/fi_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; $wb['data_error_empty'] = 'IP-osoite tyhjä'; $wb['ip_error_wrong'] = 'IP-osoite on vääränlainen'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_aaaa.lng b/interface/web/dns/lib/lang/fi_dns_aaaa.lng index 3759287206..8c0c607141 100644 --- a/interface/web/dns/lib/lang/fi_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fi_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueit $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on väärän muotoinen.'; $wb['data_error_empty'] = 'Tekstikenttä on tyhjä'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Tekstikenttä on vääränlainen'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_cname.lng b/interface/web/dns/lib/lang/fi_dns_cname.lng index 202949b9f7..d7483389d4 100644 --- a/interface/web/dns/lib/lang/fi_dns_cname.lng +++ b/interface/web/dns/lib/lang/fi_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; $wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä'; $wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_dname.lng b/interface/web/dns/lib/lang/fi_dns_dname.lng index d7483389d4..58d5481afc 100644 --- a/interface/web/dns/lib/lang/fi_dns_dname.lng +++ b/interface/web/dns/lib/lang/fi_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.'; $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.'; $wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä'; $wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_a.lng b/interface/web/dns/lib/lang/fr_dns_a.lng index f022f0c873..9e9625ba1c 100644 --- a/interface/web/dns/lib/lang/fr_dns_a.lng +++ b/interface/web/dns/lib/lang/fr_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'L’adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_aaaa.lng b/interface/web/dns/lib/lang/fr_dns_aaaa.lng index 52e5ef1b33..9f925c3291 100644 --- a/interface/web/dns/lib/lang/fr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/fr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'L’adresse IP est vide.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_cname.lng b/interface/web/dns/lib/lang/fr_dns_cname.lng index 8a5840a2bc..47779eeffe 100644 --- a/interface/web/dns/lib/lang/fr_dns_cname.lng +++ b/interface/web/dns/lib/lang/fr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d’hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_dname.lng b/interface/web/dns/lib/lang/fr_dns_dname.lng index 47779eeffe..ad41861785 100644 --- a/interface/web/dns/lib/lang/fr_dns_dname.lng +++ b/interface/web/dns/lib/lang/fr_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d’hôte est vide.'; $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.'; $wb['data_error_empty'] = 'Le nom d’hôte cible est vide.'; $wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_a.lng b/interface/web/dns/lib/lang/hr_dns_a.lng index b4c83d6431..bcc49eb52b 100644 --- a/interface/web/dns/lib/lang/hr_dns_a.lng +++ b/interface/web/dns/lib/lang/hr_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje IP adresa je prazno'; $wb['ip_error_wrong'] = 'Neispravan format A zapisa'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_aaaa.lng b/interface/web/dns/lib/lang/hr_dns_aaaa.lng index 2e2ee87893..2be6042aa9 100644 --- a/interface/web/dns/lib/lang/hr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.'; $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje IPv6 adresa je prazno'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Neispravan format IPv6 adrese'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_cname.lng b/interface/web/dns/lib/lang/hr_dns_cname.lng index 4e8fad12ba..ce334e750e 100644 --- a/interface/web/dns/lib/lang/hr_dns_cname.lng +++ b/interface/web/dns/lib/lang/hr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje odrediÅ¡ni host je prazno'; $wb['data_error_regex'] = 'Neispravan format odrediÅ¡nog host zapisa'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_dname.lng b/interface/web/dns/lib/lang/hr_dns_dname.lng index ce334e750e..e854c3efe1 100644 --- a/interface/web/dns/lib/lang/hr_dns_dname.lng +++ b/interface/web/dns/lib/lang/hr_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.'; $wb['name_error_regex'] = 'Naziv hosta je u pogreÅ¡nom formatu.'; $wb['data_error_empty'] = 'Polje odrediÅ¡ni host je prazno'; $wb['data_error_regex'] = 'Neispravan format odrediÅ¡nog host zapisa'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_a.lng b/interface/web/dns/lib/lang/hu_dns_a.lng index 9c27b79139..f17ccaa11d 100644 --- a/interface/web/dns/lib/lang/hu_dns_a.lng +++ b/interface/web/dns/lib/lang/hu_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_aaaa.lng b/interface/web/dns/lib/lang/hu_dns_aaaa.lng index a532c80ca1..02643fed88 100644 --- a/interface/web/dns/lib/lang/hu_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/hu_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_cname.lng b/interface/web/dns/lib/lang/hu_dns_cname.lng index 36969d9984..38a6415774 100644 --- a/interface/web/dns/lib/lang/hu_dns_cname.lng +++ b/interface/web/dns/lib/lang/hu_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_dname.lng b/interface/web/dns/lib/lang/hu_dns_dname.lng index 38a6415774..d8d5ba8189 100644 --- a/interface/web/dns/lib/lang/hu_dns_dname.lng +++ b/interface/web/dns/lib/lang/hu_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_a.lng b/interface/web/dns/lib/lang/id_dns_a.lng index 659091bca6..20d5e9f355 100644 --- a/interface/web/dns/lib/lang/id_dns_a.lng +++ b/interface/web/dns/lib/lang/id_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Alamat IP kosong'; $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_aaaa.lng b/interface/web/dns/lib/lang/id_dns_aaaa.lng index 4b17ef0e85..f9b3395995 100644 --- a/interface/web/dns/lib/lang/id_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/id_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Alamat IP kosong'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_cname.lng b/interface/web/dns/lib/lang/id_dns_cname.lng index 4151b241db..9413415394 100644 --- a/interface/web/dns/lib/lang/id_dns_cname.lng +++ b/interface/web/dns/lib/lang/id_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Nama Host Target kosong'; $wb['data_error_regex'] = 'Format Nama Host Target tidak valid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_dname.lng b/interface/web/dns/lib/lang/id_dns_dname.lng index 9413415394..a941b31084 100644 --- a/interface/web/dns/lib/lang/id_dns_dname.lng +++ b/interface/web/dns/lib/lang/id_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.'; $wb['name_error_regex'] = 'Format Nama Host salah.'; $wb['data_error_empty'] = 'Nama Host Target kosong'; $wb['data_error_regex'] = 'Format Nama Host Target tidak valid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_a.lng b/interface/web/dns/lib/lang/it_dns_a.lng index 2e79466d7f..eec6ad5b07 100644 --- a/interface/web/dns/lib/lang/it_dns_a.lng +++ b/interface/web/dns/lib/lang/it_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname vuoto.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_aaaa.lng b/interface/web/dns/lib/lang/it_dns_aaaa.lng index 76c540459d..fb1a2a58a6 100644 --- a/interface/web/dns/lib/lang/it_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/it_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DN $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Indirizzo Ip vuoto'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_cname.lng b/interface/web/dns/lib/lang/it_dns_cname.lng index 76cd9cd0e7..6d7d135a01 100644 --- a/interface/web/dns/lib/lang/it_dns_cname.lng +++ b/interface/web/dns/lib/lang/it_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Target nome host vuoto'; $wb['data_error_regex'] = 'Target nome host formato errato'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_dname.lng b/interface/web/dns/lib/lang/it_dns_dname.lng index 6d7d135a01..e9d1a057cc 100644 --- a/interface/web/dns/lib/lang/it_dns_dname.lng +++ b/interface/web/dns/lib/lang/it_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nome Host vuoto.'; $wb['name_error_regex'] = 'Formato errato per Nome Host.'; $wb['data_error_empty'] = 'Target nome host vuoto'; $wb['data_error_regex'] = 'Target nome host formato errato'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_a.lng b/interface/web/dns/lib/lang/ja_dns_a.lng index a59aec7376..a64a87fc3f 100644 --- a/interface/web/dns/lib/lang/ja_dns_a.lng +++ b/interface/web/dns/lib/lang/ja_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'IPアドレスを入力ã—ã¦ãã ã•ã„。'; $wb['ip_error_wrong'] = 'IPアドレスã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_aaaa.lng b/interface/web/dns/lib/lang/ja_dns_aaaa.lng index cfc23b426a..233cfd71ed 100644 --- a/interface/web/dns/lib/lang/ja_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ja_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'ã“ã®DNSゾーンã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹æ¨©é™ãŒ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'IPアドレスを入力ã—ã¦ãã ã•ã„。'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IPアドレスã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_cname.lng b/interface/web/dns/lib/lang/ja_dns_cname.lng index b29ead6599..af805c9823 100644 --- a/interface/web/dns/lib/lang/ja_dns_cname.lng +++ b/interface/web/dns/lib/lang/ja_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåを入力ã—ã¦ãã ã•ã„。'; $wb['data_error_regex'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_dname.lng b/interface/web/dns/lib/lang/ja_dns_dname.lng index af805c9823..141f9290e1 100644 --- a/interface/web/dns/lib/lang/ja_dns_dname.lng +++ b/interface/web/dns/lib/lang/ja_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホストåを入力ã—ã¦ãã ã•ã„。'; $wb['name_error_regex'] = 'ホストåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; $wb['data_error_empty'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåを入力ã—ã¦ãã ã•ã„。'; $wb['data_error_regex'] = 'ターゲットã®ãƒ›ã‚¹ãƒˆåã®å½¢å¼ãŒä¸æ£ã§ã™ã€‚'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_a.lng b/interface/web/dns/lib/lang/nl_dns_a.lng index 45d0501ac9..38e30234c7 100644 --- a/interface/web/dns/lib/lang/nl_dns_a.lng +++ b/interface/web/dns/lib/lang/nl_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.'; $wb['data_error_empty'] = 'IP-adres is niet ingvuld'; $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig'; -$wb['data_error_duplicate'] = 'Duplicaat A, CNAME, of DNAME record'; +$wb['data_error_duplicate'] = 'Duplicaat A of CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_aaaa.lng b/interface/web/dns/lib/lang/nl_dns_aaaa.lng index e30766442d..218799bb4a 100644 --- a/interface/web/dns/lib/lang/nl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/nl_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan $wb['name_error_empty'] = 'De hostnaam is niet ingvuld'; $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.'; $wb['data_error_empty'] = 'IP-adres is niet ingevuld'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_cname.lng b/interface/web/dns/lib/lang/nl_dns_cname.lng index 84b904a60e..778a05a5fa 100644 --- a/interface/web/dns/lib/lang/nl_dns_cname.lng +++ b/interface/web/dns/lib/lang/nl_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; $wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.'; $wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld'; $wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig'; -$wb['data_error_duplicate'] = 'Duplicaat A, CNAME, of DNAME record'; +$wb['data_error_duplicate'] = 'Duplicaat A, AAAA, CNAME, of DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_dname.lng b/interface/web/dns/lib/lang/nl_dns_dname.lng index d5f63bcc13..6072ddb377 100644 --- a/interface/web/dns/lib/lang/nl_dns_dname.lng +++ b/interface/web/dns/lib/lang/nl_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.'; $wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.'; $wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld'; $wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig'; -$wb['data_error_duplicate'] = 'Duplicaat A-record, CNAME-record of DNAME-record'; +$wb['data_error_duplicate'] = 'Duplicaat CNAME-record of DNAME-record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_a.lng b/interface/web/dns/lib/lang/pl_dns_a.lng index 59ef056e53..a200ae5cce 100644 --- a/interface/web/dns/lib/lang/pl_dns_a.lng +++ b/interface/web/dns/lib/lang/pl_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Adres IP jest pusty.'; $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_aaaa.lng b/interface/web/dns/lib/lang/pl_dns_aaaa.lng index debb636d7e..7de382fcbd 100644 --- a/interface/web/dns/lib/lang/pl_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pl_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nie masz uprawnieÅ„, aby dodać nowy wpis w tej strefie D $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Adres IP jest pusty.'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_cname.lng b/interface/web/dns/lib/lang/pl_dns_cname.lng index bee2839ae0..d4fb5ab8c8 100644 --- a/interface/web/dns/lib/lang/pl_dns_cname.lng +++ b/interface/web/dns/lib/lang/pl_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.'; $wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_dname.lng b/interface/web/dns/lib/lang/pl_dns_dname.lng index d4fb5ab8c8..a7e3ac50e4 100644 --- a/interface/web/dns/lib/lang/pl_dns_dname.lng +++ b/interface/web/dns/lib/lang/pl_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.'; $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.'; $wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.'; $wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_a.lng b/interface/web/dns/lib/lang/pt_dns_a.lng index 0051c476bc..336c4f477e 100644 --- a/interface/web/dns/lib/lang/pt_dns_a.lng +++ b/interface/web/dns/lib/lang/pt_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname em branco.'; $wb['name_error_regex'] = 'Hostname tem um formato inválido.'; $wb['data_error_empty'] = 'Endereço-IP em branco'; $wb['ip_error_wrong'] = 'Endereço-IP formato inválido'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_aaaa.lng b/interface/web/dns/lib/lang/pt_dns_aaaa.lng index 29da278ec4..045a818731 100644 --- a/interface/web/dns/lib/lang/pt_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/pt_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona $wb['name_error_empty'] = 'O Hostname está em branco.'; $wb['name_error_regex'] = 'O Hostname está com formato inválido.'; $wb['data_error_empty'] = 'Endereço-IP em branco'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Endereço-IP com formato inválido'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_cname.lng b/interface/web/dns/lib/lang/pt_dns_cname.lng index 06782a96c4..124b9e3000 100644 --- a/interface/web/dns/lib/lang/pt_dns_cname.lng +++ b/interface/web/dns/lib/lang/pt_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname está em branco.'; $wb['name_error_regex'] = 'O hostname está em um formato inválido.'; $wb['data_error_empty'] = 'Hostname de destino está em branco'; $wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_dname.lng b/interface/web/dns/lib/lang/pt_dns_dname.lng index 124b9e3000..aa8b13cc4e 100644 --- a/interface/web/dns/lib/lang/pt_dns_dname.lng +++ b/interface/web/dns/lib/lang/pt_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname está em branco.'; $wb['name_error_regex'] = 'O hostname está em um formato inválido.'; $wb['data_error_empty'] = 'Hostname de destino está em branco'; $wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_a.lng b/interface/web/dns/lib/lang/ro_dns_a.lng index 556dbea115..26f8a42f05 100644 --- a/interface/web/dns/lib/lang/ro_dns_a.lng +++ b/interface/web/dns/lib/lang/ro_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname necompletat'; $wb['name_error_regex'] = 'Hostname format gresit'; $wb['data_error_empty'] = 'IP-Adresa vid'; $wb['ip_error_wrong'] = 'IP-Adresa format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_aaaa.lng b/interface/web/dns/lib/lang/ro_dns_aaaa.lng index 03f18f18da..da7eeb8a0f 100644 --- a/interface/web/dns/lib/lang/ro_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ro_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_cname.lng b/interface/web/dns/lib/lang/ro_dns_cname.lng index f023134100..c76d2587a1 100644 --- a/interface/web/dns/lib/lang/ro_dns_cname.lng +++ b/interface/web/dns/lib/lang/ro_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Rubrica hostname necompletata'; $wb['name_error_regex'] = 'Hostname cu format gresit'; $wb['data_error_empty'] = 'Hostname tinta necompletat'; $wb['data_error_regex'] = 'Hostname tinta cu format gresit'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_dname.lng b/interface/web/dns/lib/lang/ro_dns_dname.lng index c76d2587a1..01c51d8605 100644 --- a/interface/web/dns/lib/lang/ro_dns_dname.lng +++ b/interface/web/dns/lib/lang/ro_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Rubrica hostname necompletata'; $wb['name_error_regex'] = 'Hostname cu format gresit'; $wb['data_error_empty'] = 'Hostname tinta necompletat'; $wb['data_error_regex'] = 'Hostname tinta cu format gresit'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_a.lng b/interface/web/dns/lib/lang/ru_dns_a.lng index 2a55aa4d64..5dd1329a1b 100644 --- a/interface/web/dns/lib/lang/ru_dns_a.lng +++ b/interface/web/dns/lib/lang/ru_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; $wb['data_error_empty'] = 'IP-Ð°Ð´Ñ€ÐµÑ Ð¿ÑƒÑтой'; $wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_aaaa.lng b/interface/web/dns/lib/lang/ru_dns_aaaa.lng index a1b63edf53..efec59952a 100644 --- a/interface/web/dns/lib/lang/ru_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/ru_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑÑ‚ÑŒ Ñту за $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ðеправильный формат имени хоÑта.'; $wb['data_error_empty'] = 'ПуÑтой IP-адреÑ'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'Ðеправильный формат IP-адреÑа'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_cname.lng b/interface/web/dns/lib/lang/ru_dns_cname.lng index cb20700fe6..8fbddd6799 100644 --- a/interface/web/dns/lib/lang/ru_dns_cname.lng +++ b/interface/web/dns/lib/lang/ru_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; $wb['data_error_empty'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° пуÑтое'; $wb['data_error_regex'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_dname.lng b/interface/web/dns/lib/lang/ru_dns_dname.lng index 8fbddd6799..7e8da83b5b 100644 --- a/interface/web/dns/lib/lang/ru_dns_dname.lng +++ b/interface/web/dns/lib/lang/ru_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Ð˜Ð¼Ñ Ð¿ÑƒÑтое.'; $wb['name_error_regex'] = 'Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат.'; $wb['data_error_empty'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° пуÑтое'; $wb['data_error_regex'] = 'Целевое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° имеет неправильный формат'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_a.lng b/interface/web/dns/lib/lang/se_dns_a.lng index c191ff19d3..577bb47d5b 100644 --- a/interface/web/dns/lib/lang/se_dns_a.lng +++ b/interface/web/dns/lib/lang/se_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_aaaa.lng b/interface/web/dns/lib/lang/se_dns_aaaa.lng index 03f18f18da..da7eeb8a0f 100644 --- a/interface/web/dns/lib/lang/se_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/se_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'IP-Address empty'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Address format invalid'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_cname.lng b/interface/web/dns/lib/lang/se_dns_cname.lng index 6530e927f6..0d42cac595 100644 --- a/interface/web/dns/lib/lang/se_dns_cname.lng +++ b/interface/web/dns/lib/lang/se_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_dname.lng b/interface/web/dns/lib/lang/se_dns_dname.lng index 0d42cac595..62088e09b6 100644 --- a/interface/web/dns/lib/lang/se_dns_dname.lng +++ b/interface/web/dns/lib/lang/se_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.'; $wb['name_error_regex'] = 'The hostname has the wrong format.'; $wb['data_error_empty'] = 'Target hostname empty'; $wb['data_error_regex'] = 'Target hostname format invalid'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_a.lng b/interface/web/dns/lib/lang/sk_dns_a.lng index 3f048c2857..9937576f58 100644 --- a/interface/web/dns/lib/lang/sk_dns_a.lng +++ b/interface/web/dns/lib/lang/sk_dns_a.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'IP Adresa je prázdna'; $wb['ip_error_wrong'] = 'IP Adresa má zlý formát.'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_aaaa.lng b/interface/web/dns/lib/lang/sk_dns_aaaa.lng index f719fe6bc2..2631d32515 100644 --- a/interface/web/dns/lib/lang/sk_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/sk_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnenie PridaÅ¥ záznam do tejto zóny DNS.'; $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'IP-Adresa prázdna'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP-Adresa má zlý formát'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_cname.lng b/interface/web/dns/lib/lang/sk_dns_cname.lng index a6a8685c8f..c155285234 100644 --- a/interface/web/dns/lib/lang/sk_dns_cname.lng +++ b/interface/web/dns/lib/lang/sk_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'Cieľový hostname je prázdny'; $wb['data_error_regex'] = 'Target hostname má zlý format'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_dname.lng b/interface/web/dns/lib/lang/sk_dns_dname.lng index c155285234..88c3f069bd 100644 --- a/interface/web/dns/lib/lang/sk_dns_dname.lng +++ b/interface/web/dns/lib/lang/sk_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.'; $wb['name_error_regex'] = 'Hostname má zlý formát.'; $wb['data_error_empty'] = 'Cieľový hostname je prázdny'; $wb['data_error_regex'] = 'Target hostname má zlý format'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_a.lng b/interface/web/dns/lib/lang/tr_dns_a.lng index 34eba9c0b5..bab67a4646 100644 --- a/interface/web/dns/lib/lang/tr_dns_a.lng +++ b/interface/web/dns/lib/lang/tr_dns_a.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate A or CNAME record'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; $wb['ip_error_wrong'] = 'IP adresi biçimi geçersiz'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng index 80a4c64d51..8b31622d57 100644 --- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng @@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.'; $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz'; -$wb['data_error_duplicate'] = 'Duplicate AAAA, CNAME or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record'; $wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_cname.lng b/interface/web/dns/lib/lang/tr_dns_cname.lng index 008e4962eb..cc8ce3005c 100644 --- a/interface/web/dns/lib/lang/tr_dns_cname.lng +++ b/interface/web/dns/lib/lang/tr_dns_cname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; $wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz'; -$wb['data_error_duplicate'] = 'Duplicate A, CNAME or DNAME Record'; +$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_dname.lng b/interface/web/dns/lib/lang/tr_dns_dname.lng index cc8ce3005c..8cd2b0a0aa 100644 --- a/interface/web/dns/lib/lang/tr_dns_dname.lng +++ b/interface/web/dns/lib/lang/tr_dns_dname.lng @@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Sunucu adı boÅŸ olamaz.'; $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.'; $wb['data_error_empty'] = 'Hedef sunucu adı boÅŸ olamaz'; $wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz'; -$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record'; +$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; ?> -- GitLab From 6105091c6a2fc22e3c40830dd67762f8beec4dac Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 16 Jun 2020 11:36:12 +0200 Subject: [PATCH 415/571] Clicking from search result alias/child domain failed to open, fixes #5607 --- interface/web/capp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/capp.php b/interface/web/capp.php index 39392691f8..5d49fe80d7 100644 --- a/interface/web/capp.php +++ b/interface/web/capp.php @@ -43,7 +43,7 @@ if($_SESSION["s"]["user"]['active'] != 1) { } if(!preg_match("/^[a-z]{2,20}$/i", $mod)) die('module name contains unallowed chars.'); -if($redirect != '' && !preg_match("/^[a-z0-9]+\/[a-z0-9_\.\-]+\?id=[0-9]{1,9}$/i", $redirect)) die('redirect contains unallowed chars.'); +if($redirect != '' && !preg_match("/^[a-z0-9]+\/[a-z0-9_\.\-]+\?id=[0-9]{1,9}(\&type=[a-z0-9_\.\-]+)?$/i", $redirect)) die('redirect contains unallowed chars.'); //* Check if user may use the module. $user_modules = explode(",", $_SESSION["s"]["user"]["modules"]); -- GitLab From 1a94ce8f4fead3941d5c8bfc045b4344da972214 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Tue, 16 Jun 2020 15:52:58 +0200 Subject: [PATCH 416/571] Add auth_verbose = yes (#5642) --- install/tpl/debian6_dovecot2.conf.master | 6 +++--- install/tpl/debian_dovecot2.conf.master | 4 ++-- install/tpl/fedora_dovecot2.conf.master | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 6f32e6d5a2..a1810ab509 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -9,6 +9,7 @@ ssl_key = </etc/postfix/smtpd.key ssl_dh = </etc/dovecot/dh.pem ssl_protocols = !SSLv2 !SSLv3 ssl_min_protocol = TLSv1 +auth_verbose = yes mail_max_userip_connections = 100 mail_plugins = quota passdb { @@ -51,7 +52,7 @@ service lmtp { group = postfix mode = 0600 user = postfix - # For higher volume sites, it may be desirable to increase the number of active listener processes. + # For higher volume sites, it may be desirable to increase the number of active listener processes. # A range of 5 to 20 is probably good for most sites # process_min_avail = 5 } @@ -83,7 +84,7 @@ protocol lmtp { #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -126,4 +127,3 @@ namespace inbox { special_use = \Trash } } - diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 25c586118c..88d6a1b924 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -8,6 +8,7 @@ postmaster_address = postmaster@example.com ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 +auth_verbose = yes mail_max_userip_connections = 100 mail_plugins = $mail_plugins quota passdb { @@ -80,7 +81,7 @@ protocol lmtp { #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -102,4 +103,3 @@ plugin { quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is full" } - diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index ee80f8c0d9..9ec150ce49 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -7,6 +7,7 @@ mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 +auth_verbose = yes mail_plugins = quota passdb { args = /etc/dovecot-sql.conf @@ -79,7 +80,7 @@ mail_plugins = $mail_plugins quota #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -122,4 +123,3 @@ namespace inbox { special_use = \Trash } } - -- GitLab From ae6dc98476ce77d1e64f0b1700b6544cf95b7e81 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Tue, 16 Jun 2020 16:58:48 +0200 Subject: [PATCH 417/571] Allow 63 char TLD (RFC 1034) --- interface/lib/classes/validate_cron.inc.php | 2 +- interface/lib/classes/validate_domain.inc.php | 50 +++++++++---------- .../web/admin/form/server_config.tform.php | 2 +- interface/web/client/form/domain.tform.php | 2 +- interface/web/dns/dns_wizard.php | 12 ++--- interface/web/dns/form/dns_slave.tform.php | 2 +- interface/web/dns/form/dns_soa.tform.php | 2 +- interface/web/mail/ajax_get_json.php | 4 +- .../mail/form/mail_domain_catchall.tform.php | 2 +- interface/web/mail/form/mail_user.tform.php | 8 +-- interface/web/mail/form/xmpp_domain.tform.php | 2 +- 11 files changed, 44 insertions(+), 44 deletions(-) diff --git a/interface/lib/classes/validate_cron.inc.php b/interface/lib/classes/validate_cron.inc.php index 9a2af80366..888fdd5cb7 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,63})$'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 57187805cf..d8c87e09f1 100644 --- a/interface/lib/classes/validate_domain.inc.php +++ b/interface/lib/classes/validate_domain.inc.php @@ -51,7 +51,7 @@ 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'); } @@ -68,7 +68,7 @@ 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'); } @@ -83,7 +83,7 @@ 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'); } @@ -98,7 +98,7 @@ class validate_domain { } else { $check_domain = $_POST['domain']; } - + $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); if ($settings['use_domain_module'] == 'y') { @@ -111,26 +111,26 @@ class validate_domain { $result = $this->_check_unique($field_value . '.' . $check_domain, true); if(!$result) return $this->get_error('domain_error_autosub'); } - + /* Check apache directives */ function web_apache_directives($field_name, $field_value, $validator) { global $app; - + if(trim($field_value) != '') { $security_config = $app->getconf->get_security_config('ids'); - + if($security_config['apache_directives_scan_enabled'] == 'yes') { - + // Get blacklist $blacklist_path = '/usr/local/ispconfig/security/apache_directives.blacklist'; if(is_file('/usr/local/ispconfig/security/apache_directives.blacklist.custom')) $blacklist_path = '/usr/local/ispconfig/security/apache_directives.blacklist.custom'; if(!is_file($blacklist_path)) $blacklist_path = realpath(ISPC_ROOT_PATH.'/../security/apache_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); @@ -144,31 +144,31 @@ class validate_domain { } } } - + if($blocked === true) { return $this->get_error('apache_directive_blocked_error').' '.$blocked_line; } } - + /* 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); @@ -182,16 +182,16 @@ class validate_domain { } } } - + 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\.\-]{1,255}\.[a-zA-Z0-9\-]{2,30}$/'; + $pattern = '/^' . ($allow_wildcard == true ? '(\*\.)?' : '') . '[\w\.\-]{1,255}\.[a-zA-Z0-9\-]{2,63}$/'; return preg_match($pattern, $domain_name); } @@ -229,8 +229,8 @@ class validate_domain { $domain_params[] = $aliassubdomain['domain']; } } - - + + $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (d.domain = ?" . $additional_sql1 . ") AND d.server_id = ? AND d.domain_id != ?" . ($primary_id ? " AND d.parent_domain_id != ?" : ""); $params = array_merge(array($domain_name), $domain_params, array($domain['server_id'], $primary_id, $primary_id)); $checks = $app->db->queryAllRecords($qrystr, true, $params); @@ -242,7 +242,7 @@ class validate_domain { if($domain['ipv6_address'] != '' && $check['ipv6_address'] == $domain['ipv6_address']) return false; } } - + if($only_domain == false) { $qrystr = "SELECT d.domain_id, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ip_address, d.ip_address) as `ip_address`, IF(d.parent_domain_id != 0 AND p.domain_id IS NOT NULL, p.ipv6_address, d.ipv6_address) as `ipv6_address` FROM `web_domain` as d LEFT JOIN `web_domain` as p ON (p.domain_id = d.parent_domain_id) WHERE (CONCAT(d.subdomain, '.', d.domain) = ?" . $additional_sql2 . ") AND d.server_id = ? AND d.domain_id != ?" . ($primary_id ? " AND d.parent_domain_id != ?" : ""); $params = array_merge(array($domain_name), $domain_params, array($domain['server_id'], $primary_id, $primary_id)); @@ -256,7 +256,7 @@ class validate_domain { } } } - + return true; } @@ -274,6 +274,6 @@ class validate_domain { } return true; // admin may always add wildcard domain } - + } diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index f64ce30926..0d570f2e94 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -131,7 +131,7 @@ $form["tabs"]['server'] = array( 'validators' => array( 0 => array('type' => 'NOTEMPTY', 'errmsg' => 'hostname_error_empty'), 1 => array ('type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'hostname_error_regex'), ), 'value' => '', diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php index 2d3e1dbdd1..a3dc1aaac0 100644 --- a/interface/web/client/form/domain.tform.php +++ b/interface/web/client/form/domain.tform.php @@ -100,7 +100,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php index a02ee0a80f..91b2307dc5 100644 --- a/interface/web/dns/dns_wizard.php +++ b/interface/web/dns/dns_wizard.php @@ -220,10 +220,10 @@ if ($domains_settings['use_domain_module'] == 'y') { } if($_POST['create'] == 1) { - + //* CSRF Check $app->auth->csrf_token_check(); - + $error = ''; if ($post_server_id) @@ -277,17 +277,17 @@ if($_POST['create'] == 1) { if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty').'<br />'; - elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,30}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'<br />'; + elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,63}$/', $_POST['domain'])) $error .= $app->lng('error_domain_regex').'<br />'; if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty').'<br />'; if(isset($_POST['ipv6']) && $_POST['ipv6'] == '') $error .= $app->lng('error_ipv6_empty').'<br />'; if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty').'<br />'; - elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,30}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'<br />'; + elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns1'])) $error .= $app->lng('error_ns1_regex').'<br />'; if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty').'<br />'; - elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,30}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'<br />'; + elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,63}$/', $_POST['ns2'])) $error .= $app->lng('error_ns2_regex').'<br />'; if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty').'<br />'; elseif(isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) $error .= $app->lng('error_email_regex').'<br />'; @@ -324,7 +324,7 @@ if($_POST['create'] == 1) { if($_POST['ns2'] != '') $tpl_content = str_replace('{NS2}', $_POST['ns2'], $tpl_content); if($_POST['email'] != '') $tpl_content = str_replace('{EMAIL}', $_POST['email'], $tpl_content); $enable_dnssec = (($_POST['dnssec'] == 'Y') ? 'Y' : 'N'); - if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/', $_POST['domain'])) { + if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', $_POST['domain'])) { $sql = $app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'), $_POST['domain']); $public_key = $sql['dkim_public']; if ($public_key!='') { diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php index 0b4457b700..55e085861a 100644 --- a/interface/web/dns/form/dns_slave.tform.php +++ b/interface/web/dns/form/dns_slave.tform.php @@ -96,7 +96,7 @@ $form["tabs"]['dns_slave'] = array ( 'errmsg'=> 'origin_error_unique'), */ 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index e56211782a..cf0d143916 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -95,7 +95,7 @@ $form["tabs"]['dns_soa'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'origin_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/', + 'regex' => '/^[a-zA-Z0-9\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,63}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php index 412958a315..dfc9dc220c 100644 --- a/interface/web/mail/ajax_get_json.php +++ b/interface/web/mail/ajax_get_json.php @@ -52,7 +52,7 @@ if($type == 'create_dkim' && $domain_id != ''){ $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; $app->system->exec_safe('openssl rand -out ../../temp/random-data.bin '.$rnd_val.' 2> /dev/null'); $app->system->exec_safe('openssl genrsa -rand ../../temp/random-data.bin '.$dkim_strength.' 2> /dev/null'); @@ -113,7 +113,7 @@ header('Content-type: application/json'); echo $json; function validate_domain($domain) { - $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/'; + $regex = '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/'; if ( preg_match($regex, $domain) === 1 ) return true; else return false; } diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 34d26088cd..72261e05e0 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['catchall'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^\@[\w\.\-]{2,255}\.[a-zA-Z\-]{2,30}$/', + 'regex' => '/^\@[\w\.\-]{2,255}\.[a-zA-Z\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 83142f8a85..3d1a8fde7f 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -181,7 +181,7 @@ $form["tabs"]['mailuser'] = array( 'type' => 'TOLOWER') ), 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,10}){0,1}(,\s*\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,10}){0,}$/i', + 'regex' => '/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,1}(,\s*\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,}$/i', 'errmsg'=> 'cc_error_isemail'), ), 'default' => '', @@ -200,7 +200,7 @@ $form["tabs"]['mailuser'] = array( 'type' => 'TOLOWER') ), 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex'=>'/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,10}){0,1}(,\s*\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,10}){0,}$/i', + 'regex'=>'/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,1}(,\s*\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,}$/i', 'errmsg'=> 'sender_cc_error_isemail'), ), 'default' => '', @@ -360,7 +360,7 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') { 'autoresponder_start_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', - 'validators'=> array ( + 'validators'=> array ( 0 => array ( 'type' => 'ISDATETIME', 'allowempty' => 'y', 'errmsg'=> 'autoresponder_start_date_is_no_date'), @@ -373,7 +373,7 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') { 'autoresponder_end_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', - 'validators'=> array ( + 'validators'=> array ( 0 => array ( 'type' => 'ISDATETIME', 'allowempty' => 'y', 'errmsg'=> 'autoresponder_end_date_is_no_date'), diff --git a/interface/web/mail/form/xmpp_domain.tform.php b/interface/web/mail/form/xmpp_domain.tform.php index bbe694f9fd..c703b0bea3 100644 --- a/interface/web/mail/form/xmpp_domain.tform.php +++ b/interface/web/mail/form/xmpp_domain.tform.php @@ -103,7 +103,7 @@ $form["tabs"]['domain'] = array ( 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'domain_error_unique'), 2 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,63}$/', 'errmsg'=> 'domain_error_regex'), ), 'default' => '', -- GitLab From 9cc2475105027089751830af8a006de80535c4d5 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Tue, 16 Jun 2020 17:05:50 +0200 Subject: [PATCH 418/571] Fix minor typo --- interface/web/mail/lib/lang/ar_mail_domain_catchall.lng | 2 +- interface/web/mail/lib/lang/en_mail_domain_catchall.lng | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng index d1b54151d2..55cc10358e 100644 --- a/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/ar_mail_domain_catchall.lng @@ -4,7 +4,7 @@ $wb['destination_txt'] = 'Destination'; $wb['active_txt'] = 'Active'; $wb['domain_error_unique'] = 'There is already a Catchall record for this domain.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; -$wb['domain_error_regex'] = 'Invalid domain name od domain contains invalid characters.'; +$wb['domain_error_regex'] = 'Invalid domain name or domain contains invalid characters.'; $wb['limit_mailcatchall_txt'] = 'The max. number of email catchall accounts for your account is reached.'; $wb['source_txt'] = 'Source'; $wb['destination_error_isemail'] = 'Destination is no valid email address.'; diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng index a49722802e..a8c294846e 100644 --- a/interface/web/mail/lib/lang/en_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng @@ -4,7 +4,7 @@ $wb["destination_txt"] = 'Destination Email'; $wb["active_txt"] = 'Active'; $wb["domain_error_unique"] = "There is already a Catchall record for this domain."; $wb["no_domain_perm"] = "You have no permission for this domain."; -$wb["domain_error_regex"] = 'Invalid domain name od domain contains invalid characters.'; +$wb["domain_error_regex"] = 'Invalid domain name or domain contains invalid characters.'; $wb["limit_mailcatchall_txt"] = 'The max. number of email catchall accounts for your account is reached.'; $wb['domain_txt'] = 'Domain'; $wb["source_txt"] = 'Source'; -- GitLab From 8018a2741d6d4e3f04ca6cf4e00a42e5e286da35 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 16 Jun 2020 19:12:31 +0200 Subject: [PATCH 419/571] Update capp.php --- interface/web/capp.php | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/web/capp.php b/interface/web/capp.php index 5d49fe80d7..9fb615b0c1 100644 --- a/interface/web/capp.php +++ b/interface/web/capp.php @@ -33,6 +33,7 @@ require_once '../lib/app.inc.php'; //* Import module variable $mod = $_REQUEST["mod"]; + //* If we click on a search result, load that one instead of the module's start page $redirect = (isset($_REQUEST["redirect"]) ? $_REQUEST["redirect"] : ''); -- GitLab From 48af421d6a0f0aa70fe073e42781ace667aa722d Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 16 Jun 2020 21:13:41 +0200 Subject: [PATCH 420/571] Update capp.php --- interface/web/capp.php | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/web/capp.php b/interface/web/capp.php index 9fb615b0c1..5d49fe80d7 100644 --- a/interface/web/capp.php +++ b/interface/web/capp.php @@ -33,7 +33,6 @@ require_once '../lib/app.inc.php'; //* Import module variable $mod = $_REQUEST["mod"]; - //* If we click on a search result, load that one instead of the module's start page $redirect = (isset($_REQUEST["redirect"]) ? $_REQUEST["redirect"] : ''); -- GitLab From 9b91bf41bc75c98c654f8ea4280f586e3ce496f3 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Wed, 17 Jun 2020 11:50:59 +0200 Subject: [PATCH 421/571] Fix wrong translation (#5647) --- interface/web/mail/lib/lang/de_spamfilter_blacklist.lng | 2 +- interface/web/mail/lib/lang/de_spamfilter_users.lng | 2 +- interface/web/mail/lib/lang/de_spamfilter_whitelist.lng | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng index 6c08e33c79..63205a5ec1 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng @@ -6,7 +6,7 @@ $wb['email_txt'] = 'E-Mail Adresse'; $wb['priority_txt'] = 'Priorität'; $wb['active_txt'] = 'Aktiv'; $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für ihr Konto wurde erreicht.'; -$wb['10 - highest'] = '10 - höchste'; +$wb['10 - highest'] = '10 - höchste'; $wb['5 - medium'] = '5 - normal'; $wb['1 - lowest'] = '1 - niedrigste'; ?> diff --git a/interface/web/mail/lib/lang/de_spamfilter_users.lng b/interface/web/mail/lib/lang/de_spamfilter_users.lng index 8528677c29..9322c80466 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_users.lng @@ -7,7 +7,7 @@ $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Lokal'; $wb['email_error_notempty'] = 'Die E-Mail-Adresse darf nicht leer sein.'; $wb['fullname_error_notempty'] = 'Der Name darf nicht leer sein.'; -$wb['10 - highest'] = '10 - höchste'; +$wb['10 - highest'] = '10 - höchste'; $wb['5 - medium'] = '5 - normal'; $wb['1 - lowest'] = '1 - niedrigste'; ?> diff --git a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng index 7a953fa6cb..fc6be5baed 100644 --- a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng @@ -2,11 +2,11 @@ $wb['server_id_txt'] = 'Server'; $wb['wb_txt'] = 'wb'; $wb['rid_txt'] = 'Benutzer'; -$wb['email_txt'] = 'E-Mail'; +$wb['email_txt'] = 'E-Mail Adresse'; $wb['priority_txt'] = 'Priorität'; $wb['active_txt'] = 'Aktiv'; $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für Ihr Konto wurde erreicht.'; -$wb['10 - highest'] = '10 - höchste'; +$wb['10 - highest'] = '10 - höchste'; $wb['5 - medium'] = '5 - normal'; $wb['1 - lowest'] = '1 - niedrigste'; ?> -- GitLab From 0ecbb3527e8552b5d4f2a12a013eeb0c582e0828 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Fri, 19 Jun 2020 11:20:21 +0200 Subject: [PATCH 422/571] Remove translation for SPDY/HTTP2 (#5646) --- interface/web/admin/lib/lang/ar_server_config.lng | 1 - interface/web/admin/lib/lang/bg_server_config.lng | 1 - interface/web/admin/lib/lang/br_server_config.lng | 1 - interface/web/admin/lib/lang/ca_server_config.lng | 1 - interface/web/admin/lib/lang/cz_server_config.lng | 1 - interface/web/admin/lib/lang/de_server_config.lng | 1 - interface/web/admin/lib/lang/dk_server_config.lng | 1 - interface/web/admin/lib/lang/el_server_config.lng | 1 - interface/web/admin/lib/lang/en_server_config.lng | 1 - interface/web/admin/lib/lang/es_server_config.lng | 1 - interface/web/admin/lib/lang/fi_server_config.lng | 1 - interface/web/admin/lib/lang/fr_server_config.lng | 1 - interface/web/admin/lib/lang/hr_server_config.lng | 1 - interface/web/admin/lib/lang/hu_server_config.lng | 1 - interface/web/admin/lib/lang/id_server_config.lng | 1 - interface/web/admin/lib/lang/it_server_config.lng | 1 - interface/web/admin/lib/lang/ja_server_config.lng | 1 - interface/web/admin/lib/lang/nl_server_config.lng | 1 - interface/web/admin/lib/lang/pl_server_config.lng | 1 - interface/web/admin/lib/lang/pt_server_config.lng | 1 - interface/web/admin/lib/lang/ro_server_config.lng | 1 - interface/web/admin/lib/lang/ru_server_config.lng | 1 - interface/web/admin/lib/lang/se_server_config.lng | 1 - interface/web/admin/lib/lang/sk_server_config.lng | 1 - interface/web/admin/lib/lang/tr_server_config.lng | 1 - interface/web/sites/lib/lang/ar_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/bg_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/br_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/ca_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/cz_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/de_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/dk_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/el_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/en_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/es_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/fi_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/fr_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/hr_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/hu_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/id_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/it_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/ja_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/nl_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/pl_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/pt_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/ro_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/ru_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/se_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/sk_web_vhost_domain.lng | 1 - interface/web/sites/lib/lang/tr_web_vhost_domain.lng | 1 - 50 files changed, 50 deletions(-) diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 0bcb361b14..e928d6e5ef 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 1025e777d5..6f3ec99b4d 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 977f55fbba..d6d266b3e0 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -275,7 +275,6 @@ $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede'; $wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos'; $wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.'; $wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações'; -$wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponÃvel'; $wb['web_settings_txt'] = 'Servidor web'; $wb['xmpp_server_txt'] = 'Servidor xmpp'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 9103370404..7bca04abdc 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -270,7 +270,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 64fbafa532..b165a5261a 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -267,7 +267,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'PoužÃt IPv6'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 3c5e305522..046fff1a1f 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -273,7 +273,6 @@ $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; $wb['php_handler_txt'] = 'Standard-PHP-Handler'; $wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; $wb['disabled_txt'] = 'Disabled'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index b3f2e2af2e..890b226a55 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -271,7 +271,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 6c70a3b1fc..0af00d8426 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 63e9ced76c..5531a88158 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -275,7 +275,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 8ae8b42454..9a16ecb5a8 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -66,7 +66,6 @@ $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/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'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 1a3f6b269b..e36832ebec 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index cc57eb8f80..3a364fbaf3 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -270,7 +270,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index da67df4512..e6d484f34e 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index afb7ca1e67..588b61fcbe 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index b22dc5a4ab..8e5c2a8ad5 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 90a2638668..df92b25d58 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -270,7 +270,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index e03f768c17..b65a305d86 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 520e54c3b1..4c01f999b7 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 1beac9944d..5d156faaf2 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index b09c498aa0..480433a96a 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 7a7d3a052c..3602156437 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 301b3ef496..8e8f661eb6 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -272,7 +272,6 @@ $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/HTTP2 доÑтупным'; $wb['web_settings_txt'] = 'Web-Ñервер'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'ИÑпользовать IPv6'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index e91b7e25cf..5d30941b7c 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 6c6e5b2acf..db96f8f259 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 6aede2732a..f6a127818a 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -274,7 +274,6 @@ $wb['network_filesystem_txt'] = 'AÄŸ Dosya Sistemi'; $wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki deÄŸiÅŸiklikler denetlensin'; $wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki deÄŸiÅŸikliklerin kaç dakikada bir denetleneceÄŸini yazın.'; $wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz'; -$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın'; $wb['web_settings_txt'] = 'Web Sunucu'; $wb['xmpp_server_txt'] = 'XMPP Sunucu'; $wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın'; 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 f9c396616b..136829a7b2 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index 1ab6c244cc..8c48f035fe 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index a074b160a3..a3a14e335b 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -143,7 +143,6 @@ $wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracter $wb['subdomain_error_empty'] = 'O subdomÃnio está em branco ou possui caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Carregar detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; 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 d0a5a58bd3..cf25d81260 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Load client details'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Reset data'; 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 250f98c890..ea814b0cb9 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -138,7 +138,6 @@ $wb['server_chosen_not_ok'] = 'Vybraný server nenà pro tento úÄet povolen.'; $wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'ZruÅ¡it'; -$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2'; $wb['load_client_data_txt'] = 'Nahrát údaje z podrobnostà registrovaného klienta'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)'; 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 e4424799a6..449bcb588a 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -138,7 +138,6 @@ $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/HTTP2'; $wb['load_client_data_txt'] = 'Kundendaten übernehmen'; $wb['load_my_data_txt'] = 'Meine Kontaktdaten laden'; $wb['reset_client_data_txt'] = 'Daten verwerfen'; 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 d0a5a58bd3..cf25d81260 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Load client details'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Reset data'; 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 d4cb988a17..f39ce19a9b 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index 66bfd1ca19..497fcd1993 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -143,7 +143,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 504bea2aa6..3f60826008 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -138,7 +138,6 @@ $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/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/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 460fbadff7..82fd44a56a 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 306a48aedc..5d817c611b 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index d883532397..4d70565928 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index 4d54b0a4c7..d8bb15537b 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 3aa65982cd..39df360c89 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index cc890d855e..807039ca6c 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index bfb5e8b137..288b9fab11 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index d67cde421a..27371eee35 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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'; 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 c24c319fe5..f1e945df6f 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index dc6895c3e1..9eb927f000 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index 8e27105a6a..0127c4ee80 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index c9a2a0a4ba..827f149dd8 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['server_chosen_not_ok'] = 'Выбранный Ñервер запрещён $wb['subdomain_error_empty'] = 'Поле поддомена пуÑÑ‚ или Ñодержит недопуÑтимые Ñимволы.'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; -$wb['enable_spdy_txt'] = 'Включить SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Загрузить информацию о клиенте'; $wb['load_my_data_txt'] = 'Загрузить мои контактные данные'; $wb['reset_client_data_txt'] = 'Ð¡Ð±Ñ€Ð¾Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…'; 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 ec509b333a..1bac2468c1 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index 0509b1a3bb..c3b680b2b4 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 071df396e4..2e004d87ef 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -142,7 +142,6 @@ $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karak $wb['subdomain_error_empty'] = 'Alt etki alanı boÅŸ ya da geçersiz karakterler içeriyor.'; $wb['btn_save_txt'] = 'Kaydet'; $wb['btn_cancel_txt'] = 'Ä°ptal'; -$wb['enable_spdy_txt'] = 'SPDY kullanılsın'; $wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle'; $wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle'; $wb['reset_client_data_txt'] = 'Verileri Sıfırla'; -- GitLab From 593d9826d84fd8ffb673ed12537172c10a5973cf Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Fri, 19 Jun 2020 11:51:16 +0200 Subject: [PATCH 423/571] Remove SPDY/HTTP2 optional function(#5646) --- .../sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 1 - install/tpl/apache_apps.vhost.master | 12 ++++----- install/tpl/server.ini.master | 1 - .../web/admin/form/server_config.tform.php | 9 ------- .../templates/server_config_web_edit.htm | 22 +++++----------- .../web/sites/form/web_vhost_domain.tform.php | 9 ------- .../sites/templates/web_vhost_domain_ssl.htm | 16 +++--------- interface/web/sites/web_vhost_domain_edit.php | 7 ----- server/conf/apache_apps.vhost.master | 14 +++------- server/conf/nginx_vhost.conf.master | 26 +++++++++---------- 11 files changed, 35 insertions(+), 85 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 8e924a62b0..e446b60c9f 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -35,3 +35,6 @@ ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET -- add SSHFP and DNAME record ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; + +-- remove SPDY option +ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index c54f0ac345..e0c3848aa5 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2070,7 +2070,6 @@ CREATE TABLE `web_domain` ( `traffic_quota_lock` enum('n','y') NOT NULL default 'n', `fastcgi_php_version` varchar(255) DEFAULT NULL, `proxy_directives` mediumtext, - `enable_spdy` ENUM('y','n') NULL DEFAULT 'n', `last_quota_notification` date NULL default NULL, `rewrite_rules` mediumtext, `added_date` date NULL DEFAULT NULL, diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index 9cccf8d38e..a21f5394b0 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -10,15 +10,15 @@ <VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}> ServerAdmin webmaster@localhost {tmpl_var name='apps_vhost_servername'} - + <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> - + {tmpl_if name="enable_spdy" op="==" value="y"} <IfModule spdy_module> SpdyEnabled on @@ -39,7 +39,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -54,7 +54,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -87,5 +87,3 @@ </VirtualHost> - - diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 5edc09807c..c500fb0cc2 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -94,7 +94,6 @@ php_ini_path_apache=/etc/php5/apache2/php.ini php_ini_path_cgi=/etc/php5/cgi/php.ini check_apache_config=y enable_sni=y -enable_spdy=n skip_le_check=n enable_ip_wildcard=y overtraffic_notify_admin=y diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 0d570f2e94..de2caf1750 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1317,15 +1317,6 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), - 'enable_spdy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), 'apps_vhost_enabled' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index f5f38affe7..64173549c9 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -163,7 +163,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='overquota_db_notify_client_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='overquota_db_notify_client'} + {tmpl_var name='overquota_db_notify_client'} </div> </div> <div class="form-group"> @@ -197,14 +197,6 @@ {tmpl_var name='enable_sni'} </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label"> - <tmpl_var name="enable_spdy_txt"> - </label> - <div class="col-sm-9"> - <tmpl_var name="enable_spdy"> - </div> - </div> <div class="form-group"> <label for="CA_path" class="col-sm-3 control-label">{tmpl_var name='CA_path_txt'}</label> <div class="col-sm-9"><input type="text" name="CA_path" id="CA_path" value="{tmpl_var name='CA_path'}" autocomplete="new-password" class="form-control" /></div></div> @@ -257,7 +249,7 @@ <div class="form-group"> <label for="connect_userid_to_webid_start" class="col-sm-3 control-label">{tmpl_var name='connect_userid_to_webid_start_txt'}</label> <div class="col-sm-9"><input type="text" name="connect_userid_to_webid_start" id="connect_userid_to_webid_start" value="{tmpl_var name='connect_userid_to_webid_start'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -361,7 +353,7 @@ <div class="form-group"> <label for="apps_vhost_servername" class="col-sm-3 control-label">{tmpl_var name='apps_vhost_servername_txt'}</label> <div class="col-sm-9"><input type="text" name="apps_vhost_servername" id="apps_vhost_servername" value="{tmpl_var name='apps_vhost_servername'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -389,15 +381,15 @@ <div class="form-group"> <label for="awstats_buildstaticpages_pl" class="col-sm-3 control-label">{tmpl_var name='awstats_buildstaticpages_pl_txt'}</label> <div class="col-sm-9"><input type="text" name="awstats_buildstaticpages_pl" id="awstats_buildstaticpages_pl" value="{tmpl_var name='awstats_buildstaticpages_pl'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> </div> </div> - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_config_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_config_list.php">{tmpl_var name='btn_cancel_txt'}</button> @@ -410,7 +402,7 @@ serverType = $(this).val(); adjustForm(); }); - + function adjustForm(){ if(serverType == "nginx"){ jQuery('.nginx').show(); diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index beb952bfe6..7da71281cf 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -591,15 +591,6 @@ if($ssl_available) { 'default' => '', 'value' => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt') ), - 'enable_spdy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), //################################# // END Datatable fields //################################# diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm index 8b3d986a02..d4ec6749e2 100644 --- a/interface/web/sites/templates/web_vhost_domain_ssl.htm +++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm @@ -62,15 +62,7 @@ {tmpl_var name='ssl_action'} </select></div> </div> - {tmpl_if name="is_spdy_enabled"} - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='enable_spdy_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name="enable_spdy"} - </div> - </div> - {/tmpl_if} - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> @@ -91,11 +83,11 @@ $('#load_data').click(function(){ loadClientData(); }); - - + + function loadClientData() { var web_id = $("input[name=id]").val(); - + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {'web_id': web_id, 'type': "getclientssldata"}, function(data) { $('#ssl_organisation').val(data['company_name']); $('#ssl_locality').val(data['city']); diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 82da18ae1e..0d770476d1 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -840,7 +840,6 @@ class page_action extends tform_actions { $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); @@ -950,10 +949,8 @@ class page_action extends tform_actions { } $app->tpl->setLoop('folder_directive_snippets', $folder_directive_snippets); if(is_array($web_config[$server_id])) { - $app->tpl->setVar('is_spdy_enabled', ($web_config[$server_id]['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config[$server_id]['nginx_enable_pagespeed'])); } else { - $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed'])); } @@ -1325,10 +1322,6 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>'; } } - - 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'; //print_r($_POST['folder_directive_snippets']); diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index 94982a6dc1..fe73487fa0 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -14,17 +14,11 @@ <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> - {tmpl_if name="enable_spdy" op="==" value="y"} - <IfModule spdy_module> - SpdyEnabled on - </IfModule> - {/tmpl_if} - <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -39,7 +33,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -54,7 +48,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -85,5 +79,3 @@ {/tmpl_if} </VirtualHost> - - diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 978139174f..967a65ccd2 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -30,11 +30,11 @@ server { ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='domain'> <tmpl_var name='alias'>; root <tmpl_var name='web_document_root_www'>; - + <tmpl_if name='ssl_enabled'> <tmpl_if name='rewrite_to_https' op='==' value='y'> if ($scheme != "https") { @@ -72,16 +72,16 @@ server { } </tmpl_if> </tmpl_loop> -<tmpl_if name='use_proxy' op='!=' value='y'> +<tmpl_if name='use_proxy' op='!=' value='y'> index index.html index.htm index.php index.cgi index.pl index.xhtml; - -<tmpl_if name='ssi' op='==' value='y'> + +<tmpl_if name='ssi' op='==' value='y'> location ~ \.shtml$ { ssi on; } </tmpl_if> -<tmpl_if name='errordocs'> +<tmpl_if name='errordocs'> error_page 400 /error/400.html; error_page 401 /error/401.html; error_page 403 /error/403.html; @@ -124,7 +124,7 @@ server { internal; } </tmpl_if> - + <tmpl_if name='logging' op='==' value='yes'> error_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/error.log; access_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/access.log combined; @@ -149,7 +149,7 @@ server { index index.html; try_files $uri $uri/ =404; } - + location = /favicon.ico { log_not_found off; access_log off; @@ -162,7 +162,7 @@ server { log_not_found off; access_log off; } - + location /stats/ { <tmpl_var name='web_document_root_www_proxy'> index index.html index.php; @@ -325,13 +325,13 @@ server { location <tmpl_var name='htpasswd_location'> { ##merge## auth_basic "Members Only"; auth_basic_user_file <tmpl_var name='htpasswd_path'>.htpasswd; - + location ~ \.php$ { try_files <tmpl_var name='rnd_php_dummy_file'> @php; } } </tmpl_loop> -</tmpl_if> +</tmpl_if> } <tmpl_loop name="redirects"> @@ -340,7 +340,7 @@ server { <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:80; </tmpl_if> - + <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:443 ssl; <tmpl_if name='ipv6_enabled'> @@ -349,7 +349,7 @@ server { ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='rewrite_domain'>; <tmpl_if name='alias_seo_redirects2'> -- GitLab From 9c1386e164056fa4c8c9d68345bdaff821ee1fa7 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Fri, 19 Jun 2020 17:31:13 +0200 Subject: [PATCH 424/571] Use nofail instead of deprecated nobootwait (#5131) --- server/plugins-available/apache2_plugin.inc.php | 2 +- server/plugins-available/nginx_plugin.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 06b2afce9a..5f697d060e 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -778,7 +778,7 @@ class apache2_plugin { $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 68e295a97a..89ac35734d 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -619,7 +619,7 @@ class nginx_plugin { $app->system->chmod($data['new']['document_root'].'/'.$log_folder, 0755); $app->system->exec_safe('mount --bind ? ?', '/var/log/ispconfig/httpd/'.$data['new']['domain'], $data['new']['document_root'].'/'.$log_folder); //* add mountpoint to fstab - $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait'; + $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nofail'; $fstab_line .= @($web_config['network_filesystem'] == 'y')?',_netdev 0 0':' 0 0'; $app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1); } -- GitLab From cb1342c8f338e7633be68485908058c0798fb968 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Fri, 19 Jun 2020 20:37:27 +0200 Subject: [PATCH 425/571] Update ru_system_config.lng --- interface/web/admin/lib/lang/ru_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index baed497b0e..b5ef1fba74 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Web-Ñервер по умолчанию'; $wb['default_dnsserver_txt'] = 'DNS-Ñервер по умолчанию'; $wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-Ñервер по умолчанию'; $wb['default_dbserver_txt'] = 'Сервер базы данных по умолчанию'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 3381004ce49faf48d0c67187c336cf82ab654444 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Fri, 19 Jun 2020 20:37:42 +0200 Subject: [PATCH 426/571] Update sk_system_config.lng --- interface/web/admin/lib/lang/sk_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 90418e87d5..a8de64e7d0 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 30f00bd12977380bfac62ff11e4456fb312ccf8a Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Fri, 19 Jun 2020 20:37:52 +0200 Subject: [PATCH 427/571] Update ro_system_config.lng --- interface/web/admin/lib/lang/ro_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 2a39a454e8..9740c7e290 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From 60b1864288f918c89cc1cc210ddc7ab8a22b4059 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Fri, 19 Jun 2020 20:38:01 +0200 Subject: [PATCH 428/571] Update pl_system_config.lng --- interface/web/admin/lib/lang/pl_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index a809251ec1..78abd19c38 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From e5c401a21d7bdd6e675b2c4152437b3c5ea2be70 Mon Sep 17 00:00:00 2001 From: Massimiliano <ufoonline@ufoonline.org> Date: Fri, 19 Jun 2020 20:38:15 +0200 Subject: [PATCH 429/571] Update pt_system_config.lng --- interface/web/admin/lib/lang/pt_system_config.lng | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 6fc26344c0..f5688291d8 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -81,6 +81,8 @@ $wb['default_webserver_txt'] = 'Default Webserver'; $wb['default_dnsserver_txt'] = 'Default DNS Server'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; $wb['default_dbserver_txt'] = 'Default Database Server'; +$wb["default_remote_dbserver_txt"] = "Default DB Remote servers"; +$wb["disable_client_remote_dbserver_txt"] = "Disable DB Remote sections for Clients"; $wb['ca_name_txt'] = 'Name'; $wb['ca_issue_txt'] = 'Issue'; $wb['ca_wildcard_txt'] = 'Use Wildcard'; -- GitLab From a9f328202240adaaf36d7c3c4045ea1b13cc7909 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 22 Jun 2020 23:10:07 +0200 Subject: [PATCH 430/571] Remove SPDY (#5646) --- server/conf/nginx_vhost.conf.master | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 967a65ccd2..24277f0485 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -12,7 +12,7 @@ server { listen [::]:<tmpl_var name='http_port'>; </tmpl_if> <tmpl_if name='ssl_enabled'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; <tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; @@ -22,10 +22,10 @@ server { # 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_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> - listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; </tmpl_if> <tmpl_if name='ipv6_wildcard'> - listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; -- GitLab From a40360dc53b325f4678b37d59e093133cc85563e Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 22 Jun 2020 23:23:58 +0200 Subject: [PATCH 431/571] Remove SPDY (#5646) --- install/tpl/apache_apps.vhost.master | 6 ------ 1 file changed, 6 deletions(-) diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index a21f5394b0..14f0f10da2 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -19,12 +19,6 @@ RequestHeader unset Proxy early </IfModule> - {tmpl_if name="enable_spdy" op="==" value="y"} - <IfModule spdy_module> - SpdyEnabled on - </IfModule> - {/tmpl_if} - <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php -- GitLab From 07301fcf19718c6bbc52b61778c289815aa5a407 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 22 Jun 2020 23:42:55 +0200 Subject: [PATCH 432/571] Always enable HTTP2 if available (#5646) --- server/conf/nginx_vhost.conf.master | 6 +++--- server/conf/vhost.conf.master | 8 +++----- server/plugins-available/apache2_plugin.inc.php | 11 ----------- server/plugins-available/nginx_plugin.inc.php | 12 ------------ 4 files changed, 6 insertions(+), 31 deletions(-) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 24277f0485..ce245787a5 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -12,7 +12,7 @@ server { listen [::]:<tmpl_var name='http_port'>; </tmpl_if> <tmpl_if name='ssl_enabled'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; + listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl http2; <tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; @@ -22,10 +22,10 @@ server { # 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_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> - listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; + listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl http2; </tmpl_if> <tmpl_if name='ipv6_wildcard'> - listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}; + listen [::]:<tmpl_var name='https_port'> ssl http2; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0612c13f7f..1857499299 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -50,12 +50,10 @@ ServerAdmin webmaster@<tmpl_var name='domain'> <tmpl_if name='ssl_enabled'> -<tmpl_if name='enable_http2' op='==' value='y'> Protocols h2 http/1.1 SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite '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' </tmpl_if> -</tmpl_if> <tmpl_if name='logging' op='==' value='anon'> ErrorLog "|/usr/local/ispconfig/server/scripts/vlogger -e -n -P -t \"error.log\" /var/log/ispconfig/httpd/<tmpl_var name='domain'>" @@ -387,7 +385,7 @@ 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'} <tmpl_if name='use_tcp'> - 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:<tmpl_var name='fpm_port'> -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:<tmpl_var name='fpm_port'> -pass-header Authorization -pass-header Content-Type </tmpl_if> <tmpl_if name='use_socket'> 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 <tmpl_var name='fpm_socket'> -pass-header Authorization -pass-header Content-Type @@ -513,9 +511,9 @@ RewriteCond %{REQUEST_URI} !^/php-fcgi/ RewriteCond %{REQUEST_URI} !^<tmpl_var name='rewrite_target'> </tmpl_if> - + RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'><tmpl_if name="rewrite_add_path" op="==" value="y">$1</tmpl_if> <tmpl_var name='rewrite_type'> - + </tmpl_loop> <tmpl_if name='ssl_enabled'> <tmpl_else> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 06b2afce9a..9a1f72f8b3 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1235,17 +1235,6 @@ class apache2_plugin { // Use separate bundle file only for apache versions < 2.4.8 if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; - // HTTP/2.0 ? - $vhost_data['enable_http2'] = 'n'; - 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; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 68e295a97a..c2a2805701 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1517,18 +1517,6 @@ class nginx_plugin { } } - // http2 or spdy? - $vhost_data['enable_http2'] = 'n'; - if($vhost_data['enable_spdy'] == 'y'){ - // check if nginx support http_v2; if so, use that instead of spdy - exec("2>&1 nginx -V | tr -- - '\n' | grep http_v2_module", $tmp_output, $tmp_retval); - if($tmp_retval == 0){ - $vhost_data['enable_http2'] = 'y'; - $vhost_data['enable_spdy'] = 'n'; - } - unset($tmp_output, $tmp_retval); - } - //proxy protocol settings if($web_config['vhost_proxy_protocol_enabled'] == "y"){ if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { -- GitLab From 7f7d1d27df8c4010b4d2038a606d26167fcae6c9 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 25 Jun 2020 16:40:07 +0200 Subject: [PATCH 433/571] Disable FAQ edit functionality in demo mode. --- interface/web/help/faq_delete.php | 3 +++ interface/web/help/faq_edit.php | 3 +++ interface/web/help/faq_sections_delete.php | 3 +++ interface/web/help/faq_sections_edit.php | 3 +++ server/lib/classes/monitor_tools.inc.php | 4 ++++ 5 files changed, 16 insertions(+) diff --git a/interface/web/help/faq_delete.php b/interface/web/help/faq_delete.php index c1faed60d9..161b1ce45b 100644 --- a/interface/web/help/faq_delete.php +++ b/interface/web/help/faq_delete.php @@ -11,6 +11,9 @@ require_once '../../lib/app.inc.php'; // Check module permissions $app->auth->check_module_permissions('admin'); +// Do not allow FAQ editor in DEMO mode +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + // Load the form $app->uses('tform_actions'); $app->tform_actions->onDelete(); diff --git a/interface/web/help/faq_edit.php b/interface/web/help/faq_edit.php index 397f5cccf4..e0f0380f8c 100644 --- a/interface/web/help/faq_edit.php +++ b/interface/web/help/faq_edit.php @@ -10,6 +10,9 @@ require_once '../../lib/app.inc.php'; // Check the module permissions and redirect if not allowed. $app->auth->check_module_permissions('admin'); +// Do not allow FAQ editor in DEMO mode +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + // Load the templating and form classes $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); diff --git a/interface/web/help/faq_sections_delete.php b/interface/web/help/faq_sections_delete.php index 865071ff25..76ff1c75a1 100644 --- a/interface/web/help/faq_sections_delete.php +++ b/interface/web/help/faq_sections_delete.php @@ -11,6 +11,9 @@ require_once '../../lib/app.inc.php'; // Check module permissions $app->auth->check_module_permissions('admin'); +// Do not allow FAQ editor in DEMO mode +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + // Load the form $app->uses('tform_actions'); $app->tform_actions->onDelete(); diff --git a/interface/web/help/faq_sections_edit.php b/interface/web/help/faq_sections_edit.php index f146db8605..56b3c77487 100644 --- a/interface/web/help/faq_sections_edit.php +++ b/interface/web/help/faq_sections_edit.php @@ -10,6 +10,9 @@ require_once '../../lib/app.inc.php'; // Check the module permissions and redirect if not allowed. $app->auth->check_module_permissions('admin'); +// Do not allow FAQ editor in DEMO mode +if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); + // Load the templating and form classes $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index aba19df7a4..75e75c7f30 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 "20.04": + $relname = "(Focal Fossa)"; + $distconfid = 'ubuntu2004'; + break; case "18.04": $relname = "(Bionic Beaver)"; $distconfid = 'ubuntu1804'; -- GitLab From 0a1340a853b730c814edbb9c319cab718bd83fc2 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 25 Jun 2020 16:41:49 +0200 Subject: [PATCH 434/571] Implemented #5650 Add support for Ubuntu 20.04 --- install/dist/conf/ubuntu2004.conf.php | 235 ++++++++++++++++++++++++++ install/lib/install.lib.php | 6 +- 2 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 install/dist/conf/ubuntu2004.conf.php diff --git a/install/dist/conf/ubuntu2004.conf.php b/install/dist/conf/ubuntu2004.conf.php new file mode 100644 index 0000000000..fe5a9b083b --- /dev/null +++ b/install/dist/conf/ubuntu2004.conf.php @@ -0,0 +1,235 @@ +<?php + +/* +Copyright (c) 2020, Till Brehm, ISPConfig UG +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. +*/ + +//*** Ubuntu 18.04 default settings + +//* Main +$conf['language'] = 'en'; +$conf['distname'] = 'ubuntu2004'; +$conf['hostname'] = 'server1.domain.tld'; // Full hostname +$conf['ispconfig_install_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_config_dir'] = '/usr/local/ispconfig'; +$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error +$conf['ispconfig_log_dir'] = '/var/log/ispconfig'; +$conf['server_id'] = 1; +$conf['init_scripts'] = '/etc/init.d'; +$conf['runlevel'] = '/etc'; +$conf['shells'] = '/etc/shells'; +$conf['pam'] = '/etc/pam.d'; + +//* Services provided by this server, this selection will be overridden by the expert mode +$conf['services']['mail'] = true; +$conf['services']['web'] = true; +$conf['services']['dns'] = true; +$conf['services']['file'] = true; +$conf['services']['db'] = true; +$conf['services']['vserver'] = true; +$conf['services']['proxy'] = false; +$conf['services']['firewall'] = false; + +//* MySQL +$conf['mysql']['installed'] = false; // will be detected automatically during installation +$conf['mysql']['init_script'] = 'mysql'; +$conf['mysql']['host'] = 'localhost'; +$conf['mysql']['ip'] = '127.0.0.1'; +$conf['mysql']['port'] = '3306'; +$conf['mysql']['database'] = 'dbispconfig'; +$conf['mysql']['admin_user'] = 'root'; +$conf['mysql']['admin_password'] = ''; +$conf['mysql']['charset'] = 'utf8'; +$conf['mysql']['ispconfig_user'] = 'ispconfig'; +$conf['mysql']['ispconfig_password'] = md5(uniqid(rand())); +$conf['mysql']['master_slave_setup'] = 'n'; +$conf['mysql']['master_host'] = ''; +$conf['mysql']['master_database'] = 'dbispconfig'; +$conf['mysql']['master_admin_user'] = 'root'; +$conf['mysql']['master_admin_password'] = ''; +$conf['mysql']['master_ispconfig_user'] = ''; +$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand())); + +//* Apache +$conf['apache']['installed'] = false; // will be detected automatically during installation +$conf['apache']['user'] = 'www-data'; +$conf['apache']['group'] = 'www-data'; +$conf['apache']['init_script'] = 'apache2'; +$conf['apache']['version'] = '2.4'; +$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available'; +$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled'; +$conf['apache']['vhost_port'] = '8080'; +$conf['apache']['php_ini_path_apache'] = '/etc/php/7.4/apache2/php.ini'; +$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.4/cgi/php.ini'; + +//* Website base settings +$conf['web']['website_basedir'] = '/var/www'; +$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]'; +$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/'; + +//* Apps base settings +$conf['web']['apps_vhost_ip'] = '_default_'; +$conf['web']['apps_vhost_port'] = '8081'; +$conf['web']['apps_vhost_servername'] = ''; +$conf['web']['apps_vhost_user'] = 'ispapps'; +$conf['web']['apps_vhost_group'] = 'ispapps'; + +//* Fastcgi +$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.4/cgi/'; +$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/'; +$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi'; + +//* Postfix +$conf['postfix']['installed'] = false; // will be detected automatically during installation +$conf['postfix']['config_dir'] = '/etc/postfix'; +$conf['postfix']['init_script'] = 'postfix'; +$conf['postfix']['user'] = 'postfix'; +$conf['postfix']['group'] = 'postfix'; +$conf['postfix']['vmail_userid'] = '5000'; +$conf['postfix']['vmail_username'] = 'vmail'; +$conf['postfix']['vmail_groupid'] = '5000'; +$conf['postfix']['vmail_groupname'] = 'vmail'; +$conf['postfix']['vmail_mailbox_base'] = '/var/vmail'; + +//* Mailman +$conf['mailman']['installed'] = false; // will be detected automatically during installation +$conf['mailman']['config_dir'] = '/etc/mailman'; +$conf['mailman']['init_script'] = 'mailman'; + +//* Getmail +$conf['getmail']['installed'] = false; // will be detected automatically during installation +$conf['getmail']['config_dir'] = '/etc/getmail'; +$conf['getmail']['program'] = '/usr/bin/getmail'; + +//* Courier +$conf['courier']['installed'] = false; // will be detected automatically during installation +$conf['courier']['config_dir'] = '/etc/courier'; +$conf['courier']['courier-authdaemon'] = 'courier-authdaemon'; +$conf['courier']['courier-imap'] = 'courier-imap'; +$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl'; +$conf['courier']['courier-pop'] = 'courier-pop'; +$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl'; + +//* Dovecot +$conf['dovecot']['installed'] = false; // will be detected automatically during installation +$conf['dovecot']['config_dir'] = '/etc/dovecot'; +$conf['dovecot']['init_script'] = 'dovecot'; + +//* SASL +$conf['saslauthd']['installed'] = false; // will be detected automatically during installation +$conf['saslauthd']['config'] = '/etc/default/saslauthd'; +$conf['saslauthd']['init_script'] = 'saslauthd'; + +//* Amavisd +$conf['amavis']['installed'] = false; // will be detected automatically during installation +$conf['amavis']['config_dir'] = '/etc/amavis'; +$conf['amavis']['init_script'] = 'amavis'; + +//* Rspamd +$conf['rspamd']['installed'] = false; // will be detected automatically during installation +$conf['rspamd']['config_dir'] = '/etc/rspamd'; +$conf['rspamd']['init_script'] = 'rspamd'; + +//* ClamAV +$conf['clamav']['installed'] = false; // will be detected automatically during installation +$conf['clamav']['init_script'] = 'clamav-daemon'; + +//* Pureftpd +$conf['pureftpd']['installed'] = false; // will be detected automatically during installation +$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd'; +$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql'; + +//* MyDNS +$conf['mydns']['installed'] = false; // will be detected automatically during installation +$conf['mydns']['config_dir'] = '/etc'; +$conf['mydns']['init_script'] = 'mydns'; + +//* PowerDNS +$conf['powerdns']['installed'] = false; // will be detected automatically during installation +$conf['powerdns']['database'] = 'powerdns'; +$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d'; +$conf['powerdns']['init_script'] = 'pdns'; + +//* BIND DNS Server +$conf['bind']['installed'] = false; // will be detected automatically during installation +$conf['bind']['bind_user'] = 'root'; +$conf['bind']['bind_group'] = 'bind'; +$conf['bind']['bind_zonefiles_dir'] = '/etc/bind'; +$conf['bind']['named_conf_path'] = '/etc/bind/named.conf'; +$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local'; +$conf['bind']['init_script'] = 'bind9'; + +//* Jailkit +$conf['jailkit']['installed'] = false; // will be detected automatically during installation +$conf['jailkit']['config_dir'] = '/etc/jailkit'; +$conf['jailkit']['jk_init'] = 'jk_init.ini'; +$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch /etc/localtime'; +$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php'; + +//* Squid +$conf['squid']['installed'] = false; // will be detected automatically during installation +$conf['squid']['config_dir'] = '/etc/squid'; +$conf['squid']['init_script'] = 'squid'; + +//* Nginx +$conf['nginx']['installed'] = false; // will be detected automatically during installation +$conf['nginx']['user'] = 'www-data'; +$conf['nginx']['group'] = 'www-data'; +$conf['nginx']['config_dir'] = '/etc/nginx'; +$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available'; +$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled'; +$conf['nginx']['init_script'] = 'nginx'; +$conf['nginx']['vhost_port'] = '8080'; +$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket'; +$conf['nginx']['php_fpm_init_script'] = 'php7.4-fpm'; +$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.4/fpm/php.ini'; +$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.4/fpm/pool.d'; +$conf['nginx']['php_fpm_start_port'] = 9010; +$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.4-fpm'; + +//* OpenVZ +$conf['openvz']['installed'] = false; + +//*Bastille-Firwall +$conf['bastille']['installed'] = false; +$conf['bastille']['config_dir'] = '/etc/Bastille'; + +//* vlogger +$conf['vlogger']['config_dir'] = '/etc'; + +//* cron +$conf['cron']['init_script'] = 'cron'; +$conf['cron']['crontab_dir'] = '/etc/cron.d'; +$conf['cron']['wget'] = '/usr/bin/wget'; + +//* Metronome XMPP +$conf['xmpp']['installed'] = false; +$conf['xmpp']['init_script'] = 'metronome'; + + +?> diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index ea4e563a6a..4aa4d196c7 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -95,6 +95,10 @@ function get_distname() { $mainver = current($mainver).'.'.next($mainver); } switch ($mainver){ + case "20.04": + $relname = "(Focal Fossa)"; + $distconfid = 'ubuntu2004'; + break; case "18.04": $relname = "(Bionic Beaver)"; $distconfid = 'ubuntu1804'; @@ -186,7 +190,7 @@ function get_distname() { break; default: $relname = "UNKNOWN"; - $distconfid = 'ubuntu1804'; + $distconfid = 'ubuntu2004'; } $distver = $ver.$lts." ".$relname; swriteln("Operating System: ".$distname.' '.$distver."\n"); -- GitLab From b7e017a5022000579b8c88222fd39498890dc40c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 25 Jun 2020 19:24:29 +0200 Subject: [PATCH 435/571] Implemented #5651 Make ISPConfig code base compatible with PHP 7.4 --- install/lib/install.lib.php | 3 +- install/lib/installer_base.lib.php | 6 +- install/lib/mysql.lib.php | 11 +- interface/lib/classes/cmstree.inc.php | 117 ------------------ interface/lib/classes/db_mysql.inc.php | 9 +- interface/lib/classes/simplepie.inc.php | 46 +++---- interface/lib/classes/system.inc.php | 3 +- .../mailuser/mail_user_autoresponder_edit.php | 6 + interface/web/remote/monitor.php | 69 +---------- server/lib/classes/db_mysql.inc.php | 8 +- server/lib/classes/file.inc.php | 20 --- server/lib/classes/system.inc.php | 2 +- 12 files changed, 56 insertions(+), 244 deletions(-) delete mode 100644 interface/lib/classes/cmstree.inc.php diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 4aa4d196c7..9312a8981a 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -691,8 +691,7 @@ function ini_to_array($ini) { //* Converts a config array to a string -function array_to_ini($config_array = '') { - if($config_array == '') $config_array = $this->config; +function array_to_ini($config_array) { $content = ''; foreach($config_array as $section => $data) { $content .= "[$section]\n"; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 5ca16cc674..bc9ed26e18 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -3228,6 +3228,9 @@ class installer_base { * @return bool */ protected function write_config_file($tConf, $tContents) { + + $args = func_get_args(); + // Backup config file before writing new contents and stat file if ( is_file($tConf) ) { $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res); @@ -3241,10 +3244,9 @@ class installer_base { } wf($tConf, $tContents); // write file - if (func_num_args() >= 4) // override rights and/or ownership { - $args = func_get_args(); + $output = array_slice($args, 2); switch (sizeof($output)) { diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php index 2528100cc5..3e091d10b8 100644 --- a/install/lib/mysql.lib.php +++ b/install/lib/mysql.lib.php @@ -192,6 +192,8 @@ class db } private function _query($sQuery = '') { + + $aArgs = func_get_args(); $this->do_connect(); if ($sQuery == '') { @@ -227,7 +229,6 @@ class db } } while($ok == false); - $aArgs = func_get_args(); $sQuery = call_user_func_array(array(&$this, '_build_query_string'), $aArgs); $this->_iQueryId = mysqli_query($this->_iConnId, $sQuery); @@ -283,9 +284,11 @@ class db * @return array result row or NULL if none found */ public function queryOneRecord($sQuery = '') { - if(!preg_match('/limit \d+\s*,\s*\d+$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; - + $aArgs = func_get_args(); + + if(!preg_match('/limit \d+\s*,\s*\d+$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; + $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); if(!$oResult) return null; @@ -956,7 +959,7 @@ class fakedb_result { if(!is_array($this->aLimitedData)) return $aItem; - if(list($vKey, $aItem) = each($this->aLimitedData)) { + foreach($this->aLimitedData as $vKey => $aItem) { if(!$aItem) $aItem = null; } return $aItem; diff --git a/interface/lib/classes/cmstree.inc.php b/interface/lib/classes/cmstree.inc.php deleted file mode 100644 index ead780ebf2..0000000000 --- a/interface/lib/classes/cmstree.inc.php +++ /dev/null @@ -1,117 +0,0 @@ -<? - -/* -Copyright (c) 2007, Till Brehm, projektfarm Gmbh -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. -*/ - -class nodetree { - public $childs; - public $btext; - public $id; -} - -class cmstree -{ - //TODO is this used ?? - pedro - //var $_table; - - // $vars enth�lt: - // - parent :id des Elternelementes - // - type :n = node, i = item - // - doctype_id :id des Dokumententyps, wenn nicht im content Feld - // - title :Titel des Eintrages - // - status :1 = ok, d = delete - // - icon :icon im node-tree, optional - // - modul :modul des Eintrages, noch nicht verwendet - // - doc_id :id des zugeh�rigen Dokumentes - - public function node_list() - { - global $app; - - $nodes = $app->db->queryAllRecords('SELECT * FROM media_cat order by sort, name'); - - $optionlist = array(); - $my0 = new nodetree(); - - foreach($nodes as $row) { - - $id = 'my'.$row['media_cat_id']; - $btext = $row['name']; - $ordner = 'my'.$row['parent']; - if(!is_object($$id)) $$id = new nodetree(); - $$id->btext = $btext; - $$id->id = $row['media_cat_id']; - - if(is_object($$ordner)) { - $$ordner->childs[] = &$$id; - } else { - $$ordner = new nodetree(); - $$ordner->childs[] = &$$id; - } - } - - $this->ptree($my0, 0, $optionlist); - return is_array($nodes) ? $optionlist : false; - } - - private function ptree($myobj, $tiefe, &$optionlist){ - global $_SESSION; - $tiefe += 1; - $id = $myobj->id; - - if(is_array($myobj->childs) and ($_SESSION['s']['cat_open'][$id] == 1 or $tiefe <= 1)) { - foreach($myobj->childs as $val) { - // kategorie => str_repeat('- ',$tiefe) . $val->btext, - - // Ergebnisse Formatieren - /* - if($tiefe == 0) { - $kategorie = "<div class='mnuLevel".$tiefe."'><a href='index.php?pg=liste&kat=".$val->id."' class='navKategorien'>".$val->btext."</a></div>"; - } elseif ($tiefe == 1) { - $kategorie = "<div class='mnuLevel".$tiefe."'><img src='images/listenpunkt.gif'> <a href='index.php?pg=liste&kat=".$val->id."' class='navKategorien'>".$val->btext."</a></div>"; - } else { - $kategorie = "<div class='mnuLevel".$tiefe."'> <a href='index.php?pg=liste&kat=".$val->id."' class='navKategorien'>".str_repeat('- ',$tiefe - 1) . $val->btext."</a></div>"; - } - */ - $val_id = $val->id; - if($_SESSION['s']['cat_open'][$val_id] == 1) { - $kategorie = "<div class='mnuLevel".$tiefe."'> <a href='treenavi.php?kat=".$val->id."' class='navtext' onclick=\"parent.content.location='media_list.php?search_media_cat_id=".$val->id."'\" style=\"text-decoration: none;\"><img src='../themes/default/icons/folder.png' border='0'> ".$val->btext."</a></div>"; - } else { - $kategorie = "<div class='mnuLevel".$tiefe."'> <a href='treenavi.php?kat=".$val->id."' class='navtext' onclick=\"parent.content.location='media_list.php?search_media_cat_id=".$val->id."'\" style=\"text-decoration: none;\"><img src='../themes/default/icons/folder_closed.png' border='0'> ".$val->btext."</a></div>"; - } - - $optionlist[] = array( media_cat => $kategorie, - media_cat_id => $val->id, - depth => $tiefe); - $this->ptree($val, $tiefe, $optionlist); - } - } - } - -} -?> diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 9c7269e568..5348e41708 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -258,6 +258,8 @@ class db private function _query($sQuery = '') { global $app; + + $aArgs = func_get_args(); if ($sQuery == '') { $this->_sqlerror('Keine Anfrage angegeben / No query given'); @@ -297,7 +299,6 @@ class db } } while($ok == false); - $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); @@ -353,9 +354,11 @@ class db * @return array result row or NULL if none found */ public function queryOneRecord($sQuery = '') { + + $aArgs = func_get_args(); + if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; - $aArgs = func_get_args(); $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); if(!$oResult) return null; @@ -1300,7 +1303,7 @@ class fakedb_result { if(!is_array($this->aLimitedData)) return $aItem; - if(list($vKey, $aItem) = each($this->aLimitedData)) { + foreach($this->aLimitedData as $vKey => $aItem) { if(!$aItem) $aItem = null; } return $aItem; diff --git a/interface/lib/classes/simplepie.inc.php b/interface/lib/classes/simplepie.inc.php index 626e801e42..a2b80ed25b 100644 --- a/interface/lib/classes/simplepie.inc.php +++ b/interface/lib/classes/simplepie.inc.php @@ -735,7 +735,7 @@ class simplepie * @param string $cache_location This is where you want the cache to be stored. * @param int $cache_duration This is the number of seconds that you want to store the cache file for. */ - function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null) + function __construct($feed_url = null, $cache_location = null, $cache_duration = null) { // Other objects, instances created here so we can set options on them $this->sanitize = new SimplePie_Sanitize; @@ -3165,7 +3165,7 @@ class SimplePie_Item var $feed; var $data = array(); - function SimplePie_Item($feed, $data) + function __construct($feed, $data) { $this->feed = $feed; $this->data = $data; @@ -5789,7 +5789,7 @@ class SimplePie_Source var $item; var $data = array(); - function SimplePie_Source($item, $data) + function __construct($item, $data) { $this->item = $item; $this->data = $data; @@ -6344,7 +6344,7 @@ class SimplePie_Author var $email; // Constructor, used to input the data - function SimplePie_Author($name = null, $link = null, $email = null) + function __construct($name = null, $link = null, $email = null) { $this->name = $name; $this->link = $link; @@ -6402,7 +6402,7 @@ class SimplePie_Category var $label; // Constructor, used to input the data - function SimplePie_Category($term = null, $scheme = null, $label = null) + function __construct($term = null, $scheme = null, $label = null) { $this->term = $term; $this->scheme = $scheme; @@ -6484,7 +6484,7 @@ class SimplePie_Enclosure var $width; // Constructor, used to input the data - function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null) + function __construct($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null) { $this->bitrate = $bitrate; $this->captions = $captions; @@ -7419,7 +7419,7 @@ class SimplePie_Caption var $text; // Constructor, used to input the data - function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) + function __construct($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) { $this->type = $type; $this->lang = $lang; @@ -7503,7 +7503,7 @@ class SimplePie_Credit var $name; // Constructor, used to input the data - function SimplePie_Credit($role = null, $scheme = null, $name = null) + function __construct($role = null, $scheme = null, $name = null) { $this->role = $role; $this->scheme = $scheme; @@ -7560,7 +7560,7 @@ class SimplePie_Copyright var $label; // Constructor, used to input the data - function SimplePie_Copyright($url = null, $label = null) + function __construct($url = null, $label = null) { $this->url = $url; $this->label = $label; @@ -7604,7 +7604,7 @@ class SimplePie_Rating var $value; // Constructor, used to input the data - function SimplePie_Rating($scheme = null, $value = null) + function __construct($scheme = null, $value = null) { $this->scheme = $scheme; $this->value = $value; @@ -7649,7 +7649,7 @@ class SimplePie_Restriction var $value; // Constructor, used to input the data - function SimplePie_Restriction($relationship = null, $type = null, $value = null) + function __construct($relationship = null, $type = null, $value = null) { $this->relationship = $relationship; $this->type = $type; @@ -7715,7 +7715,7 @@ class SimplePie_File var $error; var $method = SIMPLEPIE_FILE_SOURCE_NONE; - function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) + function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) { if (class_exists('idna_convert')) { @@ -8036,7 +8036,7 @@ class SimplePie_HTTP_Parser * @access public * @param string $data Input data */ - function SimplePie_HTTP_Parser($data) + function __construct($data) { $this->data = $data; $this->data_length = strlen($this->data); @@ -8512,7 +8512,7 @@ class SimplePie_gzdecode * * @access public */ - function SimplePie_gzdecode($data) + function __construct($data) { $this->compressed_data = $data; $this->compressed_size = strlen($data); @@ -8705,7 +8705,7 @@ class SimplePie_Cache * * @access private */ - function SimplePie_Cache() + function __construct() { trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR); } @@ -8743,7 +8743,7 @@ class SimplePie_Cache_File var $extension; var $name; - function SimplePie_Cache_File($location, $filename, $extension) + function __construct($location, $filename, $extension) { $this->location = $location; $this->filename = $filename; @@ -8905,7 +8905,7 @@ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB var $options; var $id; - function SimplePie_Cache_MySQL($mysql_location, $name, $extension) + function __construct($mysql_location, $name, $extension) { $host = $mysql_location->get_host(); if (SimplePie_Misc::stripos($host, 'unix(') === 0 && substr($host, -1) === ')') @@ -11532,7 +11532,7 @@ class SimplePie_Decode_HTML_Entities * @access public * @param string $data Input data */ - function SimplePie_Decode_HTML_Entities($data) + function __construct($data) { $this->data = $data; } @@ -11795,7 +11795,7 @@ class SimplePie_IRI * @param string $iri * @return SimplePie_IRI */ - function SimplePie_IRI($iri) + function __construct($iri) { $iri = (string) $iri; if ($iri !== '') @@ -13184,7 +13184,7 @@ class SimplePie_Parse_Date * * @access private */ - function SimplePie_Parse_Date() + function __construct() { $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')'; $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')'; @@ -13658,7 +13658,7 @@ class SimplePie_Content_Type_Sniffer * @access public * @param SimplePie_Content_Type_Sniffer $file Input file */ - function SimplePie_Content_Type_Sniffer($file) + function __construct($file) { $this->file = $file; } @@ -13990,7 +13990,7 @@ class SimplePie_XML_Declaration_Parser * @access public * @param string $data Input data */ - function SimplePie_XML_Declaration_Parser($data) + function __construct($data) { $this->data = $data; $this->data_length = strlen($this->data); @@ -14259,7 +14259,7 @@ class SimplePie_Locator var $max_checked_feeds = 10; var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer'; - function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer') + function __construct(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer') { $this->file =& $file; $this->file_class = $file_class; diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index b6d3479694..89507ea68c 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -65,12 +65,13 @@ class system { public function exec_safe($cmd) { $arg_count = func_num_args(); + $args = func_get_args(); + if($arg_count != substr_count($cmd, '?') + 1) { trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); return false; } if($arg_count > 1) { - $args = func_get_args(); array_shift($args); $pos = 0; diff --git a/interface/web/mailuser/mail_user_autoresponder_edit.php b/interface/web/mailuser/mail_user_autoresponder_edit.php index d93151bf24..827a585e50 100644 --- a/interface/web/mailuser/mail_user_autoresponder_edit.php +++ b/interface/web/mailuser/mail_user_autoresponder_edit.php @@ -66,6 +66,12 @@ class page_action extends tform_actions { if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) { $this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_start_date']); $this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item', 'return 0;'), $this->dataRecord['autoresponder_end_date']); + + /* To be used when we go to PHP 7.x as min PHP version + $this->dataRecord['autoresponder_start_date'] = array_map( function ('$item') { 'return 0;' }, $this->dataRecord['autoresponder_start_date']); + $this->dataRecord['autoresponder_end_date'] = array_map( function ('$item') { 'return 0;' }, $this->dataRecord['autoresponder_end_date']); + */ + } parent::onSubmit(); diff --git a/interface/web/remote/monitor.php b/interface/web/remote/monitor.php index 132bcf29a5..914a09382e 100644 --- a/interface/web/remote/monitor.php +++ b/interface/web/remote/monitor.php @@ -59,73 +59,6 @@ if($token == '' or $secret == '' or $token != $secret) { } } $out['type'] = $type; - -function __json_encode($data) { - if( is_array($data) || is_object($data) ) { - $islist = is_array($data) && ( empty($data) || array_keys($data) === range(0, count($data)-1) ); - - if( $islist ) { - $json = '[' . implode(',', array_map('__json_encode', $data) ) . ']'; - } else { - $items = array(); - foreach( $data as $key => $value ) { - $items[] = __json_encode("$key") . ':' . __json_encode($value); - } - $json = '{' . implode(',', $items) . '}'; - } - } elseif( is_string($data) ) { - // Escape non-printable or Non-ASCII characters. - // I also put the \\ character first, as suggested in comments on the 'addcslashes' page. - $string = '"' . addcslashes($data, "\\\"\n\r\t/" . chr(8) . chr(12)) . '"'; - $json = ''; - $len = strlen($string); - // Convert UTF-8 to Hexadecimal Codepoints. - for( $i = 0; $i < $len; $i++ ) { - - $char = $string[$i]; - $c1 = ord($char); - - // Single byte; - if( $c1 <128 ) { - $json .= ($c1 > 31) ? $char : sprintf("\\u%04x", $c1); - continue; - } - - // Double byte - $c2 = ord($string[++$i]); - if ( ($c1 & 32) === 0 ) { - $json .= sprintf("\\u%04x", ($c1 - 192) * 64 + $c2 - 128); - continue; - } - - // Triple - $c3 = ord($string[++$i]); - if( ($c1 & 16) === 0 ) { - $json .= sprintf("\\u%04x", (($c1 - 224) <<12) + (($c2 - 128) << 6) + ($c3 - 128)); - continue; - } - - // Quadruple - $c4 = ord($string[++$i]); - if( ($c1 & 8 ) === 0 ) { - $u = (($c1 & 15) << 2) + (($c2>>4) & 3) - 1; - - $w1 = (54<<10) + ($u<<6) + (($c2 & 15) << 2) + (($c3>>4) & 3); - $w2 = (55<<10) + (($c3 & 15)<<6) + ($c4-128); - $json .= sprintf("\\u%04x\\u%04x", $w1, $w2); - } - } - } else { - // int, floats, bools, null - $json = strtolower(var_export( $data, true )); - } - return $json; -} - -if(function_exists('json_encode')) { // PHP >= 5.2 - echo json_encode($out); -} else { // PHP < 5.2 - echo __json_encode($out); -} +echo json_encode($out); exit; ?> diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 4bbc84e3f9..2bccf1ecb7 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -258,6 +258,8 @@ class db private function _query($sQuery = '') { global $app; + + $aArgs = func_get_args(); if ($sQuery == '') { $this->_sqlerror('Keine Anfrage angegeben / No query given'); @@ -297,7 +299,6 @@ class db } } while($ok == false); - $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); @@ -353,9 +354,10 @@ class db * @return array result row or NULL if none found */ public function queryOneRecord($sQuery = '') { - if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; $aArgs = func_get_args(); + if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; + $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); if(!$oResult) return null; @@ -1300,7 +1302,7 @@ class fakedb_result { if(!is_array($this->aLimitedData)) return $aItem; - if(list($vKey, $aItem) = each($this->aLimitedData)) { + foreach($this->aLimitedData as $vKey => $aItem) { if(!$aItem) $aItem = null; } return $aItem; diff --git a/server/lib/classes/file.inc.php b/server/lib/classes/file.inc.php index eadb38b789..28757d0dd5 100644 --- a/server/lib/classes/file.inc.php +++ b/server/lib/classes/file.inc.php @@ -158,26 +158,6 @@ class file{ return $ret_val; } - function edit_dist($var, $val){ - global $$var; - $files = array('/root/ispconfig/dist.inc.php'); - foreach($files as $file){ - if(is_file($file)){ - $file_content = $this->unix_nl($this->rf($file)); - $lines = explode("\n", $file_content); - for($i=0;$i<sizeof($lines);$i++){ - $parts = explode('=', $lines[$i]); - if($parts[0] == $var || $parts[0] == '$'.$var.' '){ - $parts[1] = str_replace($$var, $val, $parts[1]); - } - $lines[$i] = implode('=', $parts); - } - $file_content = implode("\n", $lines); - $this->wf($file, $file_content); - } - } - } - function getDirectoryListing($dirname, $sortorder = 'a', $show_subdirs = 0, $show_subdirfiles = 0, $exts = '', $ext_save = 1){ // This function will return an array with filenames based on the criteria you can set in the variables // @sortorder : a for ascending (the standard) or d for descending (you can use the "r" for reverse as well, works the same) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 551e4e4853..078c225c10 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2121,13 +2121,13 @@ class system{ public function exec_safe($cmd) { global $app; + $args = func_get_args(); $arg_count = func_num_args(); if($arg_count != substr_count($cmd, '?') + 1) { trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); return false; } if($arg_count > 1) { - $args = func_get_args(); array_shift($args); $pos = 0; -- GitLab From 2c43ed30f81d25807bbcbbbcc3a3904262dcd5c6 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 25 Jun 2020 19:51:06 +0200 Subject: [PATCH 436/571] Remove deprectaed get_magic_quotes_runtime() from config.inc.php.master --- install/tpl/config.inc.php.master | 1 - 1 file changed, 1 deletion(-) diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 02a7b2f65c..8cc70a598d 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -45,7 +45,6 @@ if( !empty($_SERVER['DOCUMENT_ROOT']) ) { } //** Set a few php.ini values -if(get_magic_quotes_runtime()) set_magic_quotes_runtime(false); if(isset($app)) unset($app); if(isset($conf)) unset($conf); -- GitLab From d3983e82f2d2ae408068bb41e79653b43fb41e56 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sun, 28 Jun 2020 14:05:54 +0200 Subject: [PATCH 437/571] Change locked string (#4714) --- interface/web/client/lib/lang/ar_client.lng | 2 +- interface/web/client/lib/lang/bg_client.lng | 2 +- interface/web/client/lib/lang/br_client.lng | 2 +- interface/web/client/lib/lang/ca_client.lng | 2 +- interface/web/client/lib/lang/cz_client.lng | 2 +- interface/web/client/lib/lang/de_client.lng | 2 +- interface/web/client/lib/lang/dk_client.lng | 2 +- interface/web/client/lib/lang/el_client.lng | 2 +- interface/web/client/lib/lang/en_client.lng | 2 +- interface/web/client/lib/lang/es_client.lng | 2 +- interface/web/client/lib/lang/fi_client.lng | 2 +- interface/web/client/lib/lang/fr_client.lng | 2 +- interface/web/client/lib/lang/hr_client.lng | 2 +- interface/web/client/lib/lang/hu_client.lng | 2 +- interface/web/client/lib/lang/id_client.lng | 2 +- interface/web/client/lib/lang/it_client.lng | 2 +- interface/web/client/lib/lang/ja_client.lng | 2 +- interface/web/client/lib/lang/nl_client.lng | 2 +- interface/web/client/lib/lang/pl_client.lng | 2 +- interface/web/client/lib/lang/pt_client.lng | 2 +- interface/web/client/lib/lang/ro_client.lng | 2 +- interface/web/client/lib/lang/ru_client.lng | 2 +- interface/web/client/lib/lang/se_client.lng | 2 +- interface/web/client/lib/lang/sk_client.lng | 2 +- interface/web/client/lib/lang/tr_client.lng | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index deefcd8ade..2fcd02606f 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index 8b024de0eb..dcaba08f8b 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index ba26b61513..46ad85698b 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -150,7 +150,7 @@ $wb['aps_limits_txt'] = 'Limites de instalações de APPs'; $wb['limit_aps_txt'] = 'Limite de instâncias de APPs'; $wb['limit_aps_error_notint'] = 'O limite de instâncias de APPs deve ser um número.'; $wb['default_slave_dnsserver_txt'] = 'Servidor dns secundário padrão'; -$wb['locked_txt'] = 'Bloqueado (desabilita todos os sites, etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Cancelado (desabilita o acesso do cliente.)'; $wb['gender_txt'] = 'TÃtulo'; $wb['gender_m_txt'] = 'Sr.'; diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng index 1797c17cd7..e4cc2f2dbe 100644 --- a/interface/web/client/lib/lang/ca_client.lng +++ b/interface/web/client/lib/lang/ca_client.lng @@ -144,7 +144,7 @@ $wb['aps_limits_txt'] = 'Nombre max d\'Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d\'instances APS'; $wb['limit_aps_error_notint'] = 'La limite d\'instances APS doit être un nombre'; $wb['default_slave_dnsserver_txt'] = 'Serveur DNS secondaire par défaut'; -$wb['locked_txt'] = 'Vérouillé (Désactive web, etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (Désactive connexion Ispconfig)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index 355611f50e..5d26a51cda 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -144,7 +144,7 @@ $wb['aps_limits_txt'] = 'APS limity instalátoru'; $wb['limit_aps_txt'] = 'Max. poÄet APS instalacÃ'; $wb['limit_aps_error_notint'] = 'Limit pro APS instalace musà být ÄÃslo.'; $wb['default_slave_dnsserver_txt'] = 'Výchozà sekundárnà DNS server'; -$wb['locked_txt'] = 'ZamÄeno (zakáže vÅ¡echny weby atd.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'ZruÅ¡eno (zakáže pÅ™ihlášenà klienta)'; $wb['gender_txt'] = 'OslovenÃ'; $wb['gender_m_txt'] = 'Pan'; diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng index 58e390c9f2..ca22ce638c 100644 --- a/interface/web/client/lib/lang/de_client.lng +++ b/interface/web/client/lib/lang/de_client.lng @@ -147,7 +147,7 @@ $wb['aps_limits_txt'] = 'APS Installationsassistent Limits'; $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen'; $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.'; $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server'; -$wb['locked_txt'] = 'Gesperrt (deaktiviert alle Webs, etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Gekündigt (verhindert Kundenlogin)'; $wb['gender_txt'] = 'Anrede'; $wb['gender_m_txt'] = 'Herr'; diff --git a/interface/web/client/lib/lang/dk_client.lng b/interface/web/client/lib/lang/dk_client.lng index c0e8734912..b1e549dd91 100644 --- a/interface/web/client/lib/lang/dk_client.lng +++ b/interface/web/client/lib/lang/dk_client.lng @@ -144,7 +144,7 @@ $wb['aps_limits_txt'] = 'APS Installer Begrænsninger'; $wb['limit_aps_txt'] = 'Max. antal af APS forekomster'; $wb['limit_aps_error_notint'] = 'APS forekomster grænse skal være et tal.'; $wb['default_slave_dnsserver_txt'] = 'Standard Sekundær DNS Server'; -$wb['locked_txt'] = 'LÃ¥st (deaktiverer alle webs mv)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Annulleret (deaktivere kunde log ind)'; $wb['gender_txt'] = 'Titel'; $wb['gender_m_txt'] = 'Hr.'; diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index 59d50b3c85..51f75bff05 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 9b114d4e64..797161d791 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -151,7 +151,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index 2595853096..eae85315b6 100644 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -146,7 +146,7 @@ $wb['limit_xmpp_status_txt'] = 'Host de estado disponible'; $wb['limit_xmpp_user_error_notint'] = 'El lÃmite de usuarios XMPP debe ser un número.'; $wb['limit_xmpp_user_txt'] = 'Número máximo de cuentas XMPP'; $wb['limit_xmpp_vjud_txt'] = 'Directorio de usuarios VJUD disponible'; -$wb['locked_txt'] = 'Bloqueado (desactivar sitios web etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['mail_servers_placeholder'] = 'Seleccionar servidores de correo'; $wb['mail_servers_txt'] = 'Servidores de correo'; $wb['mail_servers_used'] = 'El servidor que está intentando borrar de este cliente está siendo utilizado como servidor de correo. Por favor asegúrese de que este servidor no esté siendo utilizado por este cliente antes de borrarlo.'; diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index 65893189b3..751b7e7836 100644 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index 10f212e0f1..c3de724d93 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -144,7 +144,7 @@ $wb['aps_limits_txt'] = 'Nombre max d’Installeur APS'; $wb['limit_aps_txt'] = 'Nombre max d’instances APS'; $wb['limit_aps_error_notint'] = 'La limite d’instances APS doit être un nombre'; $wb['default_slave_dnsserver_txt'] = 'Serveur DNS secondaire par défaut'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Titre'; $wb['gender_m_txt'] = 'Monsieur'; diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index 9975861bde..4d16bac0cb 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index b74881e9bf..cd491f7b00 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index b9cec3c1e6..2b3c00bfe3 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index 09c93513ae..8491d54f20 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -144,7 +144,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Bloccato (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Cancellato(disables client login)'; $wb['gender_txt'] = 'Titolo'; $wb['gender_m_txt'] = 'Sig.'; diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index 41023dd0a6..cb1a7c2664 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index 4d6f11ca51..6dfc1a8525 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -147,7 +147,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng index 5fcf7a26d4..89fafa6776 100644 --- a/interface/web/client/lib/lang/pl_client.lng +++ b/interface/web/client/lib/lang/pl_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'Limity Instalatora APS'; $wb['limit_aps_txt'] = 'Maks. liczba instalacji APS'; $wb['limit_aps_error_notint'] = 'Limit instalacji APS musi być liczbÄ…'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index a3f98566ee..cccd950d3f 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index 0b7c552b37..6dd6da9dad 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index 94d0bb6a0d..080512f5b0 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'Лимиты УÑтановщика APS'; $wb['limit_aps_txt'] = 'МакÑ. количеÑтво ÑкземплÑров APS'; $wb['limit_aps_error_notint'] = 'Лимит ÑкземплÑров APS должен быть чиÑлом.'; $wb['default_slave_dnsserver_txt'] = 'Вторичный DNS-Ñервер по умолчанию'; -$wb['locked_txt'] = 'Заблокировано (Отключены вÑе web-Ñайты и Ñ‚.д.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Отменено (отключен вход Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð²)'; $wb['gender_txt'] = 'Обращение'; $wb['gender_m_txt'] = 'Г-н.'; diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index fb1151ed8e..6e0f025f90 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Förvald sekundär DNS-server'; -$wb['locked_txt'] = 'LÃ¥st (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Uppsagd (disables client login)'; $wb['gender_txt'] = 'Titel'; $wb['gender_m_txt'] = 'Herr'; diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index dcd291bc53..b215eb2b32 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -146,7 +146,7 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; -$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Canceled (disables client login)'; $wb['gender_txt'] = 'Title'; $wb['gender_m_txt'] = 'Mr.'; diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index 9e8e6b9be3..d87fe26da9 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -151,7 +151,7 @@ $wb['aps_limits_txt'] = 'APS Yükleyici Sınırları'; $wb['limit_aps_txt'] = 'En Fazla APS Kopyası Sayısı'; $wb['limit_aps_error_notint'] = 'APS kopya sayısı sınırı bir sayı olmalıdır.'; $wb['default_slave_dnsserver_txt'] = 'Varsayılan Ä°kincil DNS Sunucusu'; -$wb['locked_txt'] = 'Kilitli<br/>(tüm web vb. devre dışı)'; +$wb['locked_txt'] = 'Locked (disables everything except DNS)'; $wb['canceled_txt'] = 'Ä°ptal<br/>(müşteri oturumu devre dışı)'; $wb['gender_txt'] = 'Unvan'; $wb['gender_m_txt'] = 'Bay'; -- GitLab From e5c0111bcddd29620a2e910e4f590b8c9df799a9 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 29 Jun 2020 10:06:13 -0600 Subject: [PATCH 438/571] jk_init.ini: remove duplicate includesections from [openvpn] jail --- install/tpl/jk_init.ini.master | 1 - 1 file changed, 1 deletion(-) diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master index 469e655a31..6d064d8220 100644 --- a/install/tpl/jk_init.ini.master +++ b/install/tpl/jk_init.ini.master @@ -112,7 +112,6 @@ comment = jail for the openvpn daemon executables = /usr/sbin/openvpn users = root,nobody groups = root,nogroup -includesections = netbasics devices = /dev/urandom, /dev/random, /dev/net/tun includesections = netbasics, uidbasics need_logsocket = 1 -- GitLab From bbe020e47da76600de94959f3fe98ad455c002f5 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 29 Jun 2020 11:28:26 -0600 Subject: [PATCH 439/571] pass LANG to jail environment --- install/tpl/jk_chrootsh.ini.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tpl/jk_chrootsh.ini.master b/install/tpl/jk_chrootsh.ini.master index cfd9e8d198..3373e6aec5 100644 --- a/install/tpl/jk_chrootsh.ini.master +++ b/install/tpl/jk_chrootsh.ini.master @@ -10,4 +10,4 @@ #relax_home_group=1 skip_injail_passwd_check=1 injail_shell=/bin/bash -env = TERM, PATH +env = TERM, PATH, LANG -- GitLab From e91fa78e85851fa16ff7aa57d9a9b4635ce48077 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 29 Jun 2020 15:59:00 -0600 Subject: [PATCH 440/571] update jk_init.ini based on upstream version 2.21, add coreutils and php sections --- install/tpl/jk_init.ini.master | 156 +++++++++++++++++++++++---------- 1 file changed, 109 insertions(+), 47 deletions(-) diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master index 6d064d8220..ff8ed5675c 100644 --- a/install/tpl/jk_init.ini.master +++ b/install/tpl/jk_init.ini.master @@ -1,28 +1,34 @@ +# jk_init.ini: jailkit initialization config + +# Includes paths to handle Debian 10/9, +# if other paths are needed please create an issue with the details: +# https://git.ispconfig.org/ispconfig/ispconfig3/-/issues + [uidbasics] -# this section probably needs adjustment on 64bit systems -# or non-Linux systems +# this section probably needs adjustment non-Linux systems comment = common files for all jails that need user/group information -libraries = /lib/libnsl.so.1, /lib64/libnsl.so.1, /lib/libnss*.so.2, /lib64/libnss*.so.2, /lib/x86_64-linux-gnu/libnss*.so.2 -regularfiles = /etc/nsswitch.conf, /etc/ld.so.conf +paths = /lib/libnsl.so.1, /lib64/libnsl.so.1, /lib/libnss*.so.2, /lib64/libnss*.so.2, /lib/i386-linux-gnu/libnsl.so.1, /lib/i386-linux-gnu/libnss*.so.2, /lib/x86_64-linux-gnu/libnsl.so.1, /lib/x86_64-linux-gnu/libnss*.so.2, /lib/arm-linux-gnueabihf/libnss*.so.2, /lib/arm-linux-gnueabihf/libnsl*.so.1, /etc/nsswitch.conf, /etc/ld.so.conf +# Solaris allegedly needs +# paths = /etc/default/nss, /lib/libnsl.so.1, /usr/lib/nss_*.so.1, /etc/nsswitch.conf [netbasics] comment = common files for all jails that need any internet connectivity -libraries = /lib/libnss_dns.so.2, /lib64/libnss_dns.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2 -regularfiles = /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols +paths = /lib/libnss_dns.so.2, /lib64/libnss_dns.so.2, /lib/libnss_mdns*.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2, /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols, /etc/services, /etc/ssl/certs/, /usr/lib/ssl/certs +# on Solaris devices /dev/udp and /dev/tcp might be needed too, not sure [logbasics] -comment = timezone information -regularfiles = /etc/localtime +comment = timezone information and log sockets +paths = /etc/localtime need_logsocket = 1 +# Solaris allegedly does not need logsocket, but needs +# devices = /dev/log, /dev/conslog [jk_lsh] comment = Jailkit limited shell -executables = /usr/sbin/jk_lsh -regularfiles = /etc/jailkit/jk_lsh.ini +paths = /usr/sbin/jk_lsh, /etc/jailkit/jk_lsh.ini users = root groups = root -need_logsocket = 1 -includesections = uidbasics +includesections = uidbasics, logbasics [limitedshell] comment = alias for jk_lsh @@ -30,78 +36,77 @@ includesections = jk_lsh [cvs] comment = Concurrent Versions System -executables = /usr/bin/cvs +paths = cvs devices = /dev/null [git] comment = Fast Version Control System -executables = /usr/bin/git* -directories = /usr/share/git-core -includesections = editors +paths = /usr/bin/git*, /usr/lib/git-core, /usr/share/git-core, /usr/bin/pager +includesections = editors, perl, netbasics, basicshell, coreutils [scp] comment = ssh secure copy -executables = /usr/bin/scp +paths = scp includesections = netbasics, uidbasics devices = /dev/urandom [sftp] comment = ssh secure ftp -executables = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server +paths = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server, /usr/lib/openssh/sftp-server includesections = netbasics, uidbasics devices = /dev/urandom, /dev/null +# on solaris +#paths = /usr/lib/ssh/sftp-server [ssh] comment = ssh secure shell -executables = /usr/bin/ssh +paths = ssh includesections = netbasics, uidbasics -devices = /dev/urandom, /dev/tty +devices = /dev/urandom, /dev/tty, /dev/null [rsync] -executables = /usr/bin/rsync +paths = rsync includesections = netbasics, uidbasics [procmail] comment = procmail mail delivery -executables = /usr/bin/procmail, /bin/sh +paths = procmail, /bin/sh devices = /dev/null [basicshell] comment = bash based shell with several basic utilities -executables = /bin/sh, /bin/bash, /bin/ls, /bin/cat, /bin/chmod, /bin/mkdir, /bin/cp, /bin/cpio, /bin/date, /bin/dd, /bin/echo, /bin/egrep, /bin/false, /bin/fgrep, /bin/grep, /bin/gunzip, /bin/gzip, /bin/ln, /bin/ls, /bin/mkdir, /bin/mktemp, /bin/more, /bin/mv, /bin/pwd, /bin/rm, /bin/rmdir, /bin/sed, /bin/sh, /bin/sleep, /bin/sync, /bin/tar, /bin/touch, /bin/true, /bin/uncompress, /bin/zcat -regularfiles = /etc/motd, /etc/issue, /etc/bash.bashrc, /etc/bashrc, /etc/profile -directories = /usr/lib/locale/en_US.utf8 +paths = /bin/sh, bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep, false, fgrep, grep, gunzip, gzip, ln, ls, mkdir, mktemp, more, mv, pwd, rm, rmdir, sed, sh, sleep, sync, tar, touch, true, uncompress, zcat, /etc/motd, /etc/issue, /etc/bash.bashrc, /etc/bashrc, /etc/profile, /usr/lib/locale/en_US.utf8, uname, expr, xargs users = root groups = root includesections = uidbasics [midnightcommander] comment = Midnight Commander -executables = /usr/bin/mc, /usr/bin/mcedit, /usr/bin/mcview -directories = /etc/terminfo, /usr/share/terminfo, /usr/share/mc -includesections = basicshell +paths = mc, mcedit, mcview, /usr/share/mc +includesections = basicshell, terminfo [extendedshell] comment = bash shell including things like awk, bzip, tail, less -executables = /usr/bin/awk, /usr/bin/bzip2, /usr/bin/bunzip2, /usr/bin/ldd, /usr/bin/less, /usr/bin/clear, /usr/bin/cut, /usr/bin/du, /usr/bin/find, /usr/bin/head, /usr/bin/less, /usr/bin/md5sum, /usr/bin/nice, /usr/bin/sort, /usr/bin/tac, /usr/bin/tail, /usr/bin/tr, /usr/bin/sort, /usr/bin/wc, /usr/bin/watch, /usr/bin/whoami +paths = awk, bzip2, bunzip2, ldd, less, clear, cut, du, find, head, less, md5sum, nice, sort, tac, tail, tr, sort, wc, watch, whoami includesections = basicshell, midnightcommander, editors +[terminfo] +comment = terminfo databases, required for example for ncurses or vim +paths = /etc/terminfo, /usr/share/terminfo, /lib/terminfo + [editors] comment = vim, joe and nano -executables = /usr/bin/joe, /usr/bin/nano, /usr/bin/vi, /usr/bin/vim, /usr/bin/pico -regularfiles = /etc/vimrc -directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /lib/terminfo +includesections = terminfo +paths = joe, nano, vi, vim, /etc/vimrc, /etc/joe, /usr/share/vim [netutils] comment = several internet utilities like wget, ftp, rsync, scp, ssh -executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient +paths = wget, lynx, ftp, host, rsync, smbclient includesections = netbasics, ssh, sftp, scp -directories = /etc/ssl/certs/ -regularfiles = /usr/lib/ssl/certs [apacheutils] comment = htpasswd utility -executables = /usr/bin/htpasswd +paths = htpasswd [extshellplusnet] comment = alias for extendedshell + netutils + apacheutils @@ -109,7 +114,7 @@ includesections = extendedshell, netutils, apacheutils [openvpn] comment = jail for the openvpn daemon -executables = /usr/sbin/openvpn +paths = /usr/sbin/openvpn users = root,nobody groups = root,nogroup devices = /dev/urandom, /dev/random, /dev/net/tun @@ -118,35 +123,92 @@ need_logsocket = 1 [apache] comment = the apache webserver, very basic setup, probably too limited for you -executables = /usr/sbin/apache +paths = /usr/sbin/apache users = root, www-data groups = root, www-data includesections = netbasics, uidbasics [perl] comment = the perl interpreter and libraries -executables = /usr/bin/perl -directories = /usr/lib/perl, /usr/lib/perl5, /usr/share/perl, /usr/share/perl5 +paths = perl, /usr/lib/perl, /usr/lib/perl5, /usr/share/perl, /usr/share/perl5 [xauth] comment = getting X authentication to work -executables = /usr/bin/X11/xauth -regularfiles = /usr/X11R6/lib/X11/rgb.txt, /etc/ld.so.conf +paths = /usr/bin/X11/xauth, /usr/X11R6/lib/X11/rgb.txt, /etc/ld.so.conf [xclients] comment = minimal files for X clients -regularfiles = /usr/X11R6/lib/X11/rgb.txt +paths = /usr/X11R6/lib/X11/rgb.txt includesections = xauth [vncserver] comment = the VNC server program -executables = /usr/bin/Xvnc, /usr/bin/Xrealvnc -directories = /usr/X11R6/lib/X11/fonts/ +paths = Xvnc, Xrealvnc, /usr/X11R6/lib/X11/fonts/ includesections = xclients +[ping] +comment = Ping program +paths_w_setuid = /bin/ping #[xterm] #comment = xterm -#executables = /usr/bin/X11/xterm -#directories = /usr/share/terminfo, /etc/terminfo +#paths = /usr/bin/X11/xterm, /usr/share/terminfo, /etc/terminfo #devices = /dev/pts/0, /dev/pts/1, /dev/pts/2, /dev/pts/3, /dev/pts/4, /dev/ptyb4, /dev/ptya4, /dev/tty, /dev/tty0, /dev/tty4 + ++# coreutils from: ++# (echo -ne '\n[coreutils]\ncomment = non-sbin progs from coreutils\npaths = '; dpkg --listfiles coreutils | grep -E '^/bin/|/usr/bin/' | xargs -n1 -i@ echo -n "@, " | sed -e 's/, *$/\n/g' -e 's|/usr/bin/||g' -e 's|/bin/||g') >> /etc/jailkit/jk_init.ini + +[coreutils] +comment = non-sbin progs from coreutils +paths = cat, chgrp, chmod, chown, cp, date, dd, df, dir, echo, false, ln, ls, mkdir, mknod, mktemp, mv, pwd, readlink, rm, rmdir, sleep, stty, sync, touch, true, uname, vdir, [, arch, b2sum, base32, base64, basename, chcon, cksum, comm, csplit, cut, dircolors, dirname, du, env, expand, expr, factor, fmt, fold, groups, head, hostid, id, install, join, link, logname, md5sum, mkfifo, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, realpath, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sort, split, stat, stdbuf, sum, tac, tail, tee, test, timeout, tr, truncate, tsort, tty, unexpand, uniq, unlink, users, wc, who, whoami, yes, md5sum.textutils + +[env] +comment = /usr/bin/env for environment variables +paths = env + +# Debian 10 default php version is 7.3 (Debian 9 is 7.0) +# Todo: set default version in ISPConfig installer, +# but install the php cli version matching the website +[php] +comment = default php version and libraries +paths = /usr/bin/php +includesections = php_common, php7_3 + +[php_common] +comment = common php directories and libraries +# notice: potential information leak +# do not add all of /etc/php/ or any of the fpm directories +# or the php config (which includes custom php snippets) from *all* +# sites which use fpm will be copied to *every* jailkit +paths = /usr/bin/php, /usr/lib/php/, /usr/share/php/, /usr/share/zoneinfo/ +includesections = env + +[php5_6] +comment = php version 5.6 +paths = /usr/bin/php5.6, /usr/lib/php/5.6/, /usr/lib/php/20131226/, /usr/share/php/5.6/, /etc/php/5.6/cli/, /etc/php/5.6/mods-available/ +includesections = php_common + +[php7_0] +comment = php version 7.0 +paths = /usr/bin/php7.0, /usr/lib/php/7.0/, /usr/lib/php/20151012/, /usr/share/php/7.0/, /etc/php/7.0/cli/, /etc/php/7.0/mods-available/ +includesections = php_common + +[php7_1] +comment = php version 7.1 +paths = /usr/bin/php7.1, /usr/lib/php/7.1/, /usr/lib/php/20160303/, /usr/share/php/7.1/, /etc/php/7.1/cli/, /etc/php/7.1/mods-available/ +includesections = php_common + +[php7_2] +comment = php version 7.2 +paths = /usr/bin/php7.2, /usr/lib/php/7.2/, /usr/lib/php/20170718/, /usr/share/php/7.2/, /etc/php/7.2/cli/, /etc/php/7.2/mods-available/ +includesections = php_common + +[php7_3] +comment = php version 7.3 +paths = /usr/bin/php7.3, /usr/lib/php/7.3/, /usr/lib/php/20180731/, /usr/share/php/7.3/, /etc/php/7.3/cli/, /etc/php/7.3/mods-available/ +includesections = php_common + +[php7_4] +comment = php version 7.4 +paths = /usr/bin/php7.4, /usr/lib/php/7.4/, /usr/lib/php/20190902/, /usr/share/php/7.4/, /etc/php/7.4/cli/, /etc/php/7.4/mods-available/ +includesections = php_common -- GitLab From 89c1e47de6da2c40ed38663eec8f4d1b51faed34 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 29 Jun 2020 17:16:01 -0600 Subject: [PATCH 441/571] jk_init.ini: best-guess i386 paths, add wp, node and composer jails --- install/tpl/jk_init.ini.master | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/install/tpl/jk_init.ini.master b/install/tpl/jk_init.ini.master index ff8ed5675c..0f62aac9ef 100644 --- a/install/tpl/jk_init.ini.master +++ b/install/tpl/jk_init.ini.master @@ -5,23 +5,17 @@ # https://git.ispconfig.org/ispconfig/ispconfig3/-/issues [uidbasics] -# this section probably needs adjustment non-Linux systems comment = common files for all jails that need user/group information paths = /lib/libnsl.so.1, /lib64/libnsl.so.1, /lib/libnss*.so.2, /lib64/libnss*.so.2, /lib/i386-linux-gnu/libnsl.so.1, /lib/i386-linux-gnu/libnss*.so.2, /lib/x86_64-linux-gnu/libnsl.so.1, /lib/x86_64-linux-gnu/libnss*.so.2, /lib/arm-linux-gnueabihf/libnss*.so.2, /lib/arm-linux-gnueabihf/libnsl*.so.1, /etc/nsswitch.conf, /etc/ld.so.conf -# Solaris allegedly needs -# paths = /etc/default/nss, /lib/libnsl.so.1, /usr/lib/nss_*.so.1, /etc/nsswitch.conf [netbasics] comment = common files for all jails that need any internet connectivity -paths = /lib/libnss_dns.so.2, /lib64/libnss_dns.so.2, /lib/libnss_mdns*.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2, /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols, /etc/services, /etc/ssl/certs/, /usr/lib/ssl/certs -# on Solaris devices /dev/udp and /dev/tcp might be needed too, not sure +paths = /lib/libnss_dns.so.2, /lib64/libnss_dns.so.2, /lib/libnss_mdns*.so.2, /lib/i386-linux-gnu/libnss_dns.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2, /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols, /etc/services, /etc/ssl/certs/, /usr/lib/ssl/certs [logbasics] comment = timezone information and log sockets paths = /etc/localtime need_logsocket = 1 -# Solaris allegedly does not need logsocket, but needs -# devices = /dev/log, /dev/conslog [jk_lsh] comment = Jailkit limited shell @@ -162,6 +156,25 @@ paths_w_setuid = /bin/ping comment = non-sbin progs from coreutils paths = cat, chgrp, chmod, chown, cp, date, dd, df, dir, echo, false, ln, ls, mkdir, mknod, mktemp, mv, pwd, readlink, rm, rmdir, sleep, stty, sync, touch, true, uname, vdir, [, arch, b2sum, base32, base64, basename, chcon, cksum, comm, csplit, cut, dircolors, dirname, du, env, expand, expr, factor, fmt, fold, groups, head, hostid, id, install, join, link, logname, md5sum, mkfifo, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, realpath, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sort, split, stat, stdbuf, sum, tac, tail, tee, test, timeout, tr, truncate, tsort, tty, unexpand, uniq, unlink, users, wc, who, whoami, yes, md5sum.textutils +[wp] +comment = WordPress Command Line +paths = wp, /usr/local/bin/php +includesections = php, mysql-client + +[mysql-client] +comment = mysql client +paths = mysql, mysqldump, mysqlshow, /usr/lib/libmysqlclient.so, /usr/lib/i386-linux-gnu/libmariadb.so.3, /usr/lib/i386-linux-gnu/mariadb19, /usr/lib/x86_64-linux-gnu/libmariadb.so.3, /usr/lib/x86_64-linux-gnu/mariadb19 +includesections = netbasics + +[composer] +comment = composer +paths = composer, /usr/local/bin/composer, /usr/share/doc/composer +includesections = php, uidbasics, netbasics + +[node] +comment = NodeJS +paths = npm, node, nodejs, /usr/lib/nodejs, /usr/share/node-mime, /usr/lib/node_modules, /usr/local/lib/nodejs, /usr/local/lib/node_modules, elmi-to-json, /usr/local/bin/elmi-to-json + [env] comment = /usr/bin/env for environment variables paths = env -- GitLab From 5d413ef629405381091048cee4cdde7f786012c2 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 30 Jun 2020 19:42:46 +0200 Subject: [PATCH 442/571] Only use ids.whitelist.custom if the file is readable. --- interface/lib/classes/ids.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/ids.inc.php b/interface/lib/classes/ids.inc.php index abdf32b302..6d19726417 100644 --- a/interface/lib/classes/ids.inc.php +++ b/interface/lib/classes/ids.inc.php @@ -68,7 +68,7 @@ class ids { // Get whitelist $whitelist_path = '/usr/local/ispconfig/security/ids.whitelist'; - if(is_file('/usr/local/ispconfig/security/ids.whitelist.custom')) $whitelist_path = '/usr/local/ispconfig/security/ids.whitelist.custom'; + if(is_readable('/usr/local/ispconfig/security/ids.whitelist.custom')) $whitelist_path = '/usr/local/ispconfig/security/ids.whitelist.custom'; if(!is_file($whitelist_path)) $whitelist_path = realpath(ISPC_ROOT_PATH.'/../security/ids.whitelist'); $whitelist_lines = file($whitelist_path); @@ -91,7 +91,7 @@ class ids { // Get HTML fields $htmlfield_path = '/usr/local/ispconfig/security/ids.htmlfield'; - if(is_file('/usr/local/ispconfig/security/ids.htmlfield.custom')) $htmlfield_path = '/usr/local/ispconfig/security/ids.htmlfield.custom'; + if(is_readable('/usr/local/ispconfig/security/ids.htmlfield.custom')) $htmlfield_path = '/usr/local/ispconfig/security/ids.htmlfield.custom'; if(!is_file($htmlfield_path)) $htmlfield_path = realpath(ISPC_ROOT_PATH.'/../security/ids.htmlfield'); $htmlfield_lines = file($htmlfield_path); -- GitLab From dfd82421be743323e0e4f4fa9a23293abbe4de82 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 30 Jun 2020 13:12:03 -0600 Subject: [PATCH 443/571] don't save invalid server config section --- interface/web/admin/lib/lang/ar_server_config.lng | 2 ++ interface/web/admin/lib/lang/bg_server_config.lng | 2 ++ interface/web/admin/lib/lang/br_server_config.lng | 2 ++ interface/web/admin/lib/lang/ca_server_config.lng | 2 ++ interface/web/admin/lib/lang/cz_server_config.lng | 2 ++ interface/web/admin/lib/lang/de_server_config.lng | 2 ++ interface/web/admin/lib/lang/dk_server_config.lng | 2 ++ interface/web/admin/lib/lang/el_server_config.lng | 2 ++ interface/web/admin/lib/lang/en_server_config.lng | 2 ++ interface/web/admin/lib/lang/es_server_config.lng | 2 ++ interface/web/admin/lib/lang/fi_server_config.lng | 2 ++ interface/web/admin/lib/lang/fr_server_config.lng | 2 ++ interface/web/admin/lib/lang/hr_server_config.lng | 2 ++ interface/web/admin/lib/lang/hu_server_config.lng | 2 ++ interface/web/admin/lib/lang/id_server_config.lng | 2 ++ interface/web/admin/lib/lang/it_server_config.lng | 2 ++ interface/web/admin/lib/lang/ja_server_config.lng | 2 ++ interface/web/admin/lib/lang/nl_server_config.lng | 2 ++ interface/web/admin/lib/lang/pl_server_config.lng | 2 ++ interface/web/admin/lib/lang/pt_server_config.lng | 2 ++ interface/web/admin/lib/lang/ro_server_config.lng | 2 ++ interface/web/admin/lib/lang/ru_server_config.lng | 2 ++ interface/web/admin/lib/lang/se_server_config.lng | 2 ++ interface/web/admin/lib/lang/sk_server_config.lng | 2 ++ interface/web/admin/lib/lang/tr_server_config.lng | 2 ++ interface/web/admin/server_config_edit.php | 14 ++++++++++++-- 26 files changed, 62 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 0bcb361b14..0bd4567220 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 1025e777d5..ae760d95cc 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 977f55fbba..b24f1ef905 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['ufw_enable_txt'] = 'Habilitar'; $wb['ufw_manage_builtins_txt'] = 'Gerenciar regras embutidas'; $wb['ufw_ipv6_txt'] = 'Habilitar IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 9103370404..b4af211185 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 64fbafa532..76783fd95a 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot adresář'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekce'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootované aplikace'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 3c5e305522..7487bec764 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit Chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit Chroot Anwendungsbereiche'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit Chrooted Anwendungen'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index b3f2e2af2e..44ffc53391 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['ufw_enable_txt'] = 'Enable'; $wb['ufw_manage_builtins_txt'] = 'Administrer Builtin Rules'; $wb['ufw_ipv6_txt'] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 6c70a3b1fc..46ce9bfcfc 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 63e9ced76c..2eea4f220d 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb["ufw_enable_txt"] = 'Enable'; $wb["ufw_manage_builtins_txt"] = 'Manage Builtin Rules'; $wb["ufw_ipv6_txt"] = 'Enable IPv6'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 8ae8b42454..d400e81367 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios web al grupo -sshusers-'; $wb['admin_notify_events_txt'] = 'Enviar correo al administrador a partir de siguiente nivel'; $wb['apache_group_error_empty'] = 'El grupo de Apache está vacÃo.'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 1a3f6b269b..b5fd51c4f8 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot-kotikansio'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot-ohjelmaosiot'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted-ohjelmat'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index cc57eb8f80..4b020da068 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Accueil du chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Sections des applications chrootées Jailkit'; $wb['jailkit_chroot_app_programs_txt'] = 'Applications chrootées Jailkit'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index da67df4512..93333280b6 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot direktorij'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcije'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrootane aplikacije'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index afb7ca1e67..e48f231f2e 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index b22dc5a4ab..4023e619b0 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Home chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Bagian app chroot'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit aplikasi yang ter-chroot'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 90a2638668..928ca7ebc2 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index e03f768c17..1220886fc3 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'chroot ホーム'; $wb['jailkit_chroot_app_sections_txt'] = '利用å¯èƒ½ã‚¢ãƒ—リケーションセクション'; $wb['jailkit_chroot_app_programs_txt'] = '利用å¯èƒ½ã‚¢ãƒ—リケーション'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 520e54c3b1..9ff06f34d3 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Configuratie'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app secties'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applicaties'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 1beac9944d..95b289ef72 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Adres roota Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Sekcje aplikacji roota Jailkit'; $wb['jailkit_chroot_app_programs_txt'] = 'Åšcieżki aplikacji roota Jailkit'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index b09c498aa0..31360c0b0e 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Raiz do Chroot Jailkit'; $wb['jailkit_chroot_app_sections_txt'] = 'Aplicações Jailkit chroot (Sessões)'; $wb['jailkit_chroot_app_programs_txt'] = 'Aplicações Jailkit em ambiente chroot'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 7a7d3a052c..74055e9874 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 301b3ef496..8754aece3c 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Путь к домашней папке Jailkit chroot'; $wb['jailkit_chroot_app_sections_txt'] = 'Пакеты программ Jailkit chroot'; $wb['jailkit_chroot_app_programs_txt'] = 'Программы Jailkit chrooted'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index e91b7e25cf..c45116d4fa 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot home'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sections'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted applications'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 6c6e5b2acf..c4858143b0 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['jailkit_chroot_home_txt'] = 'Jailkit chroot domov'; $wb['jailkit_chroot_app_sections_txt'] = 'Jailkit chroot app sekcia'; $wb['jailkit_chroot_app_programs_txt'] = 'Jailkit chrooted aplikácia'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 6aede2732a..b52479ecf5 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -1,5 +1,7 @@ <?php $wb['server_config'] = 'Server Config'; +$wb['server_config_error_not_updated'] = 'Error in Server Config: not updated'; +$wb['server_config_error_section_not_updated'] = 'Error in Server Config: %s section not updated'; $wb['ufw_enable_txt'] = 'Etkin'; $wb['ufw_manage_builtins_txt'] = 'İç Kural Yönetimi'; $wb['ufw_ipv6_txt'] = 'IPv6 Kullanılsın'; diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index f311f6b1a5..cca5d702d3 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -143,9 +143,19 @@ class page_action extends tform_actions { if($app->tform->errorMessage == '') { $server_config_array[$section] = $app->tform->encode($this->dataRecord, $section); - $server_config_str = $app->ini_parser->get_ini_string($server_config_array); + if ((! is_array($server_config_array[$section])) || count($server_config_array[$section]) == 0 ) { + $errMsg = sprintf( $app->tform->lng("server_config_error_section_not_updated"), $section ); + $app->tpl->setVar('error', $errMsg); + } else { + $server_config_str = $app->ini_parser->get_ini_string($server_config_array); - $app->db->datalogUpdate('server', array("config" => $server_config_str), 'server_id', $server_id); + if (count($server_config_array) == 0 || $server_config_str == '') { + $app->tpl->setVar('error', $app->tform->lng("server_config_error_not_updated")); + } else { + $app->db->datalogUpdate('server', array("config" => $server_config_str), 'server_id', $server_id); + $app->tpl->setVar('error', ''); + } + } } else { $app->error('Security breach!'); } -- GitLab From 0aa4f2de070303b6daf24e8f72da41cd7f92462d Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 2 Jul 2020 16:22:48 +0200 Subject: [PATCH 444/571] Use correct PHP-FPM sockets in apps vhost on Ubuntu 20.04. --- server/plugins-available/apps_vhost_plugin.inc.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index 4d0866d1de..7fb5503802 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -184,6 +184,7 @@ class apps_vhost_plugin { || file_exists('/var/run/php/php7.1-fpm.sock') || file_exists('/var/run/php/php7.2-fpm.sock') || file_exists('/var/run/php/php7.3-fpm.sock') + || file_exists('/var/run/php/php7.4-fpm.sock') ){ $use_tcp = '#'; $use_socket = ''; @@ -206,6 +207,8 @@ class apps_vhost_plugin { if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); if(file_exists('/var/run/php/php7.2-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.2-fpm.sock', $content); + if(file_exists('/var/run/php/php7.3-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.3-fpm.sock', $content); + if(file_exists('/var/run/php/php7.4-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.4-fpm.sock', $content); // PHP-FPM // Dont just copy over the php-fpm pool template but add some custom settings -- GitLab From 3015ec283d80e01158cd90b7ea02e24d080a06a7 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 2 Jul 2020 13:37:27 -0600 Subject: [PATCH 445/571] add quota recalc to mailbox cleanup --- server/lib/classes/cron.d/500-clean_mailboxes.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php index 8617d0d76d..7e8c82da64 100755 --- a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php +++ b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php @@ -57,6 +57,7 @@ class cronjob_clean_mailboxes extends cronjob { $junk_names=array('Junk', 'Junk Email', 'SPAM', 'INBOX.SPAM'); $purge_cmd = 'doveadm expunge -u ? mailbox ? sentbefore '; + $recalc_cmd = 'doveadm quota recalc -u ?'; $server_id = intval($conf['server_id']); $records = $app->db->queryAllRecords("SELECT email, maildir, purge_trash_days, purge_junk_days FROM mail_user WHERE maildir_format = 'maildir' AND disableimap = 'n' AND server_id = ? AND (purge_trash_days > 0 OR purge_junk_days > 0)", $server_id); @@ -77,6 +78,7 @@ class cronjob_clean_mailboxes extends cronjob { } } } + $app->system->exec_safe($recalc_cmd, $email['email']); } } -- GitLab From 0f80900879f9f6d5e277e84cfc6c0284141290e3 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 2 Jul 2020 13:50:05 -0600 Subject: [PATCH 446/571] prefer 'doveadm quota' for quota calculation if supported --- .../cron.d/100-monitor_email_quota.inc.php | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php index 8adf7c7253..01bc0ee78e 100644 --- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php @@ -79,30 +79,36 @@ class cronjob_monitor_email_quota extends cronjob { if(is_array($mailboxes)) { //* with dovecot we can use doveadm instead of 'du -s' - $dovecot = false; - if (isset($mail_config['pop3_imap_daemon']) && $mail_config ['pop3_imap_daemon'] = 'dovecot' && is_executable('doveadm')) { - exec('doveadm quota 2>&1', $tmp_output, $tmp_retval); // with dovecot 2.2.x 'doveadm quota' is unuseable - if ($retval = 64) $dovecot = true; + $dovecotQuotaUsage = array(); + if (isset($mail_config['pop3_imap_daemon']) && $mail_config ['pop3_imap_daemon'] = 'dovecot') { + exec("doveadm quota get -A 2>&1", $res, $retval); + if ($retval = 64) { + foreach ($res as $v) { + $s = preg_split('/\s+/', $v); + if ($s[2] == 'STORAGE') $dovecotQuotaUsage[$s[0]] = $s[3] * 1024; // doveadm output is in kB + } + } } foreach($mailboxes as $mb) { $email = $mb['email']; $email_parts = explode('@', $mb['email']); $filename = $mb['maildir'].'/.quotausage'; - if(!file_exists($filename) && $dovecot) { - $app->system->exec_safe('doveadm quota recalc -u ?', $email); - } - if(file_exists($filename) && !is_link($filename)) { + if(count($dovecotQuotaUsage) > 0 && isset($dovecotQuotaUsage[$email])) { + $data[$email]['used'] = $dovecotQuotaUsage[$email]; + $app->log("Mail storage $email: " . $data[$email]['used'], LOGLEVEL_DEBUG); + } elseif(file_exists($filename) && !is_link($filename)) { $quotafile = file($filename); preg_match('/storage.*?([0-9]+)/s', implode('',$quotafile), $storage_value); $data[$email]['used'] = $storage_value[1]; - $app->log("Mail storage $email: " . $storage_value[1], LOGLEVEL_DEBUG); + $app->log("Mail storage $email: " . $data[$email]['used'], LOGLEVEL_DEBUG); unset($quotafile); } else { $app->system->exec_safe('du -s ?', $mb['maildir']); $out = $app->system->last_exec_out(); $parts = explode(' ', $out[0]); $data[$email]['used'] = intval($parts[0])*1024; + $app->log("Mail storage $email: " . $data[$email]['used'], LOGLEVEL_DEBUG); unset($out); unset($parts); } @@ -110,6 +116,7 @@ class cronjob_monitor_email_quota extends cronjob { } unset($mailboxes); + unset($dovecotQuotaUsage); //* Dovecot quota check Courier in progress lathama@gmail.com /* @@ -132,8 +139,8 @@ class cronjob_monitor_email_quota extends cronjob { $res['state'] = $state; /* - * Insert the data into the database - */ + * 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']); -- GitLab From a4ae330f8720049534997a394846acd32f416743 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 2 Jul 2020 17:45:33 -0600 Subject: [PATCH 447/571] handle doveadm quota output from different versions --- server/lib/classes/cron.d/100-monitor_email_quota.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php index 01bc0ee78e..40736a7bac 100644 --- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php @@ -85,7 +85,11 @@ class cronjob_monitor_email_quota extends cronjob { if ($retval = 64) { foreach ($res as $v) { $s = preg_split('/\s+/', $v); - if ($s[2] == 'STORAGE') $dovecotQuotaUsage[$s[0]] = $s[3] * 1024; // doveadm output is in kB + if ($s[2] == 'STORAGE') { + $dovecotQuotaUsage[$s[0]] = $s[3] * 1024; // doveadm output is in kB + } elseif ($s[3] == 'STORAGE') { + $dovecotQuotaUsage[$s[0]] = $s[4] * 1024; // doveadm output is in kB + } } } } -- GitLab From a219931738ffc4933406f643a60bd68b1df2ded9 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 3 Jul 2020 15:46:39 +0200 Subject: [PATCH 448/571] Revert "Improved cron debug script" This reverts commit b34b1ad5bbc8d75db927116b517e6a23761e42bb. Fixes #5657 --- server/cron_debug.php | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/server/cron_debug.php b/server/cron_debug.php index fbf59ebc26..74065f02c4 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -39,25 +39,20 @@ ini_set('error_reporting', E_ALL & ~E_NOTICE); $conf['server_id'] = intval($conf['server_id']); // Load required base-classes -$app->uses('ini_parser,file,services,getconf,system,cron,functions'); +$app->uses('modules,plugins,ini_parser,file,services,getconf,system,cron,functions'); $app->load('libdatetime,cronjob'); // Path settings $path = SCRIPT_PATH . '/lib/classes/cron.d'; //** Get commandline options -$cmd_opt = getopt('', array('cronjob::', 'force', 'firstrun')); +$cmd_opt = getopt('', array('cronjob::')); if(isset($cmd_opt['cronjob']) && is_file($path.'/'.$cmd_opt['cronjob'])) { // Cronjob that shell be run $cronjob_file = $cmd_opt['cronjob']; } else { - echo "Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php [--force] [--firstrun]\n" ; - echo "Available cronjobs:\n"; - foreach(glob($path.'/*-*.inc.php') as $cronjob) { - echo basename($cronjob)."\n"; - } - die(); + die('Usage example: php cron_debug.php --cronjob=100-mailbox_stats.inc.php'); } // Load and run the cronjob @@ -66,20 +61,8 @@ if(preg_match('/^\d+\-(.*)$/', $name, $match)) $name = $match[1]; // strip numer include $path . '/' . $cronjob_file; $class_name = 'cronjob_' . $name; $cronjob = new $class_name(); - -if(isset($cmd_opt['force'])) { - $app->db->query("UPDATE `sys_cron` SET `running` = 0 WHERE `name` = ?", $class_name); -} - -$cronjob->onPrepare(); -$cronjob->onBeforeRun(isset($cmd_opt['firstrun'])); -if(!$cronjob->isRunning()) { - $app->db->query("UPDATE `sys_cron` SET `running` = ? WHERE `name` = ?", ($cronjob->canBeRunInParallel() !== true ? "1" : "0"), $class_name); - $cronjob->onRunJob(); - $cronjob->onAfterRun(); - $cronjob->onCompleted(); -} +$cronjob->run(true); die("finished.\n"); -?> \ No newline at end of file +?> -- GitLab From 2c65871b6038bef217863b74b0be49bac3f67eee Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sun, 5 Jul 2020 21:37:59 +0200 Subject: [PATCH 449/571] Fix colspan for no-result and pager, relates to !991 and #5090 --- interface/web/admin/templates/server_php_list.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm index dd6547ba56..a2595a8474 100644 --- a/interface/web/admin/templates/server_php_list.htm +++ b/interface/web/admin/templates/server_php_list.htm @@ -48,13 +48,13 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="6">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td colspan="4"><tmpl_var name="paging"></td> + <td colspan="6"><tmpl_var name="paging"></td> </tr> </tfoot> </table> -- GitLab From 1c85a6c76883c28614e958a27770cf22e463d919 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sun, 5 Jul 2020 21:41:27 +0200 Subject: [PATCH 450/571] Fix colspan for no-result and pager --- interface/web/admin/templates/server_ip_map_list.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/templates/server_ip_map_list.htm b/interface/web/admin/templates/server_ip_map_list.htm index ea23856022..5523448c7b 100644 --- a/interface/web/admin/templates/server_ip_map_list.htm +++ b/interface/web/admin/templates/server_ip_map_list.htm @@ -38,13 +38,13 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td colspan="4"><tmpl_var name="paging"></td> + <td colspan="5"><tmpl_var name="paging"></td> </tr> </tfoot> </table> -- GitLab From b93c35f26ff846c77b4f26a61d75403635b4d692 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 6 Jul 2020 11:58:23 +0200 Subject: [PATCH 451/571] Enforce email addresses to be lower case when adding an email address via remote API. --- interface/lib/classes/remote.d/mail.inc.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index 771698e9dc..eec5ff0718 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -205,6 +205,9 @@ class remoting_mail extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } + + // Email addresses must always be lower case + $params['email'] = strtolower($params['email']); //* Check if mail domain exists $email_parts = explode('@', $params['email']); -- GitLab From baff94e04401325bbe283a56cc3340cc57729a09 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Mon, 6 Jul 2020 17:33:29 -0600 Subject: [PATCH 452/571] vary CSP header for HTTP and HTTPS, and secure cookies --- install/tpl/apache_ispconfig.vhost.master | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index d8c56de22d..61e9a58859 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -89,11 +89,13 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> <IfModule mod_headers.c> # 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'" <tmpl_var name="ssl_comment">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" - <tmpl_var name="ssl_comment">Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" + Header always edit Set-Cookie (.*) "$1; HTTPOnly" + <tmpl_var name="ssl_comment">Header always edit Set-Cookie (.*) "$1; Secure" <IfVersion >= 2.4.7> Header setifempty Strict-Transport-Security "max-age=15768000" </IfVersion> -- GitLab From 6cdefbd90d16868a4ef9dbc4993c8f102ad2b923 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 8 Jul 2020 21:09:11 +0200 Subject: [PATCH 453/571] Update mysql-virtual_forwardings.cf.master --- install/tpl/mysql-virtual_forwardings.cf.master | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/install/tpl/mysql-virtual_forwardings.cf.master b/install/tpl/mysql-virtual_forwardings.cf.master index 7d5c2e2a47..e39b129f50 100644 --- a/install/tpl/mysql-virtual_forwardings.cf.master +++ b/install/tpl/mysql-virtual_forwardings.cf.master @@ -1,9 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_forwarding -select_field = destination -where_field = source -# additional_conditions = and type != 'aliasdomain' and active = 'y' and server_id = {server_id} -additional_conditions = and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = SELECT u.email as target FROM mail_forwarding as s INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id} -- GitLab From 85744b5e3b1d71f963641cda1dbfa9c8130cc86b Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 9 Jul 2020 16:57:59 +0200 Subject: [PATCH 454/571] client_get_id error correctly describes the condition. --- interface/lib/classes/remote.d/client.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php index 1457bf569a..57412e5e19 100644 --- a/interface/lib/classes/remote.d/client.inc.php +++ b/interface/lib/classes/remote.d/client.inc.php @@ -108,7 +108,7 @@ class remoting_client extends remoting { if(isset($rec['client_id'])) { return $app->functions->intval($rec['client_id']); } else { - throw new SoapFault('no_client_found', 'There is no sysuser account for this client ID.'); + throw new SoapFault('no_client_found', 'There is no sys_user account with this userid.'); return false; } -- GitLab From d822230b8c0a58278cc6eea2d0e7b9f9de6b7f8d Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 9 Jul 2020 21:14:55 +0200 Subject: [PATCH 455/571] Make the logged line 'finished' a bit more informative and easier to identify. --- server/cron.php | 2 +- server/cron_debug.php | 2 +- server/server.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/cron.php b/server/cron.php index ef13d06e2f..d21dcfa8ae 100644 --- a/server/cron.php +++ b/server/cron.php @@ -128,6 +128,6 @@ $app->services->processDelayedActions(); @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'); $app->log('Remove Lock: ' . $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock', LOGLEVEL_DEBUG); -if($conf['log_priority'] <= LOGLEVEL_DEBUG) die("finished.\n"); +if($conf['log_priority'] <= LOGLEVEL_DEBUG) die("finished cron run."); ?> diff --git a/server/cron_debug.php b/server/cron_debug.php index 74065f02c4..de561577c8 100644 --- a/server/cron_debug.php +++ b/server/cron_debug.php @@ -63,6 +63,6 @@ $class_name = 'cronjob_' . $name; $cronjob = new $class_name(); $cronjob->run(true); -die("finished.\n"); +die("finished cron debug.\n"); ?> diff --git a/server/server.php b/server/server.php index 106d3edc65..164451babe 100644 --- a/server/server.php +++ b/server/server.php @@ -217,5 +217,5 @@ if ($needStartCore) { $app->log('Remove Lock: ' . $conf['temppath'] . $conf['fs_div'] . '.ispconfig_lock', LOGLEVEL_DEBUG); -die("finished.\n"); +die("finished server.php.\n"); ?> -- GitLab From 62006400e54f3338298c64196e2fa40b3e30701e Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 9 Jul 2020 21:25:27 +0200 Subject: [PATCH 456/571] Remove trailing whitespace ... logged as two blank lines every minute to cron.log --- server/plugins-available/backup_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 607491216d..53b8d6d288 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -321,5 +321,5 @@ class backup_plugin { } // end class -?> +?> -- GitLab From 3b146a40df9226dadd392f6d8e3d1d82d5cca681 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 9 Jul 2020 21:26:31 +0200 Subject: [PATCH 457/571] Redirect output, otherwise ends up polluting cron.log --- server/lib/classes/cron.d/100-monitor_iptables.inc.php | 4 ++-- server/plugins-available/backup_plugin.inc.php | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_iptables.inc.php b/server/lib/classes/cron.d/100-monitor_iptables.inc.php index 1ad11d9ecc..2bf9404735 100644 --- a/server/lib/classes/cron.d/100-monitor_iptables.inc.php +++ b/server/lib/classes/cron.d/100-monitor_iptables.inc.php @@ -67,7 +67,7 @@ class cronjob_monitor_iptables extends cronjob { $type = 'iptables_rules'; /* This monitoring is only available if fail2ban is installed */ - system('which iptables', $retval); // Debian, Ubuntu, Fedora + system('which iptables > /dev/null', $retval); // Debian, Ubuntu, Fedora if ($retval === 0) { /* Get the data of the log */ $data['output'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S 2>/dev/null'); @@ -83,7 +83,7 @@ class cronjob_monitor_iptables extends cronjob { /* This monitoring is only available if fail2ban is installed */ - system('which ip6tables', $retval); // Debian, Ubuntu, Fedora + system('which ip6tables > /dev/null', $retval); // Debian, Ubuntu, Fedora if ($retval === 0) { /* Get the data of the log */ $data['output'] .= '<br><h2>ip6tables -S (ipv6)</h2>'.shell_exec('ip6tables -S 2>/dev/null'); diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 53b8d6d288..ffbc5a6b79 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -322,4 +322,3 @@ class backup_plugin { } // end class ?> - -- GitLab From 323b2d4a2495a1cbcfc5c69d8efd97c84fa344e9 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 9 Jul 2020 21:43:53 +0200 Subject: [PATCH 458/571] Cleanup old commented code --- server/lib/classes/cron.d/150-awstats.inc.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/server/lib/classes/cron.d/150-awstats.inc.php b/server/lib/classes/cron.d/150-awstats.inc.php index 4ba286ea1a..891919cb02 100644 --- a/server/lib/classes/cron.d/150-awstats.inc.php +++ b/server/lib/classes/cron.d/150-awstats.inc.php @@ -60,7 +60,6 @@ class cronjob_awstats extends cronjob { $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); foreach($records as $rec) { - //$yesterday = date('Ymd',time() - 86400); $yesterday = date('Ymd', strtotime("-1 day", time())); $log_folder = 'log'; @@ -135,9 +134,6 @@ class cronjob_awstats extends cronjob { } } - // awstats_buildstaticpages.pl -update -config=mydomain.com -lang=en -dir=/var/www/domain.com/'.$web_folder.'/stats -awstatsprog=/path/to/awstats.pl - // $command = "$awstats_buildstaticpages_pl -update -config='$domain' -lang=".$conf['language']." -dir='$statsdir' -awstatsprog='$awstats_pl'"; - $command = escapeshellcmd($awstats_buildstaticpages_pl) . ' -month=' . escapeshellarg($awmonth) . ' -year=' . escapeshellarg($awyear) . ' -update -config=' . escapeshellarg($domain) . ' -lang=' . escapeshellarg($conf['language']) . ' -dir=' . escapeshellarg($statsdir) . ' -awstatsprog=' . escapeshellarg($awstats_pl); if (date("d") == 2) { -- GitLab From 3ebca3232b2daa1f2863732dffe9bfb90d17d328 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 11:43:39 +0200 Subject: [PATCH 459/571] Refactor to use is_installed helper function --- server/lib/classes/cron.d/100-monitor_fail2ban.inc.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_fail2ban.inc.php b/server/lib/classes/cron.d/100-monitor_fail2ban.inc.php index 5c4ba80561..a25d5c7106 100644 --- a/server/lib/classes/cron.d/100-monitor_fail2ban.inc.php +++ b/server/lib/classes/cron.d/100-monitor_fail2ban.inc.php @@ -67,10 +67,8 @@ class cronjob_monitor_fail2ban extends cronjob { $type = 'log_fail2ban'; /* This monitoring is only available if fail2ban is installed */ - system('which fail2ban-client', $retval); // Debian, Ubuntu, Fedora - if ($retval !== 0) - system('which fail2ban', $retval); // CentOS - if ($retval === 0) { + if ($app->system->is_installed('fail2ban-client') // Debian, Ubuntu, Fedora + || $app->system->is_installed('fail2ban')) { // CentOS /* Get the data of the log */ $data = $this->_tools->_getLogData($type); -- GitLab From 877a0ee9ef4fee951b5ad016ae6c16291d27b103 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 12:03:33 +0200 Subject: [PATCH 460/571] Refactor to use is_installed helper function --- .../lib/classes/cron.d/100-monitor_iptables.inc.php | 6 ++---- server/lib/classes/cron.d/100-monitor_raid.inc.php | 12 ++++-------- .../lib/classes/cron.d/100-monitor_rkhunter.inc.php | 3 +-- server/lib/classes/cron.d/500-backup_mail.inc.php | 3 +-- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_iptables.inc.php b/server/lib/classes/cron.d/100-monitor_iptables.inc.php index 2bf9404735..cff0a73ac3 100644 --- a/server/lib/classes/cron.d/100-monitor_iptables.inc.php +++ b/server/lib/classes/cron.d/100-monitor_iptables.inc.php @@ -67,8 +67,7 @@ class cronjob_monitor_iptables extends cronjob { $type = 'iptables_rules'; /* This monitoring is only available if fail2ban is installed */ - system('which iptables > /dev/null', $retval); // Debian, Ubuntu, Fedora - if ($retval === 0) { + if ($app->system->is_installed('iptables')) { /* Get the data of the log */ $data['output'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S 2>/dev/null'); @@ -83,8 +82,7 @@ class cronjob_monitor_iptables extends cronjob { /* This monitoring is only available if fail2ban is installed */ - system('which ip6tables > /dev/null', $retval); // Debian, Ubuntu, Fedora - if ($retval === 0) { + if ($app->system->is_installed('ip6tables')) { /* Get the data of the log */ $data['output'] .= '<br><h2>ip6tables -S (ipv6)</h2>'.shell_exec('ip6tables -S 2>/dev/null'); 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 d1a9a53455..7148aee1c8 100644 --- a/server/lib/classes/cron.d/100-monitor_raid.inc.php +++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php @@ -126,8 +126,7 @@ class cronjob_monitor_raid extends cronjob { * Check, if we have mpt-status installed (LSIsoftware-raid) */ if (file_exists('/proc/mpt/summary')) { - system('which mpt-status', $retval); - if ($retval === 0) { + if ($app->system->is_installed('mpt-status')) { /* * Fetch the output */ @@ -174,8 +173,7 @@ class cronjob_monitor_raid extends cronjob { /* * 3ware Controller */ - system('which tw_cli', $retval); - if($retval === 0) { + if($app->system->is_installed('tw_cli')) { // TYPOWORX FIX | Determine Controler-ID $availableControlers = shell_exec('tw_cli info | grep -Eo "c[0-9]+"'); @@ -232,8 +230,7 @@ class cronjob_monitor_raid extends cronjob { /* * HP Proliant */ - system('which hpacucli', $retval); - if($retval === 0) { + if($app->system->is_installed('hpacucli')) { $state = 'ok'; $data['output'] = shell_exec('/usr/sbin/hpacucli ctrl all show config'); $tmp = explode("\n", $data['output']); @@ -298,8 +295,7 @@ class cronjob_monitor_raid extends cronjob { /* * Adaptec-RAID */ - system('which arcconf', $retval); - if($retval === 0) { + if($app->system->is_installed('arcconf')) { $state = 'ok'; $data['output'] = shell_exec('arcconf GETCONFIG 1 LD'); if(is_array($data['output'])) { 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 43071b8387..5efb9420ec 100644 --- a/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php +++ b/server/lib/classes/cron.d/100-monitor_rkhunter.inc.php @@ -67,8 +67,7 @@ class cronjob_monitor_rkhunter extends cronjob { $type = 'rkhunter'; /* This monitoring is only available if rkhunter is installed */ - system('which rkhunter', $retval); - if ($retval === 0) { + if ($app->system->is_installed('rkhunter')) { /* * Fetch the output */ 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 2b1fd58177..f631f0043c 100644 --- a/server/lib/classes/cron.d/500-backup_mail.inc.php +++ b/server/lib/classes/cron.d/500-backup_mail.inc.php @@ -78,8 +78,7 @@ class cronjob_backup_mail extends cronjob { } else { chmod($backup_dir, $backup_dir_permissions); } - system('which pigz > /dev/null', $ret); - if($ret === 0) { + if($app->system->is_installed('pigz')) { $use_pigz = true; } else { $use_pigz = false; -- GitLab From 5d0df4e50ce76b517cba0879040b540e5b2d434e Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 12:04:38 +0200 Subject: [PATCH 461/571] Refactor to use is_installed helper function --- server/lib/classes/cron.d/100-monitor_raid.inc.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 7148aee1c8..80ab29b6c3 100644 --- a/server/lib/classes/cron.d/100-monitor_raid.inc.php +++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php @@ -275,10 +275,14 @@ class cronjob_monitor_raid extends cronjob { /* * LSI MegaRaid */ - system('which megacli', $retval); - system('which megacli64', $retval64); - if($retval === 0 || $retval64 === 0) { - $binary=@($retval === 0)?'megacli':'megacli64'; + $binary = FALSE; + if ($app->system->is_installed('megacli')) { + $binary = 'megacli'; + } + if ($app->system->is_installed('megacli64')) { + $binary = 'megacli64'; + } + if($binary) { $state = 'ok'; $data['output'] = shell_exec($binary.' -LDInfo -Lall -aAll -NoLog'); if (strpos($data['output'], 'Optimal') !== false) { -- GitLab From 3b8f57584e0b9f5523cca1e064df2d0c1318b215 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 4 Jun 2020 17:47:33 -0600 Subject: [PATCH 462/571] migrate legacy postfix mysql query interface to "new" interface --- install/tpl/mysql-virtual_client.cf.master | 7 ++----- install/tpl/mysql-virtual_domains.cf.master | 7 ++----- .../tpl/mysql-virtual_email2email.cf.master | 9 ++++----- .../tpl/mysql-virtual_forwardings.cf.master | 18 +++++++++++++++++- install/tpl/mysql-virtual_gids.cf.master | 7 ++----- install/tpl/mysql-virtual_mailboxes.cf.master | 5 +---- install/tpl/mysql-virtual_outgoing_bcc.cf | 8 -------- .../tpl/mysql-virtual_outgoing_bcc.cf.master | 7 ++----- .../mysql-virtual_policy_greylist.cf.master | 3 +-- install/tpl/mysql-virtual_recipient.cf.master | 7 ++----- .../tpl/mysql-virtual_relaydomains.cf.master | 7 ++----- .../mysql-virtual_relayrecipientmaps.cf.master | 7 ++----- install/tpl/mysql-virtual_sender.cf.master | 7 ++----- .../mysql-virtual_sender_login_maps.cf.master | 2 +- install/tpl/mysql-virtual_transports.cf.master | 7 ++----- install/tpl/mysql-virtual_uids.cf.master | 5 +---- 16 files changed, 43 insertions(+), 70 deletions(-) delete mode 100644 install/tpl/mysql-virtual_outgoing_bcc.cf diff --git a/install/tpl/mysql-virtual_client.cf.master b/install/tpl/mysql-virtual_client.cf.master index bad0cb9655..106b647e4a 100644 --- a/install/tpl/mysql-virtual_client.cf.master +++ b/install/tpl/mysql-virtual_client.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_access -select_field = access -where_field = source -additional_conditions = and type = 'client' and active = 'y' -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select access from mail_access where source = '%s' and type = 'client' and active = 'y' diff --git a/install/tpl/mysql-virtual_domains.cf.master b/install/tpl/mysql-virtual_domains.cf.master index 5b711422f2..0d1793a95a 100644 --- a/install/tpl/mysql-virtual_domains.cf.master +++ b/install/tpl/mysql-virtual_domains.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_domain -select_field = domain -where_field = domain -additional_conditions = and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select domain from mail_domain where domain = '%s' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_email2email.cf.master b/install/tpl/mysql-virtual_email2email.cf.master index e18ef2407e..68d7f70ba9 100644 --- a/install/tpl/mysql-virtual_email2email.cf.master +++ b/install/tpl/mysql-virtual_email2email.cf.master @@ -1,8 +1,7 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_user -select_field = email -where_field = email -additional_conditions = and postfix = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and server_id = {server_id} + union + select cc as email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_forwardings.cf.master b/install/tpl/mysql-virtual_forwardings.cf.master index e39b129f50..818cac07bc 100644 --- a/install/tpl/mysql-virtual_forwardings.cf.master +++ b/install/tpl/mysql-virtual_forwardings.cf.master @@ -2,4 +2,20 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = SELECT u.email as target FROM mail_forwarding as s INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id} +query = SELECT u.email as target FROM mail_forwarding as s + INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) + WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id} + UNION + SELECT s.destination as target FROM mail_forwarding as s + WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id} + UNION + SELECT s.destination as target FROM mail_forwarding as s + INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) + WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} + UNION + SELECT s.destination as target FROM mail_forwarding as s + WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id} + UNION + SELECT s.destination as target FROM mail_forwarding as s + INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') + WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id} diff --git a/install/tpl/mysql-virtual_gids.cf.master b/install/tpl/mysql-virtual_gids.cf.master index 7c7d995fc9..5611b935dd 100644 --- a/install/tpl/mysql-virtual_gids.cf.master +++ b/install/tpl/mysql-virtual_gids.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_user -select_field = gid -where_field = email -additional_conditions = and postfix = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select gid from mail_user where email = '%s' and postfix = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_mailboxes.cf.master b/install/tpl/mysql-virtual_mailboxes.cf.master index 2fe47bbdf5..97825f9ffc 100644 --- a/install/tpl/mysql-virtual_mailboxes.cf.master +++ b/install/tpl/mysql-virtual_mailboxes.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_user -select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') -where_field = login -additional_conditions = and postfix = 'y' and server_id = {server_id} hosts = {mysql_server_ip} +query = select CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') from mail_user where login = '%s' and postfix = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf b/install/tpl/mysql-virtual_outgoing_bcc.cf deleted file mode 100644 index 78fca41a2f..0000000000 --- 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 = {mysql_server_ip} \ 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 53afa53106..9554847a9f 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -1,8 +1,5 @@ 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 disablesmtp = 'n' and sender_cc != '' -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select sender_cc from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != '' diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master index 55378b29ca..6ad282324e 100644 --- a/install/tpl/mysql-virtual_policy_greylist.cf.master +++ b/install/tpl/mysql-virtual_policy_greylist.cf.master @@ -1,10 +1,9 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} +hosts = {mysql_server_ip} query = SELECT 'greylisting' FROM (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules WHERE rules.greylisting = 'y' - -hosts = {mysql_server_ip} diff --git a/install/tpl/mysql-virtual_recipient.cf.master b/install/tpl/mysql-virtual_recipient.cf.master index 49024f3ebd..2099966df2 100644 --- a/install/tpl/mysql-virtual_recipient.cf.master +++ b/install/tpl/mysql-virtual_recipient.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_access -select_field = access -where_field = source -additional_conditions = and type = 'recipient' and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select access from mail_access where source = '%s' and type = 'recipient' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_relaydomains.cf.master b/install/tpl/mysql-virtual_relaydomains.cf.master index fb7bec1a3a..5ce2db6954 100644 --- a/install/tpl/mysql-virtual_relaydomains.cf.master +++ b/install/tpl/mysql-virtual_relaydomains.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_transport -select_field = domain -where_field = domain -additional_conditions = and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select domain from mail_transport where domain = '%s' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_relayrecipientmaps.cf.master b/install/tpl/mysql-virtual_relayrecipientmaps.cf.master index a6304fe323..ea67220215 100644 --- a/install/tpl/mysql-virtual_relayrecipientmaps.cf.master +++ b/install/tpl/mysql-virtual_relayrecipientmaps.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_relay_recipient -select_field = access -where_field = source -additional_conditions = and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select access from mail_relay_recipient where source = '%s' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_sender.cf.master b/install/tpl/mysql-virtual_sender.cf.master index 0ef634aec7..1a5c4cb877 100644 --- a/install/tpl/mysql-virtual_sender.cf.master +++ b/install/tpl/mysql-virtual_sender.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_access -select_field = access -where_field = source -additional_conditions = and type = 'sender' and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select access from mail_access where source = '%s' and type = 'sender' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_sender_login_maps.cf.master b/install/tpl/mysql-virtual_sender_login_maps.cf.master index 5b7f144f8c..b51bddc96d 100644 --- a/install/tpl/mysql-virtual_sender_login_maps.cf.master +++ b/install/tpl/mysql-virtual_sender_login_maps.cf.master @@ -1,5 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} +hosts = {mysql_server_ip} query = SELECT destination FROM mail_forwarding WHERE source = '%s' AND active = 'y' AND allow_send_as = 'y' AND server_id = {server_id} UNION SELECT email FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND server_id = {server_id}; -hosts = {mysql_server_ip} \ No newline at end of file diff --git a/install/tpl/mysql-virtual_transports.cf.master b/install/tpl/mysql-virtual_transports.cf.master index 048a7a81ac..e9585ca6cc 100644 --- a/install/tpl/mysql-virtual_transports.cf.master +++ b/install/tpl/mysql-virtual_transports.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_transport -select_field = transport -where_field = domain -additional_conditions = and active = 'y' and server_id = {server_id} -hosts = {mysql_server_ip} \ No newline at end of file +hosts = {mysql_server_ip} +query = select transport from mail_transport where domain = '%s' and active = 'y' and server_id = {server_id} diff --git a/install/tpl/mysql-virtual_uids.cf.master b/install/tpl/mysql-virtual_uids.cf.master index da3cd7c2a0..de35368c0a 100644 --- a/install/tpl/mysql-virtual_uids.cf.master +++ b/install/tpl/mysql-virtual_uids.cf.master @@ -1,8 +1,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} -table = mail_user -select_field = uid -where_field = email -additional_conditions = and postfix = 'y' and server_id = {server_id} hosts = {mysql_server_ip} +query = select uid from mail_user where email = '%s' and postfix = 'y' and server_id = {server_id} -- GitLab From 036575e8647a3853a6ab2d847b158a1b50b57301 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 5 Jun 2020 11:44:57 -0600 Subject: [PATCH 463/571] respect outgoing bcc for mail aliases/forwards --- install/tpl/mysql-virtual_outgoing_bcc.cf.master | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index 9554847a9f..26090bce5b 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -2,4 +2,10 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = select sender_cc from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != '' +query = SELECT sender_cc FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT u.sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} -- GitLab From 3e5ff9a0a3972a413adcd4563d5db18670b04da9 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 5 Jun 2020 14:35:18 -0600 Subject: [PATCH 464/571] mail_user.disabledeliver has a checkbox and controls if local delivery is performed. fixed #5011 --- .../tpl/mysql-virtual_email2email.cf.master | 6 ++--- .../mysql-virtual_policy_greylist.cf.master | 10 +++++--- .../mysql-virtual_sender_login_maps.cf.master | 4 +++- interface/web/mail/form/mail_user.tform.php | 6 +++++ interface/web/mail/lib/lang/ar_mail_user.lng | 6 ++++- .../web/mail/lib/lang/ar_mail_user_list.lng | 1 + interface/web/mail/lib/lang/bg_mail_user.lng | 6 ++++- .../web/mail/lib/lang/bg_mail_user_list.lng | 1 + interface/web/mail/lib/lang/br_mail_user.lng | 4 ++++ .../web/mail/lib/lang/br_mail_user_list.lng | 1 + interface/web/mail/lib/lang/ca_mail_user.lng | 4 ++++ .../web/mail/lib/lang/ca_mail_user_list.lng | 1 + interface/web/mail/lib/lang/cz_mail_user.lng | 4 ++++ .../web/mail/lib/lang/cz_mail_user_list.lng | 1 + interface/web/mail/lib/lang/de_mail_user.lng | 4 ++++ .../web/mail/lib/lang/de_mail_user_list.lng | 1 + interface/web/mail/lib/lang/dk_mail_user.lng | 4 ++++ .../web/mail/lib/lang/dk_mail_user_list.lng | 1 + interface/web/mail/lib/lang/el_mail_user.lng | 6 ++++- .../web/mail/lib/lang/el_mail_user_list.lng | 1 + interface/web/mail/lib/lang/en_mail_user.lng | 10 +++++--- .../web/mail/lib/lang/en_mail_user_list.lng | 23 ++++++++++--------- interface/web/mail/lib/lang/es_mail_user.lng | 4 ++++ .../web/mail/lib/lang/es_mail_user_list.lng | 1 + interface/web/mail/lib/lang/fi_mail_user.lng | 6 ++++- .../web/mail/lib/lang/fi_mail_user_list.lng | 1 + interface/web/mail/lib/lang/fr_mail_user.lng | 4 ++++ .../web/mail/lib/lang/fr_mail_user_list.lng | 1 + interface/web/mail/lib/lang/hr_mail_user.lng | 6 ++++- .../web/mail/lib/lang/hr_mail_user_list.lng | 1 + interface/web/mail/lib/lang/hu_mail_user.lng | 6 ++++- .../web/mail/lib/lang/hu_mail_user_list.lng | 1 + interface/web/mail/lib/lang/id_mail_user.lng | 6 ++++- .../web/mail/lib/lang/id_mail_user_list.lng | 1 + interface/web/mail/lib/lang/it_mail_user.lng | 4 ++++ .../web/mail/lib/lang/it_mail_user_list.lng | 1 + interface/web/mail/lib/lang/ja_mail_user.lng | 6 ++++- .../web/mail/lib/lang/ja_mail_user_list.lng | 1 + interface/web/mail/lib/lang/nl_mail_user.lng | 4 ++++ .../web/mail/lib/lang/nl_mail_user_list.lng | 1 + interface/web/mail/lib/lang/pl_mail_user.lng | 6 ++++- .../web/mail/lib/lang/pl_mail_user_list.lng | 1 + interface/web/mail/lib/lang/pt_mail_user.lng | 6 ++++- .../web/mail/lib/lang/pt_mail_user_list.lng | 1 + interface/web/mail/lib/lang/ro_mail_user.lng | 6 ++++- .../web/mail/lib/lang/ro_mail_user_list.lng | 1 + interface/web/mail/lib/lang/ru_mail_user.lng | 4 ++++ .../web/mail/lib/lang/ru_mail_user_list.lng | 1 + interface/web/mail/lib/lang/se_mail_user.lng | 6 ++++- .../web/mail/lib/lang/se_mail_user_list.lng | 1 + interface/web/mail/lib/lang/sk_mail_user.lng | 6 ++++- .../web/mail/lib/lang/sk_mail_user_list.lng | 1 + interface/web/mail/lib/lang/tr_mail_user.lng | 4 ++++ .../web/mail/lib/lang/tr_mail_user_list.lng | 1 + interface/web/mail/list/mail_user.list.php | 9 ++++++++ interface/web/mail/mail_user_edit.php | 4 ++-- .../web/mail/templates/mail_user_list.htm | 3 +++ .../mail/templates/mail_user_mailbox_edit.htm | 10 ++++++-- 58 files changed, 193 insertions(+), 38 deletions(-) diff --git a/install/tpl/mysql-virtual_email2email.cf.master b/install/tpl/mysql-virtual_email2email.cf.master index 68d7f70ba9..17e1cdf0bf 100644 --- a/install/tpl/mysql-virtual_email2email.cf.master +++ b/install/tpl/mysql-virtual_email2email.cf.master @@ -2,6 +2,6 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = select email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and server_id = {server_id} - union - select cc as email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'y' and server_id = {server_id} +query = SELECT email FROM mail_user WHERE email = '%s' AND postfix = 'y' AND disabledeliver = 'n' AND server_id = {server_id} + UNION + SELECT cc AS email FROM mail_user WHERE email = '%s' AND postfix = 'y' AND disabledeliver = 'y' AND server_id = {server_id} diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master index 6ad282324e..5203b1a2ea 100644 --- a/install/tpl/mysql-virtual_policy_greylist.cf.master +++ b/install/tpl/mysql-virtual_policy_greylist.cf.master @@ -3,7 +3,11 @@ password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} query = SELECT 'greylisting' FROM - (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' - UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' - UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules + ( + SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' + UNION + SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' + UNION + SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1 + ) AS rules WHERE rules.greylisting = 'y' diff --git a/install/tpl/mysql-virtual_sender_login_maps.cf.master b/install/tpl/mysql-virtual_sender_login_maps.cf.master index b51bddc96d..f97229d213 100644 --- a/install/tpl/mysql-virtual_sender_login_maps.cf.master +++ b/install/tpl/mysql-virtual_sender_login_maps.cf.master @@ -2,4 +2,6 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = SELECT destination FROM mail_forwarding WHERE source = '%s' AND active = 'y' AND allow_send_as = 'y' AND server_id = {server_id} UNION SELECT email FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND server_id = {server_id}; +query = SELECT destination FROM mail_forwarding WHERE source = '%s' AND active = 'y' AND allow_send_as = 'y' AND server_id = {server_id} + UNION + SELECT email FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND server_id = {server_id}; diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 3d1a8fde7f..19c74121f4 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -292,6 +292,12 @@ $form["tabs"]['mailuser'] = array( 'default' => 'n', 'value' => array(1 => 'y', 0 => 'n') ), + 'disabledeliver' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(1 => 'y', 0 => 'n') + ), 'disableimap' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index 9d4828b557..f5a8c82de0 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -20,6 +20,7 @@ $wb['server_id_txt'] = 'Aerver_id'; $wb['password_txt'] = 'Password'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Enable Receiving'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; @@ -56,7 +57,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/ar_mail_user_list.lng b/interface/web/mail/lib/lang/ar_mail_user_list.lng index 0bb531f785..bf905ed40a 100644 --- a/interface/web/mail/lib/lang/ar_mail_user_list.lng +++ b/interface/web/mail/lib/lang/ar_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 1b9595da42..f0b446904d 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -16,6 +16,7 @@ $wb['server_id_txt'] = 'server_id'; $wb['password_txt'] = 'парола'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Разреши получаване'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Разреши доÑтъп'; $wb['policy_txt'] = 'Спам филтър'; @@ -50,7 +51,10 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/bg_mail_user_list.lng b/interface/web/mail/lib/lang/bg_mail_user_list.lng index 9ccdb51124..f761ea4f23 100644 --- a/interface/web/mail/lib/lang/bg_mail_user_list.lng +++ b/interface/web/mail/lib/lang/bg_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'ИÑтинÑко име'; $wb['login_txt'] = 'Вход'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 2abe1931f6..3ff0114ecd 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -24,6 +24,7 @@ $wb['password_txt'] = 'Senha'; $wb['password_click_to_set_txt'] = 'Clique para configurar'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Habilitar recebimento'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Habilitar greylist'; $wb['access_txt'] = 'Habilitar acesso'; $wb['policy_txt'] = 'Filtros anti-spam'; @@ -31,6 +32,9 @@ $wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'O limite de contas de e-mail para esta conta foi alcançado.'; $wb['limit_mailquota_txt'] = 'O limite de tamanho para as contas de e-mails foi alcançado. O espaço disponÃvel em MB é'; $wb['disablesmtp_txt'] = 'Desabilitar SMTP (envio)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['disableimap_txt'] = 'Desabilitar IMAP'; $wb['disablepop3_txt'] = 'Desabilitar POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.'; diff --git a/interface/web/mail/lib/lang/br_mail_user_list.lng b/interface/web/mail/lib/lang/br_mail_user_list.lng index 3cd9c51740..01db690515 100644 --- a/interface/web/mail/lib/lang/br_mail_user_list.lng +++ b/interface/web/mail/lib/lang/br_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nome real'; $wb['login_txt'] = 'acesso'; $wb['postfix_txt'] = 'Recebendo'; $wb['disablesmtp_txt'] = 'SMTP (envio)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 08c9bc78ec..2c63fa3353 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -16,6 +16,7 @@ $wb['server_id_txt'] = 'ID Serveur'; $wb['password_txt'] = 'Mot de passe'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['access_txt'] = 'Activer l\'accès'; $wb['policy_txt'] = 'Filtre antispam'; $wb['inherit_policy'] = '- Inherit domain setting -'; @@ -48,6 +49,9 @@ $wb['repeat_password_txt'] = 'Retaper 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['disablesmtp_txt'] = 'Désactiver SMTP (envoi)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Séparer chaque adresses par une virgule)'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; diff --git a/interface/web/mail/lib/lang/ca_mail_user_list.lng b/interface/web/mail/lib/lang/ca_mail_user_list.lng index c3b79e38be..8d6ae9c30e 100644 --- a/interface/web/mail/lib/lang/ca_mail_user_list.lng +++ b/interface/web/mail/lib/lang/ca_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nom véritable'; $wb['login_txt'] = 'Nom d\'utilisateur'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index fb09f0c0a0..ca113dc74c 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -20,6 +20,7 @@ $wb['server_id_txt'] = 'Server_id'; $wb['password_txt'] = 'Heslo'; $wb['maildir_txt'] = 'E-mailový adresář'; $wb['postfix_txt'] = 'Povolit pÅ™Ãjem'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['access_txt'] = 'Povolit pÅ™Ãstup'; $wb['policy_txt'] = 'Spamový filtr'; $wb['inherit_policy'] = '- Inherit domain setting -'; @@ -50,6 +51,9 @@ $wb['password_match_txt'] = 'Hesla se shodujÃ.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.)'; $wb['disablesmtp_txt'] = 'Zakázat SMTP (pouze odesÃlánÃ)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['greylisting_txt'] = 'Povolit greylisting'; $wb['sender_cc_txt'] = 'Odeslat odchozà kopii na'; diff --git a/interface/web/mail/lib/lang/cz_mail_user_list.lng b/interface/web/mail/lib/lang/cz_mail_user_list.lng index e4e2241599..dcca69d8fe 100644 --- a/interface/web/mail/lib/lang/cz_mail_user_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'SkuteÄný název'; $wb['login_txt'] = 'PÅ™ihlášenÃ'; $wb['postfix_txt'] = 'PÅ™Ãjem'; $wb['disablesmtp_txt'] = 'SMTP (odesÃlánÃ)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index e653fbe288..61b933d73a 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -17,6 +17,7 @@ $wb['server_id_txt'] = 'Server ID'; $wb['password_txt'] = 'Passwort'; $wb['maildir_txt'] = 'E-Mail Verzeichnis'; $wb['postfix_txt'] = 'Aktiviere Empfang'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; $wb['access_txt'] = 'Aktiviere Zugriff'; $wb['policy_txt'] = 'Spamfilter'; @@ -24,6 +25,9 @@ $wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mailkonten für Ihr Konto wurde erreicht.'; $wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist'; $wb['disablesmtp_txt'] = 'SMTP (Mailversand) deaktivieren'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['disableimap_txt'] = 'IMAP deaktivieren'; $wb['disablepop3_txt'] = 'POP3 deaktivieren'; $wb['password_strength_txt'] = 'Passwortkomplexität'; diff --git a/interface/web/mail/lib/lang/de_mail_user_list.lng b/interface/web/mail/lib/lang/de_mail_user_list.lng index 5eeff280c2..255b25612f 100644 --- a/interface/web/mail/lib/lang/de_mail_user_list.lng +++ b/interface/web/mail/lib/lang/de_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Anmelden'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index 34bf076359..84b7744874 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -22,12 +22,16 @@ $wb['server_id_txt'] = 'Server ID'; $wb['password_txt'] = 'Adgangskode'; $wb['maildir_txt'] = 'Mailmappe'; $wb['postfix_txt'] = 'Aktiver modtagelse'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['access_txt'] = 'Aktiver adgang'; $wb['policy_txt'] = 'Spamfilter'; $wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Max. antal af mailbokse for din konto er nÃ¥et.'; $wb['limit_mailquota_txt'] = 'Max. plads for postkasser er nÃ¥et. Max. tilgængelig plads i MB er'; $wb['disablesmtp_txt'] = 'Deaktiver SMTP (afsending)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['disableimap_txt'] = 'Deaktiver IMAP'; $wb['disablepop3_txt'] = 'Deaktiver POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Der er allerede et alias eller forward for denne e-mail adresse.'; diff --git a/interface/web/mail/lib/lang/dk_mail_user_list.lng b/interface/web/mail/lib/lang/dk_mail_user_list.lng index ac07bb92b3..fc3afb7c46 100644 --- a/interface/web/mail/lib/lang/dk_mail_user_list.lng +++ b/interface/web/mail/lib/lang/dk_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Navn'; $wb['login_txt'] = 'Log ind'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index 76c266d591..1d15de986b 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -20,6 +20,7 @@ $wb['server_id_txt'] = 'Aerver_id'; $wb['password_txt'] = 'Συνθηματικό'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'ΕνεÏγοποίηση Λήψης'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'ΕνεÏγοποίηση Î Ïόσβασης'; $wb['policy_txt'] = 'ΦίλτÏο Spam'; @@ -48,7 +49,10 @@ $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['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; diff --git a/interface/web/mail/lib/lang/el_mail_user_list.lng b/interface/web/mail/lib/lang/el_mail_user_list.lng index 98cf9c200d..4a53225186 100644 --- a/interface/web/mail/lib/lang/el_mail_user_list.lng +++ b/interface/web/mail/lib/lang/el_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Î Ïαγματικό Όνομα'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 69ac0a00a9..7307a77379 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -23,19 +23,23 @@ $wb["server_id_txt"] = 'Aerver_id'; $wb["password_txt"] = 'Password'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb["maildir_txt"] = 'Maildir'; -$wb["postfix_txt"] = 'Enable receiving'; +$wb['postfix_txt'] = 'Enable receiving'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb["access_txt"] = 'Enable access'; $wb["policy_txt"] = 'Spamfilter'; $wb['inherit_policy'] = '- Inherit domain setting -'; $wb["limit_mailbox_txt"] = 'The max. number of mailboxes for your account is reached.'; $wb["limit_mailquota_txt"] = 'The max space for mailboxes is reached. The max. available space in MB is'; -$wb["disablesmtp_txt"] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb["disableimap_txt"] = 'Disable IMAP'; $wb["disablepop3_txt"] = 'Disable POP3'; $wb["duplicate_alias_or_forward_txt"] = 'There is already an alias or forward with this email address.'; $wb["quota_error_value"] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; -$wb["move_junk_txt"] = 'Move Spam Emails to Junk directory.'; +$wb["move_junk_txt"] = 'Move Spam Emails to Junk folder.'; $wb["name_txt"] = 'Name'; $wb["name_optional_txt"] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/en_mail_user_list.lng b/interface/web/mail/lib/lang/en_mail_user_list.lng index c7b0a43ad2..bf905ed40a 100644 --- a/interface/web/mail/lib/lang/en_mail_user_list.lng +++ b/interface/web/mail/lib/lang/en_mail_user_list.lng @@ -1,12 +1,13 @@ <?php -$wb["list_head_txt"] = 'Mailbox'; -$wb["email_txt"] = 'Email'; -$wb["autoresponder_txt"] = 'Autoresponder'; -$wb["add_new_record_txt"] = 'Add new Mailbox'; -$wb["name_txt"] = 'Realname'; -$wb["login_txt"] = 'Login'; -$wb["postfix_txt"] = 'Receiving'; -$wb["disablesmtp_txt"] = 'SMTP (sending)'; -$wb["disableimap_txt"] = 'IMAP'; -$wb["disablepop3_txt"] = 'POP3'; -?> \ No newline at end of file +$wb['list_head_txt'] = 'Mailbox'; +$wb['email_txt'] = 'Email'; +$wb['autoresponder_txt'] = 'Autoresponder'; +$wb['add_new_record_txt'] = 'Add new Mailbox'; +$wb['name_txt'] = 'Realname'; +$wb['login_txt'] = 'Login'; +$wb['postfix_txt'] = 'Receiving'; +$wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; +$wb['disableimap_txt'] = 'IMAP'; +$wb['disablepop3_txt'] = 'POP3'; +?> diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index be329c304a..f22e051031 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -22,6 +22,9 @@ $wb['daily_backup_txt'] = 'Diariamente'; $wb['disableimap_txt'] = 'Deshabilitar IMAP'; $wb['disablepop3_txt'] = 'Deshabilitar POP3'; $wb['disablesmtp_txt'] = 'Deshabilitar SMTP (envÃo)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['domain_txt'] = 'Dominio'; $wb['duplicate_alias_or_forward_txt'] = 'Ya existe un alias o reenvÃo con esta dirección de correo.'; $wb['email_error_isascii'] = 'Por favor, no use caracteres unicode especiales en su contraseña. Esto puede conllevar a errores en su cliente de correo.'; @@ -52,6 +55,7 @@ $wb['password_strength_txt'] = 'Seguridad de la contraseña'; $wb['password_txt'] = 'Contraseña'; $wb['policy_txt'] = 'Filtro de spam'; $wb['postfix_txt'] = 'Habilitar recepción'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['quota_error_isint'] = 'La cuota debe ser un número.'; $wb['quota_error_value'] = 'La cuota es inválida. Los valores permitidos son: 0 para cuota ilimitada o una cantidad superior a 1'; $wb['quota_txt'] = 'Cuota (0 para ilimitada)'; diff --git a/interface/web/mail/lib/lang/es_mail_user_list.lng b/interface/web/mail/lib/lang/es_mail_user_list.lng index 43a09d2808..19a2129307 100644 --- a/interface/web/mail/lib/lang/es_mail_user_list.lng +++ b/interface/web/mail/lib/lang/es_mail_user_list.lng @@ -4,6 +4,7 @@ $wb['autoresponder_txt'] = 'Auto respuesta'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; $wb['disablesmtp_txt'] = 'SMTP (envÃo)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['email_txt'] = 'Correo'; $wb['list_head_txt'] = 'Buzón'; $wb['login_txt'] = 'Entrar'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 45ea1d9b8b..549f4048a6 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -15,6 +15,7 @@ $wb['server_id_txt'] = 'Palvelimen tunnus'; $wb['password_txt'] = 'Salasana'; $wb['maildir_txt'] = 'Postikansio'; $wb['postfix_txt'] = 'Salli vastaanotto'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Salli yhteys'; $wb['policy_txt'] = 'Roskapostisuodatin'; @@ -56,7 +57,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/fi_mail_user_list.lng b/interface/web/mail/lib/lang/fi_mail_user_list.lng index ee3f2cec45..fefb8b0b79 100644 --- a/interface/web/mail/lib/lang/fi_mail_user_list.lng +++ b/interface/web/mail/lib/lang/fi_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Oikea nimi'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 8df58233a3..2f131cb31d 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -16,6 +16,7 @@ $wb['server_id_txt'] = 'ID Serveur'; $wb['password_txt'] = 'Mot de passe'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Activer la réception'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['access_txt'] = 'Activer l’accès'; $wb['policy_txt'] = 'Filtre antispam'; $wb['inherit_policy'] = '- Inherit domain setting -'; @@ -48,6 +49,9 @@ $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['disablesmtp_txt'] = 'Désactiver SMTP (envoi)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['email_error_isascii'] = 'Merci de ne pas utiliser de caractères spéciaux Unicode dans votre mot de passe. Ceci pourrait engendrer des problèmes avec votre client mail.'; $wb['cc_note_txt'] = '(Séparer les adresses e-mail multiples par des virgules)'; $wb['autoresponder_start_date_is_required'] = 'Une date de démarrage doit être renseignée quand le répondeur automatique est activé.'; diff --git a/interface/web/mail/lib/lang/fr_mail_user_list.lng b/interface/web/mail/lib/lang/fr_mail_user_list.lng index 0d4152913a..79e999b639 100644 --- a/interface/web/mail/lib/lang/fr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/fr_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nom véritable'; $wb['login_txt'] = 'Nom d’utilisateur'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 170aaa6b61..8885a212f4 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -20,6 +20,7 @@ $wb['password_txt'] = 'Å ifra'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Enable Receiving'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; @@ -53,7 +54,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/hr_mail_user_list.lng b/interface/web/mail/lib/lang/hr_mail_user_list.lng index 498570c344..1c27b725d3 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Ime'; $wb['login_txt'] = 'Prijava'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 65962cd21c..22ccb86b73 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -16,6 +16,7 @@ $wb['password_txt'] = 'Jelszó'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'levelezÅ‘láda'; $wb['postfix_txt'] = 'BejövÅ‘ engedélyezés'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Hozzáférés engelyezés'; $wb['policy_txt'] = 'Spam szűrÅ‘'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/hu_mail_user_list.lng b/interface/web/mail/lib/lang/hu_mail_user_list.lng index 8bf44e936c..7f1ec6265b 100644 --- a/interface/web/mail/lib/lang/hu_mail_user_list.lng +++ b/interface/web/mail/lib/lang/hu_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Név'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 3bedbd9b93..f7aef165be 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -21,6 +21,7 @@ $wb['password_txt'] = 'Kata Sandi'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Dapat Menerima'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Dapat Mengakses'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/id_mail_user_list.lng b/interface/web/mail/lib/lang/id_mail_user_list.lng index 49a2afe943..3127853a0e 100644 --- a/interface/web/mail/lib/lang/id_mail_user_list.lng +++ b/interface/web/mail/lib/lang/id_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nama Lengkap'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index a1a0f8cfd5..0fd610c22e 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'password'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Abilita ricezione'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['access_txt'] = 'Abilita indirizzo'; $wb['policy_txt'] = 'Spamfilter'; $wb['inherit_policy'] = '- Inherit domain setting -'; @@ -51,6 +52,9 @@ $wb['password_match_txt'] = 'Le passwords coincidono.'; $wb['email_error_isascii'] = 'Non utilizzare caratteri speciali unicode per la password. Potresti avere problemi con il tuo client di psota.'; $wb['cc_note_txt'] = '(Separa indirizzi email multipli con la virgola)'; $wb['disablesmtp_txt'] = 'Disabilita SMTP (trasmissione)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; diff --git a/interface/web/mail/lib/lang/it_mail_user_list.lng b/interface/web/mail/lib/lang/it_mail_user_list.lng index 098cb1a162..87038b875e 100644 --- a/interface/web/mail/lib/lang/it_mail_user_list.lng +++ b/interface/web/mail/lib/lang/it_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nome reale'; $wb['login_txt'] = 'Accedi'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index b58b9d13dd..55c48abe03 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'パスワード'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'メールディレクトリ'; $wb['postfix_txt'] = 'メールをå—ä¿¡ã™ã‚‹'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'アクセスを許å¯ã™ã‚‹'; $wb['policy_txt'] = 'スパムフィルター'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/ja_mail_user_list.lng b/interface/web/mail/lib/lang/ja_mail_user_list.lng index 0bb531f785..bf905ed40a 100644 --- a/interface/web/mail/lib/lang/ja_mail_user_list.lng +++ b/interface/web/mail/lib/lang/ja_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 9a644a129b..d66c64a9b6 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -20,6 +20,7 @@ $wb['password_txt'] = 'Wachtwoord'; $wb['password_click_to_set_txt'] = 'Klik om in te stellen'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Ontvangen inschakelen'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Greylisting inschakelen'; $wb['access_txt'] = 'Toegang inschakelen'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,6 +58,9 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; diff --git a/interface/web/mail/lib/lang/nl_mail_user_list.lng b/interface/web/mail/lib/lang/nl_mail_user_list.lng index 39125af2e0..da872b2c28 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_list.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Echte naam'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Ontvangen'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 593f83531e..91b33eb06f 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'HasÅ‚o'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Zezwól na odbiór poczty'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Możliwy dostÄ™p'; $wb['policy_txt'] = 'Filtr spamu'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/pl_mail_user_list.lng b/interface/web/mail/lib/lang/pl_mail_user_list.lng index 74ca840e30..f839a56720 100644 --- a/interface/web/mail/lib/lang/pl_mail_user_list.lng +++ b/interface/web/mail/lib/lang/pl_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Nazwa rzeczywista'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 0b7ffe3d37..edbe7f9522 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'Senha'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Permitir Recepção'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Permitir Acesso'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/pt_mail_user_list.lng b/interface/web/mail/lib/lang/pt_mail_user_list.lng index fe89939e2b..9f19168fba 100644 --- a/interface/web/mail/lib/lang/pt_mail_user_list.lng +++ b/interface/web/mail/lib/lang/pt_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 97dfdafd88..b9de9b56f9 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'Password'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Maildir'; $wb['postfix_txt'] = 'Enable Receiving'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Enable Access'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/ro_mail_user_list.lng b/interface/web/mail/lib/lang/ro_mail_user_list.lng index f55f8647a8..3eda064b75 100644 --- a/interface/web/mail/lib/lang/ro_mail_user_list.lng +++ b/interface/web/mail/lib/lang/ro_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 07bab6fd4f..ae6b06c084 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -16,6 +16,7 @@ $wb['password_txt'] = 'Пароль'; $wb['password_click_to_set_txt'] = 'Клик Ð´Ð»Ñ ÑƒÑтановки'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Разрешить получение'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Включить Ñерый ÑпиÑок (Greylisting)'; $wb['access_txt'] = 'Включить доÑтуп'; $wb['policy_txt'] = 'Спам-фильтр'; @@ -58,6 +59,9 @@ $wb['monthly_backup_txt'] = 'ЕжемеÑÑчно'; $wb['email_error_isascii'] = 'ПожалуйÑта, не иÑпользуйте Ñпециальные Ñимволы Юникода Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ паролÑ. Ðто может привеÑти к проблемам Ñ Ð²Ð°ÑˆÐ¸Ð¼ почтовым клиентом.'; $wb['cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; $wb['disablesmtp_txt'] = 'Отключить SMTP (отправка)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Дата начала должна быть уÑтановлена когда автоответчик включен.'; $wb['sender_cc_txt'] = 'Отправка иÑходÑщей копии на'; $wb['sender_cc_error_isemail'] = 'Поле -Отправка иÑходÑщей копии на- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; diff --git a/interface/web/mail/lib/lang/ru_mail_user_list.lng b/interface/web/mail/lib/lang/ru_mail_user_list.lng index 7dad47a416..d323d34750 100644 --- a/interface/web/mail/lib/lang/ru_mail_user_list.lng +++ b/interface/web/mail/lib/lang/ru_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Реальное имÑ'; $wb['login_txt'] = 'Логин'; $wb['postfix_txt'] = 'Получатель'; $wb['disablesmtp_txt'] = 'SMTP (отправка)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index da0282e118..26787d2a87 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'lösenord'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'maildir'; $wb['postfix_txt'] = 'Aktivera mottagning'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'Aktivera Ã¥tkomst'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/se_mail_user_list.lng b/interface/web/mail/lib/lang/se_mail_user_list.lng index 65c724c292..4f6a7305d6 100644 --- a/interface/web/mail/lib/lang/se_mail_user_list.lng +++ b/interface/web/mail/lib/lang/se_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Riktigt namn'; $wb['login_txt'] = 'Logga in'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index d9a68404ae..176e879a90 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -17,6 +17,7 @@ $wb['password_txt'] = 'Heslo'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['maildir_txt'] = 'Mailová záložka'; $wb['postfix_txt'] = 'PovoliÅ¥ prÃjem'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['access_txt'] = 'PovoliÅ¥ PrÃstup'; $wb['policy_txt'] = 'Spamfilter'; @@ -57,7 +58,10 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; +$wb['disablesmtp_txt'] = 'Disable sending'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/sk_mail_user_list.lng b/interface/web/mail/lib/lang/sk_mail_user_list.lng index 3d18ad41f6..3a341f0967 100644 --- a/interface/web/mail/lib/lang/sk_mail_user_list.lng +++ b/interface/web/mail/lib/lang/sk_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Realname'; $wb['login_txt'] = 'Login'; $wb['postfix_txt'] = 'Receiving'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 9e964e5e8a..39939b4e19 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -24,6 +24,7 @@ $wb['password_txt'] = 'Parola'; $wb['password_click_to_set_txt'] = 'Ayarlamak için tıklayın'; $wb['maildir_txt'] = 'E-posta Klasörü'; $wb['postfix_txt'] = 'Alım Etkin'; +$wb['tooltip_postfix_txt'] = 'Allows incoming mail to this address.'; $wb['greylisting_txt'] = 'Gri Liste Kullanılsın'; $wb['access_txt'] = 'EriÅŸim Etkin'; $wb['policy_txt'] = 'Önemsiz Ä°leti Süzgeci'; @@ -31,6 +32,9 @@ $wb['inherit_policy'] = '- Inherit domain setting -'; $wb['limit_mailbox_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta kutusu sayısına ulaÅŸtınız.'; $wb['limit_mailquota_txt'] = 'E-posta kutularınız için kullanabileceÄŸiniz en fazla boyuta ulaÅŸtınız. Kullanılabilecek alan MB:'; $wb['disablesmtp_txt'] = 'SMTP Kullanılmasın (gönderim)'; +$wb['tooltip_disablesmtp_txt'] = 'Disables mail submission from this mail account.'; +$wb['disabledeliver_txt'] = 'Disable (local) delivering'; +$wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing by mail filters and sieve scripts. Mail forwards to \'Send copy to\' address.'; $wb['disableimap_txt'] = 'IMAP Kullanılmasın'; $wb['disablepop3_txt'] = 'POP3 Kullanılmasın'; $wb['duplicate_alias_or_forward_txt'] = 'Bu e-posta adresi zaten takma ya da yönlendirilmiÅŸ.'; diff --git a/interface/web/mail/lib/lang/tr_mail_user_list.lng b/interface/web/mail/lib/lang/tr_mail_user_list.lng index 66d33becae..3137af8928 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_list.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_list.lng @@ -7,6 +7,7 @@ $wb['name_txt'] = 'Gerçek Ad'; $wb['login_txt'] = 'Oturum Aç'; $wb['postfix_txt'] = 'Alınıyor'; $wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['disabledeliver_txt'] = 'INBOX'; $wb['disableimap_txt'] = 'IMAP'; $wb['disablepop3_txt'] = 'POP3'; ?> diff --git a/interface/web/mail/list/mail_user.list.php b/interface/web/mail/list/mail_user.list.php index 4513a516c9..3e020ea603 100644 --- a/interface/web/mail/list/mail_user.list.php +++ b/interface/web/mail/list/mail_user.list.php @@ -107,6 +107,15 @@ $liste["item"][] = array( 'field' => "disablesmtp", 'width' => "", 'value' => array('n' => $app->lng('yes_txt'), 'y' => $app->lng('no_txt'))); +$liste["item"][] = array( 'field' => "disabledeliver", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('n' => $app->lng('yes_txt'), 'y' => $app->lng('no_txt'))); + $liste["item"][] = array( 'field' => "disableimap", 'datatype' => "VARCHAR", 'formtype' => "SELECT", diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index 83a02e0ed2..1dca1db848 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -310,8 +310,8 @@ class page_action extends tform_actions { if(isset($this->dataRecord["email"])) { $disableimap = ($this->dataRecord["disableimap"])?'y':'n'; $disablepop3 = ($this->dataRecord["disablepop3"])?'y':'n'; - $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = ($this->dataRecord["disablesmtp"])?'y':'n'; + $disabledeliver = ($this->dataRecord["disabledeliver"])?'y':'n'; $app->db->query($sql, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $this->id); $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; @@ -363,8 +363,8 @@ class page_action extends tform_actions { if(isset($this->dataRecord["email"])) { $disableimap = (isset($this->dataRecord["disableimap"]) && $this->dataRecord["disableimap"])?'y':'n'; $disablepop3 = (isset($this->dataRecord["disablepop3"]) && $this->dataRecord["disablepop3"])?'y':'n'; - $disabledeliver = ($this->dataRecord["postfix"] == 'y')?'n':'y'; $disablesmtp = (isset($this->dataRecord["disablesmtp"]) && $this->dataRecord["disablesmtp"])?'y':'n'; + $disabledeliver = (isset($this->dataRecord["disabledeliver"]) && $this->dataRecord["disabledeliver"])?'y':'n'; $sql = "UPDATE mail_user SET disableimap = ?, disablesieve = ?, `disablesieve-filter` = ?, disablepop3 = ?, disablesmtp = ?, disabledeliver = ?, disablelda = ?, disablelmtp = ? WHERE mailuser_id = ?"; $app->db->query($sql, $disableimap, $disableimap, $disableimap, $disablepop3, $disablesmtp, $disabledeliver, $disabledeliver, $disabledeliver, $this->id); diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm index 6d800de57e..6cd5961fcc 100644 --- a/interface/web/mail/templates/mail_user_list.htm +++ b/interface/web/mail/templates/mail_user_list.htm @@ -38,6 +38,7 @@ <th class="tiny-col" data-column="autoresponder"><tmpl_var name="autoresponder_txt"></th> <th class="tiny-col" data-column="postfix"><tmpl_var name="postfix_txt"></th> <th class="tiny-col" data-column="disablesmtp"><tmpl_var name="disablesmtp_txt"></th> + <th class="tiny-col" data-column="disabledeliver"><tmpl_var name="disabledeliver_txt"></th> <th class="tiny-col" data-column="disableimap"><tmpl_var name="disableimap_txt"></th> <th class="tiny-col" data-column="disablepop3"><tmpl_var name="disablepop3_txt"></th> <th class="small-col text-right">{tmpl_var name='search_limit'}</th> @@ -49,6 +50,7 @@ <td><select class="form-control" name="search_autoresponder">{tmpl_var name='search_autoresponder'}</select></td> <td><select class="form-control" name="search_postfix">{tmpl_var name='search_postfix'}</select></td> <td><select class="form-control" name="search_disablesmtp">{tmpl_var name='search_disablesmtp'}</select></td> + <td><select class="form-control" name="search_disabledeliver">{tmpl_var name='search_disabledeliver'}</select></td> <td><select class="form-control" name="search_disableimap">{tmpl_var name='search_disableimap'}</select></td> <td><select class="form-control" name="search_disablepop3">{tmpl_var name='search_disablepop3'}</select></td> <td class="text-right"> @@ -69,6 +71,7 @@ <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="autoresponder"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="postfix"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="disablesmtp"}</a></td> + <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="disabledeliver"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="disableimap"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="disablepop3"}</a></td> <td class="text-right"> diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm index a90799cf11..c53bc85292 100644 --- a/interface/web/mail/templates/mail_user_mailbox_edit.htm +++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm @@ -67,13 +67,19 @@ <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='postfix_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='postfix'} + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_postfix_txt'}">{tmpl_var name='postfix'}</a> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='disablesmtp_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='disablesmtp'} + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_disablesmtp_txt'}">{tmpl_var name='disablesmtp'}</a> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='disabledeliver_txt'}</label> + <div class="col-sm-9"> + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_disabledeliver_txt'}">{tmpl_var name='disabledeliver'}</a> </div> </div> <div class="form-group"> -- GitLab From 4339dba0f7b6b8b800bceb977ec64985c5556234 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 9 Jul 2020 12:53:52 -0600 Subject: [PATCH 465/571] split multiple sender_cc addrs on comma --- .../tpl/mysql-virtual_outgoing_bcc.cf.master | 118 +++++++++++++++++- 1 file changed, 112 insertions(+), 6 deletions(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index 26090bce5b..a46835c235 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -2,10 +2,116 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = SELECT sender_cc FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} +query = SELECT sender_cc FROM ( + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + SUBSTRING_INDEX(sender_cc, ',', 1) AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 2), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 2, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 3), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 3, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 4), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 4, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 5), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 5, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 6), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 6, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 7), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 7, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 8), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 8, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 9), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 9, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 10), ',', -1), '') AS sender_cc + FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} + ) table1 WHERE sender_cc != '' UNION - SELECT u.sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + SELECT sender_cc FROM ( + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + SUBSTRING_INDEX(u.sender_cc, ',', 1) AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 2), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 2, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 3), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 3, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 4), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 4, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 5), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 5, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 6), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 6, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 7), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 7, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 8), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 8, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 9), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + UNION + SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, + IF(@num_sender_cc > 9, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 10), ',', -1), '') AS sender_cc + FROM mail_user u, mail_forwarding f + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} + AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} + ) table2 WHERE sender_cc != '' -- GitLab From f8cc822f5cdcbbf46f2bfd15fa274537c5e710f6 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 9 Jul 2020 16:18:03 -0600 Subject: [PATCH 466/571] sender_cc should only have one email address. fixes #5298 --- .../tpl/mysql-virtual_outgoing_bcc.cf.master | 105 +----------------- interface/web/mail/form/mail_user.tform.php | 6 +- interface/web/mail/lib/lang/ar_mail_user.lng | 2 +- interface/web/mail/lib/lang/bg_mail_user.lng | 2 +- interface/web/mail/lib/lang/br_mail_user.lng | 2 +- interface/web/mail/lib/lang/ca_mail_user.lng | 2 +- interface/web/mail/lib/lang/cz_mail_user.lng | 2 +- interface/web/mail/lib/lang/de_mail_user.lng | 2 +- interface/web/mail/lib/lang/dk_mail_user.lng | 2 +- interface/web/mail/lib/lang/el_mail_user.lng | 2 +- interface/web/mail/lib/lang/en_mail_user.lng | 2 +- interface/web/mail/lib/lang/es_mail_user.lng | 2 +- interface/web/mail/lib/lang/fi_mail_user.lng | 2 +- interface/web/mail/lib/lang/fr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hr_mail_user.lng | 2 +- interface/web/mail/lib/lang/hu_mail_user.lng | 2 +- interface/web/mail/lib/lang/id_mail_user.lng | 2 +- interface/web/mail/lib/lang/it_mail_user.lng | 2 +- interface/web/mail/lib/lang/ja_mail_user.lng | 2 +- interface/web/mail/lib/lang/nl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pl_mail_user.lng | 2 +- interface/web/mail/lib/lang/pt_mail_user.lng | 2 +- interface/web/mail/lib/lang/ro_mail_user.lng | 2 +- interface/web/mail/lib/lang/ru_mail_user.lng | 2 +- interface/web/mail/lib/lang/se_mail_user.lng | 2 +- interface/web/mail/lib/lang/sk_mail_user.lng | 2 +- interface/web/mail/lib/lang/tr_mail_user.lng | 2 +- 27 files changed, 30 insertions(+), 131 deletions(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index a46835c235..bea39f8451 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -7,111 +7,10 @@ query = SELECT sender_cc FROM ( SUBSTRING_INDEX(sender_cc, ',', 1) AS sender_cc FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 2), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 2, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 3), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 3, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 4), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 4, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 5), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 5, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 6), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 6, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 7), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 7, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 8), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 8, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 9), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 9, SUBSTRING_INDEX(SUBSTRING_INDEX(sender_cc, ',', 10), ',', -1), '') AS sender_cc - FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} - ) table1 WHERE sender_cc != '' - UNION - SELECT sender_cc FROM ( SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, SUBSTRING_INDEX(u.sender_cc, ',', 1) AS sender_cc FROM mail_user u, mail_forwarding f WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 2), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 2, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 3), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 3, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 4), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 4, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 5), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 5, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 6), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 6, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 7), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 7, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 8), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 8, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 9), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - IF(@num_sender_cc > 9, SUBSTRING_INDEX(SUBSTRING_INDEX(u.sender_cc, ',', 10), ',', -1), '') AS sender_cc - FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) - AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} - AND f.source = '%s' AND f.active = 'y' AND f.allow_send_as = 'y' AND f.server_id = {server_id} - ) table2 WHERE sender_cc != '' + AND f.source = '%s' AND f.allow_send_as = 'y' AND f.active = 'y' AND f.server_id = {server_id} + ) table1 WHERE sender_cc != '' LIMIT 1 diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 19c74121f4..9a5f1889d8 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -199,14 +199,14 @@ $form["tabs"]['mailuser'] = array( 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') ), - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex'=>'/^(\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,1}(,\s*\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\.[a-z\-]{2,63}){0,}$/i', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', 'errmsg'=> 'sender_cc_error_isemail'), ), 'default' => '', 'value' => '', 'width' => '30', - 'maxlength' => '255' + 'maxlength' => '255', + 'searchable' => 2 ), 'maildir' => array ( 'datatype' => 'VARCHAR', diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index f5a8c82de0..532386d411 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -64,7 +64,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index f0b446904d..b90a53498c 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -64,7 +64,7 @@ $wb['no_backup_txt'] = 'No backup'; $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 3ff0114ecd..01a2d6a086 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -65,7 +65,7 @@ $wb['weekly_backup_txt'] = 'Semanal'; $wb['monthly_backup_txt'] = 'Mensal'; $wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.'; $wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; -$wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 2c63fa3353..247c061897 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -64,7 +64,7 @@ $wb['no_backup_txt'] = 'No backup'; $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index ca113dc74c..db31f402d9 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -64,7 +64,7 @@ $wb['no_backup_txt'] = 'Žádná záloha'; $wb['daily_backup_txt'] = 'DennÃ'; $wb['weekly_backup_txt'] = 'TýdennÃ'; $wb['monthly_backup_txt'] = 'MÄ›sÃÄnÃ'; -$wb['sender_cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.) '; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Pro nastavenà klikni zde'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index 61b933d73a..a0975a18ff 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -64,7 +64,7 @@ $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; $wb['autoresponder_start_date_is_required'] = 'Startdatum muss angegeben werden.'; $wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)'; $wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse'; -$wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index 84b7744874..e467053890 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -65,7 +65,7 @@ $wb['no_backup_txt'] = 'No backup'; $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index 1d15de986b..1fefb9de62 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -64,7 +64,7 @@ $wb['no_backup_txt'] = 'No backup'; $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 7307a77379..33bd19b45d 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -65,7 +65,7 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index f22e051031..97404c9451 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -61,7 +61,7 @@ $wb['quota_error_value'] = 'La cuota es inválida. Los valores permitidos son: 0 $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_note_txt'] = '(One email address only)'; $wb['sender_cc_txt'] = 'Enviar copia saliente a'; $wb['server_id_txt'] = 'id_del_servidor'; $wb['weekly_backup_txt'] = 'Semanalmente'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 549f4048a6..6893273b9c 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -64,7 +64,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 2f131cb31d..dad892c470 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -64,7 +64,7 @@ $wb['no_backup_txt'] = 'Pas de backup'; $wb['daily_backup_txt'] = 'Journalier'; $wb['weekly_backup_txt'] = 'Hebdomadaire'; $wb['monthly_backup_txt'] = 'Mensuel'; -$wb['sender_cc_note_txt'] = '(Séparer les adresses e-mail multiples par des virgules)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['password_click_to_set_txt'] = 'Cliquez pour définir'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 8885a212f4..6d2907a1e2 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -65,7 +65,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['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 22ccb86b73..283a1eb209 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index f7aef165be..b0b7ef8770 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index 0fd610c22e..94625205da 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -65,7 +65,7 @@ $wb['no_backup_txt'] = 'No backup'; $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 55c48abe03..332a500754 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index d66c64a9b6..9b260d7391 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -64,7 +64,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; -$wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 91b33eb06f..c4d458705f 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index edbe7f9522..ac20e53696 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index b9de9b56f9..c623744635 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index ae6b06c084..ad2b4b5e7b 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Дата начала должна быть уÑтановлена когда автоответчик включен.'; $wb['sender_cc_txt'] = 'Отправка иÑходÑщей копии на'; $wb['sender_cc_error_isemail'] = 'Поле -Отправка иÑходÑщей копии на- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; -$wb['sender_cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index 26787d2a87..e540533a61 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 176e879a90..8cd4614783 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -65,7 +65,7 @@ $wb['tooltip_disabledeliver_txt'] = 'Disables delivery to INBOX, and processing $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; -$wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 39939b4e19..6cac8790ca 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -65,7 +65,7 @@ $wb['weekly_backup_txt'] = 'Haftalık'; $wb['monthly_backup_txt'] = 'Aylık'; $wb['email_error_isascii'] = 'E-posta istemcinizde sorun yaÅŸamamak için lütfen parolanızda dile özel unikod karakterler kullanmayın.'; $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; -$wb['sender_cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; +$wb['sender_cc_note_txt'] = '(One email address only)'; $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days'; $wb['tooltip_purge_trash_days_txt'] = '0 = disabled'; $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days'; -- GitLab From 51671568345be6cd608d1fd0498db08746e33649 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 20:15:45 +0200 Subject: [PATCH 467/571] Avoid a fatal error when the dir does not exist --- server/lib/classes/backup.inc.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index f996340bd5..ba28cd4c90 100644 --- a/server/lib/classes/backup.inc.php +++ b/server/lib/classes/backup.inc.php @@ -856,6 +856,10 @@ class backup if (is_null($endings_list)) $endings_list = $default_endings_list; + if (!is_dir($directory)) { + return array(); + } + $dir_handle = dir($directory); $files = array(); while (false !== ($entry = $dir_handle->read())) { -- GitLab From 193295929b4b449443587e944fe245429bed95c5 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 12 Mar 2020 16:35:17 +0100 Subject: [PATCH 468/571] Add Username field to datalog view --- interface/web/monitor/dataloghistory_view.php | 1 + interface/web/monitor/lib/lang/en_dataloghistory_view.lng | 1 + interface/web/monitor/templates/dataloghistory_view.htm | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/interface/web/monitor/dataloghistory_view.php b/interface/web/monitor/dataloghistory_view.php index 2b5ea1e032..f956591969 100644 --- a/interface/web/monitor/dataloghistory_view.php +++ b/interface/web/monitor/dataloghistory_view.php @@ -50,6 +50,7 @@ $id = intval($_GET['id']); $record = $app->db->queryOneRecord('SELECT * FROM sys_datalog WHERE datalog_id = ?', $id); $out['id'] = $id; +$out['username'] = $record['user']; $out['timestamp'] = date($app->lng('conf_format_datetime'), $record['tstamp']); $out['table'] = $record['dbtable']; diff --git a/interface/web/monitor/lib/lang/en_dataloghistory_view.lng b/interface/web/monitor/lib/lang/en_dataloghistory_view.lng index df9ddd286f..3d5d6829ae 100644 --- a/interface/web/monitor/lib/lang/en_dataloghistory_view.lng +++ b/interface/web/monitor/lib/lang/en_dataloghistory_view.lng @@ -23,4 +23,5 @@ $wb['new_txt'] = 'New'; $wb['btn_cancel_txt'] = 'Back'; $wb['undo_txt'] = 'Undo action'; $wb['undo_confirmation_txt'] = 'Do you really want to undo this action?'; +$wb['username_txt'] = 'Username'; ?> diff --git a/interface/web/monitor/templates/dataloghistory_view.htm b/interface/web/monitor/templates/dataloghistory_view.htm index 4ba82bbf05..1e0feda9c6 100644 --- a/interface/web/monitor/templates/dataloghistory_view.htm +++ b/interface/web/monitor/templates/dataloghistory_view.htm @@ -12,6 +12,10 @@ </tr> </thead> <tbody> + <tr> + <td><tmpl_var name="username_txt"></td> + <td><tmpl_var name="username"></td> + </tr> <tr> <td><tmpl_var name="timestamp_txt"></td> <td><tmpl_var name="timestamp"></td> -- GitLab From 0ab69a8a017086d958ad7274f78025ff2c887086 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 12 Mar 2020 20:29:29 +0100 Subject: [PATCH 469/571] Draft link to modified record --- interface/web/monitor/dataloghistory_view.php | 10 ++++++++++ .../web/monitor/templates/dataloghistory_view.htm | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/web/monitor/dataloghistory_view.php b/interface/web/monitor/dataloghistory_view.php index f956591969..5c2043d63f 100644 --- a/interface/web/monitor/dataloghistory_view.php +++ b/interface/web/monitor/dataloghistory_view.php @@ -54,6 +54,16 @@ $out['username'] = $record['user']; $out['timestamp'] = date($app->lng('conf_format_datetime'), $record['tstamp']); $out['table'] = $record['dbtable']; +list($key, $value) = explode(':', $record['dbidx']); +if (!empty($value)) { + if ($record['action'] == 'd') { + // No link for deleted content. + $out['table_id'] = $record['dbidx']; + } else { + // TODO link per content type + $out['table_id'] = '<a href="#" data-load-content="mail/mail_user_edit.php?id=' . $value .'" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="link">'.$record['dbidx'].'</a>'; + } +} $out['action_char'] = $record['action']; $out['action_name'] = $app->lng($record['action']); diff --git a/interface/web/monitor/templates/dataloghistory_view.htm b/interface/web/monitor/templates/dataloghistory_view.htm index 1e0feda9c6..3e61e4cf6d 100644 --- a/interface/web/monitor/templates/dataloghistory_view.htm +++ b/interface/web/monitor/templates/dataloghistory_view.htm @@ -22,7 +22,7 @@ </tr> <tr> <td><tmpl_var name="table_txt"></td> - <td><tmpl_var name="table"></td> + <td><tmpl_var name="table"> (<tmpl_var name="table_id">)</td> </tr> <tr> <td><tmpl_var name="action_txt"></td> -- GitLab From 72c9b5b91e689e6cc6f2d5138fc405ab506ee07f Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 12 Mar 2020 20:40:52 +0100 Subject: [PATCH 470/571] Add a few types --- interface/web/monitor/dataloghistory_view.php | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/interface/web/monitor/dataloghistory_view.php b/interface/web/monitor/dataloghistory_view.php index 5c2043d63f..2e3d3bd2f9 100644 --- a/interface/web/monitor/dataloghistory_view.php +++ b/interface/web/monitor/dataloghistory_view.php @@ -56,13 +56,26 @@ $out['timestamp'] = date($app->lng('conf_format_datetime'), $record['tstamp']); $out['table'] = $record['dbtable']; list($key, $value) = explode(':', $record['dbidx']); if (!empty($value)) { - if ($record['action'] == 'd') { - // No link for deleted content. - $out['table_id'] = $record['dbidx']; - } else { - // TODO link per content type - $out['table_id'] = '<a href="#" data-load-content="mail/mail_user_edit.php?id=' . $value .'" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="link">'.$record['dbidx'].'</a>'; - } + if ($record['action'] == 'd') { + // No link for deleted content. + $out['table_id'] = $record['dbidx']; + } else { + switch ($out['table']) { + case 'mail_forwarding': + $file = 'mail/mail_forward_edit.php'; + break; + case 'mail_user': + $file = 'mail/mail_user_edit.php'; + break; + case 'mail_domain': + $file = 'mail/mail_domain_edit.php'; + break; + default: + $file = ''; + } + // TODO link per content type + $out['table_id'] = '<a href="#" data-load-content="' . $file . '?id=' . $value .'" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="link">'.$record['dbidx'] . $file .'</a>'; + } } $out['action_char'] = $record['action']; -- GitLab From 9441fb35c9a25799468d8c8b5b800593cd5cceb4 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 21:40:32 +0200 Subject: [PATCH 471/571] Add a few types and tab indent --- interface/web/monitor/dataloghistory_view.php | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/interface/web/monitor/dataloghistory_view.php b/interface/web/monitor/dataloghistory_view.php index 2e3d3bd2f9..b86334b0af 100644 --- a/interface/web/monitor/dataloghistory_view.php +++ b/interface/web/monitor/dataloghistory_view.php @@ -56,26 +56,41 @@ $out['timestamp'] = date($app->lng('conf_format_datetime'), $record['tstamp']); $out['table'] = $record['dbtable']; list($key, $value) = explode(':', $record['dbidx']); if (!empty($value)) { - if ($record['action'] == 'd') { - // No link for deleted content. - $out['table_id'] = $record['dbidx']; - } else { - switch ($out['table']) { - case 'mail_forwarding': - $file = 'mail/mail_forward_edit.php'; - break; - case 'mail_user': - $file = 'mail/mail_user_edit.php'; - break; - case 'mail_domain': - $file = 'mail/mail_domain_edit.php'; - break; - default: - $file = ''; - } - // TODO link per content type - $out['table_id'] = '<a href="#" data-load-content="' . $file . '?id=' . $value .'" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="link">'.$record['dbidx'] . $file .'</a>'; - } + if ($record['action'] == 'd') { + // No link for deleted content. + $out['table_id'] = $record['dbidx']; + } else { + switch ($out['table']) { + case 'mail_forwarding': + $file = 'mail/mail_forward_edit.php'; + break; + case 'mail_user': + $file = 'mail/mail_user_edit.php'; + break; + case 'mail_domain': + $file = 'mail/mail_domain_edit.php'; + break; + case 'web_domain': + $file = 'sites/web_vhost_domain_edit.php'; + break; + case 'web_database': + $file = 'sites/database_edit.php'; + break; + case 'web_database_user': + $file = 'sites/database_user_edit.php'; + break; + + // TODO Add a link per content type + default: + $file = ''; + } + + if (!empty($file)) { + $out['table_id'] = '<a href="#" data-load-content="' . $file . '?id=' . $value + . '" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="link">' + . $record['dbidx'] . '</a>'; + } + } } $out['action_char'] = $record['action']; -- GitLab From c9466db4d39d1b1fc163f3da41aea19c3ea6c4c3 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 21:40:51 +0200 Subject: [PATCH 472/571] Skip if empty --- interface/web/monitor/templates/dataloghistory_view.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/monitor/templates/dataloghistory_view.htm b/interface/web/monitor/templates/dataloghistory_view.htm index 3e61e4cf6d..d02953ede9 100644 --- a/interface/web/monitor/templates/dataloghistory_view.htm +++ b/interface/web/monitor/templates/dataloghistory_view.htm @@ -22,7 +22,7 @@ </tr> <tr> <td><tmpl_var name="table_txt"></td> - <td><tmpl_var name="table"> (<tmpl_var name="table_id">)</td> + <td><tmpl_var name="table"><tmpl_if name='table_id'> (<tmpl_var name="table_id">)</tmpl_if></td> </tr> <tr> <td><tmpl_var name="action_txt"></td> -- GitLab From aba983e151f1d4e8a77cd2ad6a5be7be899fefc1 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Fri, 10 Jul 2020 21:46:47 +0200 Subject: [PATCH 473/571] tab indent --- interface/web/monitor/templates/dataloghistory_view.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/monitor/templates/dataloghistory_view.htm b/interface/web/monitor/templates/dataloghistory_view.htm index d02953ede9..9741d70be8 100644 --- a/interface/web/monitor/templates/dataloghistory_view.htm +++ b/interface/web/monitor/templates/dataloghistory_view.htm @@ -22,7 +22,7 @@ </tr> <tr> <td><tmpl_var name="table_txt"></td> - <td><tmpl_var name="table"><tmpl_if name='table_id'> (<tmpl_var name="table_id">)</tmpl_if></td> + <td><tmpl_var name="table"><tmpl_if name='table_id'> (<tmpl_var name="table_id">)</tmpl_if></td> </tr> <tr> <td><tmpl_var name="action_txt"></td> -- GitLab From 21c60636411586bee4eb9ec998fa370bf8f19ecb Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Sat, 11 Jul 2020 10:40:27 +0200 Subject: [PATCH 474/571] tab indent --- interface/web/admin/templates/server_ip_map_list.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/admin/templates/server_ip_map_list.htm b/interface/web/admin/templates/server_ip_map_list.htm index 5523448c7b..527ef69b9a 100644 --- a/interface/web/admin/templates/server_ip_map_list.htm +++ b/interface/web/admin/templates/server_ip_map_list.htm @@ -38,13 +38,13 @@ </tmpl_loop> <tmpl_unless name="records"> <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td> + <td colspan="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td> </tr> </tmpl_unless> </tbody> <tfoot> <tr> - <td colspan="5"><tmpl_var name="paging"></td> + <td colspan="5"><tmpl_var name="paging"></td> </tr> </tfoot> </table> -- GitLab From 2a45bd1b3940a80cc93ef46696a509fc1f21f9e8 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 13 Jul 2020 22:20:55 +0200 Subject: [PATCH 475/571] auto sidebar width (#4465) --- interface/web/themes/default/assets/stylesheets/ispconfig.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css index 534d2390f8..c255573e6c 100644 --- a/interface/web/themes/default/assets/stylesheets/ispconfig.css +++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css @@ -141,7 +141,9 @@ body { #sidebar { margin-top: 27px; - width: 18%; + min-width: 18%; + max-width: 21%; + width: auto; border-style: solid; border-width: 1px; border-radius: 4px; } -- GitLab From bf736d765f2e99d381b90d5e3c8e8872b624a38d Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 14 Jul 2020 10:27:09 +0200 Subject: [PATCH 476/571] Update cron.php, added newline to finished cron message. --- server/cron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/cron.php b/server/cron.php index d21dcfa8ae..0fe1dfc6cf 100644 --- a/server/cron.php +++ b/server/cron.php @@ -128,6 +128,6 @@ $app->services->processDelayedActions(); @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock'); $app->log('Remove Lock: ' . $conf['temppath'] . $conf['fs_div'] . '.ispconfig_cron_lock', LOGLEVEL_DEBUG); -if($conf['log_priority'] <= LOGLEVEL_DEBUG) die("finished cron run."); +if($conf['log_priority'] <= LOGLEVEL_DEBUG) die("finished cron run.\n"); ?> -- GitLab From 689efa98f24574ab95f32604642db9c1b0d38326 Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Tue, 14 Jul 2020 12:34:42 +0200 Subject: [PATCH 477/571] change cc and sender_cc column type to text to support more than 4-5 redirects --- install/sql/incremental/upd_dev_collection.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 8e924a62b0..9dc0d0cd22 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -35,3 +35,7 @@ ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET -- add SSHFP and DNAME record ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; + +-- change cc and sender_cc column type +ALTER TABLE `mail_user` CHANGE `cc` `cc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; +ALTER TABLE `mail_user` CHANGE `sender_cc` `sender_cc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; -- GitLab From e6c50f0a75c8c55ebda1865f157dedfa48ed54ff Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Tue, 14 Jul 2020 12:36:54 +0200 Subject: [PATCH 478/571] change cc and sender_cc column type to text to support more than 4-5 redirects --- install/sql/ispconfig3.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index c54f0ac345..a41853324b 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1038,8 +1038,8 @@ CREATE TABLE `mail_user` ( `maildir` varchar(255) NOT NULL default '', `maildir_format` varchar(255) NOT NULL default 'maildir', `quota` bigint(20) NOT NULL default '-1', - `cc` varchar(255) NOT NULL default '', - `sender_cc` varchar(255) NOT NULL default '', + `cc` text, + `sender_cc` text, `homedir` varchar(255) NOT NULL default '', `autoresponder` enum('n','y') NOT NULL default 'n', `autoresponder_start_date` datetime NULL default NULL, -- GitLab From 85f9d1d8c5d319305fe2ca9b626fc791a1120805 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 14 Jul 2020 16:58:29 +0200 Subject: [PATCH 479/571] folder_directive_snippets was missing in incremental, inserted for fixing older installations --- install/sql/incremental/upd_0085.sql | 2 ++ install/sql/incremental/upd_dev_collection.sql | 3 +++ 2 files changed, 5 insertions(+) diff --git a/install/sql/incremental/upd_0085.sql b/install/sql/incremental/upd_0085.sql index 1291262ee7..755143fc4f 100644 --- a/install/sql/incremental/upd_0085.sql +++ b/install/sql/incremental/upd_0085.sql @@ -1,3 +1,5 @@ +-- folder_directive_snippets was missing in incremental, inserted for fixing older installations +ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; ALTER TABLE `web_domain` CHANGE `folder_directive_snippets` `folder_directive_snippets` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL; ALTER TABLE `web_domain` ADD `log_retention` INT NOT NULL DEFAULT '30' AFTER `https_port`; ALTER TABLE `web_domain` CHANGE `stats_type` `stats_type` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'awstats'; diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 8e924a62b0..bf2f02f677 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -35,3 +35,6 @@ ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET -- add SSHFP and DNAME record ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; + +-- was missing in incremental, inserted for fixing older installations +ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; \ No newline at end of file -- GitLab From ff5fe5dbaac63c56b7f2b1e39e5fefc9a6064ac4 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 14 Jul 2020 17:00:03 +0200 Subject: [PATCH 480/571] Fixed PHP 7.4 compatibility problem with limit query in mysql database lib. --- install/lib/mysql.lib.php | 13 +++++++++---- interface/lib/classes/db_mysql.inc.php | 13 +++++++++---- interface/lib/classes/getconf.inc.php | 2 +- server/lib/classes/db_mysql.inc.php | 14 ++++++++++---- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php index 3e091d10b8..c24a454d04 100644 --- a/install/lib/mysql.lib.php +++ b/install/lib/mysql.lib.php @@ -286,10 +286,15 @@ class db public function queryOneRecord($sQuery = '') { $aArgs = func_get_args(); - - if(!preg_match('/limit \d+\s*,\s*\d+$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; - - $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); + if(!empty($aArgs)) { + $sQuery = array_shift($aArgs); + if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) { + $sQuery .= ' LIMIT 0,1'; + } + array_unshift($aArgs, $sQuery); + } + + $oResult = call_user_func_array([&$this, 'query'], $aArgs); if(!$oResult) return null; $aReturn = $oResult->get(); diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 5348e41708..014feec8c3 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -356,10 +356,15 @@ class db public function queryOneRecord($sQuery = '') { $aArgs = func_get_args(); - - if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; - - $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); + if(!empty($aArgs)) { + $sQuery = array_shift($aArgs); + if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) { + $sQuery .= ' LIMIT 0,1'; + } + array_unshift($aArgs, $sQuery); + } + + $oResult = call_user_func_array([&$this, 'query'], $aArgs); if(!$oResult) return null; $aReturn = $oResult->get(); diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php index ef9e0702d2..bbb57d6014 100644 --- a/interface/lib/classes/getconf.inc.php +++ b/interface/lib/classes/getconf.inc.php @@ -65,7 +65,7 @@ class getconf { } else { $app->uses('ini_parser'); $security_config_path = '/usr/local/ispconfig/security/security_settings.ini'; - if(!is_file($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); + if(!is_readable($security_config_path)) $security_config_path = realpath(ISPC_ROOT_PATH.'/../security/security_settings.ini'); $this->security_config = $app->ini_parser->parse_ini_string(file_get_contents($security_config_path)); return ($section == '') ? $this->security_config : $this->security_config[$section]; diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 2bccf1ecb7..8c38123096 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -354,11 +354,17 @@ class db * @return array result row or NULL if none found */ public function queryOneRecord($sQuery = '') { - + $aArgs = func_get_args(); - if(!preg_match('/limit \d+\s*(,\s*\d+)?$/i', $sQuery)) $sQuery .= ' LIMIT 0,1'; - - $oResult = call_user_func_array(array(&$this, 'query'), $aArgs); + if(!empty($aArgs)) { + $sQuery = array_shift($aArgs); + if($sQuery && !preg_match('/limit \d+(\s*,\s*\d+)?$/i', $sQuery)) { + $sQuery .= ' LIMIT 0,1'; + } + array_unshift($aArgs, $sQuery); + } + + $oResult = call_user_func_array([&$this, 'query'], $aArgs); if(!$oResult) return null; $aReturn = $oResult->get(); -- GitLab From f31b004c6db29a8b494f2479ea82de98bab180bd Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Wed, 15 Jul 2020 22:49:09 +0200 Subject: [PATCH 481/571] Resolve merge conflict for 1033 --- install/sql/incremental/upd_dev_collection.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index e446b60c9f..8d673ae866 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -38,3 +38,6 @@ ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME -- remove SPDY option ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; + +-- was missing in incremental, inserted for fixing older installations +ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; -- GitLab From ecd7f3d7d8b0e77b31b21ce92d6a8f38d8204a7b Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 18 Jul 2020 14:32:40 +0200 Subject: [PATCH 482/571] Allow separator in catchall email adress (#4999) --- interface/lib/classes/tform_base.inc.php | 55 +++++++++++++------ .../mail/form/mail_domain_catchall.tform.php | 2 +- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index e6174d2da7..a28644e3ef 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -152,9 +152,9 @@ class tform_base { $wb = $app->functions->array_merge($wb_global, $wb); } if(isset($wb_global)) unset($wb_global); - + $this->wordbook = $wb; - + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'] . ':on_after_formdef', $this); $this->dateformat = $app->lng('conf_format_dateshort'); @@ -323,7 +323,7 @@ class tform_base { return $this->getAuthSQL('r', $matches[1]); } */ - + /** * Get the key => value array of a form filled from a datasource definitiom * @@ -339,12 +339,12 @@ class tform_base { function applyValueLimit($limit, $values, $current_value = '') { global $app; - + // we mas have multiple limits, therefore we explode by ; first // Example: "system:sites:web_php_options;client:web_php_options" $limits = explode(';',$limit); - - + + foreach($limits as $limit) { $limit_parts = explode(':', $limit); @@ -399,7 +399,7 @@ class tform_base { $tmp_key = $limit_parts[2]; $allowed = $allowed = explode(',',$tmp_conf[$tmp_key]); } - + // add the current value to the allowed array $allowed[] = $current_value; @@ -438,7 +438,7 @@ class tform_base { $csrf_token = $app->auth->csrf_token_get($this->formDef['name']); $_csrf_id = $csrf_token['csrf_id']; $_csrf_value = $csrf_token['csrf_key']; - + $this->formDef['tabs'][$tab]['fields']['_csrf_id'] = array( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -454,7 +454,7 @@ class tform_base { $record['_csrf_id'] = $_csrf_id; $record['_csrf_key'] = $_csrf_value; /* CSRF PROTECTION */ - + $new_record = array(); if($action == 'EDIT') { $record = $this->decode($record, $tab); @@ -589,7 +589,7 @@ class tform_base { $new_record[$key] = $this->_getDateHTML($key, $dt_value); break; - + default: if(isset($record[$key])) { $new_record[$key] = $app->functions->htmlentities($record[$key]); @@ -701,7 +701,7 @@ class tform_base { $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds); break; - + case 'DATE': $dt_value = (isset($field['default'])) ? $field['default'] : 0; @@ -750,7 +750,7 @@ class tform_base { unset($_POST); unset($record); } - + if(isset($_SESSION['_csrf_timeout']) && is_array($_SESSION['_csrf_timeout'])) { $to_unset = array(); foreach($_SESSION['_csrf_timeout'] as $_csrf_id => $timeout) { @@ -767,7 +767,7 @@ class tform_base { } /* CSRF PROTECTION */ } - + $new_record = array(); if(is_array($record)) { foreach($fields as $key => $field) { @@ -1065,6 +1065,29 @@ class tform_base { } unset($error); break; + case 'ISEMAILADRESS': + $error = false; + if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n'; + if($validator['allowempty'] == 'y' && $field_value == '') { + //* Do nothing + } else { + if(function_exists('filter_var')) { + if(filter_var($field_value, FILTER_VALIDATE_EMAIL) === false) { + $error = true; + } + if ($error) { + $errmsg = $validator['errmsg']; + if(isset($this->wordbook[$errmsg])) { + $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; + } else { + $this->errorMessage .= $errmsg."<br />\r\n"; + } + } + + } else $this->errorMessage .= "function filter_var missing <br />\r\n"; + } + unset($error); + break; case 'ISINT': if(function_exists('filter_var') && $field_value < PHP_INT_MAX) { //if($field_value != '' && filter_var($field_value, FILTER_VALIDATE_INT, array("options" => array('min_range'=>0))) === false) { @@ -1198,7 +1221,7 @@ class tform_base { } } break; - + case 'ISDATETIME': /* Checks a datetime value against the date format of the current language */ if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n'; @@ -1216,7 +1239,7 @@ class tform_base { } } break; - + case 'RANGE': //* Checks if the value is within the given range or above / below a value //* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:". @@ -1281,7 +1304,7 @@ class tform_base { $sql_update = ''; $record = $this->encode($record, $tab, true); - + if(($this->primary_id_override > 0)) { $sql_insert_key .= '`'.$this->formDef["db_table_idx"].'`, '; $sql_insert_val .= $this->primary_id_override.", "; diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index 72261e05e0..ebc4cebd7c 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -113,7 +113,7 @@ $form["tabs"]['catchall'] = array ( 'valuefield' => 'email' ), */ - 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAILADRESS', 'errmsg'=> 'destination_error_isemail'), ), 'value' => '', -- GitLab From 464cc4f31dd7578d5997dd10d186719479d70395 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 18 Jul 2020 14:36:04 +0200 Subject: [PATCH 483/571] Mispelled address --- interface/lib/classes/tform_base.inc.php | 2 +- interface/web/mail/form/mail_domain_catchall.tform.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index a28644e3ef..bd9f70a626 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -1065,7 +1065,7 @@ class tform_base { } unset($error); break; - case 'ISEMAILADRESS': + case 'ISEMAILADDRESS': $error = false; if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n'; if($validator['allowempty'] == 'y' && $field_value == '') { diff --git a/interface/web/mail/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php index ebc4cebd7c..c43aeb3339 100644 --- a/interface/web/mail/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -113,7 +113,7 @@ $form["tabs"]['catchall'] = array ( 'valuefield' => 'email' ), */ - 'validators' => array ( 0 => array ( 'type' => 'ISEMAILADRESS', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAILADDRESS', 'errmsg'=> 'destination_error_isemail'), ), 'value' => '', -- GitLab From 0b65e47a41571e46ac9aeb46163b57d196b2b9ec Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 18 Jul 2020 14:56:40 +0200 Subject: [PATCH 484/571] Fix whitespace (#4507) --- interface/web/mail/templates/mail_user_list.htm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm index 6d800de57e..69291f4be8 100644 --- a/interface/web/mail/templates/mail_user_list.htm +++ b/interface/web/mail/templates/mail_user_list.htm @@ -21,12 +21,12 @@ </div> </tmpl_if> <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p> - + <button class="btn btn-default formbutton-success" type="button" data-load-content="mail/mail_user_edit.php">{tmpl_var name="add_new_record_txt"}</button> - - - + + + <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p> <div class="table-wrapper marginTop15"> <table class="table"> @@ -60,11 +60,7 @@ <tmpl_loop name="records"> <tr> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}" data-toggle="tooltip" data-placement="bottom" title="{tmpl_var name='email'}">{tmpl_var name="email"}</a></td> - <tmpl_if name="enable_custom_login"> - <td> - <a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="login"}</a> - </td> - </tmpl_if> + <tmpl_if name="enable_custom_login"><td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="login"}</a></td></tmpl_if> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="name"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="autoresponder"}</a></td> <td><a href="#" data-load-content="mail/mail_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="postfix"}</a></td> -- GitLab From 61867049ba3eca7560bc4c3eb122368d3f364a26 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 18 Jul 2020 15:05:26 +0200 Subject: [PATCH 485/571] Variable for mpm_itk_module (#4756) --- server/conf/apache_ispconfig.conf.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index 6acb16f7c8..e30ccd6d3b 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -132,7 +132,7 @@ Alias /.well-known/acme-challenge /usr/local/ispconfig/interface/acme/.well-know Allow from all </tmpl_if> <IfModule mpm_itk_module> - AssignUserId www-data www-data + AssignUserId <tmpl_var name='system_user'> <tmpl_var name='system_group'> </IfModule> </Directory> -- GitLab From 9a2c9326a3cbaf7f9c054684e1ebf9356e8fc4a5 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 18 Jul 2020 15:29:06 +0200 Subject: [PATCH 486/571] Allow separator in email address --- interface/web/client/form/client.tform.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 5b45ffb972..17b9e623b6 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -390,8 +390,8 @@ $form["tabs"]['address'] = array ( 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') ), - 'validators' => array ( - 0 => array ( 'type' => 'ISEMAIL', 'errmsg'=> 'email_error_isemail'), + 'validators' => array ( + 0 => array ( 'type' => 'ISEMAILADDRESS', 'errmsg'=> 'email_error_isemail'), 1 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'email_error_empty'), ), @@ -621,7 +621,7 @@ $form["tabs"]['address'] = array ( 'type' => 'TOLOWER') ), 'validators' => array ( - 0 => array ( 'type' => 'ISEMAIL', 'allowempty' => 'y', 'errmsg'=> 'email_error_isemail'), + 0 => array ( 'type' => 'ISEMAILADDRESS', 'allowempty' => 'y', 'errmsg'=> 'email_error_isemail'), ), 'default' => '', 'value' => '', -- GitLab From e5b006009006dbd738a8a11cf2415bb9a30580d0 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 21 Jul 2020 15:17:58 +0200 Subject: [PATCH 487/571] Fixed issue with security_settings.ini not being creted on CentOS. --- install/dist/lib/fedora.lib.php | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 3af8746908..6a1c5048e8 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -953,24 +953,13 @@ class installer_dist extends installer_base { //* 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~')); - $security_settings_new = ini_to_array(file_get_contents('/usr/local/ispconfig/security/security_settings.ini')); - if(is_array($security_settings_new) && is_array($security_settings_old)) { - foreach($security_settings_new as $section => $sval) { - if(is_array($sval)) { - foreach($sval as $key => $val) { - if(isset($security_settings_old[$section]) && isset($security_settings_old[$section][$key])) { - $security_settings_new[$section][$key] = $security_settings_old[$section][$key]; - } - } - } - } - file_put_contents('/usr/local/ispconfig/security/security_settings.ini',array_to_ini($security_settings_new)); - } + + $configfile = 'security_settings.ini'; + if(is_file($install_dir.'/security/'.$configfile)) { + copy($install_dir.'/security/'.$configfile, $install_dir.'/security/'.$configfile.'~'); } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + wf($install_dir.'/security/'.$configfile, $content); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 -- GitLab From f765f1b55fec7402cb327f8b26a18ce88580271c Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 21 Jul 2020 15:18:14 +0200 Subject: [PATCH 488/571] Fixed formatting --- install/lib/install.lib.php | 16 ++++++++-------- server/lib/classes/monitor_tools.inc.php | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 9312a8981a..2ed873d9ba 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -345,15 +345,15 @@ function get_distname() { $distid = 'centos72'; } swriteln("Operating System: CentOS $var\n"); - } elseif(stristr($content, 'CentOS Linux release 8')) { - $distname = 'CentOS'; - $distver = 'Unknown'; - $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 8')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distbaseid = 'fedora'; $distid = 'centos80'; - $var=explode(" ", $content); - $var=explode(".", $var[3]); - $var=$var[0].".".$var[1]; - swriteln("Operating System: CentOS $var\n"); + $var=explode(" ", $content); + $var=explode(".", $var[3]); + $var=$var[0].".".$var[1]; + swriteln("Operating System: CentOS $var\n"); } else { $distname = 'Redhat'; $distver = 'Unknown'; diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 75e75c7f30..e349acd128 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -323,14 +323,14 @@ class monitor_tools { } else { $distid = 'centos72'; } - } elseif(stristr($content, 'CentOS Linux release 8')) { - preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); - $distname = 'CentOS'; - $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown'; - $distbaseid = 'fedora'; - $var=explode(" ", $content); - $var=explode(".", $var[3]); - $var=$var[0].".".$var[1]; + } elseif(stristr($content, 'CentOS Linux release 8')) { + preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version); + $distname = 'CentOS'; + $distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown'; + $distbaseid = 'fedora'; + $var=explode(" ", $content); + $var=explode(".", $var[3]); + $var=$var[0].".".$var[1]; } else { $distname = 'Redhat'; $distver = 'Unknown'; -- GitLab From 60f83685bccbe050c17694149db696ae5ced9a10 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Tue, 21 Jul 2020 17:57:05 +0200 Subject: [PATCH 489/571] Prevent error to be shown on the shell when bind version is queried. --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index f2dc603ec5..d4b4a7c01c 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -225,7 +225,7 @@ class bind_plugin { //* Get the bind version $bind_caa = false; - $bind = explode("\n", shell_exec('which named bind')); + $bind = explode("\n", shell_exec('which named bind 2> /dev/null')); $bind = reset($bind); if(is_executable($bind)) { exec($bind . ' -v 2>&1', $tmp); -- GitLab From f3c43b1411112441b93f0293c6e538f0a7f1b80b Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Tue, 31 Dec 2019 21:51:40 +0100 Subject: [PATCH 490/571] Check if we actually have a service enabled --- interface/lib/classes/system.inc.php | 12 +++++++ interface/web/mail/lib/module.conf.php | 48 ++++++++++++++------------ 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index 89507ea68c..a4e1d06550 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -39,6 +39,18 @@ class system { if(!preg_match('/^[a-z]+$/', $service)) $app->error('Invalid service '.$service); + // Check the servers table to see which kinds of servers we actually have enabled. + // simple query cache + if($this->server_count===null) { + $this->server_count = $app->db->queryOneRecord("SELECT SUM(mail_server) as mail, SUM(web_server) AS web, SUM(dns_server) AS dns, SUM(file_server) AS file, + SUM(db_server) AS db, SUM(vserver_server) AS vserver, SUM(proxy_server) AS proxy, SUM(firewall_server) AS firewall, SUM(xmpp_server) AS xmpp + FROM `server` WHERE mirror_server_id = 0"); + } + // Check if we have the service enabled. + if ($this->server_count[$service] == 0) { + return FALSE; + } + if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') return true; //* We do not check admin-users // simple query cache diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php index cc100cd7d2..5a06eb8b65 100644 --- a/interface/web/mail/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -150,31 +150,33 @@ if($app->auth->get_client_limit($userid, 'fetchmail') != 0) } //**** XMPP Menu -$items = array(); - -if($app->auth->get_client_limit($userid, 'xmpp_domain') != 0) -{ - $items[] = array( 'title' => 'XMPP Domain', - 'target' => 'content', - 'link' => 'mail/xmpp_domain_list.php', - 'html_id' => 'xmpp_domain_list'); +if ($app->system->has_service($userid, 'xmpp')) { + $items = array(); + + if($app->auth->get_client_limit($userid, 'xmpp_domain') != 0) + { + $items[] = array( 'title' => 'XMPP Domain', + 'target' => 'content', + 'link' => 'mail/xmpp_domain_list.php', + 'html_id' => 'xmpp_domain_list'); + } + + if($app->auth->get_client_limit($userid, 'xmpp_user') != 0) + { + $items[] = array( 'title' => 'XMPP Account', + 'target' => 'content', + 'link' => 'mail/xmpp_user_list.php', + 'html_id' => 'xmpp_user_list'); + } + + if(count($items)) + { + $module['nav'][] = array( 'title' => 'Jabber / XMPP', + 'open' => 1, + 'items' => $items); + } } -if($app->auth->get_client_limit($userid, 'xmpp_user') != 0) -{ - $items[] = array( 'title' => 'XMPP Account', - 'target' => 'content', - 'link' => 'mail/xmpp_user_list.php', - 'html_id' => 'xmpp_user_list'); -} - -if(count($items) && $app->system->has_service($userid, 'xmpp')) - $module['nav'][] = array( 'title' => 'Jabber / XMPP', - 'open' => 1, - 'items' => $items); - - - //**** Statistics menu $items = array(); -- GitLab From 59f5fa875d97d0e613e6d94077c1cfaff34dad20 Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Wed, 22 Jul 2020 14:23:19 +0200 Subject: [PATCH 491/571] rollback sender_cc change --- install/sql/incremental/upd_dev_collection.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index d4acf6914d..a5d4acdc62 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -38,7 +38,6 @@ ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME -- change cc and sender_cc column type ALTER TABLE `mail_user` CHANGE `cc` `cc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; -ALTER TABLE `mail_user` CHANGE `sender_cc` `sender_cc` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; -- was missing in incremental, inserted for fixing older installations ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; -- GitLab From c8ac70ba7ccf3ba14eab6c9ad934808b5fdf9869 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Wed, 22 Jul 2020 15:04:44 +0200 Subject: [PATCH 492/571] space to tabs --- interface/lib/classes/system.inc.php | 22 ++++++------- interface/web/mail/lib/module.conf.php | 44 +++++++++++++------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index a4e1d06550..484ef2b665 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -39,17 +39,17 @@ class system { if(!preg_match('/^[a-z]+$/', $service)) $app->error('Invalid service '.$service); - // Check the servers table to see which kinds of servers we actually have enabled. - // simple query cache - if($this->server_count===null) { - $this->server_count = $app->db->queryOneRecord("SELECT SUM(mail_server) as mail, SUM(web_server) AS web, SUM(dns_server) AS dns, SUM(file_server) AS file, - SUM(db_server) AS db, SUM(vserver_server) AS vserver, SUM(proxy_server) AS proxy, SUM(firewall_server) AS firewall, SUM(xmpp_server) AS xmpp - FROM `server` WHERE mirror_server_id = 0"); - } - // Check if we have the service enabled. - if ($this->server_count[$service] == 0) { - return FALSE; - } + // Check the servers table to see which kinds of servers we actually have enabled. + // simple query cache + if($this->server_count === null) { + $this->server_count = $app->db->queryOneRecord("SELECT SUM(mail_server) as mail, SUM(web_server) AS web, SUM(dns_server) AS dns, SUM(file_server) AS file, + SUM(db_server) AS db, SUM(vserver_server) AS vserver, SUM(proxy_server) AS proxy, SUM(firewall_server) AS firewall, SUM(xmpp_server) AS xmpp + FROM `server` WHERE mirror_server_id = 0"); + } + // Check if we have the service enabled. + if ($this->server_count[$service] == 0) { + return FALSE; + } if(isset($_SESSION['s']['user']) && $_SESSION['s']['user']['typ'] == 'admin') return true; //* We do not check admin-users diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php index 5a06eb8b65..d9d97bc8b2 100644 --- a/interface/web/mail/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -153,28 +153,28 @@ if($app->auth->get_client_limit($userid, 'fetchmail') != 0) if ($app->system->has_service($userid, 'xmpp')) { $items = array(); - if($app->auth->get_client_limit($userid, 'xmpp_domain') != 0) - { - $items[] = array( 'title' => 'XMPP Domain', - 'target' => 'content', - 'link' => 'mail/xmpp_domain_list.php', - 'html_id' => 'xmpp_domain_list'); - } - - if($app->auth->get_client_limit($userid, 'xmpp_user') != 0) - { - $items[] = array( 'title' => 'XMPP Account', - 'target' => 'content', - 'link' => 'mail/xmpp_user_list.php', - 'html_id' => 'xmpp_user_list'); - } - - if(count($items)) - { - $module['nav'][] = array( 'title' => 'Jabber / XMPP', - 'open' => 1, - 'items' => $items); - } + if($app->auth->get_client_limit($userid, 'xmpp_domain') != 0) + { + $items[] = array( 'title' => 'XMPP Domain', + 'target' => 'content', + 'link' => 'mail/xmpp_domain_list.php', + 'html_id' => 'xmpp_domain_list'); + } + + if($app->auth->get_client_limit($userid, 'xmpp_user') != 0) + { + $items[] = array( 'title' => 'XMPP Account', + 'target' => 'content', + 'link' => 'mail/xmpp_user_list.php', + 'html_id' => 'xmpp_user_list'); + } + + if(count($items)) + { + $module['nav'][] = array( 'title' => 'Jabber / XMPP', + 'open' => 1, + 'items' => $items); + } } //**** Statistics menu -- GitLab From 09da773b12b32ce79a73cd2824bd6414ff45004c Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Wed, 22 Jul 2020 17:04:07 +0200 Subject: [PATCH 493/571] Extended client delete dialog (Implements #4370) --- interface/web/client/client_del.php | 53 +++++++++++++----- .../web/client/lib/lang/ar_client_del.lng | 3 + .../web/client/lib/lang/bg_client_del.lng | 3 + .../web/client/lib/lang/br_client_del.lng | 3 + .../web/client/lib/lang/ca_client_del.lng | 3 + .../web/client/lib/lang/cz_client_del.lng | 3 + .../web/client/lib/lang/de_client_del.lng | 5 +- .../web/client/lib/lang/dk_client_del.lng | 3 + .../web/client/lib/lang/el_client_del.lng | 3 + .../web/client/lib/lang/en_client_del.lng | 3 + .../web/client/lib/lang/es_client_del.lng | 3 + .../web/client/lib/lang/fi_client_del.lng | 3 + .../web/client/lib/lang/fr_client_del.lng | 3 + .../web/client/lib/lang/hr_client_del.lng | 3 + .../web/client/lib/lang/hu_client_del.lng | 3 + .../web/client/lib/lang/id_client_del.lng | 3 + .../web/client/lib/lang/it_client_del.lng | 3 + .../web/client/lib/lang/ja_client_del.lng | 3 + .../web/client/lib/lang/nl_client_del.lng | 3 + .../web/client/lib/lang/pl_client_del.lng | 3 + .../web/client/lib/lang/pt_client_del.lng | 3 + .../web/client/lib/lang/ro_client_del.lng | 3 + .../web/client/lib/lang/ru_client_del.lng | 3 + .../web/client/lib/lang/se_client_del.lng | 3 + .../web/client/lib/lang/sk_client_del.lng | 3 + .../web/client/lib/lang/tr_client_del.lng | 3 + interface/web/client/templates/client_del.htm | 56 +++++++++++-------- 27 files changed, 148 insertions(+), 38 deletions(-) diff --git a/interface/web/client/client_del.php b/interface/web/client/client_del.php index d92dc56008..c018b7a27d 100644 --- a/interface/web/client/client_del.php +++ b/interface/web/client/client_del.php @@ -51,6 +51,32 @@ $app->load('tform_actions'); class page_action extends tform_actions { + // db_table => info_field for onDelete - empty = show only the amount + private $tables = array( + 'cron' => '', + 'client' => 'contact_name', + 'dns_rr' => '', + 'dns_soa' => 'origin', + 'dns_slave' => 'origin', + 'domain' => 'domain', + 'ftp_user' => 'username', + 'mail_access' => 'source', + 'mail_content_filter' => '', + 'mail_domain' => 'domain', + 'mail_forwarding' => '', + 'mail_get' => '', + 'mail_mailinglist' => 'listname', + 'mail_user' => 'email', + 'mail_user_filter' => '', + 'shell_user' => 'username', + 'spamfilter_users' => '', 'spamfilter_wblist' => '', + 'support_message' => '', + 'web_domain' => 'domain', + 'web_folder' => 'path', + 'web_folder_user' => 'username', + 'web_database_user' => 'database_user', + ); + function onDelete() { global $app, $conf, $list_def_file, $tform_def_file; @@ -80,19 +106,22 @@ class page_action extends tform_actions { $this->dataRecord = $app->tform->getDataRecord($this->id); $client_id = $app->functions->intval($this->dataRecord['client_id']); $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $client_id); - - // Get all records (sub-clients, mail, web, etc....) of this client. - $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_traffic,domain'; - $tables_array = explode(',', $tables); - $client_group_id = $app->functions->intval($client_group['groupid']); - $table_list = array(); + $client_group_id = $app->functions->intval($client_group['groupid']); if($client_group_id > 1) { - foreach($tables_array as $table) { + foreach($this->tables as $table => $field) { if($table != '') { $records = $app->db->queryAllRecords("SELECT * FROM ?? WHERE sys_groupid = ?", $table, $client_group_id); - $number = count($records); - if($number > 0) $table_list[] = array('table' => $table."(".$number.")"); + if(is_array($records) && !empty($records) && $field !== false) { + $data = array(); + $number = count($records); + foreach($records as $rec) { + if($field != '' && $field !== false) $data['data'] .= '<li>'.$rec[$field].'</li>'; + } + $data['count'] = $number; + $data['table'] = $table; + $table_list[] = $data; + } } } } @@ -100,7 +129,6 @@ class page_action extends tform_actions { $app->tpl->setVar('id', $this->id); $app->tpl->setVar('number_records', $number); $app->tpl->setLoop('records', $table_list); - //* load language file $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_client_del.lng'; include $lng_file; @@ -138,11 +166,9 @@ 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 = '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) { + foreach($this->tables as $table => $field) { if($table != '') { //* find the primary ID of the table $table_info = $app->db->tableInfo($table); @@ -150,6 +176,7 @@ class page_action extends tform_actions { foreach($table_info as $tmp) { if($tmp['option'] == 'primary') $index_field = $tmp['name']; } + //* Delete the records if($index_field != '') { $records = $app->db->queryAllRecords("SELECT * FROM ?? WHERE sys_groupid = ? ORDER BY ?? DESC", $table, $client_group_id, $index_field); diff --git a/interface/web/client/lib/lang/ar_client_del.lng b/interface/web/client/lib/lang/ar_client_del.lng index 0932e9568a..21ddcb9ea4 100644 --- a/interface/web/client/lib/lang/ar_client_del.lng +++ b/interface/web/client/lib/lang/ar_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/bg_client_del.lng b/interface/web/client/lib/lang/bg_client_del.lng index 54d4831d77..418abdc20c 100644 --- a/interface/web/client/lib/lang/bg_client_del.lng +++ b/interface/web/client/lib/lang/bg_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Изтрии клиента'; $wb['btn_cancel_txt'] = 'Отказ, без изтриване на клиента'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/br_client_del.lng b/interface/web/client/lib/lang/br_client_del.lng index 880c12c36a..fbea0a66a0 100644 --- a/interface/web/client/lib/lang/br_client_del.lng +++ b/interface/web/client/lib/lang/br_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Esta ação removerá os seguintes registros associ $wb['btn_save_txt'] = 'Remover o cliente'; $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente'; $wb['confirm_client_delete_txt'] = 'Você tem certeza que deseja remover este cliente?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/ca_client_del.lng b/interface/web/client/lib/lang/ca_client_del.lng index 2ec2d877bf..4c4506c99b 100644 --- a/interface/web/client/lib/lang/ca_client_del.lng +++ b/interface/web/client/lib/lang/ca_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Cette action va supprimer le nombre d\'enregistreme $wb['btn_save_txt'] = 'Effacer le client'; $wb['btn_cancel_txt'] = 'Annuler sans effacer le client'; $wb['confirm_client_delete_txt'] = 'Confirmez-vous la suppression de ce client ?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/cz_client_del.lng b/interface/web/client/lib/lang/cz_client_del.lng index 5374ea6f75..d19949fec5 100644 --- a/interface/web/client/lib/lang/cz_client_del.lng +++ b/interface/web/client/lib/lang/cz_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Tato akce smaže následujÃcà poÄet záznamů p $wb['btn_save_txt'] = 'Smazat klienta'; $wb['btn_cancel_txt'] = 'ZruÅ¡it bez smazánà klienta'; $wb['confirm_client_delete_txt'] = 'Jste si jisti, že chcete smazat tohoto klienta ?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/de_client_del.lng b/interface/web/client/lib/lang/de_client_del.lng index d13fcfa8fc..53aa0973c4 100644 --- a/interface/web/client/lib/lang/de_client_del.lng +++ b/interface/web/client/lib/lang/de_client_del.lng @@ -3,5 +3,8 @@ $wb['confirm_action_txt'] = 'Aktion bestätigen'; $wb['delete_explanation'] = 'Diese Aktion wird folgende Anzahl an Datensätzen des Kunden löschen'; $wb['btn_save_txt'] = 'Kunden löschen'; $wb['btn_cancel_txt'] = 'Abbrechen, ohne den Kunden zu löschen'; -$wb['confirm_client_delete_txt'] = 'Sind Sie sicher, daß Sie den Kunden löschen möchten?'; +$wb['confirm_client_delete_txt'] = 'Sind Sie sicher, dass Sie den Kunden löschen möchte'; +$wb['table_txt'] = 'Tabelle'; +$wb['data_txt'] = 'Daten'; +$wb['list_head_txt'] = 'Kunde löschen'; ?> diff --git a/interface/web/client/lib/lang/dk_client_del.lng b/interface/web/client/lib/lang/dk_client_del.lng index ba5f592219..9bb157cdf4 100644 --- a/interface/web/client/lib/lang/dk_client_del.lng +++ b/interface/web/client/lib/lang/dk_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Denne handling vil slette følgende antal poster fo $wb['btn_save_txt'] = 'Slet kunden'; $wb['btn_cancel_txt'] = 'Annullere uden at slette kunden'; $wb['confirm_client_delete_txt'] = 'Er du sikker pÃ¥ at du vil slette denne kunde?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/el_client_del.lng b/interface/web/client/lib/lang/el_client_del.lng index 60ebd617d0..3f91a5c2b0 100644 --- a/interface/web/client/lib/lang/el_client_del.lng +++ b/interface/web/client/lib/lang/el_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Η ενÎÏγεια θα διαγÏάψει τις $wb['btn_save_txt'] = 'ΔιαγÏαφή πελάτη'; $wb['btn_cancel_txt'] = 'ΑκÏÏωση χωÏίς διαγÏαφή πελάτη'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/en_client_del.lng b/interface/web/client/lib/lang/en_client_del.lng index 7b1bbf9d70..5e2a00b929 100644 --- a/interface/web/client/lib/lang/en_client_del.lng +++ b/interface/web/client/lib/lang/en_client_del.lng @@ -4,4 +4,7 @@ $wb["delete_explanation"] = 'This action will delete the following number of rec $wb["btn_save_txt"] = 'Delete the client'; $wb["btn_cancel_txt"] = 'Cancel without deleting the client'; $wb["confirm_client_delete_txt"] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/es_client_del.lng b/interface/web/client/lib/lang/es_client_del.lng index ff7c09c191..9496eb8146 100644 --- a/interface/web/client/lib/lang/es_client_del.lng +++ b/interface/web/client/lib/lang/es_client_del.lng @@ -4,4 +4,7 @@ $wb['btn_save_txt'] = 'Borrar el cliente'; $wb['confirm_action_txt'] = 'Confirmar acción'; $wb['confirm_client_delete_txt'] = '¿Está seguro de que desea borrar el cliente?'; $wb['delete_explanation'] = 'Esta acción eliminará el siguiente número de registros asociados con este cliente'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/fi_client_del.lng b/interface/web/client/lib/lang/fi_client_del.lng index b87895b8c0..4336b765d3 100644 --- a/interface/web/client/lib/lang/fi_client_del.lng +++ b/interface/web/client/lib/lang/fi_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Tämä toiminto alla olevan määrän tämän asiak $wb['btn_save_txt'] = 'Poista käyttäjä'; $wb['btn_cancel_txt'] = 'Keskeytä poistamatta asiakasta'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/fr_client_del.lng b/interface/web/client/lib/lang/fr_client_del.lng index 4fdb5dac77..051c840fb2 100644 --- a/interface/web/client/lib/lang/fr_client_del.lng +++ b/interface/web/client/lib/lang/fr_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Cette action va supprimer le nombre d’enregistrem $wb['btn_save_txt'] = 'Effacer le client'; $wb['btn_cancel_txt'] = 'Annuler sans effacer le client'; $wb['confirm_client_delete_txt'] = 'Confirmez-vous la suppression de ce client ?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/hr_client_del.lng b/interface/web/client/lib/lang/hr_client_del.lng index 939cc59fb6..5f06b87008 100644 --- a/interface/web/client/lib/lang/hr_client_del.lng +++ b/interface/web/client/lib/lang/hr_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Ukoliko potvrdite izbrisati će se svi zapisi povez $wb['btn_save_txt'] = 'ObriÅ¡i klijenta'; $wb['btn_cancel_txt'] = 'Prekini i ne briÅ¡i klijenta'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/hu_client_del.lng b/interface/web/client/lib/lang/hu_client_del.lng index 0932e9568a..21ddcb9ea4 100644 --- a/interface/web/client/lib/lang/hu_client_del.lng +++ b/interface/web/client/lib/lang/hu_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/id_client_del.lng b/interface/web/client/lib/lang/id_client_del.lng index 1adf18bd7d..2a8c6e32a1 100644 --- a/interface/web/client/lib/lang/id_client_del.lng +++ b/interface/web/client/lib/lang/id_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Tindakan ini akan menghapus sejumlah record yang te $wb['btn_save_txt'] = 'Hapus Klien'; $wb['btn_cancel_txt'] = 'Batalkan Tanpa Menghapus Klien'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/it_client_del.lng b/interface/web/client/lib/lang/it_client_del.lng index 49811c377e..a17dc6a7ff 100644 --- a/interface/web/client/lib/lang/it_client_del.lng +++ b/interface/web/client/lib/lang/it_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Questa operazione cancellerà i seguenti record ass $wb['btn_save_txt'] = 'Cancella cliente'; $wb['btn_cancel_txt'] = 'Annulla senza cancellare il cliente'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/ja_client_del.lng b/interface/web/client/lib/lang/ja_client_del.lng index 0932e9568a..21ddcb9ea4 100644 --- a/interface/web/client/lib/lang/ja_client_del.lng +++ b/interface/web/client/lib/lang/ja_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/nl_client_del.lng b/interface/web/client/lib/lang/nl_client_del.lng index 294fb5011b..9b9e5d5bc3 100644 --- a/interface/web/client/lib/lang/nl_client_del.lng +++ b/interface/web/client/lib/lang/nl_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Deze actie verwijderd het volgende aantal aan recor $wb['btn_save_txt'] = 'Verwijder de klant'; $wb['btn_cancel_txt'] = 'Annuleren zonder de klant te verwijderen'; $wb['confirm_client_delete_txt'] = 'Weet je zeker dat je deze klant wil verwijderen ?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/pl_client_del.lng b/interface/web/client/lib/lang/pl_client_del.lng index 429c61b4c7..4e5a2386f9 100644 --- a/interface/web/client/lib/lang/pl_client_del.lng +++ b/interface/web/client/lib/lang/pl_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Ta akcja usunie nastÄ™pujÄ…cÄ… liczbÄ™ rekordów po $wb['btn_save_txt'] = 'UsuÅ„ klienta'; $wb['btn_cancel_txt'] = 'Anuluj bez usuwania klienta'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/pt_client_del.lng b/interface/web/client/lib/lang/pt_client_del.lng index ef71fa91e5..7b56473550 100644 --- a/interface/web/client/lib/lang/pt_client_del.lng +++ b/interface/web/client/lib/lang/pt_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Atenção: está acção ira remover todos os objec $wb['btn_save_txt'] = 'Remover o cliente'; $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/ro_client_del.lng b/interface/web/client/lib/lang/ro_client_del.lng index 0932e9568a..21ddcb9ea4 100644 --- a/interface/web/client/lib/lang/ro_client_del.lng +++ b/interface/web/client/lib/lang/ro_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/ru_client_del.lng b/interface/web/client/lib/lang/ru_client_del.lng index 94a05acca0..cf371efeb9 100644 --- a/interface/web/client/lib/lang/ru_client_del.lng +++ b/interface/web/client/lib/lang/ru_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Ðто дейÑтвие удалит Ñледующ $wb['btn_save_txt'] = 'Удалить клиента'; $wb['btn_cancel_txt'] = 'Отменить без удалениÑ'; $wb['confirm_client_delete_txt'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñтот клиента?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/se_client_del.lng b/interface/web/client/lib/lang/se_client_del.lng index 99aa9d8a42..56f2f0d9d7 100644 --- a/interface/web/client/lib/lang/se_client_del.lng +++ b/interface/web/client/lib/lang/se_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Radera kunden'; $wb['btn_cancel_txt'] = 'Avbryt utan att radera kunden'; $wb['confirm_client_delete_txt'] = 'Är du säker pÃ¥ att du vill radera den här kunden?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/sk_client_del.lng b/interface/web/client/lib/lang/sk_client_del.lng index 0932e9568a..21ddcb9ea4 100644 --- a/interface/web/client/lib/lang/sk_client_del.lng +++ b/interface/web/client/lib/lang/sk_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'This action will delete the following number of rec $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; $wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/lib/lang/tr_client_del.lng b/interface/web/client/lib/lang/tr_client_del.lng index b93579998b..82f00ba9d5 100644 --- a/interface/web/client/lib/lang/tr_client_del.lng +++ b/interface/web/client/lib/lang/tr_client_del.lng @@ -4,4 +4,7 @@ $wb['delete_explanation'] = 'Bu iÅŸlem bu müşteri ile ilgili ÅŸu kayıtları s $wb['btn_save_txt'] = 'Müşteriyi sil'; $wb['btn_cancel_txt'] = 'Müşteriyi silmeden iptal et'; $wb['confirm_client_delete_txt'] = 'Bu müşteriyi silmek istediÄŸinize emin misiniz?'; +$wb['list_head_txt'] = 'Delete Client'; +$wb['table_txt'] = 'Table'; +$wb['data_txt'] = 'Data'; ?> diff --git a/interface/web/client/templates/client_del.htm b/interface/web/client/templates/client_del.htm index e24ca768c2..5e7201ce5c 100644 --- a/interface/web/client/templates/client_del.htm +++ b/interface/web/client/templates/client_del.htm @@ -1,24 +1,32 @@ -<div class='page-header'> - <h1><tmpl_var name="list_head_txt"></h1> -</div> -<p><tmpl_var name="list_desc_txt"></p> - - <div id="OKMsg"> - <tmpl_if name='number_records'> - <tmpl_var name="delete_explanation">:<br /><br /> - <tmpl_loop name="records"> - <tmpl_var name="table">, - </tmpl_loop> - </tmpl_else> - <h3><tmpl_var name="confirm_client_delete_txt"></h3> - </tmpl_if> - </div> - - <div> <input type="checkbox" name="confirm" value="yes" /> <b><tmpl_var name="confirm_action_txt"></b></div> - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="left"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="client/client_del.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> \ No newline at end of file +<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div> +<tmpl_if name='number_records'> + <tmpl_var name="delete_explanation">:<br /><br /> + <div class="table-wrapper marginTop15"> + <table class="table"> + <thead class="dark form-group-sm"> + <tr> + <th class="tiny-col"><tmpl_var name="table_txt"></th> + <th class="tiny-col"><tmpl_var name="data_txt"></th> + </tr> + </thead> + <tbody> + <tmpl_loop name="records"> + <tr> + <td>{tmpl_var name="table"} ({tmpl_var name="count"})</td> + <td>{tmpl_var name="data"}</td> + </tr> + </tmpl_loop> + </tbody> + </table> + </div> +</tmpl_else> + <h3><tmpl_var name="confirm_client_delete_txt"></h3> +</tmpl_if> + +<div> <input type="checkbox" name="confirm" value="yes" /> <b><tmpl_var name="confirm_action_txt"></b></div> + +<input type="hidden" name="id" value="{tmpl_var name='id'}"> +<div class="clear"><div class="left"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="client/client_del.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/client_list.php">{tmpl_var name='btn_cancel_txt'}</button> +</div></div> -- GitLab From 21b6004208d44289e4695016e9c7634ea658bd77 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Mon, 10 Feb 2020 09:40:53 +0100 Subject: [PATCH 494/571] Show (disabled) client field on mail_domain edit --- interface/web/mail/mail_domain_edit.php | 8 +++++++- interface/web/mail/templates/mail_domain_edit.htm | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 51d55ef2de..6f2bdb8f91 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -75,7 +75,13 @@ class page_action extends tform_actions { $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); - if($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] != 'y') { + if($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] == 'y') { + $sql = "SELECT 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 = ?"; + $clients = $app->db->queryAllRecords($sql, $this->dataRecord['sys_groupid']); + $client_select = '<option value="dummy">'.$clients[0]['contactname'].'</option>'; + $app->tpl->setVar("client_group_name", $client_select); + } + elseif($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] != 'y') { // 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"; diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm index 1e4a49c2a5..42ae8fe280 100644 --- a/interface/web/mail/templates/mail_domain_edit.htm +++ b/interface/web/mail/templates/mail_domain_edit.htm @@ -6,21 +6,28 @@ {tmpl_var name='server_id'} </select></div> <input type="hidden" name="server_id" value="{tmpl_var name='server_id_value'}" /> - <tmpl_else> + <tmpl_else> <label for="server_id" class="col-sm-3 control-label">{tmpl_var name='server_id_txt'}</label> <div class="col-sm-9"><select name="server_id" id="server_id" class="form-control"> {tmpl_var name='server_id'} </select></div> </tmpl_if> </div> - <tmpl_unless name="domain_option"> + <tmpl_if name="domain_option"> + <div class="form-group"> + <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> + <div class="col-sm-9"><select name="server_id_disabled" id="server_id_disabled" class="form-control" disabled="disabled"> + {tmpl_var name='client_group_name'} + </select></div> + </div> + <tmpl_else> <div class="form-group"> <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> <div class="col-sm-9"><select name="client_group_id" id="client_group_id" class="form-control"> {tmpl_var name='client_group_id'} </select></div> </div> - </tmpl_unless> + </tmpl_if> <tmpl_else> <tmpl_if name="only_one_server"> <input type="hidden" id="server_id" name="server_id" value="{tmpl_var name='server_id_value'}" /> -- GitLab From 272fc9ac8fc74b1e595598dc04c40ca66e724d12 Mon Sep 17 00:00:00 2001 From: Herman van Rink <rink@initfour.nl> Date: Thu, 23 Jul 2020 10:22:24 +0200 Subject: [PATCH 495/571] Fix query and tab indent --- interface/web/mail/mail_domain_edit.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 6f2bdb8f91..19aa4f91e6 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -75,13 +75,13 @@ class page_action extends tform_actions { $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); - if($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] == 'y') { - $sql = "SELECT 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 = ?"; - $clients = $app->db->queryAllRecords($sql, $this->dataRecord['sys_groupid']); - $client_select = '<option value="dummy">'.$clients[0]['contactname'].'</option>'; - $app->tpl->setVar("client_group_name", $client_select); - } - elseif($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] != 'y') { + if($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] == 'y') { + $sql = "SELECT 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 = ?"; + $clients = $app->db->queryAllRecords($sql, $this->dataRecord['sys_groupid']); + $client_select = '<option value="dummy">' . $clients[0]['contactname'] . '</option>'; + $app->tpl->setVar("client_group_name", $client_select); + } + elseif($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] != 'y') { // 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"; -- GitLab From 0d61c249a2e10fbaa93faaadec93391e6f9ef2ed Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 11:28:27 +0200 Subject: [PATCH 496/571] Revert "Merge branch 'http2-always' into 'stable-3.1'" This reverts merge request !1033 --- .../sql/incremental/upd_dev_collection.sql | 5 +-- install/sql/ispconfig3.sql | 1 + install/tpl/apache_apps.vhost.master | 16 +++++++--- install/tpl/server.ini.master | 1 + .../web/admin/form/server_config.tform.php | 9 ++++++ .../web/admin/lib/lang/ar_server_config.lng | 1 + .../web/admin/lib/lang/bg_server_config.lng | 1 + .../web/admin/lib/lang/br_server_config.lng | 1 + .../web/admin/lib/lang/ca_server_config.lng | 1 + .../web/admin/lib/lang/cz_server_config.lng | 1 + .../web/admin/lib/lang/de_server_config.lng | 1 + .../web/admin/lib/lang/dk_server_config.lng | 1 + .../web/admin/lib/lang/el_server_config.lng | 1 + .../web/admin/lib/lang/en_server_config.lng | 1 + .../web/admin/lib/lang/es_server_config.lng | 1 + .../web/admin/lib/lang/fi_server_config.lng | 1 + .../web/admin/lib/lang/fr_server_config.lng | 1 + .../web/admin/lib/lang/hr_server_config.lng | 1 + .../web/admin/lib/lang/hu_server_config.lng | 1 + .../web/admin/lib/lang/id_server_config.lng | 1 + .../web/admin/lib/lang/it_server_config.lng | 1 + .../web/admin/lib/lang/ja_server_config.lng | 1 + .../web/admin/lib/lang/nl_server_config.lng | 1 + .../web/admin/lib/lang/pl_server_config.lng | 1 + .../web/admin/lib/lang/pt_server_config.lng | 1 + .../web/admin/lib/lang/ro_server_config.lng | 1 + .../web/admin/lib/lang/ru_server_config.lng | 1 + .../web/admin/lib/lang/se_server_config.lng | 1 + .../web/admin/lib/lang/sk_server_config.lng | 1 + .../web/admin/lib/lang/tr_server_config.lng | 1 + .../templates/server_config_web_edit.htm | 22 +++++++++---- .../web/sites/form/web_vhost_domain.tform.php | 9 ++++++ .../sites/lib/lang/ar_web_vhost_domain.lng | 1 + .../sites/lib/lang/bg_web_vhost_domain.lng | 1 + .../sites/lib/lang/br_web_vhost_domain.lng | 1 + .../sites/lib/lang/ca_web_vhost_domain.lng | 1 + .../sites/lib/lang/cz_web_vhost_domain.lng | 1 + .../sites/lib/lang/de_web_vhost_domain.lng | 1 + .../sites/lib/lang/dk_web_vhost_domain.lng | 1 + .../sites/lib/lang/el_web_vhost_domain.lng | 1 + .../sites/lib/lang/en_web_vhost_domain.lng | 1 + .../sites/lib/lang/es_web_vhost_domain.lng | 1 + .../sites/lib/lang/fi_web_vhost_domain.lng | 1 + .../sites/lib/lang/fr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hr_web_vhost_domain.lng | 1 + .../sites/lib/lang/hu_web_vhost_domain.lng | 1 + .../sites/lib/lang/id_web_vhost_domain.lng | 1 + .../sites/lib/lang/it_web_vhost_domain.lng | 1 + .../sites/lib/lang/ja_web_vhost_domain.lng | 1 + .../sites/lib/lang/nl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pl_web_vhost_domain.lng | 1 + .../sites/lib/lang/pt_web_vhost_domain.lng | 1 + .../sites/lib/lang/ro_web_vhost_domain.lng | 1 + .../sites/lib/lang/ru_web_vhost_domain.lng | 1 + .../sites/lib/lang/se_web_vhost_domain.lng | 1 + .../sites/lib/lang/sk_web_vhost_domain.lng | 1 + .../sites/lib/lang/tr_web_vhost_domain.lng | 1 + .../sites/templates/web_vhost_domain_ssl.htm | 16 +++++++--- interface/web/sites/web_vhost_domain_edit.php | 7 ++++ server/conf/apache_apps.vhost.master | 14 ++++++-- server/conf/nginx_vhost.conf.master | 32 +++++++++---------- server/conf/vhost.conf.master | 8 +++-- .../plugins-available/apache2_plugin.inc.php | 11 +++++++ server/plugins-available/nginx_plugin.inc.php | 12 +++++++ 64 files changed, 172 insertions(+), 41 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 8d673ae866..bf2f02f677 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -36,8 +36,5 @@ ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET -- add SSHFP and DNAME record ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; --- remove SPDY option -ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; - -- was missing in incremental, inserted for fixing older installations -ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; +ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index e0c3848aa5..c54f0ac345 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2070,6 +2070,7 @@ CREATE TABLE `web_domain` ( `traffic_quota_lock` enum('n','y') NOT NULL default 'n', `fastcgi_php_version` varchar(255) DEFAULT NULL, `proxy_directives` mediumtext, + `enable_spdy` ENUM('y','n') NULL DEFAULT 'n', `last_quota_notification` date NULL default NULL, `rewrite_rules` mediumtext, `added_date` date NULL DEFAULT NULL, diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index 14f0f10da2..9cccf8d38e 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -10,14 +10,20 @@ <VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}> ServerAdmin webmaster@localhost {tmpl_var name='apps_vhost_servername'} - + <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> + + {tmpl_if name="enable_spdy" op="==" value="y"} + <IfModule spdy_module> + SpdyEnabled on + </IfModule> + {/tmpl_if} <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} @@ -33,7 +39,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -48,7 +54,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -81,3 +87,5 @@ </VirtualHost> + + diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index c500fb0cc2..5edc09807c 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -94,6 +94,7 @@ php_ini_path_apache=/etc/php5/apache2/php.ini php_ini_path_cgi=/etc/php5/cgi/php.ini check_apache_config=y enable_sni=y +enable_spdy=n skip_le_check=n enable_ip_wildcard=y overtraffic_notify_admin=y diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index de2caf1750..0d570f2e94 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1317,6 +1317,15 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), + 'enable_spdy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array ( + 0 => 'n', + 1 => 'y' + ) + ), 'apps_vhost_enabled' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 4123c113d1..0bd4567220 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 463d1c7b2a..ae760d95cc 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 65a2dc4fd7..b24f1ef905 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -277,6 +277,7 @@ $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede'; $wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos'; $wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.'; $wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações'; +$wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponÃvel'; $wb['web_settings_txt'] = 'Servidor web'; $wb['xmpp_server_txt'] = 'Servidor xmpp'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 496df78f77..b4af211185 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -272,6 +272,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index fbc1d777c3..76783fd95a 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -269,6 +269,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'PoužÃt IPv6'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 1646360a7a..7487bec764 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -275,6 +275,7 @@ $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; $wb['php_handler_txt'] = 'Standard-PHP-Handler'; $wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; +$wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; $wb['disabled_txt'] = 'Disabled'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 476e432161..44ffc53391 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -273,6 +273,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index cf215b939e..46ce9bfcfc 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index e12e1d4042..2eea4f220d 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -277,6 +277,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index f343931695..d400e81367 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -68,6 +68,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/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'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6eefadb45f..b5fd51c4f8 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 8871795209..4b020da068 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -272,6 +272,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index b36fd13486..93333280b6 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 789e86a649..e48f231f2e 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index ee197a4d0a..4023e619b0 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index cd71123720..928ca7ebc2 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -272,6 +272,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 4ef8d13422..1220886fc3 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 5b5fcf122b..9ff06f34d3 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 1d6caa8e5e..95b289ef72 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index fcf7a23e88..31360c0b0e 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 2c3b4fdce4..74055e9874 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index f3f5a47c7d..8754aece3c 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -274,6 +274,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/HTTP2 доÑтупным'; $wb['web_settings_txt'] = 'Web-Ñервер'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'ИÑпользовать IPv6'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 634c3655a7..c45116d4fa 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 50c8c0b4c9..c4858143b0 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -274,6 +274,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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 09aa3adf2d..b52479ecf5 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -276,6 +276,7 @@ $wb['network_filesystem_txt'] = 'AÄŸ Dosya Sistemi'; $wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki deÄŸiÅŸiklikler denetlensin'; $wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki deÄŸiÅŸikliklerin kaç dakikada bir denetleneceÄŸini yazın.'; $wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz'; +$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın'; $wb['web_settings_txt'] = 'Web Sunucu'; $wb['xmpp_server_txt'] = 'XMPP Sunucu'; $wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın'; diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index 64173549c9..f5f38affe7 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -163,7 +163,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='overquota_db_notify_client_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='overquota_db_notify_client'} + {tmpl_var name='overquota_db_notify_client'} </div> </div> <div class="form-group"> @@ -197,6 +197,14 @@ {tmpl_var name='enable_sni'} </div> </div> + <div class="form-group"> + <label class="col-sm-3 control-label"> + <tmpl_var name="enable_spdy_txt"> + </label> + <div class="col-sm-9"> + <tmpl_var name="enable_spdy"> + </div> + </div> <div class="form-group"> <label for="CA_path" class="col-sm-3 control-label">{tmpl_var name='CA_path_txt'}</label> <div class="col-sm-9"><input type="text" name="CA_path" id="CA_path" value="{tmpl_var name='CA_path'}" autocomplete="new-password" class="form-control" /></div></div> @@ -249,7 +257,7 @@ <div class="form-group"> <label for="connect_userid_to_webid_start" class="col-sm-3 control-label">{tmpl_var name='connect_userid_to_webid_start_txt'}</label> <div class="col-sm-9"><input type="text" name="connect_userid_to_webid_start" id="connect_userid_to_webid_start" value="{tmpl_var name='connect_userid_to_webid_start'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -353,7 +361,7 @@ <div class="form-group"> <label for="apps_vhost_servername" class="col-sm-3 control-label">{tmpl_var name='apps_vhost_servername_txt'}</label> <div class="col-sm-9"><input type="text" name="apps_vhost_servername" id="apps_vhost_servername" value="{tmpl_var name='apps_vhost_servername'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -381,15 +389,15 @@ <div class="form-group"> <label for="awstats_buildstaticpages_pl" class="col-sm-3 control-label">{tmpl_var name='awstats_buildstaticpages_pl_txt'}</label> <div class="col-sm-9"><input type="text" name="awstats_buildstaticpages_pl" id="awstats_buildstaticpages_pl" value="{tmpl_var name='awstats_buildstaticpages_pl'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> </div> </div> - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_config_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_config_list.php">{tmpl_var name='btn_cancel_txt'}</button> @@ -402,7 +410,7 @@ serverType = $(this).val(); adjustForm(); }); - + function adjustForm(){ if(serverType == "nginx"){ jQuery('.nginx').show(); diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 7da71281cf..beb952bfe6 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -591,6 +591,15 @@ if($ssl_available) { 'default' => '', 'value' => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt') ), + 'enable_spdy' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array ( + 0 => 'n', + 1 => 'y' + ) + ), //################################# // END Datatable fields //################################# 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 136829a7b2..f9c396616b 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -140,6 +140,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/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_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index 8c48f035fe..1ab6c244cc 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -139,6 +139,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/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/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index a3a14e335b..a074b160a3 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -143,6 +143,7 @@ $wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracter $wb['subdomain_error_empty'] = 'O subdomÃnio está em branco ou possui caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; +$wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Carregar detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; 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 cf25d81260..d0a5a58bd3 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -139,6 +139,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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng index ea814b0cb9..250f98c890 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -138,6 +138,7 @@ $wb['server_chosen_not_ok'] = 'Vybraný server nenà pro tento úÄet povolen.'; $wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'ZruÅ¡it'; +$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2'; $wb['load_client_data_txt'] = 'Nahrát údaje z podrobnostà registrovaného klienta'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)'; 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 449bcb588a..e4424799a6 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -138,6 +138,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/HTTP2'; $wb['load_client_data_txt'] = 'Kundendaten übernehmen'; $wb['load_my_data_txt'] = 'Meine Kontaktdaten laden'; $wb['reset_client_data_txt'] = 'Daten verwerfen'; 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 cf25d81260..d0a5a58bd3 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -139,6 +139,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/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_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng index f39ce19a9b..d4cb988a17 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -140,6 +140,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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index 497fcd1993..66bfd1ca19 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -143,6 +143,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/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_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 3f60826008..504bea2aa6 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -138,6 +138,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/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/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 82fd44a56a..460fbadff7 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -139,6 +139,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/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/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 5d817c611b..306a48aedc 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -139,6 +139,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/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/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index 4d70565928..d883532397 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -139,6 +139,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/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/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index d8bb15537b..4d54b0a4c7 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -139,6 +139,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/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/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 39df360c89..3aa65982cd 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -139,6 +139,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/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/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index 807039ca6c..cc890d855e 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -140,6 +140,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/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_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index 288b9fab11..bfb5e8b137 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -139,6 +139,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/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/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index 27371eee35..d67cde421a 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -139,6 +139,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/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'; 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 f1e945df6f..c24c319fe5 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -139,6 +139,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/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/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index 9eb927f000..dc6895c3e1 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -139,6 +139,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/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/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index 0127c4ee80..8e27105a6a 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -140,6 +140,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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index 827f149dd8..c9a2a0a4ba 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -139,6 +139,7 @@ $wb['server_chosen_not_ok'] = 'Выбранный Ñервер запрещён $wb['subdomain_error_empty'] = 'Поле поддомена пуÑÑ‚ или Ñодержит недопуÑтимые Ñимволы.'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; +$wb['enable_spdy_txt'] = 'Включить SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Загрузить информацию о клиенте'; $wb['load_my_data_txt'] = 'Загрузить мои контактные данные'; $wb['reset_client_data_txt'] = 'Ð¡Ð±Ñ€Ð¾Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…'; 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 1bac2468c1..ec509b333a 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -140,6 +140,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/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_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index c3b680b2b4..0509b1a3bb 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -139,6 +139,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/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/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 2e004d87ef..071df396e4 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -142,6 +142,7 @@ $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karak $wb['subdomain_error_empty'] = 'Alt etki alanı boÅŸ ya da geçersiz karakterler içeriyor.'; $wb['btn_save_txt'] = 'Kaydet'; $wb['btn_cancel_txt'] = 'Ä°ptal'; +$wb['enable_spdy_txt'] = 'SPDY kullanılsın'; $wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle'; $wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle'; $wb['reset_client_data_txt'] = 'Verileri Sıfırla'; diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm index d4ec6749e2..8b3d986a02 100644 --- a/interface/web/sites/templates/web_vhost_domain_ssl.htm +++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm @@ -62,7 +62,15 @@ {tmpl_var name='ssl_action'} </select></div> </div> - + {tmpl_if name="is_spdy_enabled"} + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='enable_spdy_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name="enable_spdy"} + </div> + </div> + {/tmpl_if} + <input type="hidden" name="id" value="{tmpl_var name='id'}"> @@ -83,11 +91,11 @@ $('#load_data').click(function(){ loadClientData(); }); - - + + function loadClientData() { var web_id = $("input[name=id]").val(); - + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {'web_id': web_id, 'type': "getclientssldata"}, function(data) { $('#ssl_organisation').val(data['company_name']); $('#ssl_locality').val(data['city']); diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 0d770476d1..82da18ae1e 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -840,6 +840,7 @@ class page_action extends tform_actions { $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); @@ -949,8 +950,10 @@ class page_action extends tform_actions { } $app->tpl->setLoop('folder_directive_snippets', $folder_directive_snippets); if(is_array($web_config[$server_id])) { + $app->tpl->setVar('is_spdy_enabled', ($web_config[$server_id]['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config[$server_id]['nginx_enable_pagespeed'])); } else { + $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed'])); } @@ -1322,6 +1325,10 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>'; } } + + 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'; //print_r($_POST['folder_directive_snippets']); diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index fe73487fa0..94982a6dc1 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -14,11 +14,17 @@ <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> + {tmpl_if name="enable_spdy" op="==" value="y"} + <IfModule spdy_module> + SpdyEnabled on + </IfModule> + {/tmpl_if} + <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -33,7 +39,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -48,7 +54,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -79,3 +85,5 @@ {/tmpl_if} </VirtualHost> + + diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index ce245787a5..978139174f 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -12,7 +12,7 @@ server { listen [::]:<tmpl_var name='http_port'>; </tmpl_if> <tmpl_if name='ssl_enabled'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl http2; + listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; <tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; @@ -22,19 +22,19 @@ server { # 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_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> - listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl http2; + listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; </tmpl_if> <tmpl_if name='ipv6_wildcard'> - listen [::]:<tmpl_var name='https_port'> ssl http2; + listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='domain'> <tmpl_var name='alias'>; root <tmpl_var name='web_document_root_www'>; - + <tmpl_if name='ssl_enabled'> <tmpl_if name='rewrite_to_https' op='==' value='y'> if ($scheme != "https") { @@ -72,16 +72,16 @@ server { } </tmpl_if> </tmpl_loop> -<tmpl_if name='use_proxy' op='!=' value='y'> +<tmpl_if name='use_proxy' op='!=' value='y'> index index.html index.htm index.php index.cgi index.pl index.xhtml; - -<tmpl_if name='ssi' op='==' value='y'> + +<tmpl_if name='ssi' op='==' value='y'> location ~ \.shtml$ { ssi on; } </tmpl_if> -<tmpl_if name='errordocs'> +<tmpl_if name='errordocs'> error_page 400 /error/400.html; error_page 401 /error/401.html; error_page 403 /error/403.html; @@ -124,7 +124,7 @@ server { internal; } </tmpl_if> - + <tmpl_if name='logging' op='==' value='yes'> error_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/error.log; access_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/access.log combined; @@ -149,7 +149,7 @@ server { index index.html; try_files $uri $uri/ =404; } - + location = /favicon.ico { log_not_found off; access_log off; @@ -162,7 +162,7 @@ server { log_not_found off; access_log off; } - + location /stats/ { <tmpl_var name='web_document_root_www_proxy'> index index.html index.php; @@ -325,13 +325,13 @@ server { location <tmpl_var name='htpasswd_location'> { ##merge## auth_basic "Members Only"; auth_basic_user_file <tmpl_var name='htpasswd_path'>.htpasswd; - + location ~ \.php$ { try_files <tmpl_var name='rnd_php_dummy_file'> @php; } } </tmpl_loop> -</tmpl_if> +</tmpl_if> } <tmpl_loop name="redirects"> @@ -340,7 +340,7 @@ server { <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:80; </tmpl_if> - + <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:443 ssl; <tmpl_if name='ipv6_enabled'> @@ -349,7 +349,7 @@ server { ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='rewrite_domain'>; <tmpl_if name='alias_seo_redirects2'> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 1857499299..0612c13f7f 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -50,10 +50,12 @@ ServerAdmin webmaster@<tmpl_var name='domain'> <tmpl_if name='ssl_enabled'> +<tmpl_if name='enable_http2' op='==' value='y'> Protocols h2 http/1.1 SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite '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' </tmpl_if> +</tmpl_if> <tmpl_if name='logging' op='==' value='anon'> ErrorLog "|/usr/local/ispconfig/server/scripts/vlogger -e -n -P -t \"error.log\" /var/log/ispconfig/httpd/<tmpl_var name='domain'>" @@ -385,7 +387,7 @@ 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'} <tmpl_if name='use_tcp'> - 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:<tmpl_var name='fpm_port'> -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:<tmpl_var name='fpm_port'> -pass-header Authorization -pass-header Content-Type </tmpl_if> <tmpl_if name='use_socket'> 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 <tmpl_var name='fpm_socket'> -pass-header Authorization -pass-header Content-Type @@ -511,9 +513,9 @@ RewriteCond %{REQUEST_URI} !^/php-fcgi/ RewriteCond %{REQUEST_URI} !^<tmpl_var name='rewrite_target'> </tmpl_if> - + RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'><tmpl_if name="rewrite_add_path" op="==" value="y">$1</tmpl_if> <tmpl_var name='rewrite_type'> - + </tmpl_loop> <tmpl_if name='ssl_enabled'> <tmpl_else> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index b969882f2b..5f697d060e 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1235,6 +1235,17 @@ class apache2_plugin { // Use separate bundle file only for apache versions < 2.4.8 if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; + // HTTP/2.0 ? + $vhost_data['enable_http2'] = 'n'; + 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; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index b57d38516e..89ac35734d 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1517,6 +1517,18 @@ class nginx_plugin { } } + // http2 or spdy? + $vhost_data['enable_http2'] = 'n'; + if($vhost_data['enable_spdy'] == 'y'){ + // check if nginx support http_v2; if so, use that instead of spdy + exec("2>&1 nginx -V | tr -- - '\n' | grep http_v2_module", $tmp_output, $tmp_retval); + if($tmp_retval == 0){ + $vhost_data['enable_http2'] = 'y'; + $vhost_data['enable_spdy'] = 'n'; + } + unset($tmp_output, $tmp_retval); + } + //proxy protocol settings if($web_config['vhost_proxy_protocol_enabled'] == "y"){ if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { -- GitLab From d80257cf2b46d8f78da5b197a548604f55821843 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 11:57:24 +0200 Subject: [PATCH 497/571] Revert "Revert "Merge branch 'http2-always' into 'stable-3.1'"" This reverts commit 0d61c249a2e10fbaa93faaadec93391e6f9ef2ed --- .../sql/incremental/upd_dev_collection.sql | 5 ++- install/sql/ispconfig3.sql | 1 - install/tpl/apache_apps.vhost.master | 16 +++------- install/tpl/server.ini.master | 1 - .../web/admin/form/server_config.tform.php | 9 ------ .../web/admin/lib/lang/ar_server_config.lng | 1 - .../web/admin/lib/lang/bg_server_config.lng | 1 - .../web/admin/lib/lang/br_server_config.lng | 1 - .../web/admin/lib/lang/ca_server_config.lng | 1 - .../web/admin/lib/lang/cz_server_config.lng | 1 - .../web/admin/lib/lang/de_server_config.lng | 1 - .../web/admin/lib/lang/dk_server_config.lng | 1 - .../web/admin/lib/lang/el_server_config.lng | 1 - .../web/admin/lib/lang/en_server_config.lng | 1 - .../web/admin/lib/lang/es_server_config.lng | 1 - .../web/admin/lib/lang/fi_server_config.lng | 1 - .../web/admin/lib/lang/fr_server_config.lng | 1 - .../web/admin/lib/lang/hr_server_config.lng | 1 - .../web/admin/lib/lang/hu_server_config.lng | 1 - .../web/admin/lib/lang/id_server_config.lng | 1 - .../web/admin/lib/lang/it_server_config.lng | 1 - .../web/admin/lib/lang/ja_server_config.lng | 1 - .../web/admin/lib/lang/nl_server_config.lng | 1 - .../web/admin/lib/lang/pl_server_config.lng | 1 - .../web/admin/lib/lang/pt_server_config.lng | 1 - .../web/admin/lib/lang/ro_server_config.lng | 1 - .../web/admin/lib/lang/ru_server_config.lng | 1 - .../web/admin/lib/lang/se_server_config.lng | 1 - .../web/admin/lib/lang/sk_server_config.lng | 1 - .../web/admin/lib/lang/tr_server_config.lng | 1 - .../templates/server_config_web_edit.htm | 22 ++++--------- .../web/sites/form/web_vhost_domain.tform.php | 9 ------ .../sites/lib/lang/ar_web_vhost_domain.lng | 1 - .../sites/lib/lang/bg_web_vhost_domain.lng | 1 - .../sites/lib/lang/br_web_vhost_domain.lng | 1 - .../sites/lib/lang/ca_web_vhost_domain.lng | 1 - .../sites/lib/lang/cz_web_vhost_domain.lng | 1 - .../sites/lib/lang/de_web_vhost_domain.lng | 1 - .../sites/lib/lang/dk_web_vhost_domain.lng | 1 - .../sites/lib/lang/el_web_vhost_domain.lng | 1 - .../sites/lib/lang/en_web_vhost_domain.lng | 1 - .../sites/lib/lang/es_web_vhost_domain.lng | 1 - .../sites/lib/lang/fi_web_vhost_domain.lng | 1 - .../sites/lib/lang/fr_web_vhost_domain.lng | 1 - .../sites/lib/lang/hr_web_vhost_domain.lng | 1 - .../sites/lib/lang/hu_web_vhost_domain.lng | 1 - .../sites/lib/lang/id_web_vhost_domain.lng | 1 - .../sites/lib/lang/it_web_vhost_domain.lng | 1 - .../sites/lib/lang/ja_web_vhost_domain.lng | 1 - .../sites/lib/lang/nl_web_vhost_domain.lng | 1 - .../sites/lib/lang/pl_web_vhost_domain.lng | 1 - .../sites/lib/lang/pt_web_vhost_domain.lng | 1 - .../sites/lib/lang/ro_web_vhost_domain.lng | 1 - .../sites/lib/lang/ru_web_vhost_domain.lng | 1 - .../sites/lib/lang/se_web_vhost_domain.lng | 1 - .../sites/lib/lang/sk_web_vhost_domain.lng | 1 - .../sites/lib/lang/tr_web_vhost_domain.lng | 1 - .../sites/templates/web_vhost_domain_ssl.htm | 16 +++------- interface/web/sites/web_vhost_domain_edit.php | 7 ---- server/conf/apache_apps.vhost.master | 14 ++------ server/conf/nginx_vhost.conf.master | 32 +++++++++---------- server/conf/vhost.conf.master | 8 ++--- .../plugins-available/apache2_plugin.inc.php | 11 ------- server/plugins-available/nginx_plugin.inc.php | 12 ------- 64 files changed, 41 insertions(+), 172 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index bf2f02f677..8d673ae866 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -36,5 +36,8 @@ ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET -- add SSHFP and DNAME record ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`; +-- remove SPDY option +ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; + -- was missing in incremental, inserted for fixing older installations -ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; \ No newline at end of file +ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index c54f0ac345..e0c3848aa5 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2070,7 +2070,6 @@ CREATE TABLE `web_domain` ( `traffic_quota_lock` enum('n','y') NOT NULL default 'n', `fastcgi_php_version` varchar(255) DEFAULT NULL, `proxy_directives` mediumtext, - `enable_spdy` ENUM('y','n') NULL DEFAULT 'n', `last_quota_notification` date NULL default NULL, `rewrite_rules` mediumtext, `added_date` date NULL DEFAULT NULL, diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index 9cccf8d38e..14f0f10da2 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -10,20 +10,14 @@ <VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}> ServerAdmin webmaster@localhost {tmpl_var name='apps_vhost_servername'} - + <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> - - {tmpl_if name="enable_spdy" op="==" value="y"} - <IfModule spdy_module> - SpdyEnabled on - </IfModule> - {/tmpl_if} <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} @@ -39,7 +33,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -54,7 +48,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -87,5 +81,3 @@ </VirtualHost> - - diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 5edc09807c..c500fb0cc2 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -94,7 +94,6 @@ php_ini_path_apache=/etc/php5/apache2/php.ini php_ini_path_cgi=/etc/php5/cgi/php.ini check_apache_config=y enable_sni=y -enable_spdy=n skip_le_check=n enable_ip_wildcard=y overtraffic_notify_admin=y diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 0d570f2e94..de2caf1750 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -1317,15 +1317,6 @@ $form["tabs"]['web'] = array( 'width' => '40', 'maxlength' => '255' ), - 'enable_spdy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), 'apps_vhost_enabled' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 0bd4567220..4123c113d1 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index ae760d95cc..463d1c7b2a 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index b24f1ef905..65a2dc4fd7 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -277,7 +277,6 @@ $wb['network_filesystem_txt'] = 'Sistema de arquivos de rede'; $wb['php_ini_check_minutes_txt'] = 'Verificar alterações no php.ini a cada X minutos'; $wb['php_ini_check_minutes_error_empty'] = 'Por favor, insira um valor para verificação de alterações no php.ini.'; $wb['php_ini_check_minutes_info_txt'] = '0 = sem verificações'; -$wb['enable_spdy_txt'] = 'Tornar SPDY/HTTP2 disponÃvel'; $wb['web_settings_txt'] = 'Servidor web'; $wb['xmpp_server_txt'] = 'Servidor xmpp'; $wb['xmpp_use_ipv6_txt'] = 'Usar IPv6'; diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index b4af211185..496df78f77 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -272,7 +272,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 76783fd95a..fbc1d777c3 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -269,7 +269,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'PoužÃt IPv6'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 7487bec764..1646360a7a 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -275,7 +275,6 @@ $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung'; $wb['php_handler_txt'] = 'Standard-PHP-Handler'; $wb['php_fpm_default_chroot_txt'] = 'Default chrooted PHP-FPM'; $wb['php_fpm_incron_reload_txt'] = 'Install incron trigger file to reload PHP-FPM'; -$wb['enable_spdy_txt'] = 'Stellt SPDY/HTTP2 zur Verfügung'; $wb['disable_bind_log_txt'] = 'Disable bind9 messages for Loglevel WARN'; $wb['apps_vhost_enabled_txt'] = 'Apps-vhost enabled'; $wb['disabled_txt'] = 'Disabled'; diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 44ffc53391..476e432161 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -273,7 +273,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index 46ce9bfcfc..cf215b939e 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 2eea4f220d..e12e1d4042 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -277,7 +277,6 @@ $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/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index d400e81367..f343931695 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -68,7 +68,6 @@ $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/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'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index b5fd51c4f8..6eefadb45f 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 4b020da068..8871795209 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 93333280b6..b36fd13486 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index e48f231f2e..789e86a649 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 4023e619b0..ee197a4d0a 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 928ca7ebc2..cd71123720 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -272,7 +272,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 1220886fc3..4ef8d13422 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 9ff06f34d3..5b5fcf122b 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 95b289ef72..1d6caa8e5e 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 31360c0b0e..fcf7a23e88 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 74055e9874..2c3b4fdce4 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index 8754aece3c..f3f5a47c7d 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -274,7 +274,6 @@ $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/HTTP2 доÑтупным'; $wb['web_settings_txt'] = 'Web-Ñервер'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'ИÑпользовать IPv6'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index c45116d4fa..634c3655a7 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index c4858143b0..50c8c0b4c9 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -274,7 +274,6 @@ $wb['dkim_strength_txt'] = 'DKIM strength'; $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes'; $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.'; $wb['php_ini_check_minutes_info_txt'] = '0 = no check'; -$wb['enable_spdy_txt'] = 'Makes SPDY/HTTP2 available'; $wb['web_settings_txt'] = 'Web Server'; $wb['xmpp_server_txt'] = 'XMPP Server'; $wb['xmpp_use_ipv6_txt'] = 'Use IPv6'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index b52479ecf5..09aa3adf2d 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -276,7 +276,6 @@ $wb['network_filesystem_txt'] = 'AÄŸ Dosya Sistemi'; $wb['php_ini_check_minutes_txt'] = 'Her X dakikada php.ini dosyasındaki deÄŸiÅŸiklikler denetlensin'; $wb['php_ini_check_minutes_error_empty'] = 'php.ini dosyasındaki deÄŸiÅŸikliklerin kaç dakikada bir denetleneceÄŸini yazın.'; $wb['php_ini_check_minutes_info_txt'] = '0 = denetim yapılmaz'; -$wb['enable_spdy_txt'] = 'SPDY/HTTP2 Kullanılsın'; $wb['web_settings_txt'] = 'Web Sunucu'; $wb['xmpp_server_txt'] = 'XMPP Sunucu'; $wb['xmpp_use_ipv6_txt'] = 'IPv6 Kullanılsın'; diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm index f5f38affe7..64173549c9 100644 --- a/interface/web/admin/templates/server_config_web_edit.htm +++ b/interface/web/admin/templates/server_config_web_edit.htm @@ -163,7 +163,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='overquota_db_notify_client_txt'}</label> <div class="col-sm-9"> - {tmpl_var name='overquota_db_notify_client'} + {tmpl_var name='overquota_db_notify_client'} </div> </div> <div class="form-group"> @@ -197,14 +197,6 @@ {tmpl_var name='enable_sni'} </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label"> - <tmpl_var name="enable_spdy_txt"> - </label> - <div class="col-sm-9"> - <tmpl_var name="enable_spdy"> - </div> - </div> <div class="form-group"> <label for="CA_path" class="col-sm-3 control-label">{tmpl_var name='CA_path_txt'}</label> <div class="col-sm-9"><input type="text" name="CA_path" id="CA_path" value="{tmpl_var name='CA_path'}" autocomplete="new-password" class="form-control" /></div></div> @@ -257,7 +249,7 @@ <div class="form-group"> <label for="connect_userid_to_webid_start" class="col-sm-3 control-label">{tmpl_var name='connect_userid_to_webid_start_txt'}</label> <div class="col-sm-9"><input type="text" name="connect_userid_to_webid_start" id="connect_userid_to_webid_start" value="{tmpl_var name='connect_userid_to_webid_start'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -361,7 +353,7 @@ <div class="form-group"> <label for="apps_vhost_servername" class="col-sm-3 control-label">{tmpl_var name='apps_vhost_servername_txt'}</label> <div class="col-sm-9"><input type="text" name="apps_vhost_servername" id="apps_vhost_servername" value="{tmpl_var name='apps_vhost_servername'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> @@ -389,15 +381,15 @@ <div class="form-group"> <label for="awstats_buildstaticpages_pl" class="col-sm-3 control-label">{tmpl_var name='awstats_buildstaticpages_pl_txt'}</label> <div class="col-sm-9"><input type="text" name="awstats_buildstaticpages_pl" id="awstats_buildstaticpages_pl" value="{tmpl_var name='awstats_buildstaticpages_pl'}" class="form-control" /></div></div> - + <!-- End content --> </div> </div> </div> </div> - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> - + <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_config_edit.php">{tmpl_var name='btn_save_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_config_list.php">{tmpl_var name='btn_cancel_txt'}</button> @@ -410,7 +402,7 @@ serverType = $(this).val(); adjustForm(); }); - + function adjustForm(){ if(serverType == "nginx"){ jQuery('.nginx').show(); diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index beb952bfe6..7da71281cf 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -591,15 +591,6 @@ if($ssl_available) { 'default' => '', 'value' => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt') ), - 'enable_spdy' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array ( - 0 => 'n', - 1 => 'y' - ) - ), //################################# // END Datatable fields //################################# 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 f9c396616b..136829a7b2 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index 1ab6c244cc..8c48f035fe 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/br_web_vhost_domain.lng b/interface/web/sites/lib/lang/br_web_vhost_domain.lng index a074b160a3..a3a14e335b 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -143,7 +143,6 @@ $wb['backup_excludes_error_regex'] = 'Os diretórios excluÃdos possuem caracter $wb['subdomain_error_empty'] = 'O subdomÃnio está em branco ou possui caracteres inválidos.'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; -$wb['enable_spdy_txt'] = 'Habilitar SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Carregar detalhes do cliente'; $wb['load_my_data_txt'] = 'Carregar detalhes do contato'; $wb['reset_client_data_txt'] = 'Limpar dados'; 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 d0a5a58bd3..cf25d81260 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Load client details'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Reset data'; 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 250f98c890..ea814b0cb9 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -138,7 +138,6 @@ $wb['server_chosen_not_ok'] = 'Vybraný server nenà pro tento úÄet povolen.'; $wb['subdomain_error_empty'] = 'Pole subdomény je prázdné nebo obsahuje neplatné znaky.'; $wb['btn_save_txt'] = 'Uložit'; $wb['btn_cancel_txt'] = 'ZruÅ¡it'; -$wb['enable_spdy_txt'] = 'Povolit SPDY / HTTP2'; $wb['load_client_data_txt'] = 'Nahrát údaje z podrobnostà registrovaného klienta'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Obnovit údaje (resetovat)'; 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 e4424799a6..449bcb588a 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -138,7 +138,6 @@ $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/HTTP2'; $wb['load_client_data_txt'] = 'Kundendaten übernehmen'; $wb['load_my_data_txt'] = 'Meine Kontaktdaten laden'; $wb['reset_client_data_txt'] = 'Daten verwerfen'; 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 d0a5a58bd3..cf25d81260 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; -$wb['enable_spdy_txt'] = 'Enable SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Load client details'; $wb['load_my_data_txt'] = 'Load my contact details'; $wb['reset_client_data_txt'] = 'Reset data'; 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 d4cb988a17..f39ce19a9b 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index 66bfd1ca19..497fcd1993 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -143,7 +143,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 504bea2aa6..3f60826008 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -138,7 +138,6 @@ $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/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/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 460fbadff7..82fd44a56a 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 306a48aedc..5d817c611b 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index d883532397..4d70565928 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index 4d54b0a4c7..d8bb15537b 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 3aa65982cd..39df360c89 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index cc890d855e..807039ca6c 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index bfb5e8b137..288b9fab11 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index d67cde421a..27371eee35 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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'; 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 c24c319fe5..f1e945df6f 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index dc6895c3e1..9eb927f000 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index 8e27105a6a..0127c4ee80 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index c9a2a0a4ba..827f149dd8 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -139,7 +139,6 @@ $wb['server_chosen_not_ok'] = 'Выбранный Ñервер запрещён $wb['subdomain_error_empty'] = 'Поле поддомена пуÑÑ‚ или Ñодержит недопуÑтимые Ñимволы.'; $wb['btn_save_txt'] = 'Сохранить'; $wb['btn_cancel_txt'] = 'Отменить'; -$wb['enable_spdy_txt'] = 'Включить SPDY/HTTP2'; $wb['load_client_data_txt'] = 'Загрузить информацию о клиенте'; $wb['load_my_data_txt'] = 'Загрузить мои контактные данные'; $wb['reset_client_data_txt'] = 'Ð¡Ð±Ñ€Ð¾Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…'; 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 ec509b333a..1bac2468c1 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -140,7 +140,6 @@ $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/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_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index 0509b1a3bb..c3b680b2b4 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -139,7 +139,6 @@ $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/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/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 071df396e4..2e004d87ef 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -142,7 +142,6 @@ $wb['backup_excludes_error_regex'] = 'Katılmayacak klasörlerde geçersiz karak $wb['subdomain_error_empty'] = 'Alt etki alanı boÅŸ ya da geçersiz karakterler içeriyor.'; $wb['btn_save_txt'] = 'Kaydet'; $wb['btn_cancel_txt'] = 'Ä°ptal'; -$wb['enable_spdy_txt'] = 'SPDY kullanılsın'; $wb['load_client_data_txt'] = 'Müşteri Bilgilerini Yükle'; $wb['load_my_data_txt'] = 'Profil Bilgilerimi Yükle'; $wb['reset_client_data_txt'] = 'Verileri Sıfırla'; diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm index 8b3d986a02..d4ec6749e2 100644 --- a/interface/web/sites/templates/web_vhost_domain_ssl.htm +++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm @@ -62,15 +62,7 @@ {tmpl_var name='ssl_action'} </select></div> </div> - {tmpl_if name="is_spdy_enabled"} - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='enable_spdy_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name="enable_spdy"} - </div> - </div> - {/tmpl_if} - + <input type="hidden" name="id" value="{tmpl_var name='id'}"> @@ -91,11 +83,11 @@ $('#load_data').click(function(){ loadClientData(); }); - - + + function loadClientData() { var web_id = $("input[name=id]").val(); - + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {'web_id': web_id, 'type': "getclientssldata"}, function(data) { $('#ssl_organisation').val(data['company_name']); $('#ssl_locality').val(data['city']); diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 82da18ae1e..0d770476d1 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -840,7 +840,6 @@ class page_action extends tform_actions { $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); @@ -950,10 +949,8 @@ class page_action extends tform_actions { } $app->tpl->setLoop('folder_directive_snippets', $folder_directive_snippets); if(is_array($web_config[$server_id])) { - $app->tpl->setVar('is_spdy_enabled', ($web_config[$server_id]['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config[$server_id]['nginx_enable_pagespeed'])); } else { - $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y')); $app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed'])); } @@ -1325,10 +1322,6 @@ class page_action extends tform_actions { $app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>'; } } - - 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'; //print_r($_POST['folder_directive_snippets']); diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index 94982a6dc1..fe73487fa0 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -14,17 +14,11 @@ <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> - + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> - {tmpl_if name="enable_spdy" op="==" value="y"} - <IfModule spdy_module> - SpdyEnabled on - </IfModule> - {/tmpl_if} - <IfModule mod_php5.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -39,7 +33,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_php7.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php @@ -54,7 +48,7 @@ </tmpl_if> </Directory> </IfModule> - + <IfModule mod_fcgid.c> DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps @@ -85,5 +79,3 @@ {/tmpl_if} </VirtualHost> - - diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 978139174f..ce245787a5 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -12,7 +12,7 @@ server { listen [::]:<tmpl_var name='http_port'>; </tmpl_if> <tmpl_if name='ssl_enabled'> - listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen <tmpl_var name='ip_address'>:<tmpl_var name='https_port'> ssl http2; <tmpl_if name='use_proxy_protocol' op='==' value='y'> <tmpl_if name='proxy_protocol_https' op='>' value='0'> listen <tmpl_var name='ip_address'>:<tmpl_var name='proxy_protocol_https'> ssl proxy_protocol; @@ -22,19 +22,19 @@ server { # 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_prefer_server_ciphers on; <tmpl_if name='ipv6_enabled'> - listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen [<tmpl_var name='ipv6_address'>]:<tmpl_var name='https_port'> ssl http2; </tmpl_if> <tmpl_if name='ipv6_wildcard'> - listen [::]:<tmpl_var name='https_port'> ssl{tmpl_if name='enable_http2' op='==' value='y'} http2{/tmpl_if}{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; + listen [::]:<tmpl_var name='https_port'> ssl http2; </tmpl_if> ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='domain'> <tmpl_var name='alias'>; root <tmpl_var name='web_document_root_www'>; - + <tmpl_if name='ssl_enabled'> <tmpl_if name='rewrite_to_https' op='==' value='y'> if ($scheme != "https") { @@ -72,16 +72,16 @@ server { } </tmpl_if> </tmpl_loop> -<tmpl_if name='use_proxy' op='!=' value='y'> +<tmpl_if name='use_proxy' op='!=' value='y'> index index.html index.htm index.php index.cgi index.pl index.xhtml; - -<tmpl_if name='ssi' op='==' value='y'> + +<tmpl_if name='ssi' op='==' value='y'> location ~ \.shtml$ { ssi on; } </tmpl_if> -<tmpl_if name='errordocs'> +<tmpl_if name='errordocs'> error_page 400 /error/400.html; error_page 401 /error/401.html; error_page 403 /error/403.html; @@ -124,7 +124,7 @@ server { internal; } </tmpl_if> - + <tmpl_if name='logging' op='==' value='yes'> error_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/error.log; access_log /var/log/ispconfig/httpd/<tmpl_var name='domain'>/access.log combined; @@ -149,7 +149,7 @@ server { index index.html; try_files $uri $uri/ =404; } - + location = /favicon.ico { log_not_found off; access_log off; @@ -162,7 +162,7 @@ server { log_not_found off; access_log off; } - + location /stats/ { <tmpl_var name='web_document_root_www_proxy'> index index.html index.php; @@ -325,13 +325,13 @@ server { location <tmpl_var name='htpasswd_location'> { ##merge## auth_basic "Members Only"; auth_basic_user_file <tmpl_var name='htpasswd_path'>.htpasswd; - + location ~ \.php$ { try_files <tmpl_var name='rnd_php_dummy_file'> @php; } } </tmpl_loop> -</tmpl_if> +</tmpl_if> } <tmpl_loop name="redirects"> @@ -340,7 +340,7 @@ server { <tmpl_if name='ipv6_enabled'> listen [<tmpl_var name='ipv6_address'>]:80; </tmpl_if> - + <tmpl_if name='ssl_enabled'> listen <tmpl_var name='ip_address'>:443 ssl; <tmpl_if name='ipv6_enabled'> @@ -349,7 +349,7 @@ server { ssl_certificate <tmpl_var name='ssl_crt_file'>; ssl_certificate_key <tmpl_var name='ssl_key_file'>; </tmpl_if> - + server_name <tmpl_var name='rewrite_domain'>; <tmpl_if name='alias_seo_redirects2'> diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 0612c13f7f..1857499299 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -50,12 +50,10 @@ ServerAdmin webmaster@<tmpl_var name='domain'> <tmpl_if name='ssl_enabled'> -<tmpl_if name='enable_http2' op='==' value='y'> Protocols h2 http/1.1 SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite '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' </tmpl_if> -</tmpl_if> <tmpl_if name='logging' op='==' value='anon'> ErrorLog "|/usr/local/ispconfig/server/scripts/vlogger -e -n -P -t \"error.log\" /var/log/ispconfig/httpd/<tmpl_var name='domain'>" @@ -387,7 +385,7 @@ 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'} <tmpl_if name='use_tcp'> - 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:<tmpl_var name='fpm_port'> -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:<tmpl_var name='fpm_port'> -pass-header Authorization -pass-header Content-Type </tmpl_if> <tmpl_if name='use_socket'> 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 <tmpl_var name='fpm_socket'> -pass-header Authorization -pass-header Content-Type @@ -513,9 +511,9 @@ RewriteCond %{REQUEST_URI} !^/php-fcgi/ RewriteCond %{REQUEST_URI} !^<tmpl_var name='rewrite_target'> </tmpl_if> - + RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'><tmpl_if name="rewrite_add_path" op="==" value="y">$1</tmpl_if> <tmpl_var name='rewrite_type'> - + </tmpl_loop> <tmpl_if name='ssl_enabled'> <tmpl_else> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 5f697d060e..b969882f2b 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1235,17 +1235,6 @@ class apache2_plugin { // Use separate bundle file only for apache versions < 2.4.8 if(@is_file($bundle_file) && version_compare($app->system->getapacheversion(true), '2.4.8', '<')) $vhost_data['has_bundle_cert'] = 1; - // HTTP/2.0 ? - $vhost_data['enable_http2'] = 'n'; - 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; diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 89ac35734d..b57d38516e 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1517,18 +1517,6 @@ class nginx_plugin { } } - // http2 or spdy? - $vhost_data['enable_http2'] = 'n'; - if($vhost_data['enable_spdy'] == 'y'){ - // check if nginx support http_v2; if so, use that instead of spdy - exec("2>&1 nginx -V | tr -- - '\n' | grep http_v2_module", $tmp_output, $tmp_retval); - if($tmp_retval == 0){ - $vhost_data['enable_http2'] = 'y'; - $vhost_data['enable_spdy'] = 'n'; - } - unset($tmp_output, $tmp_retval); - } - //proxy protocol settings if($web_config['vhost_proxy_protocol_enabled'] == "y"){ if((int)$web_config['vhost_proxy_protocol_https_port'] > 0) { -- GitLab From f09c9af5009e0716b98cd42dedf1b1875de741f5 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 12:00:07 +0200 Subject: [PATCH 498/571] Do not use Protocols directive on systems without http2 module --- server/conf/vhost.conf.master | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 1857499299..8cc87515b1 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -50,7 +50,9 @@ ServerAdmin webmaster@<tmpl_var name='domain'> <tmpl_if name='ssl_enabled'> - Protocols h2 http/1.1 + <IfModule mod_http2.c> + Protocols h2 http/1.1 + </IfModule> SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite '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' </tmpl_if> -- GitLab From 5f15485ec1bbfcffd51613fcbe425d905b482e5f Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Thu, 23 Jul 2020 13:32:53 +0200 Subject: [PATCH 499/571] allow longer cc-Fields --- interface/web/mail/form/mail_user.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 3d1a8fde7f..8fb6c4a692 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -187,7 +187,7 @@ $form["tabs"]['mailuser'] = array( 'default' => '', 'value' => '', 'width' => '30', - 'maxlength' => '255' + 'maxlength' => '65535' ), 'sender_cc' => array ( 'datatype' => 'VARCHAR', -- GitLab From 1076198f1126b9edb87715bb8e5de0c1f1729b87 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 14:40:53 +0200 Subject: [PATCH 500/571] Update system_config.tform.php to trigger MR pipeline --- interface/web/admin/form/system_config.tform.php | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 84c586da89..562c3a5226 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -776,4 +776,3 @@ $form['tabs']['dns_ca'] = array ( ) ); -?> \ No newline at end of file -- GitLab From 2532502e085772ef10317b3859c7d3a37c7c3bc0 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 15:31:42 +0200 Subject: [PATCH 501/571] - fixed issue with file names in rspamd user filter config --- .git-scripts/syntax.sh | 4 +- interface/lib/classes/remote.d/sites.inc.php | 70 +++++++++---------- .../plugins-available/rspamd_plugin.inc.php | 11 +++ 3 files changed, 48 insertions(+), 37 deletions(-) diff --git a/.git-scripts/syntax.sh b/.git-scripts/syntax.sh index e584e2ef10..d66022c7c3 100644 --- a/.git-scripts/syntax.sh +++ b/.git-scripts/syntax.sh @@ -20,7 +20,7 @@ fi FILECNT=$(eval "${CMD} | wc -l") ; for F in $(eval "$CMD") ; do - if [[ ! -e "${F}" && -f "${F}" ]] ; then + if [[ ! -e "${F}" || ! -f "${F}" ]] ; then continue ; fi R=$(php -d error_reporting=E_ALL -d display_errors=On -l "$F" 2>/dev/null) ; @@ -64,4 +64,4 @@ if [ $WARNCNT -gt 0 ] ; then echo "" fi -exit $EX \ No newline at end of file +exit $EX diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php index 9efbecc091..10fc028e64 100644 --- a/interface/lib/classes/remote.d/sites.inc.php +++ b/interface/lib/classes/remote.d/sites.inc.php @@ -102,7 +102,7 @@ class remoting_sites extends remoting { $app->remoting_lib->loadFormDef('../sites/form/database.tform.php'); return $app->remoting_lib->getDataRecord($primary_id); } - + /* TODO: secure queries! */ //* Add a record public function sites_database_add($session_id, $client_id, $params) @@ -130,7 +130,7 @@ class remoting_sites extends remoting { $retval = $this->insertQueryExecute($sql, $params); $app->sites_database_plugin->processDatabaseInsert($this); - + // set correct values for backup_interval and backup_copies if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){ $sql_set = array(); @@ -140,7 +140,7 @@ class remoting_sites extends remoting { if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']); $this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$retval, $retval, $params); } - + return $retval; } @@ -165,7 +165,7 @@ class remoting_sites extends remoting { $this->dataRecord = $params; $app->sites_database_plugin->processDatabaseUpdate($this); $retval = $this->updateQueryExecute($sql, $primary_id, $params); - + // set correct values for backup_interval and backup_copies if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){ $sql_set = array(); @@ -175,7 +175,7 @@ class remoting_sites extends remoting { if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']); $this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$primary_id, $primary_id, $params); } - + return $retval; } @@ -452,7 +452,7 @@ class remoting_sites extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + if($params['log_retention'] == '') $params['log_retention'] = 30; //* Set a few defaults for nginx servers @@ -524,7 +524,7 @@ class remoting_sites extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + if($params['log_retention'] == '') $params['log_retention'] = 30; //* Set a few defaults for nginx servers @@ -596,7 +596,7 @@ class remoting_sites extends remoting { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + if($params['log_retention'] == '') $params['log_retention'] = 30; //* Set a few defaults for nginx servers @@ -880,7 +880,7 @@ class remoting_sites extends remoting { $app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php'); $params = $app->remoting_lib->getDataRecord($primary_id); $params['active'] = $status; - + $affected_rows = $this->updateQuery('../sites/form/web_vhost_domain.tform.php', 0, $primary_id, $params); return $affected_rows; } else { @@ -905,57 +905,57 @@ class remoting_sites extends remoting { $all = $app->db->queryAllRecords($sql, $client_id); return $all; } - + //** backup functions ----------------------------------------------------------------------------------- public function sites_web_domain_backup_list($session_id, $site_id = null) { global $app; - + if(!$this->checkPerm($session_id, 'sites_web_domain_backup')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + $result = $app->db->queryAllRecords("SELECT * FROM web_backup".(($site_id != null)?' WHERE parent_domain_id = ?':''), $site_id); return $result; } - + //* Backup download and restoration by Abdi Joseph public function sites_web_domain_backup($session_id, $primary_id, $action_type) { global $app; - + if(!$this->checkPerm($session_id, 'sites_web_domain_backup')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + //*Set variables $backup_record = $app->db->queryOneRecord("SELECT * FROM `web_backup` WHERE `backup_id`= ?", $primary_id); $server_id = $backup_record['server_id']; - + //*Set default action state $action_state = "pending"; $tstamp = time(); - + //* Basic validation of variables if ($server_id <= 0) { throw new SoapFault('invalid_backup_id', "Invalid or non existant backup_id $primary_id"); return false; } - + if ($action_type != 'backup_download' and $action_type != 'backup_restore' and $action_type != 'backup_delete') { throw new SoapFault('invalid_action', "Invalid action_type $action_type"); return false; } - + //* Validate instance $instance_record = $app->db->queryOneRecord("SELECT * FROM `sys_remoteaction` WHERE `action_param`= ? and `action_type`= ? and `action_state`= ?", $primary_id, $action_type, 'pending'); if ($instance_record['action_id'] >= 1) { throw new SoapFault('duplicate_action', "There is already a pending $action_type action"); return false; } - + //* Save the record if ($app->db->query("INSERT INTO `sys_remoteaction` SET `server_id` = ?, `tstamp` = ?, `action_type` = ?, `action_param` = ?, `action_state` = ?", $server_id, $tstamp, $action_type, $primary_id, $action_state)) { return true; @@ -963,64 +963,64 @@ class remoting_sites extends remoting { return false; } } - + //** quota functions ----------------------------------------------------------------------------------- public function quota_get_by_user($session_id, $client_id) { global $app; $app->uses('quota_lib'); - + if(!$this->checkPerm($session_id, 'quota_get_by_user')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + return $app->quota_lib->get_quota_data($client_id, false); } - + public function trafficquota_get_by_user($session_id, $client_id, $lastdays = 0) { global $app; $app->uses('quota_lib'); - + if(!$this->checkPerm($session_id, 'trafficquota_get_by_user')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } if ($client_id != null) $client_id = $app->functions->intval($client_id); - + return $app->quota_lib->get_trafficquota_data($client_id, $lastdays); } - + public function ftptrafficquota_data($session_id, $client_id, $lastdays = 0) { global $app; $app->uses('quota_lib'); - + if(!$this->checkPerm($session_id, 'trafficquota_get_by_user')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } if ($client_id != null) $client_id = $app->functions->intval($client_id); - + return $app->quota_lib->get_ftptrafficquota_data($client_id, $lastdays); } - + public function databasequota_get_by_user($session_id, $client_id) { global $app; $app->uses('quota_lib'); - + if(!$this->checkPerm($session_id, 'databasequota_get_by_user')) { throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - + return $app->quota_lib->get_databasequota_data($client_id, false); } - + // ---------------------------------------------------------------------------------------------------------- //* Get record details @@ -1070,8 +1070,8 @@ class remoting_sites extends remoting { $affected_rows = $this->deleteQuery('../sites/form/webdav_user.tform.php', $primary_id); return $affected_rows; } - - + + } ?> diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php index 4812deb683..e9a6cdd633 100644 --- a/server/plugins-available/rspamd_plugin.inc.php +++ b/server/plugins-available/rspamd_plugin.inc.php @@ -206,6 +206,17 @@ class rspamd_plugin { return; } + $old_settings_name = $settings_name; + $settings_name = $app->functions->idn_encode($settings_name); + + if($old_settings_name !== $settings_name) { + // we changed naming to idn-encoded form due to path check issues. Delete old file if existing. + $old_settings_file = $this->users_config_dir . str_replace('@', '_', $old_settings_name) . '.conf'; + if(is_file($old_settings_file)) { + unlink($old_settings_file); + } + } + $settings_file = $this->users_config_dir . str_replace('@', '_', $settings_name) . '.conf'; //$app->log('Settings file for rspamd is ' . $settings_file, LOGLEVEL_WARN); if($mode === 'delete') { -- GitLab From 38fdcf89eb3b7f592f38792446c4c20335d518f6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 15:41:28 +0200 Subject: [PATCH 502/571] - add logging to acme.sh commands and add that log file to internal log rotation --- server/lib/classes/cron.d/200-logfiles.inc.php | 16 ++++++++-------- server/lib/classes/letsencrypt.inc.php | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index 203d3c0bda..b0470b2ec7 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -49,10 +49,10 @@ 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 = $app->functions->intval($server_config['log_retention']); } else { @@ -121,18 +121,18 @@ class cronjob_logfiles extends cronjob { $app->system->exec_safe("gzip -c ? > ?", $logfile, $logfile . '.gz'); unlink($logfile); } - + $cron_logfiles = array('cron.log', 'cron_error.log', 'cron_wget.log'); foreach($cron_logfiles as $cron_logfile) { $cron_logfile = $rec['document_root'].'/' . $log_folder . '/' . $cron_logfile; - + // rename older files (move up by one) $num = $log_retention; while($num >= 1) { if(is_file($cron_logfile . '.' . $num . '.gz')) rename($cron_logfile . '.' . $num . '.gz', $cron_logfile . '.' . ($num + 1) . '.gz'); $num--; } - + // compress current logfile if(is_file($cron_logfile)) { $app->system->exec_safe("gzip -c ? > ?", $cron_logfile, $cron_logfile . '.1.gz'); @@ -146,7 +146,7 @@ class cronjob_logfiles extends cronjob { } } - // rotate and compress the error.log + // rotate and compress the error.log $error_logfile = $rec['document_root'].'/' . $log_folder . '/error.log'; // rename older files (move up by one) $num = $log_retention; @@ -184,7 +184,7 @@ class cronjob_logfiles extends cronjob { //###################################################################################################### - $ispconfig_logfiles = array('ispconfig.log', 'cron.log', 'auth.log'); + $ispconfig_logfiles = array('ispconfig.log', 'cron.log', 'auth.log', 'acme.log'); foreach($ispconfig_logfiles as $ispconfig_logfile) { $num = $max_syslog; $ispconfig_logfile = $conf['ispconfig_log_dir'].'/'.$ispconfig_logfile; @@ -240,7 +240,7 @@ class cronjob_logfiles extends cronjob { */ $sql = "DELETE FROM sys_log WHERE tstamp < ? AND server_id != 0"; $app->dbmaster->query($sql, $tstamp); - + /* * now delete those entries without a linked datalog entry (datalog_id = 0) */ diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 4e9bb74e13..7346638119 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -54,7 +54,7 @@ class letsencrypt { } public function get_acme_command($domains, $key_file, $bundle_file, $cert_file, $server_type = 'apache') { - global $app; + global $app, $conf; $letsencrypt = $this->get_acme_script(); @@ -74,7 +74,7 @@ class letsencrypt { $cert_arg = '--fullchain-file ' . escapeshellarg($bundle_file) . ' --cert-file ' . escapeshellarg($cert_file); } - $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; + $cmd = 'R=0 ; C=0 ; ' . $letsencrypt . ' --issue ' . $cmd . ' -w /usr/local/ispconfig/interface/acme ; R=$? ; if [[ $R -eq 0 || $R -eq 2 ]] ; then ' . $letsencrypt . ' --install-cert ' . $cmd . ' --key-file ' . escapeshellarg($key_file) . ' ' . $cert_arg . ' --reloadcmd ' . escapeshellarg($this->get_reload_command()) . ' --log ' . escapeshellarg($conf['ispconfig_log_dir'].'/acme.log') . '; C=$? ; fi ; if [[ $C -eq 0 ]] ; then exit $R ; else exit $C ; fi'; return $cmd; } -- GitLab From 6855f505300b95013ee77a42f454b66def84db6e Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Thu, 23 Jul 2020 15:58:53 +0200 Subject: [PATCH 503/571] Rollback sender_cc type change --- install/sql/ispconfig3.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 3957e327e9..be39910961 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1039,7 +1039,7 @@ CREATE TABLE `mail_user` ( `maildir_format` varchar(255) NOT NULL default 'maildir', `quota` bigint(20) NOT NULL default '-1', `cc` text, - `sender_cc` text, + `sender_cc` varchar(255) NOT NULL default '', `homedir` varchar(255) NOT NULL default '', `autoresponder` enum('n','y') NOT NULL default 'n', `autoresponder_start_date` datetime NULL default NULL, -- GitLab From b1cedcdf386ae613b2b027fcb84a7ac8b7430c61 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Thu, 23 Jul 2020 16:36:07 +0200 Subject: [PATCH 504/571] - set immutable bit for php cgi and fcgi starter files --- install/dist/lib/fedora.lib.php | 80 +++++----- install/dist/lib/gentoo.lib.php | 49 +++--- install/dist/lib/opensuse.lib.php | 58 +++---- install/lib/installer_base.lib.php | 147 ++++++++++-------- install/uninstall.php | 13 +- server/lib/classes/system.inc.php | 136 +++++++++------- .../plugins-available/apache2_plugin.inc.php | 9 ++ server/plugins-available/nginx_plugin.inc.php | 4 + 8 files changed, 271 insertions(+), 225 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 6a1c5048e8..4a7c9cfbfe 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -30,7 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class installer_dist extends installer_base { protected $mailman_group = 'mailman'; - + public function __construct() { //** check apache modules */ $mods = getapachemodules(); @@ -42,7 +42,7 @@ class installer_dist extends installer_base { swriteln($inst->lng(' AllowOverride None')); swriteln($inst->lng(' Require all denied')); swriteln($inst->lng(' </Directory>'."\n")); - + swriteln($inst->lng(' If it uses the old syntax (deny from all) ISPConfig would fail to work.')); } } @@ -80,7 +80,7 @@ class installer_dist extends installer_base { //* mysql-virtual_sender_login_maps.cf $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - + //* mysql-virtual_client.cf $this->process_postfix_config('mysql-virtual_client.cf'); @@ -89,7 +89,7 @@ class installer_dist extends 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'); @@ -142,19 +142,19 @@ class installer_dist extends installer_base { } } unset($rbl_hosts); - + //* If Postgrey is installed, configure it $greylisting = ''; 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); - + $postconf_placeholders = array('{config_dir}' => $config_dir, '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], '{vmail_userid}' => $cf['vmail_userid'], @@ -163,7 +163,7 @@ class installer_dist extends installer_base { '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, ); - + $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_postfix.conf.master', 'tpl/fedora_postfix.conf.master'); $postconf_tpl = strtr($postconf_tpl, $postconf_placeholders); $postconf_commands = array_filter(explode("\n", $postconf_tpl)); // read and remove empty lines @@ -368,13 +368,13 @@ class installer_dist extends installer_base { $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; @@ -452,7 +452,7 @@ class installer_dist extends installer_base { if(version_compare($dovecot_version,2.3) >= 0) { // Remove deprecated setting(s) removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); - + // Check if we have a dhparams file and if not, create it if(!file_exists('/etc/dovecot/dh.pem')) { swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); @@ -475,7 +475,7 @@ class installer_dist extends installer_base { $content = str_replace('#2.3+','',$content); file_put_contents($config_dir.'/'.$configfile,$content); unset($content); - + } else { // remove settings which are not supported in Dovecot < 2.3 removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); @@ -502,7 +502,7 @@ class installer_dist extends installer_base { copy("$config_dir/$configfile", "$config_dir/$configfile~"); exec("chmod 400 $config_dir/$configfile~"); } - + if(!@file_exists('/etc/dovecot-sql.conf')) exec('ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf'); $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_dovecot-sql.conf.master', "tpl/fedora_dovecot-sql.conf.master"); @@ -520,7 +520,7 @@ class installer_dist extends installer_base { exec("chmod 600 $config_dir/$configfile"); exec("chown root:root $config_dir/$configfile"); - + // Dovecot shall ignore mounts in website directory if(is_installed('doveadm')) exec("doveadm mount add '/var/www/*' ignore > /dev/null 2> /dev/null"); @@ -543,12 +543,12 @@ class installer_dist extends installer_base { $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); - + if(!is_file($conf['amavis']['config_dir'].'/60-dkim')) { touch($conf['amavis']['config_dir'].'/60-dkim'); chmod($conf['amavis']['config_dir'].'/60-dkim', 0640); } - + // for CentOS 7.2 only if($dist['confid'] == 'centos72') { chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0750); @@ -752,16 +752,16 @@ 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(); - + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -780,7 +780,7 @@ class installer_dist extends installer_base { } } } - + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); @@ -843,7 +843,7 @@ 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)) { @@ -853,7 +853,7 @@ class installer_dist extends installer_base { replaceLine($nginx_conf_file, 'http {', "http {\n\n".file_get_contents('tpl/nginx_anonlog.master'), 0, 0); } } - + } public function configure_bastille_firewall() @@ -946,14 +946,14 @@ class installer_dist extends 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"); - + $configfile = 'security_settings.ini'; if(is_file($install_dir.'/security/'.$configfile)) { copy($install_dir.'/security/'.$configfile, $install_dir.'/security/'.$configfile.'~'); @@ -1100,15 +1100,15 @@ class installer_dist extends installer_base { //* chown the interface files to the ispconfig user and group $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; 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"); @@ -1163,12 +1163,12 @@ class installer_dist extends installer_base { exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); } - + if(is_dir($install_dir.'/interface/invoices')) { 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 @@ -1199,7 +1199,7 @@ class installer_dist extends installer_base { $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" ? @@ -1228,7 +1228,7 @@ class installer_dist extends installer_base { } else { $tpl->setVar('ssl_bundle_comment','#'); } - + $tpl->setVar('apache_version',getapacheversion()); wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); @@ -1241,24 +1241,16 @@ class installer_dist extends installer_base { exec("ln -s $vhost_conf_dir/ispconfig.vhost $vhost_conf_enabled_dir/000-ispconfig.vhost"); } - /* - exec('mkdir -p /var/www/php-fcgi-scripts/ispconfig'); - exec('cp tpl/apache_ispconfig_fcgi_starter.master /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); - exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); - exec('ln -s /usr/local/ispconfig/interface/web /var/www/ispconfig'); - exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); - - replaceLine('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter','PHPRC=','PHPRC=/etc/',0,0); - */ - //if(!is_file('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig_fcgi_starter.master', 'tpl/apache_ispconfig_fcgi_starter.master'); $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); if(!is_dir('/var/www/php-fcgi-scripts/ispconfig')) exec('mkdir -p /var/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', false); wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); if(!is_link('/var/www/ispconfig')) exec('ln -s /usr/local/ispconfig/interface/web /var/www/ispconfig'); exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', true); //} //} } @@ -1373,10 +1365,10 @@ class installer_dist extends 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'); - + // 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); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 5bb0d9df19..a39c346376 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -100,13 +100,13 @@ class installer extends 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); - + $postconf_placeholders = array('{config_dir}' => $config_dir, '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], '{vmail_userid}' => $cf['vmail_userid'], @@ -277,13 +277,13 @@ class installer extends installer_base $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; @@ -602,16 +602,16 @@ class installer extends installer_base //* Copy the ISPConfig configuration include $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(); - + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -630,7 +630,7 @@ class installer extends installer_base } } } - + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); wf($conf['apache']['vhost_conf_dir'].'/000-ispconfig.conf', $tpl->grab()); @@ -727,10 +727,11 @@ class installer extends installer_base $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true); //copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); + $this->set_immutable($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', false); wf($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', $content); exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps'); - + $this->set_immutable($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', true); //} } if($conf['nginx']['installed'] == true){ @@ -783,11 +784,11 @@ class installer extends installer_base //$content = str_replace('{fpm_port}', ($conf['nginx']['php_fpm_start_port']+1), $content); $content = str_replace('{fpm_socket}', $fpm_socket, $content); $content = str_replace('{cgi_socket}', $cgi_socket, $content); - + // SSL in apps vhost is off by default. Might change later. $content = str_replace('{ssl_on}', 'ssl', $content); $content = str_replace('{ssl_comment}', '#', $content); - + wf($vhost_conf_dir.'/apps.vhost', $content); // PHP-FPM @@ -843,14 +844,14 @@ class installer extends 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~')); @@ -983,15 +984,15 @@ class installer extends installer_base //* chown the interface files to the ispconfig user and group $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; 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"); @@ -1005,7 +1006,7 @@ 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/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"); @@ -1058,7 +1059,7 @@ class installer extends 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 @@ -1089,7 +1090,7 @@ class installer extends installer_base $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); @@ -1121,11 +1122,13 @@ class installer extends installer_base $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); @mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', false); wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); chmod('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', 0755); @symlink($install_dir.'/interface/web', '/var/www/ispconfig'); exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', true); } } @@ -1238,16 +1241,16 @@ class installer extends 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'); - + // 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); 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); - + } } diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 21cfd9f2ba..60fb0511fd 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -30,7 +30,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class installer_dist extends installer_base { protected $mailman_group = 'mailman'; - + public function __construct() { //** check apache modules */ $mods = getapachemodules(); @@ -42,7 +42,7 @@ class installer_dist extends installer_base { swriteln($inst->lng(' AllowOverride None')); swriteln($inst->lng(' Require all denied')); swriteln($inst->lng(' </Directory>'."\n")); - + swriteln($inst->lng(' If it uses the old syntax (deny from all) ISPConfig would fail to work.')); } } @@ -80,7 +80,7 @@ class installer_dist extends installer_base { //* mysql-virtual_sender_login_maps.cf $this->process_postfix_config('mysql-virtual_sender_login_maps.cf'); - + //* mysql-virtual_client.cf $this->process_postfix_config('mysql-virtual_client.cf'); @@ -159,13 +159,13 @@ class installer_dist extends 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); - + $postconf_placeholders = array('{config_dir}' => $config_dir, '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], '{vmail_userid}' => $cf['vmail_userid'], @@ -174,7 +174,7 @@ class installer_dist extends installer_base { '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, ); - + $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/opensuse_postfix.conf.master', 'tpl/opensuse_postfix.conf.master'); $postconf_tpl = strtr($postconf_tpl, $postconf_placeholders); $postconf_commands = array_filter(explode("\n", $postconf_tpl)); // read and remove empty lines @@ -378,13 +378,13 @@ class installer_dist extends installer_base { $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; @@ -487,7 +487,7 @@ class installer_dist extends installer_base { exec("chmod 600 $config_dir/$configfile"); exec("chown root:root $config_dir/$configfile"); - + // Dovecot shall ignore mounts in website directory if(is_installed('doveadm')) exec("doveadm mount add '/srv/www/*' ignore > /dev/null 2> /dev/null"); @@ -659,7 +659,7 @@ class installer_dist extends installer_base { if($conf['apache']['installed'] == false) return; //* Create the logging directory for the vhost logfiles exec('mkdir -p /var/log/ispconfig/httpd'); - + //* enable apache logio module exec('a2enmod logio'); @@ -690,16 +690,16 @@ 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(); - + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -718,7 +718,7 @@ class installer_dist extends installer_base { } } } - + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); @@ -823,7 +823,7 @@ 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)) { @@ -925,14 +925,14 @@ class installer_dist extends 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~')); @@ -1090,15 +1090,15 @@ class installer_dist extends installer_base { //* chown the interface files to the ispconfig user and group $command = 'chown -R ispconfig:ispconfig '.$install_dir.'/interface'; 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"); @@ -1112,7 +1112,7 @@ 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/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"); @@ -1153,12 +1153,12 @@ class installer_dist extends installer_base { exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); } - + if(is_dir($install_dir.'/interface/invoices')) { 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 @@ -1192,7 +1192,7 @@ class installer_dist extends installer_base { $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" ? @@ -1221,7 +1221,7 @@ class installer_dist extends installer_base { } else { $tpl->setVar('ssl_bundle_comment','#'); } - + $tpl->setVar('apache_version',getapacheversion()); $content = $tpl->grab(); @@ -1233,10 +1233,12 @@ class installer_dist extends installer_base { $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); exec('mkdir -p /srv/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', false); wf('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); exec('chmod +x /srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); exec('ln -s /usr/local/ispconfig/interface/web /srv/www/ispconfig'); exec('chown -R ispconfig:ispconfig /srv/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', true); //} @@ -1362,10 +1364,10 @@ class installer_dist extends 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'); - + // 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); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index bc9ed26e18..81b1257db0 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -143,6 +143,16 @@ class installer_base { } */ + public function set_immutable($path, $enable = true) { + if($path != '' && $path != '/' && strlen($path) > 6 && strpos($path, '..') === false && (is_file($path) || is_dir($path))) { + if($enable) { + exec('chattr +i ' . escapeshellarg($path)); + } else { + exec('chattr -i ' . escapeshellarg($path)); + } + } + } + //** Detect PHP-Version public function get_php_version() { if(version_compare(PHP_VERSION, $this->min_php, '<')) return false; @@ -235,7 +245,7 @@ class installer_base { 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];"; @@ -357,7 +367,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; @@ -427,7 +437,7 @@ class installer_base { public function detect_ips(){ global $conf; - + $output = $this->get_host_ips(); if(is_array($output) && !empty($output)){ @@ -675,7 +685,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"; @@ -699,7 +709,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"; @@ -707,7 +717,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"; @@ -866,7 +876,7 @@ class installer_base { $postfix_service = @($out[0]=='')?false:true; } 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; } @@ -976,7 +986,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'); @@ -1044,13 +1054,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, @@ -1188,7 +1198,7 @@ class installer_base { caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); } - + public function configure_saslauthd() { global $conf; @@ -1304,7 +1314,7 @@ class installer_base { public function configure_dovecot() { global $conf; - + $virtual_transport = 'dovecot'; $configure_lmtp = false; @@ -1319,7 +1329,7 @@ class installer_base { $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; @@ -1403,7 +1413,7 @@ class installer_base { if(version_compare($dovecot_version,2.3) >= 0) { // Remove deprecated setting(s) removeLine($config_dir.'/'.$configfile, 'ssl_protocols ='); - + // Check if we have a dhparams file and if not, create it if(!file_exists('/etc/dovecot/dh.pem')) { swriteln('Creating new DHParams file, this takes several minutes. Do not interrupt the script.'); @@ -1426,7 +1436,7 @@ class installer_base { $content = str_replace('#2.3+ ','',$content); file_put_contents($config_dir.'/'.$configfile,$content); unset($content); - + } else { // remove settings which are not supported in Dovecot < 2.3 removeLine($config_dir.'/'.$configfile, 'ssl_min_protocol ='); @@ -1470,7 +1480,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"); @@ -1576,12 +1586,12 @@ class installer_base { public function configure_rspamd() { global $conf; - + //* These postconf commands will be executed on installation and update $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM ?? WHERE server_id = ?", $conf["mysql"]["database"] . '.server', $conf['server_id']); $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); unset($server_ini_rec); - + $mail_config = $server_ini_array['mail']; if($mail_config['content_filter'] === 'rspamd') { exec("postconf -X 'receive_override_options'"); @@ -1603,7 +1613,7 @@ class installer_base { } } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); - + } if(is_user('_rspamd') && is_group('amavis')) { @@ -1611,7 +1621,7 @@ class installer_base { } elseif(is_user('rspamd') && is_group('amavis')) { exec("usermod -G amavis rspamd"); } - + if(!is_dir('/etc/rspamd/local.d/')){ mkdir('/etc/rspamd/local.d/', 0755, true); } @@ -1619,7 +1629,7 @@ class installer_base { if(!is_dir('/etc/rspamd/override.d/')){ mkdir('/etc/rspamd/override.d/', 0755, true); } - + if ( substr($mail_config['dkim_path'], strlen($mail_config['dkim_path'])-1) == '/' ) { $mail_config['dkim_path'] = substr($mail_config['dkim_path'], 0, strlen($mail_config['dkim_path'])-1); } @@ -1731,17 +1741,17 @@ class installer_base { wf('/etc/rspamd/local.d/dkim_signing.conf', $tpl->grab()); exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); - + $command = 'usermod -a -G amavis _rspamd'; caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); - + if(strpos(rf('/etc/rspamd/rspamd.conf'), '.include "$LOCAL_CONFDIR/local.d/users.conf"') === false){ af('/etc/rspamd/rspamd.conf', '.include "$LOCAL_CONFDIR/local.d/users.conf"'); } - + if(!isset($mail_config['rspamd_password']) || !$mail_config['rspamd_password']) { $mail_config['rspamd_password'] = str_shuffle(bin2hex(openssl_random_pseudo_bytes(12))); - + $server_ini_array['mail']['rspamd_password'] = $mail_config['rspamd_password']; } @@ -1753,7 +1763,7 @@ class installer_base { $this->db->query('UPDATE `server` SET `config` = ? WHERE `server_id` = ?', $server_ini_string, $conf['server_id']); unset($server_ini_array); unset($server_ini_string); - + $tpl = new tpl(); $tpl->newTemplate('rspamd_worker-controller.inc.master'); $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); @@ -1896,14 +1906,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.'~'); @@ -1935,7 +1945,7 @@ 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 } @@ -2055,12 +2065,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); @@ -2075,7 +2085,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) { @@ -2092,16 +2102,16 @@ class 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(); - + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -2120,9 +2130,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); @@ -2182,7 +2192,7 @@ 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)) { @@ -2192,7 +2202,7 @@ class installer_base { replaceLine($nginx_conf_file, 'http {', "http {\n\n".file_get_contents('tpl/nginx_anonlog.master'), 0, 0); } } - + } public function configure_fail2ban() { @@ -2352,7 +2362,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(); @@ -2375,7 +2385,7 @@ class installer_base { if($conf['rspamd']['installed'] == true) { $tpl->setVar('use_rspamd', 'yes'); } - + // comment out the listen directive if port is 80 or 443 if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { $tpl->setVar('vhost_port_listen','#'); @@ -2398,11 +2408,12 @@ class installer_base { $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true); + $this->set_immutable($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', false); //copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); wf($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', $content); exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter'); exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps'); - + $this->set_immutable($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter', true); } } if($conf['nginx']['installed'] == true){ @@ -2448,7 +2459,7 @@ class installer_base { } else { $content = str_replace('{use_rspamd}', '# ', $content); } - + $socket_dir = escapeshellcmd($conf['nginx']['php_fpm_socket_dir']); if(substr($socket_dir, -1) != '/') $socket_dir .= '/'; if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir); @@ -2478,11 +2489,11 @@ 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}', '', $content); $content = str_replace('{ssl_comment}', '#', $content); - + // Fix socket path on PHP 7 systems if(file_exists('/var/run/php/php7.0-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.0-fpm.sock', $content); if(file_exists('/var/run/php/php7.1-fpm.sock')) $content = str_replace('/var/run/php5-fpm.sock', '/var/run/php/php7.1-fpm.sock', $content); @@ -2534,7 +2545,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'); } @@ -2564,20 +2575,20 @@ 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"); - + $configfile = 'security_settings.ini'; if(is_file($install_dir.'/security/'.$configfile)) { copy($install_dir.'/security/'.$configfile, $install_dir.'/security/'.$configfile.'~'); } $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); - wf($install_dir.'/security/'.$configfile, $content); + wf($install_dir.'/security/'.$configfile, $content); //* Create a symlink, so ISPConfig is accessible via web // Replaced by a separate vhost definition for port 8080 @@ -2739,15 +2750,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"); @@ -2761,7 +2772,7 @@ class installer_base { 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"); @@ -2812,7 +2823,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 @@ -2870,7 +2881,7 @@ class installer_base { } else { $tpl->setVar('ssl_bundle_comment','#'); } - + $tpl->setVar('apache_version',getapacheversion()); wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); @@ -2887,10 +2898,12 @@ class installer_base { $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); @mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', false); wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); @symlink($install_dir.'/interface/web', '/var/www/ispconfig'); exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig'); + $this->set_immutable('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', true); //} } @@ -3009,16 +3022,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); @@ -3112,12 +3125,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'); @@ -3138,25 +3151,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 = ''){ @@ -3246,7 +3259,7 @@ class installer_base { wf($tConf, $tContents); // write file if (func_num_args() >= 4) // override rights and/or ownership { - + $output = array_slice($args, 2); switch (sizeof($output)) { diff --git a/install/uninstall.php b/install/uninstall.php index c565d4653d..fdac79d61e 100644 --- a/install/uninstall.php +++ b/install/uninstall.php @@ -70,31 +70,32 @@ if($do_uninstall == 'yes') { if (!$result) echo "Unable to remove the ispconfig-database-user ".$conf['db_user']." ".mysqli_error($link)."\n"; } mysqli_close($link); - + // Deleting the symlink in /var/www // Apache @unlink("/etc/apache2/sites-enabled/000-ispconfig.vhost"); @unlink("/etc/apache2/sites-available/ispconfig.vhost"); @unlink("/etc/apache2/sites-enabled/000-apps.vhost"); @unlink("/etc/apache2/sites-available/apps.vhost"); - + // nginx @unlink("/etc/nginx/sites-enabled/000-ispconfig.vhost"); @unlink("/etc/nginx/sites-available/ispconfig.vhost"); @unlink("/etc/nginx/sites-enabled/000-apps.vhost"); @unlink("/etc/nginx/sites-available/apps.vhost"); - + // Delete the ispconfig files exec('rm -rf /usr/local/ispconfig'); - + // Delete various other files @unlink("/usr/local/bin/ispconfig_update.sh"); @unlink("/usr/local/bin/ispconfig_update_from_svn.sh"); @unlink("/var/spool/mail/ispconfig"); @unlink("/var/www/ispconfig"); - @unlink("/var/www/php-fcgi-scripts/ispconfig"); + @exec('chattr -i /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); @unlink("/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter"); - + @unlink("/var/www/php-fcgi-scripts/ispconfig"); + echo "Backups in /var/backup/ and log files in /var/log/ispconfig are not deleted."; echo "Finished uninstalling.\n"; diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 078c225c10..0556578a96 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -36,10 +36,10 @@ class system{ var $data; var $min_uid = 500; var $min_gid = 500; - + private $_last_exec_out = null; private $_last_exec_retcode = null; - + /** * Construct for this class * @@ -872,7 +872,7 @@ class system{ $app->log("Action aborted, file is a symlink: $filename", LOGLEVEL_WARN); return false; } - + if($run_as_user !== null && $run_as_user !== 'root') { if(!$this->check_run_as_user($run_as_user)) { $app->log("Action aborted, invalid run-as-user: $run_as_user", LOGLEVEL_WARN); @@ -1657,7 +1657,7 @@ class system{ function maildirmake($maildir_path, $user = '', $subfolder = '', $group = '') { global $app, $conf; - + // load the server configuration options $app->uses("getconf"); $mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail'); @@ -1678,7 +1678,7 @@ class system{ if($group != '' && $group != 'root' && $this->is_group($group)) { if(is_dir($dir)) $this->chgrp($dir, $group); - + $chgrp_mdsub = true; } @@ -1694,7 +1694,7 @@ class system{ //* Add the subfolder to the subscriptions and courierimapsubscribed files if($subfolder != '') { - + // Courier if($mail_config['pop3_imap_daemon'] == 'courier') { if(!is_file($maildir_path.'/courierimapsubscribed')) { @@ -1741,7 +1741,7 @@ class system{ } } - + function _exec($command, $allow_return_codes = null) { global $app; $out = array(); @@ -1765,6 +1765,28 @@ class system{ } } + function set_immutable($path, $enable = true, $recursive = false) { + global $app; + + if($this->checkpath($path) == false) { + $app->log("Action aborted, target is a symlink: $path", LOGLEVEL_DEBUG); + return false; + } + + if($path != '' && $path != '/' && strlen($path) > 6 && strpos($path, '..') === false && (is_file($path) || is_dir($path))) { + if($enable) { + $this->exec_safe('chattr +i ?', $path); + } else { + $this->exec_safe('chattr -i ?', $path); + } + + if($enable === false && $recursive === true && is_dir($path)) { + // only allow when removing immutable + $this->exec_safe('chattr -R -i ?', $path); + } + } + } + function web_folder_protection($document_root, $protect) { global $app, $conf; @@ -1902,9 +1924,9 @@ class system{ function mount_backup_dir($backup_dir, $mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'){ global $app, $conf; - + if($this->is_mounted($backup_dir)) return true; - + $mounted = true; if ( is_file($mount_cmd) && is_executable($mount_cmd) && @@ -2000,7 +2022,7 @@ class system{ function getapacheversion($get_minor = false) { global $app; - + $cmd = ''; if($this->is_installed('apache2ctl')) $cmd = 'apache2ctl -v'; elseif($this->is_installed('apachectl')) $cmd = 'apachectl -v'; @@ -2008,13 +2030,13 @@ class system{ $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_DEBUG); return '2.2'; } - + exec($cmd, $output, $return_var); if($return_var != 0 || !$output[0]) { $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN); return '2.2'; } - + if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) { return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : ''); } else { @@ -2025,7 +2047,7 @@ class system{ function getapachemodules() { global $app; - + $cmd = ''; if($this->is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES'; elseif($this->is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES'; @@ -2033,23 +2055,23 @@ class system{ $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN); return array(); } - + exec($cmd . ' 2>/dev/null', $output, $return_var); if($return_var != 0 || !$output[0]) { $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN); return array(); } - + $modules = array(); for($i = 0; $i < count($output); $i++) { if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) { $modules[] = $matches[1]; } } - + return $modules; } - + //* ISPConfig mail function public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '', $cc = '', $bcc = '', $from_name = '') { global $app, $conf; @@ -2076,51 +2098,51 @@ class system{ $app->ispcmail->send($to); $app->ispcmail->finish(); - + return true; } - + public function is_allowed_user($username, $check_id = true, $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($check_id && intval($this->getuid($username)) < $this->min_uid) return false; - + if($restrict_names == true && preg_match('/^web\d+$/', $username) == false) return false; - + return true; } - + public function is_allowed_group($groupname, $check_id = true, $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($check_id && intval($this->getgid($groupname)) < $this->min_gid) return false; - + if($restrict_names == true && preg_match('/^client\d+$/', $groupname) == false) return false; - + return true; } - + public function last_exec_out() { return $this->_last_exec_out; } - + public function last_exec_retcode() { return $this->_last_exec_retcode; } - + public function exec_safe($cmd) { global $app; - + $args = func_get_args(); $arg_count = func_num_args(); if($arg_count != substr_count($cmd, '?') + 1) { @@ -2134,7 +2156,7 @@ class system{ $a = 0; foreach($args as $value) { $a++; - + $pos = strpos($cmd, '?', $pos); if($pos === false) { break; @@ -2144,21 +2166,21 @@ class system{ $pos += strlen($value); } } - + $this->_last_exec_out = null; $this->_last_exec_retcode = null; $ret = exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); - + $app->log("safe_exec cmd: " . $cmd . " - return code: " . $this->_last_exec_retcode, LOGLEVEL_DEBUG); - + return $ret; } - + public function system_safe($cmd) { call_user_func_array(array($this, 'exec_safe'), func_get_args()); return implode("\n", $this->_last_exec_out); } - + public function create_jailkit_user($username, $home_dir, $user_home_dir, $shell = '/bin/bash', $p_user = null, $p_user_home_dir = null) { // Check if USERHOMEDIR already exists if(!is_dir($home_dir . '/.' . $user_home_dir)) { @@ -2178,10 +2200,10 @@ class system{ $cmd = 'usermod --home=? ? 2>/dev/null'; $this->exec_safe($cmd, $home_dir . '/.' . $p_user_home_dir, $p_user); } - + return true; } - + public function create_jailkit_programs($home_dir, $programs = array()) { if(empty($programs)) { return true; @@ -2192,20 +2214,20 @@ class system{ foreach($programs as $prog) { $program_args .= ' ' . escapeshellarg($prog); } - + $cmd = 'jk_cp -k ?' . $program_args; $this->exec_safe($cmd, $home_dir); - + return true; } - + public function create_jailkit_chroot($home_dir, $app_sections = array()) { if(empty($app_sections)) { return true; } elseif(is_string($app_sections)) { $app_sections = preg_split('/[\s,]+/', $app_sections); } - + // Change ownership of the chroot directory to root $this->chown($home_dir, 'root'); $this->chgrp($home_dir, 'root'); @@ -2214,7 +2236,7 @@ class system{ foreach($app_sections as $app_section) { $app_args .= ' ' . escapeshellarg($app_section); } - + // Initialize the chroot into the specified directory with the specified applications $cmd = 'jk_init -f -k -c /etc/jailkit/jk_init.ini -j ?' . $app_args; $this->exec_safe($cmd, $home_dir); @@ -2231,47 +2253,47 @@ class system{ // mysql needs the socket in the chrooted environment $this->mkdirpath($home_dir . '/var/run/mysqld'); - + // ln /var/run/mysqld/mysqld.sock $CHROOT_HOMEDIR/var/run/mysqld/mysqld.sock if(!file_exists("/var/run/mysqld/mysqld.sock")) { $this->exec_safe('ln ? ?', '/var/run/mysqld/mysqld.sock', $home_dir . '/var/run/mysqld/mysqld.sock'); } - + return true; } - - + + public function pipe_exec($cmd, $stdin, &$retval = null, &$stderr = null) { $descriptors = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); - + $result = ''; $pipes = null; $proc = proc_open($cmd, $descriptors, $pipes); if(is_resource($proc)) { fwrite($pipes[0], $stdin); fclose($pipes[0]); - + $result = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[1]); fclose($pipes[2]); - + $retval = proc_close($proc); - + return $result; } else { return false; } } - + private function get_sudo_command($cmd, $run_as_user) { return 'sudo -u ' . escapeshellarg($run_as_user) . ' sh -c ' . escapeshellarg($cmd); } - + private function check_run_as_user($username) { if(preg_match('/^[a-zA-Z0-9_\-]+$/', $username)) { return true; diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index b969882f2b..61116d0041 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1497,6 +1497,7 @@ class apache2_plugin { $fcgi_tpl->setVar('open_basedir', $php_open_basedir); $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); + $app->system->set_immutable($fcgi_starter_script, false); $app->system->file_put_contents($fcgi_starter_script, $fcgi_tpl->grab()); unset($fcgi_tpl); @@ -1509,6 +1510,7 @@ class apache2_plugin { } $app->system->chown($fcgi_starter_script, $data['new']['system_user']); $app->system->chgrp($fcgi_starter_script, $data['new']['system_group']); + $app->system->set_immutable($fcgi_starter_script, true); $tpl->setVar('fastcgi_alias', $fastcgi_config['fastcgi_alias']); $tpl->setVar('fastcgi_starter_path', $fastcgi_starter_path); @@ -1522,6 +1524,7 @@ class apache2_plugin { if ($data['old']['php'] == 'fast-cgi') { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $fastcgi_config['fastcgi_starter_path']); $fastcgi_starter_path = str_replace('[client_id]', $client_id, $fastcgi_starter_path); + $app->system->set_immutable($fastcgi_starter_path, false, true); if($data['old']['type'] == 'vhost') { if(is_file($fastcgi_starter_script)) @unlink($fastcgi_starter_script); if (is_dir($fastcgi_starter_path)) @rmdir($fastcgi_starter_path); @@ -1633,6 +1636,7 @@ class apache2_plugin { } $cgi_starter_script = $cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''); + $app->system->set_immutable($cgi_starter_script, false); $app->system->file_put_contents($cgi_starter_script, $cgi_tpl->grab()); unset($cgi_tpl); @@ -1646,6 +1650,7 @@ class apache2_plugin { } $app->system->chown($cgi_starter_script, $data['new']['system_user']); $app->system->chgrp($cgi_starter_script, $data['new']['system_group']); + $app->system->set_immutable($cgi_starter_script, true); $tpl->setVar('cgi_starter_path', $cgi_starter_path); $tpl->setVar('cgi_starter_script', $cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '')); @@ -2175,11 +2180,13 @@ class apache2_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $fastcgi_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { + $app->system->set_immutable($fastcgi_starter_path, false, true); $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { + $app->system->set_immutable($fcgi_starter_script, false); $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } @@ -2200,11 +2207,13 @@ class apache2_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { + $app->system->set_immutable($cgi_starter_path, false, true); $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { + $app->system->set_immutable($cgi_starter_script, false); $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index b57d38516e..51f566a00c 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2196,11 +2196,13 @@ class nginx_plugin { $fastcgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['fastcgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($fastcgi_starter_path)) { + $app->system->set_immutable($fastcgi_starter_path, false, true); $app->system->exec_safe('rm -rf ?', $fastcgi_starter_path); } } else { $fcgi_starter_script = $fastcgi_starter_path.$web_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id']; if (file_exists($fcgi_starter_script)) { + $app->system->set_immutable($fcgi_starter_script, false); $app->system->exec_safe('rm -f ?', $fcgi_starter_script); } } @@ -2222,11 +2224,13 @@ class nginx_plugin { $cgi_starter_path = str_replace('[system_user]', $data['old']['system_user'], $web_config['cgi_starter_path']); if($data['old']['type'] == 'vhost') { if (is_dir($cgi_starter_path)) { + $app->system->set_immutable($cgi_starter_path, false, true); $app->system->exec_safe('rm -rf ?', $cgi_starter_path); } } else { $cgi_starter_script = $cgi_starter_path.'php-cgi-starter_web'.$data['old']['domain_id']; if (file_exists($cgi_starter_script)) { + $app->system->set_immutable($cgi_starter_script, false); $app->system->exec_safe('rm -f ?', $cgi_starter_script); } } -- GitLab From 8c144068d992e29d541d0aababd1153b9e05beb8 Mon Sep 17 00:00:00 2001 From: Dominik <info@profi-webdesign.net> Date: Thu, 23 Jul 2020 21:03:23 +0200 Subject: [PATCH 505/571] added defaul value to cc field --- install/sql/ispconfig3.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index be39910961..cdf85d7443 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1038,7 +1038,7 @@ CREATE TABLE `mail_user` ( `maildir` varchar(255) NOT NULL default '', `maildir_format` varchar(255) NOT NULL default 'maildir', `quota` bigint(20) NOT NULL default '-1', - `cc` text, + `cc` text NOT NULL default '', `sender_cc` varchar(255) NOT NULL default '', `homedir` varchar(255) NOT NULL default '', `autoresponder` enum('n','y') NOT NULL default 'n', -- GitLab From e5a00f9d24f2621611abae7f46638328c9c1bc88 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 23 Jul 2020 13:30:57 -0600 Subject: [PATCH 506/571] update mysql-virtual_forwardings.cf.master --- install/tpl/mysql-virtual_forwardings.cf.master | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/tpl/mysql-virtual_forwardings.cf.master b/install/tpl/mysql-virtual_forwardings.cf.master index 818cac07bc..04a94ee634 100644 --- a/install/tpl/mysql-virtual_forwardings.cf.master +++ b/install/tpl/mysql-virtual_forwardings.cf.master @@ -14,7 +14,9 @@ query = SELECT u.email as target FROM mail_forwarding as s WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s - WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id} + LEFT JOIN mail_user as uu ON (uu.email = '%s' AND uu.disabledeliver = 'n') + LEFT JOIN mail_forwarding as uf ON (uf.source = '%s' AND uf.type IN ('alias', 'forward') AND uf.active = 'y') + WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND uu.mailuser_id IS NULL AND uf.forwarding_id IS NULL AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') -- GitLab From 57b06a88407b37c099a2353f708c74d849b1ecb7 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 09:27:00 +0200 Subject: [PATCH 507/571] - fix mailman images not showing on nginx --- install/tpl/nginx_apps.vhost.master | 2 +- server/conf/nginx_apps.vhost.master | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index 871dff8c57..a22b1aab46 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -200,7 +200,7 @@ server { fastcgi_pass unix:{cgi_socket}; } - location /images/mailman { + location ^~ /images/mailman { alias /usr/share/images/mailman; } diff --git a/server/conf/nginx_apps.vhost.master b/server/conf/nginx_apps.vhost.master index 8a97f82a43..0c82c4631e 100644 --- a/server/conf/nginx_apps.vhost.master +++ b/server/conf/nginx_apps.vhost.master @@ -191,7 +191,7 @@ server { fastcgi_pass unix:{cgi_socket}; } - location /images/mailman { + location ^~ /images/mailman { alias /usr/share/images/mailman; } -- GitLab From b8157bbf725e2c7311913d64814a27ae396743d6 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 09:38:59 +0200 Subject: [PATCH 508/571] - fixed wrong permissions for web folder of vhost alias and subdomain --- server/plugins-available/nginx_plugin.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 51f566a00c..f7f93b4be5 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -573,7 +573,13 @@ class nginx_plugin { // Check if the directories are there and create them if necessary. $app->system->web_folder_protection($data['new']['document_root'], false); - 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)) { + if($web_folder !== 'web') { //vhost sub/alias + $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder, 0755, $username, $groupname); + } else { + $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); + } + } if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); -- GitLab From c59bbda3323d8d9e0de44c80b2a5cd4365a3938e Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 09:43:39 +0200 Subject: [PATCH 509/571] - missed file from previous commit --- server/plugins-available/apache2_plugin.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 61116d0041..cf58ed8a20 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -731,7 +731,13 @@ class apache2_plugin { // Check if the directories are there and create them if necessary. $app->system->web_folder_protection($data['new']['document_root'], false); - 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)) { + if($web_folder !== 'web') { //vhost sub/alias + $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder, 0755, $username, $groupname); + } else { + $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder); + } + } if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/error') and $data['new']['errordocs']) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/error'); if($data['new']['stats_type'] != '' && !is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdirpath($data['new']['document_root'].'/' . $web_folder . '/stats'); if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl'); -- GitLab From d60ccc1f16fdc5dd8a24bc1eb1b6d0cf17730d08 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 10:02:22 +0200 Subject: [PATCH 510/571] - disallow several folders for vhost subdomains and aliasdomains --- interface/lib/classes/system.inc.php | 30 +++++++++++++------ interface/web/sites/web_vhost_domain_edit.php | 6 +--- server/lib/classes/system.inc.php | 12 ++++++++ .../plugins-available/apache2_plugin.inc.php | 5 ++++ server/plugins-available/nginx_plugin.inc.php | 5 ++++ 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index 484ef2b665..8c3decfd5c 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -67,30 +67,42 @@ class system { } } + public function is_blacklisted_web_path($path) { + $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var'); + + $path = ltrim($path, '/'); + $parts = explode('/', $path); + if(in_array(strtolower($parts[0]), $blacklist, true)) { + return true; + } + + return false; + } + public function last_exec_out() { return $this->_last_exec_out; } - + public function last_exec_retcode() { return $this->_last_exec_retcode; } - + public function exec_safe($cmd) { $arg_count = func_num_args(); $args = func_get_args(); - + if($arg_count != substr_count($cmd, '?') + 1) { trigger_error('Placeholder count not matching argument list.', E_USER_WARNING); return false; } if($arg_count > 1) { array_shift($args); - + $pos = 0; $a = 0; foreach($args as $value) { $a++; - + $pos = strpos($cmd, '?', $pos); if($pos === false) { break; @@ -100,16 +112,16 @@ class system { $pos += strlen($value); } } - + $this->_last_exec_out = null; $this->_last_exec_retcode = null; return exec($cmd, $this->_last_exec_out, $this->_last_exec_retcode); } - + public function system_safe($cmd) { call_user_func_array(array($this, 'exec_safe'), func_get_args()); return implode("\n", $this->_last_exec_out); - } + } //* Check if a application is installed public function is_installed($appname) { @@ -122,5 +134,5 @@ class system { return false; } } - + } //* End Class diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 0d770476d1..41b40784c0 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1030,11 +1030,7 @@ class page_action extends tform_actions { $this->dataRecord['web_folder'] = strtolower($this->dataRecord['web_folder']); if(substr($this->dataRecord['web_folder'], 0, 1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 1); if(substr($this->dataRecord['web_folder'], -1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 0, -1); - $forbidden_folders = array('', 'cgi-bin', 'log', 'private', 'ssl', 'tmp', 'webdav'); - $check_folder = strtolower($this->dataRecord['web_folder']); - if(substr($check_folder, 0, 1) === '/') $check_folder = substr($check_folder, 1); // strip / at beginning to check against forbidden entries - if(strpos($check_folder, '/') !== false) $check_folder = substr($check_folder, 0, strpos($check_folder, '/')); // get the first part of the path to check it - if(in_array($check_folder, $forbidden_folders)) { + if($app->system->is_blacklisted_web_path($this->dataRecord['web_folder'])) { $app->tform->errorMessage .= $app->tform->lng("web_folder_invalid_txt")."<br>"; } diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 0556578a96..71b901d920 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1787,6 +1787,18 @@ class system{ } } + public function is_blacklisted_web_path($path) { + $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var'); + + $path = ltrim($path, '/'); + $parts = explode('/', $path); + if(in_array(strtolower($parts[0]), $blacklist, true)) { + return true; + } + + return false; + } + function web_folder_protection($document_root, $protect) { global $app, $conf; diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 61116d0041..0a07177135 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -580,6 +580,11 @@ class apache2_plugin { $log_folder .= '/' . $subdomain_host; unset($tmp); + if($app->system->is_blacklisted_web_path($web_folder)) { + $app->log('Vhost is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); + return 0; + } + if(isset($data['old']['parent_domain_id'])) { // old one $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 51f566a00c..711e54ab9a 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -425,6 +425,11 @@ class nginx_plugin { $log_folder .= '/' . $subdomain_host; unset($tmp); + if($app->system->is_blacklisted_web_path($web_folder)) { + $app->log('Vhost is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); + return 0; + } + if(isset($data['old']['parent_domain_id'])) { // old one $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $data['old']['parent_domain_id']); -- GitLab From fc981223a76fe0d268ba42b2728865d8dd91ece8 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 11:32:07 +0200 Subject: [PATCH 511/571] - replace php selector by id selector instead of string with paths --- .../sql/incremental/upd_dev_collection.sql | 9 ++ interface/web/admin/server_php_del.php | 27 +---- interface/web/admin/server_php_edit.php | 30 +---- interface/web/admin/server_php_list.php | 4 +- .../web/sites/form/web_vhost_domain.tform.php | 6 +- .../web/sites/lib/lang/ar_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/ar_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ar_web_domain.lng | 2 +- .../sites/lib/lang/ar_web_vhost_domain.lng | 6 +- .../sites/lib/lang/ar_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/bg_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/bg_web_childdomain.lng | 2 +- .../web/sites/lib/lang/bg_web_domain.lng | 2 +- .../sites/lib/lang/bg_web_vhost_domain.lng | 6 +- .../sites/lib/lang/bg_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/br_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/br_web_childdomain.lng | 2 +- .../web/sites/lib/lang/br_web_domain.lng | 2 +- .../sites/lib/lang/br_web_vhost_domain.lng | 6 +- .../sites/lib/lang/br_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/ca_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/ca_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ca_web_domain.lng | 2 +- .../sites/lib/lang/ca_web_vhost_domain.lng | 6 +- .../sites/lib/lang/ca_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_childdomain.lng | 2 +- .../web/sites/lib/lang/cz_web_domain.lng | 2 +- .../sites/lib/lang/cz_web_vhost_domain.lng | 6 +- .../sites/lib/lang/cz_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/de_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/de_web_childdomain.lng | 2 +- .../web/sites/lib/lang/de_web_domain.lng | 2 +- .../sites/lib/lang/de_web_vhost_domain.lng | 6 +- .../sites/lib/lang/de_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/dk_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/dk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/dk_web_domain.lng | 2 +- .../sites/lib/lang/dk_web_vhost_domain.lng | 6 +- .../sites/lib/lang/dk_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/el_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/el_web_childdomain.lng | 2 +- .../web/sites/lib/lang/el_web_domain.lng | 2 +- .../sites/lib/lang/el_web_vhost_domain.lng | 6 +- .../sites/lib/lang/el_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/en_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/en_web_childdomain.lng | 2 +- .../web/sites/lib/lang/en_web_domain.lng | 2 +- .../sites/lib/lang/en_web_vhost_domain.lng | 6 +- .../sites/lib/lang/en_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/es_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/es_web_childdomain.lng | 2 +- .../web/sites/lib/lang/es_web_domain.lng | 2 +- .../sites/lib/lang/es_web_vhost_domain.lng | 6 +- .../sites/lib/lang/es_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/fi_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/fi_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fi_web_domain.lng | 2 +- .../sites/lib/lang/fi_web_vhost_domain.lng | 6 +- .../sites/lib/lang/fi_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/fr_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/fr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/fr_web_domain.lng | 2 +- .../sites/lib/lang/fr_web_vhost_domain.lng | 6 +- .../sites/lib/lang/fr_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/hr_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/hr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hr_web_domain.lng | 2 +- .../sites/lib/lang/hr_web_vhost_domain.lng | 6 +- .../sites/lib/lang/hr_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/hu_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/hu_web_childdomain.lng | 2 +- .../web/sites/lib/lang/hu_web_domain.lng | 2 +- .../sites/lib/lang/hu_web_vhost_domain.lng | 6 +- .../sites/lib/lang/hu_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/id_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/id_web_childdomain.lng | 2 +- .../web/sites/lib/lang/id_web_domain.lng | 2 +- .../sites/lib/lang/id_web_vhost_domain.lng | 6 +- .../sites/lib/lang/id_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/it_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/it_web_childdomain.lng | 2 +- .../web/sites/lib/lang/it_web_domain.lng | 2 +- .../sites/lib/lang/it_web_vhost_domain.lng | 6 +- .../sites/lib/lang/it_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/ja_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/ja_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ja_web_domain.lng | 2 +- .../sites/lib/lang/ja_web_vhost_domain.lng | 6 +- .../sites/lib/lang/ja_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/nl_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/nl_web_childdomain.lng | 2 +- .../web/sites/lib/lang/nl_web_domain.lng | 2 +- .../sites/lib/lang/nl_web_vhost_domain.lng | 6 +- .../sites/lib/lang/nl_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/pl_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/pl_web_childdomain.lng | 2 +- .../web/sites/lib/lang/pl_web_domain.lng | 2 +- .../sites/lib/lang/pl_web_vhost_domain.lng | 6 +- .../sites/lib/lang/pl_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/pt_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/pt_web_childdomain.lng | 2 +- .../web/sites/lib/lang/pt_web_domain.lng | 2 +- .../sites/lib/lang/pt_web_vhost_domain.lng | 6 +- .../sites/lib/lang/pt_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/ro_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/ro_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ro_web_domain.lng | 2 +- .../sites/lib/lang/ro_web_vhost_domain.lng | 6 +- .../sites/lib/lang/ro_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_childdomain.lng | 2 +- .../web/sites/lib/lang/ru_web_domain.lng | 2 +- .../sites/lib/lang/ru_web_vhost_domain.lng | 6 +- .../sites/lib/lang/ru_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/se_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/se_web_childdomain.lng | 2 +- .../web/sites/lib/lang/se_web_domain.lng | 2 +- .../sites/lib/lang/se_web_vhost_domain.lng | 6 +- .../sites/lib/lang/se_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/sk_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/sk_web_childdomain.lng | 2 +- .../web/sites/lib/lang/sk_web_domain.lng | 2 +- .../sites/lib/lang/sk_web_vhost_domain.lng | 6 +- .../sites/lib/lang/sk_web_vhost_subdomain.lng | 2 +- .../web/sites/lib/lang/tr_web_aliasdomain.lng | 2 +- .../web/sites/lib/lang/tr_web_childdomain.lng | 2 +- .../web/sites/lib/lang/tr_web_domain.lng | 2 +- .../sites/lib/lang/tr_web_vhost_domain.lng | 6 +- .../sites/lib/lang/tr_web_vhost_subdomain.lng | 2 +- .../sites/templates/web_vhost_domain_edit.htm | 36 +++--- interface/web/sites/web_vhost_domain_edit.php | 79 +++++-------- .../plugins-available/apache2_plugin.inc.php | 107 ++++++++++++------ server/plugins-available/nginx_plugin.inc.php | 66 ++++++----- .../shelluser_base_plugin.inc.php | 65 ++++++----- .../webserver_plugin.inc.php | 12 +- .../z_php_fpm_incron_reload_plugin.inc.php | 10 +- 137 files changed, 403 insertions(+), 398 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 1c4bd539d9..9d34258f36 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -44,3 +44,12 @@ ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; -- was missing in incremental, inserted for fixing older installations ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; + +ALTER TABLE `web_domain` ADD `server_php_id` INT(11) UNSIGNED NOT NULL DEFAULT 0; + +UPDATE `web_domain` as w LEFT JOIN sys_group as g ON (g.groupid = w.sys_groupid) INNER JOIN `server_php` as p ON (w.fastcgi_php_version = CONCAT(p.name, ':', p.php_fastcgi_binary, ':', p.php_fastcgi_ini_dir) AND p.server_id IN (0, w.server_id) AND p.client_id IN (0, g.client_id)) SET w.server_php_id = p.server_php_id, w.fastcgi_php_version = '' WHERE 1; + +UPDATE `web_domain` as w LEFT JOIN sys_group as g ON (g.groupid = w.sys_groupid) INNER JOIN `server_php` as p ON (w.fastcgi_php_version = CONCAT(p.name, ':', p.php_fpm_init_script, ':', p.php_fpm_ini_dir, ':', p.php_fpm_pool_dir) AND p.server_id IN (0, w.server_id) AND p.client_id IN (0, g.client_id)) SET w.server_php_id = p.server_php_id, w.fastcgi_php_version = '' WHERE 1; + +-- we have to decide whether to delete the column or leave it there for investigating not-converted entries +-- ALTER TABLE `web_domain` DROP COLUMN `fastcgi_php_version`; diff --git a/interface/web/admin/server_php_del.php b/interface/web/admin/server_php_del.php index f160c1b2d9..82b4c8a17d 100644 --- a/interface/web/admin/server_php_del.php +++ b/interface/web/admin/server_php_del.php @@ -52,28 +52,14 @@ $app->load('tform_actions'); class page_action extends tform_actions { function onBeforeDelete() { - global $app; $conf; + global $app; - $check = array(); - - // fastcgi - if(!empty(trim($this->dataRecord['php_fastcgi_binary']))) $check[] = trim($this->dataRecord['php_fastcgi_binary']); - if(!empty(trim($this->dataRecord['php_fastcgi_ini_dir']))) $check[] = trim($this->dataRecord['php_fastcgi_ini_dir']); - if(!empty($check)) $fastcgi_check = implode(':', $check); - unset($check); - - // fpm - if(!empty(trim($this->dataRecord['php_fpm_init_script']))) $check[] = trim($this->dataRecord['php_fpm_init_script']); - if(!empty(trim($this->dataRecord['php_fpm_ini_dir']))) $check[] = trim($this->dataRecord['php_fpm_ini_dir']); - if(!empty(trim($this->dataRecord['php_fpm_pool_dir']))) $check[] = trim($this->dataRecord['php_fpm_pool_dir']); - if(!empty($check)) $fpm_check = implode(':', $check); - - $sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?'; - if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check); - if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check); - - if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm)) $app->error($app->tform->lng('php_in_use_error')); + $sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND server_php_id = ?'; + $web_domains = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], $this->id); + if(!empty($web_domains)) { + $app->error($app->tform->lng('php_in_use_error')); + } } } @@ -81,4 +67,3 @@ class page_action extends tform_actions { $page = new page_action; $page->onDelete(); -?> diff --git a/interface/web/admin/server_php_edit.php b/interface/web/admin/server_php_edit.php index c200b25bae..a9e7b38bbb 100644 --- a/interface/web/admin/server_php_edit.php +++ b/interface/web/admin/server_php_edit.php @@ -51,36 +51,10 @@ $app->load('tform_actions'); class page_action extends tform_actions { function onSubmit() { - global $app; - - if(isset($this->id) && $this->id > 0 && $app->tform->getCurrentTab() == 'php_name') { - $rec = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $this->id); - if($rec['name'] != $this->dataRecord['name']) { - $check = array(); - // fastcgi - if($rec['php_fastcgi_binary'] != '') $check[] = $rec['php_fastcgi_binary']; - if($rec['php_fastcgi_ini_dir'] != '') $check[] = $rec['php_fastcgi_ini_dir']; - if(!empty($check)) $fastcgi_check = implode(':', $check); - unset($check); - // fpm - if($rec['php_fpm_init_script'] != '') $check[] = $rec['php_fpm_init_script']; - if($rec['php_fpm_ini_dir'] != '') $check[] = $rec['php_fpm_ini_dir']; - if($rec['php_fpm_pool_dir'] != '') $check[] = $rec['php_fpm_pool_dir']; - if(!empty($check)) $fpm_check = implode(':', $check); - - $sql = 'SELECT domain_id FROM web_domain WHERE server_id = ? AND fastcgi_php_version LIKE ?'; - if(isset($fastcgi_check)) $web_domains_fastcgi = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fastcgi_check); - if(isset($fpm_check)) $web_domains_fpm = $app->db->queryAllRecords($sql, $this->dataRecord['server_id'], '%:'.$fpm_check); - - if(!empty($webdomains_fastcgi) || !empty($web_domains_fpm)) $app->error($app->tform->lng('php_in_use_error').' '.$app->tform->lng('php_name_in_use_error')); - } - } - parent::onSubmit(); - } function onBeforeUpdate() { - global $app, $conf; + global $app; //* Check if the server has been changed // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway @@ -99,5 +73,3 @@ class page_action extends tform_actions { $page = new page_action; $page->onLoad(); - -?> diff --git a/interface/web/admin/server_php_list.php b/interface/web/admin/server_php_list.php index a3c4d6354f..11ef881792 100644 --- a/interface/web/admin/server_php_list.php +++ b/interface/web/admin/server_php_list.php @@ -51,7 +51,7 @@ $app->listform_actions->SQLOrderBy = "ORDER BY server_php.server_id, server_php. $app->listform_actions->SQLExtSelect = "(SELECT COUNT(w.server_id) FROM - server_php s LEFT JOIN web_domain w ON (w.fastcgi_php_version LIKE CONCAT(s.name, '%') AND s.server_id=w.server_id) + server_php s LEFT JOIN web_domain w ON (w.server_php_id = s.server_php_id AND s.server_id=w.server_id) WHERE server_php.server_php_id=s.server_php_id GROUP BY @@ -60,5 +60,3 @@ $app->listform_actions->SQLExtSelect = "(SELECT $app->listform_actions->onLoad(); - -?> diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 7da71281cf..6031b7ea94 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -254,10 +254,10 @@ $form["tabs"]['domain'] = array ( 'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM', 'hhvm' => 'HHVM'), 'searchable' => 2 ), - 'fastcgi_php_version' => array ( - 'datatype' => 'VARCHAR', + 'server_php_id' => array ( + 'datatype' => 'INTEGER', 'formtype' => 'SELECT', - 'default' => '', + 'default' => '0', /*'datasource' => array ( 'type' => 'SQL', 'querystring' => "SELECT ip_address,ip_address FROM server_ip WHERE ip_type = 'IPv4' AND {AUTHSQL} ORDER BY ip_address", 'keyfield'=> 'ip_address', diff --git a/interface/web/sites/lib/lang/ar_web_aliasdomain.lng b/interface/web/sites/lib/lang/ar_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/ar_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ar_web_childdomain.lng b/interface/web/sites/lib/lang/ar_web_childdomain.lng index 636505f248..95c9944f12 100644 --- a/interface/web/sites/lib/lang/ar_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng index 1ab9c55d3d..11247be982 100644 --- a/interface/web/sites/lib/lang/ar_web_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng index 136829a7b2..3ce40d9b0c 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ar_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/ar_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_aliasdomain.lng b/interface/web/sites/lib/lang/bg_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/bg_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_childdomain.lng b/interface/web/sites/lib/lang/bg_web_childdomain.lng index c7549b76f7..e62b0af4d5 100644 --- a/interface/web/sites/lib/lang/bg_web_childdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng index 901c34a6ec..2146229cd0 100644 --- a/interface/web/sites/lib/lang/bg_web_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_domain.lng @@ -91,7 +91,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'квотата за диÑковото проÑтранÑтво е грешна.'; $wb['traffic_quota_error_regex'] = 'Трафик квота е грешна.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng index 8c48f035fe..828b79931f 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -93,9 +93,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'квотата за диÑковото проÑтранÑтво е грешна.'; $wb['traffic_quota_error_regex'] = 'Трафик квота е грешна.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/bg_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/bg_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/br_web_aliasdomain.lng b/interface/web/sites/lib/lang/br_web_aliasdomain.lng index d6142fd374..779d2c2383 100644 --- a/interface/web/sites/lib/lang/br_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/br_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; -$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['server_php_id_txt'] = 'Versão do php'; $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/br_web_childdomain.lng b/interface/web/sites/lib/lang/br_web_childdomain.lng index fbbb40635e..fc5f31a2ec 100644 --- a/interface/web/sites/lib/lang/br_web_childdomain.lng +++ b/interface/web/sites/lib/lang/br_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; -$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['server_php_id_txt'] = 'Versão do php'; $wb['pm_txt'] = 'Gerenciador de processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 1a2a2b301b..31b39974f1 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -94,7 +94,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; -$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['server_php_id_txt'] = 'Versão do php'; $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; 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 a3a14e335b..706125676a 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -97,9 +97,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; -$wb['fastcgi_php_version_txt'] = 'Versão do php'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'Versão do php'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; 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 390b7402e7..03526d049b 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_subdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ter $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve ter um valor inteiro positivo.'; $wb['hd_quota_error_regex'] = 'Cota do disco é inválida.'; $wb['traffic_quota_error_regex'] = 'Cota de tráfego é inválida.'; -$wb['fastcgi_php_version_txt'] = 'Versão do php'; +$wb['server_php_id_txt'] = 'Versão do php'; $wb['pm_txt'] = 'Gerenciador de Processos do php-fpm'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ca_web_aliasdomain.lng b/interface/web/sites/lib/lang/ca_web_aliasdomain.lng index 92c9c35538..990a5342cc 100644 --- a/interface/web/sites/lib/lang/ca_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'La valeur de PHP-FPM pm.min_spare_ser $wb['pm_max_spare_servers_error_regex'] = 'La valeur de PHP-FPM pm.max_spare_servers doit être un entier positif.'; $wb['hd_quota_error_regex'] = 'Le quota de disque dur est invalide.'; $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; -$wb['fastcgi_php_version_txt'] = 'Version de PHP'; +$wb['server_php_id_txt'] = 'Version de PHP'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ca_web_childdomain.lng b/interface/web/sites/lib/lang/ca_web_childdomain.lng index 762acfe244..c766bae881 100644 --- a/interface/web/sites/lib/lang/ca_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ca_web_domain.lng b/interface/web/sites/lib/lang/ca_web_domain.lng index a3475c43c2..c240d5c349 100644 --- a/interface/web/sites/lib/lang/ca_web_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Le quota de disque dur est invalide.'; $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; $wb['ssl_key_txt'] = 'Clé SSL'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Version de PHP'; +$wb['server_php_id_txt'] = 'Version de PHP'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng index cf25d81260..8d0e660492 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -97,9 +97,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ca_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/ca_web_vhost_subdomain.lng index c9a4686608..faae8ba2b0 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng index 0f8d3e5dec..9861b62046 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Verze'; +$wb['server_php_id_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng index b159976b29..6838d351ee 100644 --- a/interface/web/sites/lib/lang/cz_web_childdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Verze'; +$wb['server_php_id_txt'] = 'PHP Verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index 0998cb1264..b61ca0741a 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Kvóta pevného disku je neplatná.'; $wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.'; $wb['ssl_key_txt'] = 'SSL klÃÄ'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'VýbÄ›r PHP verze'; +$wb['server_php_id_txt'] = 'VýbÄ›r PHP verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng index ea814b0cb9..cd7d06c8aa 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -99,9 +99,9 @@ $wb['hd_quota_error_regex'] = 'Kvóta pevného disku je neplatná.'; $wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.'; $wb['ssl_key_txt'] = 'SSL klÃÄ'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'VýbÄ›r PHP verze'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'VýbÄ›r PHP verze'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng index 268368c139..e15b9c5863 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Kvóta pevného disku je neplatná.'; $wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.'; -$wb['fastcgi_php_version_txt'] = 'VýbÄ›r PHP verze'; +$wb['server_php_id_txt'] = 'VýbÄ›r PHP verze'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_aliasdomain.lng b/interface/web/sites/lib/lang/de_web_aliasdomain.lng index 5889b17d57..14e4c79d25 100644 --- a/interface/web/sites/lib/lang/de_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/de_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muss ein $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muss ein positiver integer Wert sein.'; $wb['hd_quota_error_regex'] = 'Speicherplatz-Beschränkung ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Datentransfer-Beschränkung ist ungültig.'; -$wb['fastcgi_php_version_txt'] = 'PHP-Version'; +$wb['server_php_id_txt'] = 'PHP-Version'; $wb['pm_txt'] = 'PHP-FPM Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_childdomain.lng b/interface/web/sites/lib/lang/de_web_childdomain.lng index 05b1f1d51d..2f1248740d 100644 --- a/interface/web/sites/lib/lang/de_web_childdomain.lng +++ b/interface/web/sites/lib/lang/de_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muss ein $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muss ein positiver integer Wert sein.'; $wb['hd_quota_error_regex'] = 'Speicherplatz-Beschränkung ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Datentransfer-Beschränkung ist ungültig.'; -$wb['fastcgi_php_version_txt'] = 'PHP-Version'; +$wb['server_php_id_txt'] = 'PHP-Version'; $wb['pm_txt'] = 'PHP-FPM Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index 7232d8fa5f..b9c77a8b7b 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß ein $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.'; $wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng index 449bcb588a..2607017139 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -98,9 +98,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß ein $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.'; $wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng index 89e50f2df4..b2211e314b 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß ein $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.'; $wb['hd_quota_error_regex'] = 'Harddisk-Quota ist ungültig.'; $wb['traffic_quota_error_regex'] = 'Traffic-Quota ist ungültig.'; -$wb['fastcgi_php_version_txt'] = 'PHP-Version'; +$wb['server_php_id_txt'] = 'PHP-Version'; $wb['pm_txt'] = 'PHP-FPM Prozess Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_aliasdomain.lng b/interface/web/sites/lib/lang/dk_web_aliasdomain.lng index 98b7e4d898..6a324cca90 100644 --- a/interface/web/sites/lib/lang/dk_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk kvote is ugyldigt.'; $wb['traffic_quota_error_regex'] = 'Trafik kvote is ugyldigt.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_childdomain.lng b/interface/web/sites/lib/lang/dk_web_childdomain.lng index 762acfe244..c766bae881 100644 --- a/interface/web/sites/lib/lang/dk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_domain.lng b/interface/web/sites/lib/lang/dk_web_domain.lng index 7b61835543..05920d39d2 100644 --- a/interface/web/sites/lib/lang/dk_web_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_domain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk kvote is ugyldigt.'; $wb['traffic_quota_error_regex'] = 'Trafik kvote is ugyldigt.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng index cf25d81260..8d0e660492 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -97,9 +97,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/dk_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/dk_web_vhost_subdomain.lng index ba7aad0403..18eebc2665 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk kvote is ugyldigt.'; $wb['traffic_quota_error_regex'] = 'Trafik kvote is ugyldigt.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_aliasdomain.lng b/interface/web/sites/lib/lang/el_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/el_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/el_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_childdomain.lng b/interface/web/sites/lib/lang/el_web_childdomain.lng index 3c5cb7a936..f6c2c743bf 100644 --- a/interface/web/sites/lib/lang/el_web_childdomain.lng +++ b/interface/web/sites/lib/lang/el_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng index 1787aa0e33..1d067f9f8c 100644 --- a/interface/web/sites/lib/lang/el_web_domain.lng +++ b/interface/web/sites/lib/lang/el_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_vhost_domain.lng b/interface/web/sites/lib/lang/el_web_vhost_domain.lng index f39ce19a9b..47115c8098 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_aliasdomain.lng b/interface/web/sites/lib/lang/en_web_aliasdomain.lng index eeae6770c6..5499768e06 100644 --- a/interface/web/sites/lib/lang/en_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/en_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be $wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.'; $wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.'; -$wb["fastcgi_php_version_txt"] = 'PHP Version'; +$wb["server_php_id_txt"] = 'PHP Version'; $wb["pm_txt"] = 'PHP-FPM Process Manager'; $wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout'; $wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_childdomain.lng b/interface/web/sites/lib/lang/en_web_childdomain.lng index 54def69214..b4dd9e9326 100644 --- a/interface/web/sites/lib/lang/en_web_childdomain.lng +++ b/interface/web/sites/lib/lang/en_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 28c7c3e4e1..1785358209 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -95,7 +95,7 @@ $wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be $wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.'; $wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.'; -$wb["fastcgi_php_version_txt"] = 'PHP Version'; +$wb["server_php_id_txt"] = 'PHP Version'; $wb["pm_txt"] = 'PHP-FPM Process Manager'; $wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout'; $wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng index 497fcd1993..19b12ea2c4 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -97,9 +97,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng index 0c7ac92c61..f8acd2d26b 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng @@ -100,7 +100,7 @@ $wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be $wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.'; $wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.'; -$wb["fastcgi_php_version_txt"] = 'PHP Version'; +$wb["server_php_id_txt"] = 'PHP Version'; $wb["pm_txt"] = 'PHP-FPM Process Manager'; $wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout'; $wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_aliasdomain.lng b/interface/web/sites/lib/lang/es_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/es_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/es_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng index 25843a0e21..6cf662c2ff 100644 --- a/interface/web/sites/lib/lang/es_web_childdomain.lng +++ b/interface/web/sites/lib/lang/es_web_childdomain.lng @@ -98,7 +98,7 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children debe ser un valor $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers debe ser un valor entero positivo.'; $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers debe ser un valor entero positivo.'; $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers debe ser un valor entero positivo.'; -$wb['fastcgi_php_version_txt'] = 'Versión de PHP'; +$wb['server_php_id_txt'] = 'Versión de PHP'; $wb['pm_txt'] = 'PHP-FPM Gestor de Procesos'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng index 889d29bd95..2dfe3d6cac 100644 --- a/interface/web/sites/lib/lang/es_web_domain.lng +++ b/interface/web/sites/lib/lang/es_web_domain.lng @@ -95,7 +95,7 @@ $wb['domain_error_autosub'] = 'There is already a subdomain with these settings. $wb['perl_txt'] = 'Perl'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng index 3f60826008..c1960ae38b 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['domain_error_autosub'] = 'Ya hay un subdominio con estas configuraciones.'; $wb['perl_txt'] = 'Perl'; $wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.'; $wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.'; -$wb['fastcgi_php_version_txt'] = 'Versión de PHP'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'Versión de PHP'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Gestor de Procesos'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/es_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/es_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_aliasdomain.lng b/interface/web/sites/lib/lang/fi_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/fi_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_childdomain.lng b/interface/web/sites/lib/lang/fi_web_childdomain.lng index 5105ba3f2e..bbc12a35fd 100644 --- a/interface/web/sites/lib/lang/fi_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng index 1cc2a2024d..38434653ef 100644 --- a/interface/web/sites/lib/lang/fi_web_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng index 82fd44a56a..7ba9a95d35 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fi_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/fi_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_aliasdomain.lng b/interface/web/sites/lib/lang/fr_web_aliasdomain.lng index 59a69d4f23..5ce638002b 100644 --- a/interface/web/sites/lib/lang/fr_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'La valeur de PHP-FPM pm.min_spare_ser $wb['pm_max_spare_servers_error_regex'] = 'La valeur de PHP-FPM pm.max_spare_servers doit être un entier positif.'; $wb['hd_quota_error_regex'] = 'Le quota de disque dur est invalide.'; $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; -$wb['fastcgi_php_version_txt'] = 'Version de PHP'; +$wb['server_php_id_txt'] = 'Version de PHP'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_childdomain.lng b/interface/web/sites/lib/lang/fr_web_childdomain.lng index 1be206e122..d636dc2d48 100644 --- a/interface/web/sites/lib/lang/fr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng index 421693a0e6..a0e6ff9847 100644 --- a/interface/web/sites/lib/lang/fr_web_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Le quota de disque dur est invalide.'; $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; $wb['ssl_key_txt'] = 'Clé SSL'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Version de PHP'; +$wb['server_php_id_txt'] = 'Version de PHP'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng index 5d817c611b..b3f1602e63 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Le quota de disque dur est invalide.'; $wb['traffic_quota_error_regex'] = 'Le quota de trafic est invalide.'; $wb['ssl_key_txt'] = 'Clé SSL'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Version de PHP'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'Version de PHP'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Manager de process PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/fr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/fr_web_vhost_subdomain.lng index a97883fe46..bdd704f93b 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_aliasdomain.lng b/interface/web/sites/lib/lang/hr_web_aliasdomain.lng index 67eb8363f5..7a2df148e1 100644 --- a/interface/web/sites/lib/lang/hr_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP verzija'; +$wb['server_php_id_txt'] = 'PHP verzija'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_childdomain.lng b/interface/web/sites/lib/lang/hr_web_childdomain.lng index 99df0d2fdf..b0f7a1f2db 100644 --- a/interface/web/sites/lib/lang/hr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index 8a089e6ba5..0b27cc5e65 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng index 4d70565928..14bb2c6687 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng index 82fa901c1f..5f5f74062f 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP verzija'; +$wb['server_php_id_txt'] = 'PHP verzija'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_aliasdomain.lng b/interface/web/sites/lib/lang/hu_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/hu_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_childdomain.lng b/interface/web/sites/lib/lang/hu_web_childdomain.lng index 5ac19c3bbc..a05534c4f7 100644 --- a/interface/web/sites/lib/lang/hu_web_childdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng index 5ddf06593d..711f0abee2 100644 --- a/interface/web/sites/lib/lang/hu_web_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng index d8bb15537b..86e5492408 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/hu_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/hu_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_aliasdomain.lng b/interface/web/sites/lib/lang/id_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/id_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/id_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_childdomain.lng b/interface/web/sites/lib/lang/id_web_childdomain.lng index d5fd9711a4..d839094ff9 100644 --- a/interface/web/sites/lib/lang/id_web_childdomain.lng +++ b/interface/web/sites/lib/lang/id_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng index 785d7fc0da..1dbdae9059 100644 --- a/interface/web/sites/lib/lang/id_web_domain.lng +++ b/interface/web/sites/lib/lang/id_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_vhost_domain.lng b/interface/web/sites/lib/lang/id_web_vhost_domain.lng index 39df360c89..7de6c2c6fa 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/id_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/id_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_aliasdomain.lng b/interface/web/sites/lib/lang/it_web_aliasdomain.lng index 4723783201..0dc91e1371 100644 --- a/interface/web/sites/lib/lang/it_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/it_web_aliasdomain.lng @@ -94,7 +94,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve ess $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve essere un valore intero postivo.'; $wb['hd_quota_error_regex'] = 'Quota Spazio Disco non valido.'; $wb['traffic_quota_error_regex'] = 'Quota Traffico non valido.'; -$wb['fastcgi_php_version_txt'] = 'Versione PHP'; +$wb['server_php_id_txt'] = 'Versione PHP'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_childdomain.lng b/interface/web/sites/lib/lang/it_web_childdomain.lng index 3a214e298e..e10211cdf7 100644 --- a/interface/web/sites/lib/lang/it_web_childdomain.lng +++ b/interface/web/sites/lib/lang/it_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng index 68eae554fc..497f41d74c 100644 --- a/interface/web/sites/lib/lang/it_web_domain.lng +++ b/interface/web/sites/lib/lang/it_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Quota spazio disco non valida.'; $wb['traffic_quota_error_regex'] = 'Quota Traffico non valida.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Versione'; +$wb['server_php_id_txt'] = 'PHP Versione'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_vhost_domain.lng b/interface/web/sites/lib/lang/it_web_vhost_domain.lng index 807039ca6c..3951e5d19d 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/it_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/it_web_vhost_subdomain.lng index 259d1c820c..d1bb71c625 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deve es $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deve essere un valore intero positivo.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_aliasdomain.lng b/interface/web/sites/lib/lang/ja_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/ja_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_childdomain.lng b/interface/web/sites/lib/lang/ja_web_childdomain.lng index d59d7bbda5..fb705f1af5 100644 --- a/interface/web/sites/lib/lang/ja_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng index 2dbf65d2e5..5582ad82a5 100644 --- a/interface/web/sites/lib/lang/ja_web_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng index 288b9fab11..a9d284b46c 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ja_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/ja_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_aliasdomain.lng b/interface/web/sites/lib/lang/nl_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/nl_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_childdomain.lng b/interface/web/sites/lib/lang/nl_web_childdomain.lng index e99616ce11..9b73b148a2 100644 --- a/interface/web/sites/lib/lang/nl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index aa57c6e012..f50539ae7c 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is ongeldig.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is ongeldig.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Versie'; +$wb['server_php_id_txt'] = 'PHP Versie'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng index 27371eee35..50932cc9e1 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is niet correct.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is niet correct.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Versie'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Versie'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/nl_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/nl_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_aliasdomain.lng b/interface/web/sites/lib/lang/pl_web_aliasdomain.lng index 19cd691beb..618ae50e84 100644 --- a/interface/web/sites/lib/lang/pl_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/pl_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers musi by $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers musi być dodatniÄ… wartoÅ›ciÄ… caÅ‚kowitÄ….'; $wb['hd_quota_error_regex'] = 'Limit dysku jest nieprawidÅ‚owy'; $wb['traffic_quota_error_regex'] = 'Limit transferu jest nieprawidÅ‚owy'; -$wb['fastcgi_php_version_txt'] = 'Wersja PHP'; +$wb['server_php_id_txt'] = 'Wersja PHP'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_childdomain.lng b/interface/web/sites/lib/lang/pl_web_childdomain.lng index 9b8a2b56ba..ab3a61582a 100644 --- a/interface/web/sites/lib/lang/pl_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pl_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers musi by $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers musi być dodatniÄ… wartoÅ›ciÄ… caÅ‚kowitÄ….'; $wb['hd_quota_error_regex'] = 'Limit dysku jest nieprawidÅ‚owy'; $wb['traffic_quota_error_regex'] = 'Limit transferu jest nieprawidÅ‚owy'; -$wb['fastcgi_php_version_txt'] = 'Wersja PHP'; +$wb['server_php_id_txt'] = 'Wersja PHP'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng index 2521f17406..e615f70303 100644 --- a/interface/web/sites/lib/lang/pl_web_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_domain.lng @@ -95,7 +95,7 @@ $wb['ssl_key_txt'] = 'Klucz SSL'; $wb['web_folder_error_regex'] = 'Wprowadzono nieprawidÅ‚owy katalog. ProszÄ™ nie wpisywać znaku slash [ / ]'; $wb['domain_error_autosub'] = 'Istnieje już subdomena z tymi ustawieniami.'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Wersja PHP'; +$wb['server_php_id_txt'] = 'Wersja PHP'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng index f1e945df6f..93752a063c 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -97,9 +97,9 @@ $wb['ssl_key_txt'] = 'Klucz SSL'; $wb['web_folder_error_regex'] = 'Wprowadzono nieprawidÅ‚owy katalog. ProszÄ™ nie wpisywać znaku slash [ / ]'; $wb['domain_error_autosub'] = 'Istnieje już subdomena z tymi ustawieniami.'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'Wersja PHP'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'Wersja PHP'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pl_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/pl_web_vhost_subdomain.lng index cc2431dbec..884210be39 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers musi by $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers musi być dodatniÄ… wartoÅ›ciÄ… caÅ‚kowitÄ….'; $wb['hd_quota_error_regex'] = 'Limit dyski jest nieprawidÅ‚owy'; $wb['traffic_quota_error_regex'] = 'Limit transferu jest nieprawidÅ‚owy'; -$wb['fastcgi_php_version_txt'] = 'Wersja PHP'; +$wb['server_php_id_txt'] = 'Wersja PHP'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_aliasdomain.lng b/interface/web/sites/lib/lang/pt_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/pt_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_childdomain.lng b/interface/web/sites/lib/lang/pt_web_childdomain.lng index 4cbc032c19..48ee53c856 100644 --- a/interface/web/sites/lib/lang/pt_web_childdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng index fc7add5d89..5ed2112e1e 100644 --- a/interface/web/sites/lib/lang/pt_web_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng index 9eb927f000..2b07795507 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/pt_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/pt_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_aliasdomain.lng b/interface/web/sites/lib/lang/ro_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/ro_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_childdomain.lng b/interface/web/sites/lib/lang/ro_web_childdomain.lng index 30f83e7283..c172b3d70f 100644 --- a/interface/web/sites/lib/lang/ro_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng index 7e98b45d02..3b3e8b339a 100644 --- a/interface/web/sites/lib/lang/ro_web_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng index 0127c4ee80..e52310bf08 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ro_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/ro_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_aliasdomain.lng b/interface/web/sites/lib/lang/ru_web_aliasdomain.lng index 7555b823b0..e63d9b039f 100644 --- a/interface/web/sites/lib/lang/ru_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers долж $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers должен быть положительным целым чиÑлом.'; $wb['hd_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° HDD.'; $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° трафика.'; -$wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['server_php_id_txt'] = 'ВерÑÐ¸Ñ PHP'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_childdomain.lng b/interface/web/sites/lib/lang/ru_web_childdomain.lng index af71669a47..ffe19805ab 100644 --- a/interface/web/sites/lib/lang/ru_web_childdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers долж $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers должен быть положительным целым чиÑлом.'; $wb['hd_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° HDD.'; $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° трафика.'; -$wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['server_php_id_txt'] = 'ВерÑÐ¸Ñ PHP'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng index 6cba45f1b7..bc47bfff7e 100644 --- a/interface/web/sites/lib/lang/ru_web_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° HDD.'; $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° трафика.'; $wb['ssl_key_txt'] = 'SSL-ключ'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['server_php_id_txt'] = 'ВерÑÐ¸Ñ PHP'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng index 827f149dd8..07c345f0da 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° HDD.'; $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° трафика.'; $wb['ssl_key_txt'] = 'SSL-ключ'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/ru_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/ru_web_vhost_subdomain.lng index d548c2abe2..e504af3dad 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers долж $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers должен быть положительным целым чиÑлом.'; $wb['hd_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° HDD.'; $wb['traffic_quota_error_regex'] = 'ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð° трафика.'; -$wb['fastcgi_php_version_txt'] = 'ВерÑÐ¸Ñ PHP'; +$wb['server_php_id_txt'] = 'ВерÑÐ¸Ñ PHP'; $wb['pm_txt'] = 'Менеджер процеÑÑов PHP-FPM'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_aliasdomain.lng b/interface/web/sites/lib/lang/se_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/se_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/se_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_childdomain.lng b/interface/web/sites/lib/lang/se_web_childdomain.lng index eff6791c65..42e4591835 100644 --- a/interface/web/sites/lib/lang/se_web_childdomain.lng +++ b/interface/web/sites/lib/lang/se_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index 91fa8c4db5..a293af77ea 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_vhost_domain.lng b/interface/web/sites/lib/lang/se_web_vhost_domain.lng index 1bac2468c1..f398991442 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_aliasdomain.lng b/interface/web/sites/lib/lang/sk_web_aliasdomain.lng index 4149c71149..74697bdb33 100644 --- a/interface/web/sites/lib/lang/sk_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_childdomain.lng b/interface/web/sites/lib/lang/sk_web_childdomain.lng index e0d26667bc..d14f9815f6 100644 --- a/interface/web/sites/lib/lang/sk_web_childdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_childdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng index f8f2f79b96..2b18602008 100644 --- a/interface/web/sites/lib/lang/sk_web_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_domain.lng @@ -93,7 +93,7 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng index c3b680b2b4..3d4a76186f 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -95,9 +95,9 @@ $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; $wb['ssl_key_txt'] = 'SSL Key'; $wb['perl_txt'] = 'Perl'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Version'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/sk_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/sk_web_vhost_subdomain.lng index 35c9298e71..4ded131f4a 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_subdomain.lng @@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.'; $wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.'; $wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.'; -$wb['fastcgi_php_version_txt'] = 'PHP Version'; +$wb['server_php_id_txt'] = 'PHP Version'; $wb['pm_txt'] = 'PHP-FPM Process Manager'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng index d7ded7849a..108f1d9a67 100644 --- a/interface/web/sites/lib/lang/tr_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_aliasdomain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; -$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['server_php_id_txt'] = 'PHP Sürümü'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yöneticisi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_childdomain.lng b/interface/web/sites/lib/lang/tr_web_childdomain.lng index 235e870117..55a82167d6 100644 --- a/interface/web/sites/lib/lang/tr_web_childdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_childdomain.lng @@ -101,7 +101,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['hd_quota_error_regex'] = 'Sabit disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; -$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['server_php_id_txt'] = 'PHP Sürümü'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yönetimi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index 65db621f56..4d20d3efad 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -95,7 +95,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; -$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['server_php_id_txt'] = 'PHP Sürümü'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yöneticisi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng index 2e004d87ef..8aa1684478 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -96,9 +96,9 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; -$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; -$wb['fastcgi_php_version_invalid_txt'] = 'PHP Version is invalid.'; -$wb['fastcgi_php_version_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; +$wb['server_php_id_txt'] = 'PHP Sürümü'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_default_hidden_warning_txt'] = 'PHP Version was set to "default" but that can no longer be selected. Choose your desired PHP Version and save your settings.'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yöneticisi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng index a24883881f..7cdf15947a 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_subdomain.lng @@ -100,7 +100,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers deÄŸeri $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers deÄŸeri pozitif bir tamsayı olmalıdır.'; $wb['hd_quota_error_regex'] = 'Disk kotası geçersiz.'; $wb['traffic_quota_error_regex'] = 'Trafik kotası geçersiz.'; -$wb['fastcgi_php_version_txt'] = 'PHP Sürümü'; +$wb['server_php_id_txt'] = 'PHP Sürümü'; $wb['pm_txt'] = 'PHP-FPM Ä°ÅŸlem Yöneticisi'; $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout'; $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests'; diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index e39b889d4c..0b17e38022 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -221,14 +221,14 @@ {tmpl_var name='php'} </select></div> </div> - {tmpl_hook name="field_fastcgi_php_version"} - <div class="form-group fastcgi_php_version"> - <label for="fastcgi_php_version" class="col-sm-3 control-label">{tmpl_var name='fastcgi_php_version_txt'}</label> - <div class="col-sm-9"><select name="fastcgi_php_version" id="fastcgi_php_version" class="form-control"> - {tmpl_var name='fastcgi_php_version'} + {tmpl_hook name="field_server_php_id"} + <div class="form-group server_php_id"> + <label for="server_php_id" class="col-sm-3 control-label">{tmpl_var name='server_php_id_txt'}</label> + <div class="col-sm-9"><select name="server_php_id" id="server_php_id" class="form-control"> + {tmpl_var name='server_php_id'} </select></div> - <tmpl_if name="fastcgi_php_version_default_hidden_warning_confirmed"> - <input type="hidden" id="fastcgi_php_version_default_hidden_warning_confirmed" name="fastcgi_php_version_default_hidden_warning_confirmed" value="{tmpl_var name='fastcgi_php_version_default_hidden_warning_confirmed'}" /> + <tmpl_if name="server_php_id_default_hidden_warning_confirmed"> + <input type="hidden" id="server_php_id_default_hidden_warning_confirmed" name="server_php_id_default_hidden_warning_confirmed" value="{tmpl_var name='server_php_id_default_hidden_warning_confirmed'}" /> </tmpl_if> </div> <tmpl_if name="limit_directive_snippets" op="==" value="y"><div class="form-group"> @@ -294,32 +294,32 @@ }); if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm' || (jQuery('#php').val() == 'hhvm' && serverType == 'nginx')){ - jQuery('.fastcgi_php_version:hidden').show(); + jQuery('.server_php_id:hidden').show(); if(jQuery('#php').val() == 'hhvm'){ - jQuery('#fastcgi_php_version_txt').hide(); + jQuery('#server_php_id_txt').hide(); jQuery('#fastcgi_php_fallback_version_txt').show(); } else { - jQuery('#fastcgi_php_version_txt').show(); + jQuery('#server_php_id_txt').show(); jQuery('#fastcgi_php_fallback_version_txt').hide(); } } else { - jQuery('.fastcgi_php_version:visible').hide(); + jQuery('.server_php_id:visible').hide(); } //ISPConfig.resetFormChanged(); jQuery('#php').change(function(){ reloadFastcgiPHPVersions(); if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm' || (jQuery(this).val() == 'hhvm' && serverType == 'nginx')){ - jQuery('.fastcgi_php_version:hidden').show(); + jQuery('.server_php_id:hidden').show(); if(jQuery(this).val() == 'hhvm'){ - jQuery('#fastcgi_php_version_txt').hide(); + jQuery('#server_php_id_txt').hide(); jQuery('#fastcgi_php_fallback_version_txt').show(); } else { - jQuery('#fastcgi_php_version_txt').show(); + jQuery('#server_php_id_txt').show(); jQuery('#fastcgi_php_fallback_version_txt').hide(); } } else { - jQuery('.fastcgi_php_version:visible').hide(); + jQuery('.server_php_id:visible').hide(); } }); jQuery('#parent_domain_id').change(function() { @@ -445,7 +445,7 @@ var phpfastcgiselected = ''; $.each(data, function(key, val) { <tmpl_if name="id"> - if($('#fastcgi_php_version').val() == key){ + if($('#server_php_id').val() == key){ phpfastcgiselected = ' selected="selected"'; } else { phpfastcgiselected = ''; @@ -456,7 +456,7 @@ options += '<option value="'+key+'"'+phpfastcgiselected+'>'+val+'</option>'; }); <tmpl_if name="id"> - if($('#fastcgi_php_version').val() == ''){ + if($('#server_php_id').val() == ''){ phpfastcgiselected = ' selected="selected"'; } else { phpfastcgiselected = ''; @@ -465,7 +465,7 @@ phpfastcgiselected = ''; </tmpl_if> //options += '<option value=""'+phpfastcgiselected+'>{tmpl_var name="default_php_txt"}</option>'; - $('#fastcgi_php_version').html(options).change(); + $('#server_php_id').html(options).change(); if(noFormChange) ISPConfig.resetFormChanged(); }); } diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index 0d770476d1..277fde2703 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -258,20 +258,15 @@ class page_action extends tform_actions { } } if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + $php_select = "<option value='0'>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; } 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')){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $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 .= "<option value='" . $app->functions->htmlentities($php_version) . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; + $selected = ($php_record['server_php_id'] == $this->dataRecord["server_php_id"])?'SELECTED':''; + $php_select .= "<option value='" . $php_record['server_php_id'] . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; } } - $app->tpl->setVar("fastcgi_php_version", $php_select); + $app->tpl->setVar("server_php_id", $php_select); unset($php_records); // add limits to template to be able to hide settings @@ -406,20 +401,15 @@ class page_action extends tform_actions { } } if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + $php_select = "<option value='0'>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; } 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')){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $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 .= "<option value='" . $app->functions->htmlentities($php_version) . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; + $selected = ($php_record['server_php_id'] == $this->dataRecord["server_php_id"])?'SELECTED':''; + $php_select .= "<option value='" . $php_record['server_php_id'] . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; } } - $app->tpl->setVar("fastcgi_php_version", $php_select); + $app->tpl->setVar("server_php_id", $php_select); unset($php_records); // add limits to template to be able to hide settings @@ -628,20 +618,15 @@ class page_action extends tform_actions { } } if (empty($web_config['php_default_hide']) || 'n' === $web_config['php_default_hide']) { - $php_select = "<option value=''>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; + $php_select = "<option value='0'>".$app->functions->htmlentities($web_config['php_default_name'])."</option>"; } 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')){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $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 .= "<option value='" . $app->functions->htmlentities($php_version) . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; + $selected = ($php_record['server_php_id'] == $this->dataRecord["server_php_id"])?'SELECTED':''; + $php_select .= "<option value='" . $php_record['server_php_id'] . "' $selected>".$app->functions->htmlentities($php_record['name'])."</option>\r\n"; } } - $app->tpl->setVar("fastcgi_php_version", $php_select); + $app->tpl->setVar("server_php_id", $php_select); unset($php_records); foreach($read_limits as $limit) $app->tpl->setVar($limit, ($limit == 'force_suexec' ? 'n' : 'y')); @@ -1349,28 +1334,24 @@ class page_action extends tform_actions { } // Check custom PHP version - if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') { + if(isset($this->dataRecord['server_php_id']) && $this->dataRecord['server_php_id'] != 0) { // Check php-fpm mode if($this->dataRecord['php'] == 'php-fpm'){ - $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 { - $this->dataRecord['fastcgi_php_version'] = ''; + $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE active = 'y' AND server_php_id = ?", $this->dataRecord['server_php_id']); + if(!is_array($tmp) || !$tmp['php_fpm_init_script']) { + $this->dataRecord['server_php_id'] = 0; } unset($tmp); // Check fast-cgi mode } elseif($this->dataRecord['php'] == 'fast-cgi') { - $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 { - $this->dataRecord['fastcgi_php_version'] = ''; + $tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE active = 'y' AND server_php_id = ?", $this->dataRecord['server_php_id']); + if(!is_array($tmp) || !$tmp['php_fastcgi_binary']) { + $this->dataRecord['server_php_id'] = 0; } unset($tmp); } else { - // Other PHP modes do not have custom versions, so we force the value to be empty - $this->dataRecord['fastcgi_php_version'] = ''; + // Other PHP modes do not have custom versions, so we force the value to be zero + $this->dataRecord['server_php_id'] = 0; } } @@ -1564,27 +1545,27 @@ class page_action extends tform_actions { // The default PHP version is indicated by an empty string, so if the default PHP version is hidden // then an empty string is not a valid PHP version. - if (empty($this->dataRecord['fastcgi_php_version'])) { - $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_invalid_txt')); + if (empty($this->dataRecord['server_php_id'])) { + $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('server_php_id_invalid_txt')); return; } // If the default PHP version is now hidden but this vhost was using it, we don't want to implicitly // switch the user to some random Additional PHP version. So we show a warning instead. - $old_fastcgi_php_version = null; + $old_server_php_id = null; if ($this->id > 0) { - $existing = $app->db->queryOneRecord('SELECT fastcgi_php_version FROM web_domain WHERE domain_id = ?', $this->id); - $old_fastcgi_php_version = $existing['fastcgi_php_version']; + $existing = $app->db->queryOneRecord('SELECT server_php_id FROM web_domain WHERE domain_id = ?', $this->id); + $old_server_php_id = $existing['server_php_id']; } - if ('' === $old_fastcgi_php_version) { + if ('' === $old_server_php_id) { // Warning was already shown, user confirmed the new PHP version - if (!empty($_POST['fastcgi_php_version_default_hidden_warning_confirmed'])) { + if (!empty($_POST['server_php_id_default_hidden_warning_confirmed'])) { return; } - $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('fastcgi_php_version_default_hidden_warning_txt')); - $app->tpl->setVar('fastcgi_php_version_default_hidden_warning_confirmed', 1); + $app->tform->errorMessage .= sprintf('%s<br>', $app->tform->lng('server_php_id_default_hidden_warning_txt')); + $app->tpl->setVar('server_php_id_default_hidden_warning_confirmed', 1); } } } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 61116d0041..bb8c60fb5a 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -109,10 +109,14 @@ class apache2_plugin { $master_php_ini_path = $web_config['php_ini_path_apache']; } else { // check for custom php - if($web_data['fastcgi_php_version'] != '') { - $tmp = explode(':', $web_data['fastcgi_php_version']); - if(isset($tmp[2])) { - $tmppath = $tmp[2]; + if($web_data['server_php_id'] != 0) { + $tmp = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $web_data['server_php_id']); + $ini_key = 'php_fastcgi_ini_dir'; + if($web_data['php'] === 'php-fpm') { + $ini_key = 'php_fpm_ini_dir'; + } + if($tmp && $tmp[$ini_key]) { + $tmppath = $tmp[$ini_key]; if(substr($tmppath, -7) != 'php.ini') { if(substr($tmppath, -1) != '/') $tmppath .= '/'; $tmppath .= 'php.ini'; @@ -169,21 +173,21 @@ class apache2_plugin { $qrystr .= " AND php = 'mod'"; } elseif($data['mode'] == 'fast-cgi') { $qrystr .= " AND php = 'fast-cgi'"; - if($data['php_version']) { - $qrystr .= " AND fastcgi_php_version LIKE ?"; - $param = '%:' . $data['php_version']; + if(isset($data['php_version'])) { + $qrystr .= " AND server_php_id = ?"; + $param = $data['php_version']; } } elseif($data['mode'] == 'php-fpm') { $qrystr .= " AND php = 'php-fpm'"; - if($data['php_version']) { - $qrystr .= " AND fastcgi_php_version LIKE ?"; - $param = '%:' . $data['php_version'] . ':%'; + if(isset($data['php_version'])) { + $qrystr .= " AND server_php_id = ?"; + $param = $data['php_version']; } } elseif($data['mode'] == 'hhvm') { $qrystr .= " AND php = 'hhvm'"; - if($data['php_version']) { - $qrystr .= " AND fastcgi_php_version LIKE ?"; - $param = '%:' . $data['php_version'] . ':%'; + if(isset($data['php_version'])) { + $qrystr .= " AND server_php_id = ?"; + $param = $data['php_version']; } } else { $qrystr .= " AND php != 'mod' AND php != 'fast-cgi'"; @@ -1113,11 +1117,21 @@ class apache2_plugin { } $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi'); - - if(trim($data['new']['fastcgi_php_version']) != ''){ - list($custom_fastcgi_php_name, $custom_fastcgi_php_executable, $custom_fastcgi_php_ini_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(is_file($custom_fastcgi_php_ini_dir)) $custom_fastcgi_php_ini_dir = dirname($custom_fastcgi_php_ini_dir); - if(substr($custom_fastcgi_php_ini_dir, -1) == '/') $custom_fastcgi_php_ini_dir = substr($custom_fastcgi_php_ini_dir, 0, -1); + $custom_fastcgi_php_executable = ''; + + if($data['new']['server_php_id'] != 0){ + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['new']['server_php_id']); + if($tmp_php) { + if($data['new']['php'] === 'php-fpm') { + $custom_fastcgi_php_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_fastcgi_php_executable = $tmp_php['php_fpm_init_script']; + } else { + $custom_fastcgi_php_ini_dir = $tmp_php['php_fastcgi_ini_dir']; + $custom_fastcgi_php_executable = $tmp_php['php_fastcgi_binary']; + } + if(is_file($custom_fastcgi_php_ini_dir)) $custom_fastcgi_php_ini_dir = dirname($custom_fastcgi_php_ini_dir); + if(substr($custom_fastcgi_php_ini_dir, -1) == '/') $custom_fastcgi_php_ini_dir = substr($custom_fastcgi_php_ini_dir, 0, -1); + } } //* Create custom php.ini @@ -1466,7 +1480,7 @@ class apache2_plugin { $fcgi_tpl->setVar('apache_version', $app->system->getapacheversion()); // Support for multiple PHP versions (FastCGI) - if(trim($data['new']['fastcgi_php_version']) != ''){ + if($data['new']['server_php_id'] != 0){ $default_fastcgi_php = false; if(substr($custom_fastcgi_php_ini_dir, -1) != '/') $custom_fastcgi_php_ini_dir .= '/'; } else { @@ -1541,18 +1555,28 @@ class apache2_plugin { */ // Support for multiple PHP versions if($data['new']['php'] == 'php-fpm'){ - if(trim($data['new']['fastcgi_php_version']) != ''){ + if($data['new']['server_php_id'] != 0){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['new']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } } else { - if(trim($data['old']['fastcgi_php_version']) != '' && ($data['old']['php'] == 'php-fpm' || $data['old']['php'] == 'hhvm')){ + if($data['old']['server_php_id'] != 0 && ($data['old']['php'] == 'php-fpm' || $data['old']['php'] == 'hhvm')){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } @@ -3054,18 +3078,28 @@ class apache2_plugin { //$reload = false; if($data['new']['php'] == 'php-fpm'){ - if(trim($data['new']['fastcgi_php_version']) != ''){ + if($data['new']['server_php_id'] != 0){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['new']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } } else { - if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){ + if($data['old']['server_php_id'] != 0 && $data['old']['php'] == 'php-fpm'){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } @@ -3262,10 +3296,15 @@ class apache2_plugin { $php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart'; - if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){ + if($data['old']['server_php_id'] != 0 && $data['old']['php'] == 'php-fpm'){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 51f566a00c..12961ef1d1 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -994,30 +994,29 @@ class nginx_plugin { } if($data['new']['ip_address'] == '*' && $data['new']['ipv6_address'] == '') $tpl->setVar('ipv6_wildcard', 1); - // PHP-FPM - // Support for multiple PHP versions - /* - if(trim($data['new']['fastcgi_php_version']) != ''){ - $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir,-1) != '/') $custom_php_fpm_ini_dir .= '/'; - } else { - $default_php_fpm = true; - } - */ if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){ - if(trim($data['new']['fastcgi_php_version']) != ''){ + if($data['new']['server_php_id'] != 0){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['new']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } } else { - if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] != 'no'){ + if($data['old']['server_php_id'] != 0 && $data['old']['php'] != 'no'){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } @@ -2657,18 +2656,28 @@ class nginx_plugin { // HHVM => PHP-FPM-Fallback if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){ - if(trim($data['new']['fastcgi_php_version']) != ''){ + if($data['new']['server_php_id'] != 0){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['new']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } } else { - if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] != 'no'){ + if($data['old']['server_php_id'] != 0 && $data['old']['php'] != 'no'){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } @@ -2869,10 +2878,15 @@ class nginx_plugin { private function php_fpm_pool_delete ($data, $web_config) { global $app, $conf; - if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] != 'no'){ + if($data['old']['server_php_id'] != 0 && $data['old']['php'] != 'no'){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version'])); - if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $data['old']['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + $custom_php_fpm_pool_dir = $tmp_php['php_fpm_pool_dir']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 9f19c2be58..69d96a961e 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -58,20 +58,20 @@ class shelluser_base_plugin { /* Register for the events */ - + $app->plugins->registerEvent('shell_user_insert', $this->plugin_name, 'insert'); $app->plugins->registerEvent('shell_user_update', $this->plugin_name, 'update'); $app->plugins->registerEvent('shell_user_delete', $this->plugin_name, 'delete'); - + } function insert($event_name, $data) { global $app, $conf; - + $app->uses('system,getconf'); - + $security_config = $app->getconf->get_security_config('permissions'); if($security_config['allow_shell_user'] != 'yes') { $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); @@ -88,7 +88,7 @@ class shelluser_base_plugin { $app->log('Directory of the shell user is not valid.',LOGLEVEL_WARN); return false; } - + if(!$app->system->is_allowed_user($data['new']['username'], false, false) || !$app->system->is_allowed_user($data['new']['puser'], true, true) || !$app->system->is_allowed_group($data['new']['pgroup'], true, true)) { @@ -97,7 +97,7 @@ class shelluser_base_plugin { } if($data['new']['active'] != 'y') $data['new']['shell'] = '/bin/false'; - + if($app->system->is_user($data['new']['puser'])) { // Get the UID of the parent user @@ -105,24 +105,24 @@ class shelluser_base_plugin { if($uid > $this->min_uid) { //* Remove webfolder protection $app->system->web_folder_protection($web['document_root'], false); - + //* Home directory of the new shell user if($data['new']['chroot'] == 'jailkit') { $homedir = $data['new']['dir']; } else { $homedir = $data['new']['dir'].'/home/'.$data['new']['username']; } - + // Create home base directory if it does not exist if(!is_dir($data['new']['dir'].'/home')){ $app->file->mkdirs($data['new']['dir'].'/home', '0755'); } - + // Change ownership of home base dir to root user $app->system->chown($data['new']['dir'].'/home','root'); $app->system->chgrp($data['new']['dir'].'/home','root'); $app->system->chmod($data['new']['dir'].'/home',0755); - + if(!is_dir($homedir)){ $app->file->mkdirs($homedir, '0750'); $app->system->chown($homedir,$data['new']['puser'],false); @@ -142,10 +142,10 @@ class shelluser_base_plugin { $app->log("Command chpasswd failed for user ".$data['new']['username'] . ' with code ' . $retval . ': ' . $stderr, LOGLEVEL_WARN); } } - + $app->system->chown($data['new']['dir'],$data['new']['username'],false); $app->system->chgrp($data['new']['dir'],$data['new']['pgroup'],false); - + // call the ssh-rsa update function $app->uses("getconf"); @@ -186,7 +186,7 @@ class shelluser_base_plugin { global $app, $conf; $app->uses('system,getconf'); - + $security_config = $app->getconf->get_security_config('permissions'); if($security_config['allow_shell_user'] != 'yes') { $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); @@ -199,7 +199,7 @@ class shelluser_base_plugin { $app->log('Directory of the shell user is outside of website docroot.',LOGLEVEL_WARN); return false; } - + if(strpos($data['new']['dir'], '/../') !== false || substr($data['new']['dir'],-3) == '/..') { $app->log('Directory of the shell user is not valid.',LOGLEVEL_WARN); return false; @@ -211,14 +211,14 @@ class shelluser_base_plugin { $app->log('Shell user must not be root or in group root.',LOGLEVEL_WARN); return false; } - + if($data['new']['active'] != 'y') $data['new']['shell'] = '/bin/false'; - + if($app->system->is_user($data['new']['puser'])) { // Get the UID of the parent user $uid = intval($app->system->getuid($data['new']['puser'])); if($uid > $this->min_uid) { - + //* Home directory of the shell user if($data['new']['chroot'] == 'jailkit') { $homedir = $data['new']['dir']; @@ -227,10 +227,10 @@ class shelluser_base_plugin { $homedir = $data['new']['dir'].'/home/'.$data['new']['username']; $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 @@ -243,7 +243,7 @@ class shelluser_base_plugin { $app->log("New Homedir exists, renaming it to ".$homedir.'_bak', LOGLEVEL_DEBUG); $app->system->rename($homedir,$homedir.'_bak'); } - + // Move old directory to new path $app->system->rename($homedir_old,$homedir); $app->file->mkdirs($homedir, '0750'); @@ -280,7 +280,7 @@ class shelluser_base_plugin { $app->system->chown($homedir.'/.bash_history', $data['new']['username']); $app->system->chgrp($homedir.'/.bash_history', $data['new']['pgroup']); } - + //* Create .profile file if(!is_file($data['new']['dir']).'/.profile') { $app->system->touch($homedir.'/.profile'); @@ -307,7 +307,7 @@ class shelluser_base_plugin { global $app, $conf; $app->uses('system,getconf,services'); - + $security_config = $app->getconf->get_security_config('permissions'); if($security_config['allow_shell_user'] != 'yes') { $app->log('Shell user plugin disabled by security settings.',LOGLEVEL_WARN); @@ -319,21 +319,21 @@ class shelluser_base_plugin { $userid = intval($app->system->getuid($data['old']['username'])); if($userid > $this->min_uid) { $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['old']['parent_domain_id'])); - + // check if we have to delete the dir $check = $app->db->queryOneRecord('SELECT shell_user_id FROM `shell_user` WHERE `dir` = ?', $data['old']['dir']); if(!$check && is_dir($data['old']['dir'])) { - + $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $data['old']['parent_domain_id']); $app->system->web_folder_protection($web['document_root'], false); - + // delete dir if($data['new']['chroot'] == 'jailkit') { $homedir = $data['old']['dir']; } else { $homedir = $data['old']['dir'].'/home/'.$data['old']['username']; } - + if(substr($homedir, -1) !== '/') $homedir .= '/'; $files = array('.bash_logout', '.bash_history', '.bashrc', '.profile'); $dirs = array('.ssh', '.cache'); @@ -359,17 +359,22 @@ class shelluser_base_plugin { } unset($files); unset($dirs); - + $app->system->web_folder_protection($web['document_root'], true); } - + // We delete only non jailkit users, jailkit users will be deleted by the jailkit plugin. if ($data['old']['chroot'] != "jailkit") { // if this web uses PHP-FPM, that PPH-FPM service must be stopped before we can delete this user if($web['php'] == 'php-fpm'){ - if(trim($web['fastcgi_php_version']) != ''){ + if($web['server_php_id'] != 0){ $default_php_fpm = false; - list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($web['fastcgi_php_version'])); + $tmp_php = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $web['server_php_id']); + if($tmp_php) { + $custom_php_fpm_ini_dir = $tmp_php['php_fpm_ini_dir']; + $custom_php_fpm_init_script = $tmp_php['php_fpm_init_script']; + if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/'; + } } else { $default_php_fpm = true; } diff --git a/server/plugins-available/webserver_plugin.inc.php b/server/plugins-available/webserver_plugin.inc.php index cca339ace0..3dae9216fa 100644 --- a/server/plugins-available/webserver_plugin.inc.php +++ b/server/plugins-available/webserver_plugin.inc.php @@ -89,20 +89,20 @@ class webserver_plugin { //** add default php.ini files to check $check_files[] = array('file' => $web_config['php_ini_path_apache'], 'mode' => 'mod', - 'php_version' => ''); // default; + 'php_version' => 0); // default; $check_files[] = array('file' => $web_config['php_ini_path_cgi'], 'mode' => '', // all but 'mod' and 'fast-cgi' - 'php_version' => ''); // default; + 'php_version' => 0); // default; if($fastcgi_config["fastcgi_phpini_path"] && $fastcgi_config["fastcgi_phpini_path"] != $web_config['php_ini_path_cgi']) { $check_files[] = array('file' => $fastcgi_config["fastcgi_phpini_path"], 'mode' => 'fast-cgi', - 'php_version' => ''); // default; + 'php_version' => 0); // default; } else { $check_files[] = array('file' => $web_config['php_ini_path_cgi'], 'mode' => 'fast-cgi', // all but 'mod' - 'php_version' => ''); // default; + 'php_version' => 0); // default; } @@ -112,11 +112,11 @@ class webserver_plugin { if($php['php_fastcgi_ini_dir'] && $php['php_fastcgi_ini_dir'] . '/php.ini' != $web_config['php_ini_path_cgi']) { $check_files[] = array('file' => $php['php_fastcgi_ini_dir'] . '/php.ini', 'mode' => 'fast-cgi', - 'php_version' => $php['php_fastcgi_ini_dir']); + 'php_version' => $php['server_php_id']); } elseif($php['php_fpm_ini_dir'] && $php['php_fpm_ini_dir'] . '/php.ini' != $web_config['php_ini_path_cgi']) { $check_files[] = array('file' => $php['php_fpm_ini_dir'] . '/php.ini', 'mode' => 'php-fpm', - 'php_version' => $php['php_fpm_ini_dir']); + 'php_version' => $php['server_php_id']); } } unset($php_versions); diff --git a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php index 5a643a660a..b2dd92265e 100644 --- a/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php +++ b/server/plugins-available/z_php_fpm_incron_reload_plugin.inc.php @@ -66,7 +66,7 @@ class z_php_fpm_incron_reload_plugin { private function phpVersionUnchanged($data) { - return $data['new']['fastcgi_php_version'] === $data['old']['fastcgi_php_version']; + return $data['new']['server_php_id'] === $data['old']['server_php_id']; } private function setup($data) @@ -77,7 +77,7 @@ class z_php_fpm_incron_reload_plugin { $this->createIncronConfiguration( $triggerFile, $data['system_user'], - $data['fastcgi_php_version'] + $data['server_php_id'] ); $this->restartIncronService(); @@ -173,12 +173,14 @@ class z_php_fpm_incron_reload_plugin { } private function getPhpService($fastcgiPhpVersion) { - $phpInfo = explode(':', $fastcgiPhpVersion); + global $app; + + $phpInfo = $app->db->queryOneRecord('SELECT * FROM server_php WHERE server_php_id = ?', $fastcgiPhpVersion); if (empty($phpInfo)) { return null; } - $phpService = $phpInfo[1]; + $phpService = $phpInfo['php_fpm_init_script']; if (empty($phpService)) { return null; } -- GitLab From 760efc16bd272ea24ab99002dd9be03fc9a0d4d1 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 11:52:54 +0200 Subject: [PATCH 512/571] - fixed deleting cronjobs on deleted website --- server/plugins-available/cron_plugin.inc.php | 40 ++++++++++---------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/server/plugins-available/cron_plugin.inc.php b/server/plugins-available/cron_plugin.inc.php index ad122807ba..1d44a849aa 100644 --- a/server/plugins-available/cron_plugin.inc.php +++ b/server/plugins-available/cron_plugin.inc.php @@ -103,7 +103,7 @@ class cron_plugin { $app->log("Websites (and Crons) cannot be owned by the root user or group.", LOGLEVEL_WARN); return false; } - + // Get the client ID $client = $app->dbmaster->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ?", $data["new"]["sys_groupid"]); $client_id = intval($client["client_id"]); @@ -123,7 +123,7 @@ class cron_plugin { $app->system->exec_safe("useradd -d ? -g ? ? -s /bin/false", $parent_domain["document_root"], $groupname, $username); $app->log("Adding the user: $username", LOGLEVEL_DEBUG); } - + // Set the quota for the user if($username != '' && $app->system->is_user($username)) { if($parent_domain['hd_quota'] > 0) { @@ -144,7 +144,7 @@ class cron_plugin { $app->system->exec_safe('setquota -u ? ? ? 0 0 -a &> /dev/null', $username, $blocks_soft, $blocks_hard); $app->system->exec_safe('setquota -T -u ? 604800 604800 -a &> /dev/null', $username); } elseif ($file_system == 'xfs') { - + $app->system->exec_safe("xfs_quota -x -c ? ?", "limit -u bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username", $primitive_root); // xfs only supports timers globally, not per user. @@ -177,21 +177,23 @@ class cron_plugin { } function delete($event_name, $data) { - global $app, $conf; + global $app; //* get data from web $parent_domain = $app->db->queryOneRecord("SELECT `domain_id`, `system_user`, `system_group`, `document_root`, `hd_quota` FROM `web_domain` WHERE `domain_id` = ?", $data["old"]["parent_domain_id"]); - if(!$parent_domain["domain_id"]) { - $app->log("Parent domain not found", LOGLEVEL_WARN); - return 0; - } - - // Get the client ID - $client = $app->dbmaster->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ?", $data["old"]["sys_groupid"]); - $client_id = intval($client["client_id"]); - unset($client); - $this->parent_domain = $parent_domain; + if(!$parent_domain) { + $tmp = $app->db->queryOneRecord('SELECT * FROM sys_datalog WHERE dbtable = ? AND dbidx = ? AND `action` = ? ORDER BY `datalog_id` DESC', 'web_domain', 'domain_id:' . $data['old']['parent_domain_id'], 'd'); + $tmp = unserialize($tmp); + if($tmp && isset($tmp['old'])) { + $this->parent_domain = $tmp['old']; + } else { + $app->log("Parent domain not found", LOGLEVEL_WARN); + return 0; + } + } else { + $this->parent_domain = $parent_domain; + } $this->_write_crontab(); } @@ -223,18 +225,18 @@ class cron_plugin { } else { $cron_line = str_replace(" ", "", $job['run_min']) . "\t" . str_replace(" ", "", $job['run_hour']) . "\t" . str_replace(" ", "", $job['run_mday']) . "\t" . str_replace(" ", "", $job['run_month']) . "\t" . str_replace(" ", "", $job['run_wday']); } - + $log_target = ""; $log_wget_target = '/dev/null'; $log_root = ''; if($job['log'] == 'y') { if($job['type'] != 'chrooted') $log_root = $this->parent_domain['document_root']; $log_root .= '/private'; - + $log_target = '>>' . $log_root . '/cron.log 2>>' . $log_root . '/cron_error.log'; $log_wget_target = $log_root . '/cron_wget.log'; } - + $cron_line .= "\t{$this->parent_domain['system_user']}"; //* running as user if($job['type'] == 'url') { $cron_line .= "\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; @@ -243,7 +245,7 @@ class cron_plugin { $app->log("Insecure Cron job SKIPPED: " . $job['command'], LOGLEVEL_WARN); continue; } - + $web_root = ''; if($job['type'] == 'chrooted') { if(substr($job['command'], 0, strlen($this->parent_domain['document_root'])) == $this->parent_domain['document_root']) { @@ -253,7 +255,7 @@ class cron_plugin { } else { $web_root = $this->parent_domain['document_root']; } - + $web_root .= '/web'; $job['command'] = str_replace('[web_root]', $web_root, $job['command']); -- GitLab From 6891708d85596e2f568c81327d67f261d923053e Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 12:16:04 +0200 Subject: [PATCH 513/571] - nginx/apache directives are missing default value --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 4 ++-- server/plugins-available/apache2_plugin.inc.php | 5 +++++ server/plugins-available/nginx_plugin.inc.php | 3 +++ server/plugins-available/nginx_reverseproxy_plugin.inc.php | 4 +++- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 1c4bd539d9..1aaf51cd2a 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -44,3 +44,6 @@ ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; -- was missing in incremental, inserted for fixing older installations ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; + +ALTER TABLE `web_domain` CHANGE `apache_directives` `apache_directives` mediumtext NULL DEFAULT NULL; +ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL; \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index cdf85d7443..3f6f04ace7 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2046,8 +2046,8 @@ CREATE TABLE `web_domain` ( `stats_password` varchar(255) default NULL, `stats_type` varchar(255) default 'awstats', `allow_override` varchar(255) NOT NULL default 'All', - `apache_directives` mediumtext, - `nginx_directives` mediumtext, + `apache_directives` mediumtext NULL DEFAULT NULL, + `nginx_directives` mediumtext NULL DEFAULT NULL, `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 'ondemand', diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index cf58ed8a20..aab3986376 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1186,6 +1186,11 @@ class apache2_plugin { $vhost_data['apache_directives'] = $snippet['snippet']; } } + + if(!$vhost_data['apache_directives']) { + $vhost_data['apache_directives'] = ''; // ensure it is not null + } + // Make sure we only have Unix linebreaks $vhost_data['apache_directives'] = str_replace("\r\n", "\n", $vhost_data['apache_directives']); $vhost_data['apache_directives'] = str_replace("\r", "\n", $vhost_data['apache_directives']); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index f7f93b4be5..dd9316c926 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1200,6 +1200,9 @@ class nginx_plugin { $nginx_directives = $data['new']['nginx_directives']; // $vhost_data['enable_pagespeed'] = false; } + if(!$nginx_directives) { + $nginx_directives = ''; // ensure it is not null + } // folder_directive_snippets if(trim($data['new']['folder_directive_snippets']) != ''){ diff --git a/server/plugins-available/nginx_reverseproxy_plugin.inc.php b/server/plugins-available/nginx_reverseproxy_plugin.inc.php index 1013042254..f35f40d34a 100644 --- a/server/plugins-available/nginx_reverseproxy_plugin.inc.php +++ b/server/plugins-available/nginx_reverseproxy_plugin.inc.php @@ -111,7 +111,9 @@ class nginx_reverseproxy_plugin { $crt_file = $ssl_dir.'/'.$domain.'.crt'; $bundle_file = $ssl_dir.'/'.$domain.'.bundle'; - $vhost_data['nginx_directives'] = preg_replace("/\[IP\]/", $vhost_data['ip_address'], $vhost_data['nginx_directives']); + if($vhost_data['nginx_directives']) { + $vhost_data['nginx_directives'] = preg_replace("/\[IP\]/", $vhost_data['ip_address'], $vhost_data['nginx_directives']); + } if($data['new']['ssl'] == 'y' && @is_file($crt_file) && @is_file($key_file)) { -- GitLab From cb4ddc318c00e4576b07f8245e40b9b2879c1d4b Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 24 Jul 2020 12:47:43 +0200 Subject: [PATCH 514/571] - added blacklisted paths --- interface/lib/classes/system.inc.php | 2 +- server/lib/classes/system.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index 8c3decfd5c..d6b0ef149e 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -68,7 +68,7 @@ class system { } public function is_blacklisted_web_path($path) { - $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var'); + $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var', 'proc', 'net', 'sys', 'srv', 'sbin', 'run'); $path = ltrim($path, '/'); $parts = explode('/', $path); diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index 71b901d920..e0699a7f82 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1788,7 +1788,7 @@ class system{ } public function is_blacklisted_web_path($path) { - $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var'); + $blacklist = array('bin', 'cgi-bin', 'dev', 'etc', 'home', 'lib', 'lib64', 'log', 'ssl', 'usr', 'var', 'proc', 'net', 'sys', 'srv', 'sbin', 'run'); $path = ltrim($path, '/'); $parts = explode('/', $path); -- GitLab From cefa5f09e45d64b8206aa93391ecb1d6b971e482 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 24 Jul 2020 11:12:09 -0600 Subject: [PATCH 515/571] simplify query, escape regex special chars --- install/tpl/mysql-virtual_outgoing_bcc.cf.master | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index bea39f8451..eafd098a3f 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -3,14 +3,14 @@ password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} query = SELECT sender_cc FROM ( - SELECT @num_sender_cc := 1 + LENGTH(sender_cc) - LENGTH(REPLACE(sender_cc, ',', '')) AS num_sender_cc, - SUBSTRING_INDEX(sender_cc, ',', 1) AS sender_cc + SELECT SUBSTRING_INDEX(sender_cc, ',', 1) AS sender_cc FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND sender_cc != '' AND server_id = {server_id} UNION - SELECT @num_sender_cc := 1 + LENGTH(u.sender_cc) - LENGTH(REPLACE(u.sender_cc, ',', '')) AS num_sender_cc, - SUBSTRING_INDEX(u.sender_cc, ',', 1) AS sender_cc + SELECT SUBSTRING_INDEX(u.sender_cc, ',', 1) AS sender_cc FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', u.email, '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', + REPLACE( REPLACE(u.email, '+', '\\+'), '.', '\\.' ), + '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} AND f.source = '%s' AND f.allow_send_as = 'y' AND f.active = 'y' AND f.server_id = {server_id} ) table1 WHERE sender_cc != '' LIMIT 1 -- GitLab From acdbd68bfffc965a64b8a82d23e40ff1fde56d49 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 21 Jul 2020 16:54:02 -0600 Subject: [PATCH 516/571] select Move to Junk before/after custom filters --- .../sql/incremental/upd_dev_collection.sql | 5 +- install/sql/ispconfig3.sql | 2 +- install/tpl/debian6_dovecot.conf.master | 3 +- install/tpl/debian6_dovecot2.conf.master | 3 +- install/tpl/debian_dovecot.conf.master | 3 +- install/tpl/debian_dovecot2.conf.master | 3 +- install/tpl/fedora_dovecot.conf.master | 3 +- install/tpl/fedora_dovecot2.conf.master | 3 +- install/tpl/opensuse_dovecot.conf.master | 3 +- install/tpl/opensuse_dovecot2.conf.master | 3 +- interface/web/admin/server_config_edit.php | 5 +- interface/web/mail/form/mail_user.tform.php | 6 +-- interface/web/mail/lib/lang/ar_mail_user.lng | 3 ++ interface/web/mail/lib/lang/bg_mail_user.lng | 3 ++ interface/web/mail/lib/lang/br_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ca_mail_user.lng | 3 ++ interface/web/mail/lib/lang/cz_mail_user.lng | 3 ++ interface/web/mail/lib/lang/de_mail_user.lng | 3 ++ interface/web/mail/lib/lang/dk_mail_user.lng | 3 ++ interface/web/mail/lib/lang/el_mail_user.lng | 3 ++ interface/web/mail/lib/lang/en_mail_user.lng | 5 +- interface/web/mail/lib/lang/es_mail_user.lng | 3 ++ interface/web/mail/lib/lang/fi_mail_user.lng | 3 ++ interface/web/mail/lib/lang/fr_mail_user.lng | 3 ++ interface/web/mail/lib/lang/hr_mail_user.lng | 3 ++ interface/web/mail/lib/lang/hu_mail_user.lng | 3 ++ interface/web/mail/lib/lang/id_mail_user.lng | 3 ++ interface/web/mail/lib/lang/it_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ja_mail_user.lng | 3 ++ interface/web/mail/lib/lang/nl_mail_user.lng | 3 ++ interface/web/mail/lib/lang/pl_mail_user.lng | 3 ++ interface/web/mail/lib/lang/pt_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ro_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ru_mail_user.lng | 3 ++ interface/web/mail/lib/lang/se_mail_user.lng | 3 ++ interface/web/mail/lib/lang/sk_mail_user.lng | 3 ++ interface/web/mail/lib/lang/tr_mail_user.lng | 3 ++ .../templates/mail_user_mailfilter_edit.htm | 5 +- remoting_client/API-docs/mail_user_add.html | 2 +- .../API-docs/mail_user_update.html | 2 +- server/conf/sieve_filter.master | 9 ++++ server/conf/sieve_filter_1.2.master | 9 ++++ .../maildeliver_plugin.inc.php | 51 ++++++++++++------- .../plugins-available/maildrop_plugin.inc.php | 2 +- 44 files changed, 162 insertions(+), 37 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 1aaf51cd2a..abe2a8a1a1 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -46,4 +46,7 @@ ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`; ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`; ALTER TABLE `web_domain` CHANGE `apache_directives` `apache_directives` mediumtext NULL DEFAULT NULL; -ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL; \ No newline at end of file +ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL; + +-- add move to junk before/after option, default to after +ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'a'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 3f6f04ace7..bacf075baa 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1046,7 +1046,7 @@ CREATE TABLE `mail_user` ( `autoresponder_end_date` datetime NULL default NULL, `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', `autoresponder_text` mediumtext NULL, - `move_junk` enum('n','y') NOT NULL default 'n', + `move_junk` enum('y','a','n') NOT NULL default 'a', `purge_trash_days` INT NOT NULL DEFAULT '0', `purge_junk_days` INT NOT NULL DEFAULT '0', `custom_mailfilter` mediumtext, diff --git a/install/tpl/debian6_dovecot.conf.master b/install/tpl/debian6_dovecot.conf.master index a112712690..cf9e85f3b3 100644 --- a/install/tpl/debian6_dovecot.conf.master +++ b/install/tpl/debian6_dovecot.conf.master @@ -60,7 +60,8 @@ plugin { # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index a1810ab509..ead02a68c7 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -29,7 +29,8 @@ plugin { # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian_dovecot.conf.master b/install/tpl/debian_dovecot.conf.master index f91959a1f5..2bba3fa985 100644 --- a/install/tpl/debian_dovecot.conf.master +++ b/install/tpl/debian_dovecot.conf.master @@ -1145,7 +1145,8 @@ plugin { # and they're not deleted automatically (use a cronjob or something). #lazy_expunge = .EXPUNGED/ .DELETED/ .DELETED/.EXPUNGED/ - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index 88d6a1b924..c71f683e96 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -28,7 +28,8 @@ plugin { # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/fedora_dovecot.conf.master b/install/tpl/fedora_dovecot.conf.master index e687954986..405a723a55 100644 --- a/install/tpl/fedora_dovecot.conf.master +++ b/install/tpl/fedora_dovecot.conf.master @@ -1306,7 +1306,8 @@ plugin { # ManageSieve this is where the uploaded scripts are stored. sieve_dir=~/sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 9ec150ce49..312654732c 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -26,7 +26,8 @@ plugin { # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/opensuse_dovecot.conf.master b/install/tpl/opensuse_dovecot.conf.master index 1eacf4c3a3..a6ed0ab71f 100644 --- a/install/tpl/opensuse_dovecot.conf.master +++ b/install/tpl/opensuse_dovecot.conf.master @@ -1280,7 +1280,8 @@ plugin { # ManageSieve this is where the uploaded scripts are stored. sieve_dir=~/sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 070590181b..da716c6dfc 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -25,7 +25,8 @@ plugin { # no longer needed, as 'sieve' is in userdb extra fields: sieve=/var/vmail/%d/%n/.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig.sieve + sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index cca5d702d3..5214d14037 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -192,10 +192,11 @@ class page_action extends tform_actions { $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); $mail_user['autoresponder'] = 'y'; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); - } elseif($mail_user['move_junk'] == 'y') { + } elseif($mail_user['move_junk'] != 'n') { + $save = $mail_user['move_junk']; $mail_user['move_junk'] = 'n'; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); - $mail_user['move_junk'] = 'y'; + $mail_user['move_junk'] = $save; $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); } else { $app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true); diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 8fb6c4a692..0bef9d979f 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -402,9 +402,9 @@ if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') { //################################# 'move_junk' => array ( 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'n', - 'value' => array(0 => 'n', 1 => 'y') + 'formtype' => 'SELECT', + 'default' => 'a', + 'value' => array('y' => 'move_junk_y_txt', 'a' => 'move_junk_a_txt', 'n' => 'move_junk_n_txt'), ), 'purge_trash_days' => array ( 'datatype' => 'VARCHAR', diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index 9d4828b557..702725959d 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Disable POP3'; $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forwrd with this email address.'; $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 1b9595da42..49be467e91 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'Датата на Ñтарта нем $wb['autoresponder_end_date_txt'] = 'Край на'; $wb['autoresponder_end_date_isgreater'] = 'датата на ÐºÑ€Ð°Ñ Ð½ÐµÐ¼Ð¾Ð¶Ðµ да бъде преди датата за Ñтарт.'; $wb['move_junk_txt'] = 'ПремеÑти СПÐÐœ пощата в ДиректориÑта Боклуци'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Реално име '; $wb['name_optional_txt'] = '(По желание)'; $wb['autoresponder_active'] = 'Разреши автоматичен отговор'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 2abe1931f6..8f02122ade 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -36,6 +36,9 @@ $wb['disablepop3_txt'] = 'Desabilitar POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.'; $wb['quota_error_value'] = 'Valor da cota é inválido. Valores permitidos são: 0 para ilimitado ou números > 1.'; $wb['move_junk_txt'] = 'Mover e-mails marcados como spam para o diretório junk.'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nome'; $wb['name_optional_txt'] = '(Opcional)'; $wb['autoresponder_active'] = 'Habilitar auto-resposta'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 08c9bc78ec..259c357671 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -30,6 +30,9 @@ $wb['autoresponder_end_date_txt'] = 'Terminer le'; $wb['autoresponder_end_date_isgreater'] = 'La date de fin doit être saisie et doit être ultérieure à la date de début.'; $wb['quota_error_value'] = 'Valeur de quota invalide. Les valeurs de quota autorisées sont : 0 pour illimité ou nombres > 1'; $wb['move_junk_txt'] = 'Déplacer le spam vers le dossier Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nom véritable'; $wb['name_optional_txt'] = '(Optionnel)'; $wb['autoresponder_active'] = 'Activer le répondeur automatique'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index fb09f0c0a0..72ebc26a4b 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -30,6 +30,9 @@ $wb['disablepop3_txt'] = 'Zakázat POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Alias nebo pÅ™esmÄ›rovánà s touto adresou již existuje.'; $wb['quota_error_value'] = 'Chybná hodnota kvóty. Povolené hodnoty jsou: 0 pro neomezeno nebo ÄÃsla > 1'; $wb['move_junk_txt'] = 'PÅ™esunout e-maily detekované jako spam do adresáře Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'SkuteÄné jméno'; $wb['name_optional_txt'] = '(volitelné)'; $wb['autoresponder_active'] = 'Povolit automatický odpovÃdaÄ'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index e653fbe288..79834d9a5c 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -34,6 +34,9 @@ $wb['autoresponder_start_date_ispast'] = 'Startdatum kann nicht in der Vergangen $wb['autoresponder_end_date_txt'] = 'Endet am'; $wb['autoresponder_end_date_isgreater'] = 'Enddatum muss angegeben werden und muss später als das Startdatum sein.'; $wb['move_junk_txt'] = 'Spam E-Mails in das Junk Verzeichnis verschieben'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Name'; $wb['name_optional_txt'] = '(optional)'; $wb['autoresponder_active'] = 'Autoresponder aktivieren'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index 34bf076359..cf29a97137 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -33,6 +33,9 @@ $wb['disablepop3_txt'] = 'Deaktiver POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Der er allerede et alias eller forward for denne e-mail adresse.'; $wb['quota_error_value'] = 'Ugyldig kvote værdi. Tilladte værdier er: 0 for ubegrænset eller tal > 1'; $wb['move_junk_txt'] = 'Flyt Spam E-mails til Junk mappe.'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Navn'; $wb['name_optional_txt'] = '(Valgfri)'; $wb['autoresponder_active'] = 'Aktiver autosvarer'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index 76c266d591..0f424c0099 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'ΑπενεÏγοποίηση POP3'; $wb['duplicate_alias_or_forward_txt'] = 'ΥπάÏχει ήδη Îνα ψευδωνÏμο ή μία Ï€Ïοώθηση με αυτή τη διεÏθυνση email.'; $wb['quota_error_value'] = 'Μη ÎγκυÏη τιμή οÏίου χώÏου. ΕπιτÏεπόμενες τιμÎÏ‚ είναι: 0 για απεÏιόÏιστο ή αÏιθμοί > 1'; $wb['move_junk_txt'] = 'Μετακίνηση των Spam Emails στο φάκελο Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Î Ïαγματικό Όνομα'; $wb['name_optional_txt'] = '(Î ÏοαιÏετικό)'; $wb['autoresponder_active'] = 'ΕνεÏγοποίηση αυτόματης απάντησης'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 69ac0a00a9..7b98e593c8 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -35,7 +35,10 @@ $wb["disableimap_txt"] = 'Disable IMAP'; $wb["disablepop3_txt"] = 'Disable POP3'; $wb["duplicate_alias_or_forward_txt"] = 'There is already an alias or forward with this email address.'; $wb["quota_error_value"] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; -$wb["move_junk_txt"] = 'Move Spam Emails to Junk directory.'; +$wb["move_junk_txt"] = 'Move Spam Emails to Junk folder.'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb["name_txt"] = 'Name'; $wb["name_optional_txt"] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index be329c304a..676dd45c22 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -40,6 +40,9 @@ $wb['login_txt'] = 'Iniciar Sesión'; $wb['maildir_txt'] = 'Dirección de correo'; $wb['monthly_backup_txt'] = 'Mensualmente'; $wb['move_junk_txt'] = 'Mover correo basura (spam) a la carpeta Basura (Junk).'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_optional_txt'] = '(Opcional)'; $wb['name_txt'] = 'Nombre'; $wb['no_backup_txt'] = 'Sin copia de seguridad'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 45ea1d9b8b..97bddeddc7 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'Aloituspäivä ei voi olla menneisyyde $wb['autoresponder_end_date_txt'] = 'Lopetuspäivä'; $wb['autoresponder_end_date_isgreater'] = 'Lopetuspäivän pitää olla myöhempi kuin aloituspäivä.'; $wb['move_junk_txt'] = 'Siirrä roskapostit Junk-kansioon'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Oikea nimi'; $wb['name_optional_txt'] = '(Valinnainen)'; $wb['autoresponder_active'] = 'Ota lomavastaaja käyttöön'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 8df58233a3..4871865ae8 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -30,6 +30,9 @@ $wb['autoresponder_end_date_txt'] = 'Terminer le'; $wb['autoresponder_end_date_isgreater'] = 'La date de fin doit être saisie et doit être ultérieure à la date de début.'; $wb['quota_error_value'] = 'Valeur de quota invalide. Les valeurs de quota autorisées sont : 0 pour illimité ou nombres > 1'; $wb['move_junk_txt'] = 'Déplacer le spam vers le dossier Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nom véritable'; $wb['name_optional_txt'] = '(Optionnel)'; $wb['autoresponder_active'] = 'Activer le répondeur automatique'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 170aaa6b61..34c41a827e 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Disable POP3'; $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forward with this email address.'; $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 65962cd21c..58a4416cb2 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Név'; $wb['name_optional_txt'] = '(Opcionális)'; $wb['autoresponder_active'] = 'Automatikus válasz engedélyezése'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 3bedbd9b93..87be369635 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -32,6 +32,9 @@ $wb['disablepop3_txt'] = 'Nonaktifkan POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Sudah ada alias atau forward untuk alamat email ini.'; $wb['quota_error_value'] = 'Nilai kuota tidak valid. Nilai yang diperbolehkan adalah: 0 untuk tak terbatas atau angka > 1'; $wb['move_junk_txt'] = 'Pindahkan Email Spam ke direktori Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nama Lengkap'; $wb['name_optional_txt'] = '(Opsional)'; $wb['autoresponder_active'] = 'Aktifkan Penjawab Otomatis'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index a1a0f8cfd5..6dffeddb91 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'La data di avvio no può essere anterg $wb['autoresponder_end_date_txt'] = 'Termina il'; $wb['autoresponder_end_date_isgreater'] = 'La data termine deve essere impostata e successiva al giorno di inizio.'; $wb['move_junk_txt'] = 'Sposta Email di Spam nella cartella di spam Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nome vero'; $wb['name_optional_txt'] = '(Opzionale)'; $wb['autoresponder_active'] = 'Abilita autorisponditore'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index b58b9d13dd..1b36502b74 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 9a644a129b..37e8c8638b 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Uitschakelen POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Er is al een alias of forward met dir e-mailadres.'; $wb['quota_error_value'] = 'Ongeldige quota waarde. Toegestane waarden zijn: 0 = ongelimiteerd of nummerieke waarde > 1'; $wb['move_junk_txt'] = 'Verplaats SPAM e-mails naar junk folder'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Echte naam'; $wb['name_optional_txt'] = '(Optioneel)'; $wb['autoresponder_active'] = 'Inschakelen autobeantwoorden'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 593f83531e..889700cddd 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Data uruchomienia nie może być w prz $wb['autoresponder_end_date_txt'] = 'ZakoÅ„cz do'; $wb['autoresponder_end_date_isgreater'] = 'Data zakoÅ„czenia musi być późniejsza od daty rozpoczÄ™cia'; $wb['move_junk_txt'] = 'PrzenoÅ› SPAM do folderu Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Nazwa rzeczywista'; $wb['name_optional_txt'] = '(Opcjonalnie)'; $wb['autoresponder_active'] = 'Uruchom autorespondera'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 0b7ffe3d37..6c715d52e2 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'A data de Ãnicio não pode estar no p $wb['autoresponder_end_date_txt'] = 'Termino:'; $wb['autoresponder_end_date_isgreater'] = 'A data de inÃcio deve ser menor que a data de termino.'; $wb['move_junk_txt'] = 'Mover Spam para a pasta JUNK'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 97dfdafd88..ee1b6b980c 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later tha $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forwrd with this email address.'; $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 07bab6fd4f..6935ecd8e2 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Дата запуÑка не може $wb['autoresponder_end_date_txt'] = 'ОÑтанавливать'; $wb['autoresponder_end_date_isgreater'] = 'Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть позже даты запуÑка.'; $wb['move_junk_txt'] = 'Перемещать Ñпам в каталог Junk'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Реальное имÑ'; $wb['name_optional_txt'] = '(Опционально)'; $wb['autoresponder_active'] = 'Включить автоответчик'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index da0282e118..22c5b0fe45 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Startdatum kan inte vara i det förflu $wb['autoresponder_end_date_txt'] = 'Sluta den'; $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; $wb['move_junk_txt'] = 'FLytta spamepost till spammappen'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Riktigt namn'; $wb['name_optional_txt'] = '(Frivilligt)'; $wb['autoresponder_active'] = 'Aktivera autosvaret'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index d9a68404ae..258e8f6128 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Realname'; $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 9e964e5e8a..a1ed0128f3 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -36,6 +36,9 @@ $wb['disablepop3_txt'] = 'POP3 Kullanılmasın'; $wb['duplicate_alias_or_forward_txt'] = 'Bu e-posta adresi zaten takma ya da yönlendirilmiÅŸ.'; $wb['quota_error_value'] = 'Kota deÄŸeri geçersiz. DeÄŸer sınırsız için 0 ya da 1 deÄŸerinden büyük olmalı'; $wb['move_junk_txt'] = 'Önemsiz Ä°letiler Junk Klasörüne Taşınsın'; +$wb["move_junk_y_txt"] = 'Move first, before custom filters.'; +$wb["move_junk_a_txt"] = 'Move last, after custom filters.'; +$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.'; $wb['name_txt'] = 'Ad'; $wb['name_optional_txt'] = '(Ä°steÄŸe baÄŸlı)'; $wb['autoresponder_active'] = 'Otoyanıtlayıcı kullanılsın'; diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm index 4c7058292e..8d14eb4ee6 100644 --- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm +++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm @@ -1,6 +1,9 @@ <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label> - <div class="col-sm-9">{tmpl_var name='move_junk'}</div> + <div class="col-sm-9"><select name="move_junk" id="move_junk" class="form-control"> + {tmpl_var name='move_junk'} + </select></div> + </div> <div class="form-group"> diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html index a893e24e3f..dab2835057 100644 --- a/remoting_client/API-docs/mail_user_add.html +++ b/remoting_client/API-docs/mail_user_add.html @@ -38,7 +38,7 @@ <p class="margin"> autoresponder_end_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_text (<span class="paratype">mediumtext</span>)</p> <p class="margin"> autoresponder_subject (<span class="paratype">varchar(255)</span>)</p> -<p class="margin"> move_junk (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> move_junk (<span class="paratype">enum('y','a','n')</span>)</p> <p class="margin"> custom_mailfilter (<span class="paratype">mediumtext</span>)</p> <p class="margin"> postfix (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> access (<span class="paratype">enum('n','y')</span>)</p> diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html index 8cb900fb40..d30b932393 100644 --- a/remoting_client/API-docs/mail_user_update.html +++ b/remoting_client/API-docs/mail_user_update.html @@ -36,7 +36,7 @@ <p class="margin"> autoresponder_start_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_end_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_text (<span class="paratype">mediumtext</span>)</p> -<p class="margin"> move_junk (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> move_junk (<span class="paratype">enum('y','a','n')</span>)</p> <p class="margin"> custom_mailfilter (<span class="paratype">mediumtext</span>)</p> <p class="margin"> postfix (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> access (<span class="paratype">enum('n','y')</span>)</p> diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index f72cd11d1f..6b83c26394 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -23,6 +23,15 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", keep; +<tmpl_if name="move_junk" op="==" value="a"> +# Move spam to spam folder +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { + fileinto "Junk"; + # Stop here so that we do not reply on spams + stop; +} +</tmpl_if> + <tmpl_if name="autoresponder" op="==" value="y"> ################################################################# # Autoreply diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index edd4060b9f..3a8695b1a6 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -23,6 +23,15 @@ redirect "<tmpl_var name='address'>"; keep; +<tmpl_if name="move_junk" op="==" value="a"> +# Move spam to spam folder +if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { + fileinto "Junk"; + # Stop here so that we do not reply on spams + stop; +} +</tmpl_if> + <tmpl_if name="autoresponder" op="==" value="y"> ################################################################# # Autoreply diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 9c9939655c..05ee88e777 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -100,14 +100,18 @@ class maildeliver_plugin { $sieve_file = $data["new"]["maildir"].'/.sieve'; $sieve_file_svbin = $data["new"]["maildir"].'/.sieve.svbin'; $old_sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve'; - $sieve_file_isp = $data["new"]["maildir"].'/.ispconfig.sieve'; - $sieve_file_isp_svbin = $data["new"]["maildir"].'/.ispconfig.svbin'; + $sieve_file_isp_before = $data["new"]["maildir"].'/.ispconfig-before.sieve'; + $sieve_file_isp_before_svbin = $data["new"]["maildir"].'/.ispconfig-before.svbin'; + $sieve_file_isp_after = $data["new"]["maildir"].'/.ispconfig-after.sieve'; + $sieve_file_isp_after_svbin = $data["new"]["maildir"].'/.ispconfig-after.svbin'; if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); // cleanup .sieve file if it is now a broken link if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin) or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN); - if(is_file($sieve_file_isp)) unlink($sieve_file_isp) or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN); - if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin) or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_before)) unlink($sieve_file_isp_before) or $app->log("Unable to delete file: $sieve_file_isp_before", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_before_svbin)) unlink($sieve_file_isp_before_svbin) or $app->log("Unable to delete file: $sieve_file_isp_before_svbin", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_after)) unlink($sieve_file_isp_after) or $app->log("Unable to delete file: $sieve_file_isp_after", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_after_svbin)) unlink($sieve_file_isp_after_svbin) or $app->log("Unable to delete file: $sieve_file_isp_after_svbin", LOGLEVEL_WARN); $app->load('tpl'); //* Select sieve filter file for dovecot version @@ -224,15 +228,24 @@ class maildeliver_plugin { $app->system->mkdirpath($data["new"]["maildir"].'/sieve/', 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); } - file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file", LOGLEVEL_WARN); - if ( is_file($sieve_file_isp) ) { - $app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false); - $app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false); - - $app->system->exec_safe("sievec ?", "$sieve_file_isp"); - if ( is_file($sieve_file_isp_svbin) ) { - $app->system->chown($sieve_file_isp_svbin,$mail_config['mailuser_name'],false); - $app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false); + if ($data["new"]["move_junk"] == "y") { + $sieve_file_isp = $sieve_file_isp_before; + $sieve_file_isp_svbin = $sieve_file_isp_before_svbin; + } elseif ($data["new"]["move_junk"] == "a") { + $sieve_file_isp = $sieve_file_isp_after; + $sieve_file_isp_svbin = $sieve_file_isp_after_svbin; + } + if (isset($sieve_file_isp)) { + file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file", LOGLEVEL_WARN); + if ( is_file($sieve_file_isp) ) { + $app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false); + $app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false); + + $app->system->exec_safe("sievec ?", "$sieve_file_isp"); + if ( is_file($sieve_file_isp_svbin) ) { + $app->system->chown($sieve_file_isp_svbin,$mail_config['mailuser_name'],false); + $app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false); + } } } @@ -247,14 +260,18 @@ class maildeliver_plugin { $sieve_file = $data["old"]["maildir"].'/.sieve'; $sieve_file_svbin = $data["old"]["maildir"].'/.sieve.svbin'; $old_sieve_file_isp = $data["old"]["maildir"].'/sieve/ispconfig.sieve'; - $sieve_file_isp = $data["old"]["maildir"].'/.ispconfig.sieve'; - $sieve_file_isp_svbin = $data["old"]["maildir"].'/.ispconfig.svbin'; + $sieve_file_isp_before = $data["old"]["maildir"].'/.ispconfig-before.sieve'; + $sieve_file_isp_before_svbin = $data["old"]["maildir"].'/.ispconfig-before.svbin'; + $sieve_file_isp_after = $data["old"]["maildir"].'/.ispconfig-after.sieve'; + $sieve_file_isp_after_svbin = $data["old"]["maildir"].'/.ispconfig-after.svbin'; if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); // cleanup .sieve file if it is now a broken link if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin) or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN); - if(is_file($sieve_file_isp)) unlink($sieve_file_isp) or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN); - if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin) or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_before)) unlink($sieve_file_isp_before) or $app->log("Unable to delete file: $sieve_file_isp_before", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_before_svbin)) unlink($sieve_file_isp_before_svbin) or $app->log("Unable to delete file: $sieve_file_isp_before_svbin", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_after)) unlink($sieve_file_isp_after) or $app->log("Unable to delete file: $sieve_file_isp_after", LOGLEVEL_WARN); + if(is_file($sieve_file_isp_after_svbin)) unlink($sieve_file_isp_after_svbin) or $app->log("Unable to delete file: $sieve_file_isp_after_svbin", LOGLEVEL_WARN); } diff --git a/server/plugins-available/maildrop_plugin.inc.php b/server/plugins-available/maildrop_plugin.inc.php index 2fefa26cfc..93bd29f338 100644 --- a/server/plugins-available/maildrop_plugin.inc.php +++ b/server/plugins-available/maildrop_plugin.inc.php @@ -204,7 +204,7 @@ class maildrop_plugin { $app->log("Added CC address ".$data["new"]["cc"].' to mailfilter file.', LOGLEVEL_DEBUG); } - if($data["new"]["move_junk"] == 'y') { + if($data["new"]["move_junk"] != 'n') { if(file_exists($conf["rootpath"].'/conf-custom/mailfilter_move_junk.master')) { $mailfilter_content .= file_get_contents($conf["rootpath"].'/conf-custom/mailfilter_move_junk.master')."\n"; } else { -- GitLab From 74196ba1859f955242b8d2fd120744a8ccdcc251 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 22 Jul 2020 12:52:42 -0600 Subject: [PATCH 517/571] always write before/after sieve scripts, and autoresponder dates optional --- .../sql/incremental/upd_dev_collection.sql | 2 +- install/sql/ispconfig3.sql | 2 +- .../classes/validate_autoresponder.inc.php | 20 +- interface/web/mail/form/mail_user.tform.php | 6 +- interface/web/mail/lib/lang/ar_mail_user.lng | 3 +- interface/web/mail/lib/lang/bg_mail_user.lng | 1 - interface/web/mail/lib/lang/br_mail_user.lng | 1 - interface/web/mail/lib/lang/ca_mail_user.lng | 1 - interface/web/mail/lib/lang/cz_mail_user.lng | 1 - interface/web/mail/lib/lang/de_mail_user.lng | 1 - interface/web/mail/lib/lang/dk_mail_user.lng | 1 - interface/web/mail/lib/lang/el_mail_user.lng | 1 - interface/web/mail/lib/lang/en_mail_user.lng | 3 +- interface/web/mail/lib/lang/es_mail_user.lng | 1 - interface/web/mail/lib/lang/fi_mail_user.lng | 1 - interface/web/mail/lib/lang/fr_mail_user.lng | 1 - interface/web/mail/lib/lang/hr_mail_user.lng | 3 +- interface/web/mail/lib/lang/hu_mail_user.lng | 3 +- interface/web/mail/lib/lang/id_mail_user.lng | 1 - interface/web/mail/lib/lang/it_mail_user.lng | 1 - interface/web/mail/lib/lang/ja_mail_user.lng | 3 +- interface/web/mail/lib/lang/nl_mail_user.lng | 1 - interface/web/mail/lib/lang/pl_mail_user.lng | 1 - interface/web/mail/lib/lang/pt_mail_user.lng | 1 - interface/web/mail/lib/lang/ro_mail_user.lng | 3 +- interface/web/mail/lib/lang/ru_mail_user.lng | 1 - interface/web/mail/lib/lang/se_mail_user.lng | 3 +- interface/web/mail/lib/lang/sk_mail_user.lng | 3 +- interface/web/mail/lib/lang/tr_mail_user.lng | 1 - server/conf/sieve_filter.master | 43 +++- server/conf/sieve_filter_1.2.master | 23 ++- .../maildeliver_plugin.inc.php | 193 +++++++++--------- .../plugins-available/maildrop_plugin.inc.php | 5 +- 33 files changed, 162 insertions(+), 173 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index abe2a8a1a1..2eb2594e88 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -49,4 +49,4 @@ ALTER TABLE `web_domain` CHANGE `apache_directives` `apache_directives` mediumte ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL; -- add move to junk before/after option, default to after -ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'a'; +ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'y'; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index bacf075baa..9c11a68914 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1046,7 +1046,7 @@ CREATE TABLE `mail_user` ( `autoresponder_end_date` datetime NULL default NULL, `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', `autoresponder_text` mediumtext NULL, - `move_junk` enum('y','a','n') NOT NULL default 'a', + `move_junk` enum('y','a','n') NOT NULL default 'y', `purge_trash_days` INT NOT NULL DEFAULT '0', `purge_junk_days` INT NOT NULL DEFAULT '0', `custom_mailfilter` mediumtext, diff --git a/interface/lib/classes/validate_autoresponder.inc.php b/interface/lib/classes/validate_autoresponder.inc.php index 25db68bdd9..48ee377883 100755 --- a/interface/lib/classes/validate_autoresponder.inc.php +++ b/interface/lib/classes/validate_autoresponder.inc.php @@ -31,25 +31,11 @@ include_once 'validate_datetime.inc.php'; class validate_autoresponder extends validate_datetime { - function start_date($field_name, $field_value, $validator) - { - global $app; - - // save field value for later use in end_date() - $this->start_date = $field_value; - - if($_POST['autoresponder'] == 'y' && $field_value == '') { - // we need a start date when autoresponder is on - return $app->tform->lng($validator['errmsg']).'<br />'; - } - } - function end_date($field_name, $field_value, $validator) { global $app; - $start_date = $this->start_date; - //$start_date = $app->tform_actions->dataRecord['autoresponder_start_date']; + $start_date = $app->tform_actions->dataRecord['autoresponder_start_date']; // Parse date $datetimeformat = (isset($app->remoting_lib) ? $app->remoting_lib->datetimeformat : $app->tform->datetimeformat); @@ -60,8 +46,8 @@ class validate_autoresponder extends validate_datetime $start_date_tstamp = mktime($start_date_array['hour'], $start_date_array['minute'], $start_date_array['second'], $start_date_array['month'], $start_date_array['day'], $start_date_array['year']); $end_date_tstamp = mktime($end_date_array['hour'], $end_date_array['minute'], $end_date_array['second'], $end_date_array['month'], $end_date_array['day'], $end_date_array['year']); - // End date has to be > start date - if($end_date_tstamp <= $start_date_tstamp && ($start_date || $field_value)) { + // If both are set, end date has to be > start date + if($start_date && $field_value && $end_date_tstamp <= $start_date_tstamp) { return $app->tform->lng($validator['errmsg']).'<br />'; } } diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 0bef9d979f..48c1e7dd96 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -364,10 +364,6 @@ if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') { 0 => array ( 'type' => 'ISDATETIME', 'allowempty' => 'y', 'errmsg'=> 'autoresponder_start_date_is_no_date'), - 1 => array ( 'type' => 'CUSTOM', - 'class' => 'validate_autoresponder', - 'function' => 'start_date', - 'errmsg'=> 'autoresponder_start_date_is_required'), ) ), 'autoresponder_end_date' => array ( @@ -403,7 +399,7 @@ if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') { 'move_junk' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', - 'default' => 'a', + 'default' => 'y', 'value' => array('y' => 'move_junk_y_txt', 'a' => 'move_junk_a_txt', 'n' => 'move_junk_n_txt'), ), 'purge_trash_days' => array ( diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index 702725959d..04f5946cee 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -11,7 +11,7 @@ $wb['autoresponder_txt'] = 'Active'; $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; $wb['error_no_pwd'] = 'Password is empty.'; $wb['quota_error_isint'] = 'Mailbox size must be a number.'; @@ -60,7 +60,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 49be467e91..af427fa5e3 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -54,7 +54,6 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['backup_interval_txt'] = 'Backup interval'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 8f02122ade..e0ef4a373e 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -14,7 +14,6 @@ $wb['autoresponder_start_date_txt'] = 'Iniciar em'; $wb['autoresponder_start_date_ispast'] = 'O campo "Iniciar em" não pode ser menor que a data atual.'; $wb['autoresponder_end_date_txt'] = 'Terminar em'; $wb['autoresponder_end_date_isgreater'] = 'O campo "Terminar em" deve ser configurado e não pode ser menor ou igual a data atual.'; -$wb['autoresponder_start_date_is_required'] = 'Data iniciar deve ser configurado quando a opção de auto-resposta estiver habilitada.'; $wb['no_domain_perm'] = 'Você não tem permissão para este domÃnio.'; $wb['error_no_pwd'] = 'A senha está em branco.'; $wb['quota_error_isint'] = 'O tamanho da conta de e-mail deve ser um número.'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 259c357671..9e8fae6fb6 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -53,7 +53,6 @@ $wb['password_match_txt'] = 'Les mots de passe correspondent.'; $wb['disablesmtp_txt'] = 'Désactiver SMTP (envoi)'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Séparer chaque adresses par une virgule)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index 72ebc26a4b..73149f757b 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -53,7 +53,6 @@ $wb['password_match_txt'] = 'Hesla se shodujÃ.'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.)'; $wb['disablesmtp_txt'] = 'Zakázat SMTP (pouze odesÃlánÃ)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['greylisting_txt'] = 'Povolit greylisting'; $wb['sender_cc_txt'] = 'Odeslat odchozà kopii na'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index 79834d9a5c..43b907d5b0 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -60,7 +60,6 @@ $wb['daily_backup_txt'] = 'taeglich'; $wb['weekly_backup_txt'] = 'woechentlich'; $wb['monthly_backup_txt'] = 'monatlich'; $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; -$wb['autoresponder_start_date_is_required'] = 'Startdatum muss angegeben werden.'; $wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)'; $wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse'; $wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index cf29a97137..68272beaaa 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -53,7 +53,6 @@ $wb['password_mismatch_txt'] = 'Adgangskoderne stemmer ikke overens.'; $wb['password_match_txt'] = 'Adgangskoderne stemmer overens.'; $wb['email_error_isascii'] = 'Undlad venligst at bruge specielle Unicode-tegn for din adgangskode Dette kan føre til problemer med din mail-klient.'; $wb['cc_note_txt'] = '(Adskil flere e-mail adresser med kommaer)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['password_click_to_set_txt'] = 'Click to set'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index 0f424c0099..84aa6fce6c 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -54,7 +54,6 @@ $wb['password_match_txt'] = 'The passwords do match.'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['backup_interval_txt'] = 'Backup interval'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 7b98e593c8..3b5ee34397 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -13,8 +13,7 @@ $wb["autoresponder_txt"] = 'Active'; $wb["autoresponder_start_date_txt"] = 'Start on'; $wb["autoresponder_start_date_ispast"] = 'Start date cannot be in the past.'; $wb["autoresponder_end_date_txt"] = 'End by'; -$wb["autoresponder_end_date_isgreater"] = 'End date must be set and be later than start date.'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; +$wb["autoresponder_end_date_isgreater"] = 'End date must be later than start date.'; $wb["no_domain_perm"] = 'You have no permission for this domain.'; $wb["error_no_pwd"] = 'Password is empty.'; $wb["quota_error_isint"] = 'Mailbox size must be a number.'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 676dd45c22..c8ea29d72c 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -4,7 +4,6 @@ $wb['active_txt'] = 'Habilitado'; $wb['autoresponder_active'] = 'Activar auto respuesta'; $wb['autoresponder_end_date_isgreater'] = 'Debe indicar la fecha de finalización y esta debe ser mayor a la de inicio.'; $wb['autoresponder_end_date_txt'] = 'Finaliza el'; -$wb['autoresponder_start_date_is_required'] = 'Cuando se activa la auto respuesta se debe definir una fecha de inicio.'; $wb['autoresponder_start_date_ispast'] = 'La fecha de inicio no puede estar en el pasado.'; $wb['autoresponder_start_date_txt'] = 'Comienza el'; $wb['autoresponder_subject'] = 'Estoy fuera de la oficina'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 97bddeddc7..2416e3dfe9 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -60,7 +60,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index 4871865ae8..e3b130fe4a 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -53,7 +53,6 @@ $wb['password_match_txt'] = 'Les mots de passe correspondent.'; $wb['disablesmtp_txt'] = 'Désactiver SMTP (envoi)'; $wb['email_error_isascii'] = 'Merci de ne pas utiliser de caractères spéciaux Unicode dans votre mot de passe. Ceci pourrait engendrer des problèmes avec votre client mail.'; $wb['cc_note_txt'] = '(Séparer les adresses e-mail multiples par des virgules)'; -$wb['autoresponder_start_date_is_required'] = 'Une date de démarrage doit être renseignée quand le répondeur automatique est activé.'; $wb['greylisting_txt'] = 'Activer le greylisting'; $wb['sender_cc_txt'] = 'Envoyer une copie des mails sortants à '; $wb['sender_cc_error_isemail'] = 'Le champ -Envoyer une copie des mails sortants à - no contiens pas une adresse e-mail valide'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 34c41a827e..c75fc8c771 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -10,7 +10,7 @@ $wb['autoresponder_text_txt'] = 'Text'; $wb['autoresponder_txt'] = 'Aktivno'; $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['no_domain_perm'] = 'You have no permission for this domain.'; $wb['error_no_pwd'] = 'Password is empty.'; $wb['quota_error_isint'] = 'Mailbox size must be a number.'; @@ -57,7 +57,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['generate_password_txt'] = 'Generate Password'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 58a4416cb2..00361fc79c 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -30,7 +30,7 @@ $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlim $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; $wb["move_junk_y_txt"] = 'Move first, before custom filters.'; $wb["move_junk_a_txt"] = 'Move last, after custom filters.'; @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index 87be369635..123eb7fd21 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index 6dffeddb91..49b5a43f0c 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -54,7 +54,6 @@ $wb['password_match_txt'] = 'Le passwords coincidono.'; $wb['email_error_isascii'] = 'Non utilizzare caratteri speciali unicode per la password. Potresti avere problemi con il tuo client di psota.'; $wb['cc_note_txt'] = '(Separa indirizzi email multipli con la virgola)'; $wb['disablesmtp_txt'] = 'Disabilita SMTP (trasmissione)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['greylisting_txt'] = 'Enable greylisting'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 1b36502b74..1b6195e5fe 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -30,7 +30,7 @@ $wb['quota_error_value'] = '容é‡ã®å€¤ãŒä¸æ£ã§ã™ã€‚ 無制é™ã«ã™ã‚‹å ´ $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; $wb["move_junk_y_txt"] = 'Move first, before custom filters.'; $wb["move_junk_a_txt"] = 'Move last, after custom filters.'; @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 37e8c8638b..5b39e2ad75 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -60,7 +60,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)'; -$wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor het inschakelen van Autobeantwoorden.'; $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 889700cddd..4a410a6b5c 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 6c715d52e2..05e8cfce89 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index ee1b6b980c..d03849c760 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -28,7 +28,7 @@ $wb['disablepop3_txt'] = 'Blocheaza POP3'; $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forwrd with this email address.'; $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 6935ecd8e2..3944d3304b 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'ЕжемеÑÑчно'; $wb['email_error_isascii'] = 'ПожалуйÑта, не иÑпользуйте Ñпециальные Ñимволы Юникода Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ паролÑ. Ðто может привеÑти к проблемам Ñ Ð²Ð°ÑˆÐ¸Ð¼ почтовым клиентом.'; $wb['cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; $wb['disablesmtp_txt'] = 'Отключить SMTP (отправка)'; -$wb['autoresponder_start_date_is_required'] = 'Дата начала должна быть уÑтановлена когда автоответчик включен.'; $wb['sender_cc_txt'] = 'Отправка иÑходÑщей копии на'; $wb['sender_cc_error_isemail'] = 'Поле -Отправка иÑходÑщей копии на- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; $wb['sender_cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index 22c5b0fe45..2b856c094a 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -30,7 +30,7 @@ $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlim $wb['autoresponder_start_date_txt'] = 'Starta den'; $wb['autoresponder_start_date_ispast'] = 'Startdatum kan inte vara i det förflutna.'; $wb['autoresponder_end_date_txt'] = 'Sluta den'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['move_junk_txt'] = 'FLytta spamepost till spammappen'; $wb["move_junk_y_txt"] = 'Move first, before custom filters.'; $wb["move_junk_a_txt"] = 'Move last, after custom filters.'; @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 258e8f6128..c44ea9ab6e 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -30,7 +30,7 @@ $wb['quota_error_value'] = 'Neplatná hodnota kvóty. Povolené hodnoty sú: 0 p $wb['autoresponder_start_date_txt'] = 'Start on'; $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.'; $wb['autoresponder_end_date_txt'] = 'End by'; -$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory'; $wb["move_junk_y_txt"] = 'Move first, before custom filters.'; $wb["move_junk_a_txt"] = 'Move last, after custom filters.'; @@ -61,7 +61,6 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['disablesmtp_txt'] = 'Disable SMTP (sending)'; -$wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.'; $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index a1ed0128f3..790e44c014 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -14,7 +14,6 @@ $wb['autoresponder_start_date_txt'] = 'BaÅŸlangıç'; $wb['autoresponder_start_date_ispast'] = 'BaÅŸlangıç zamanı geçmiÅŸte olamaz.'; $wb['autoresponder_end_date_txt'] = 'BitiÅŸ'; $wb['autoresponder_end_date_isgreater'] = 'BitiÅŸ zamanı baÅŸlangıç zamanından sonra olmalıdır.'; -$wb['autoresponder_start_date_is_required'] = 'Otoyanıtlayıcı kullanıldığında baÅŸlangıç tarihi belirtilmelidir.'; $wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.'; $wb['error_no_pwd'] = 'Parola boÅŸ olamaz.'; $wb['quota_error_isint'] = 'E-posta kutusunun boyutu bir sayı olmalıdır.'; diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index 6b83c26394..c5b33e4ba3 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -1,14 +1,9 @@ +<tmpl_if name="sieve_script" op="==" value="before"> # This sieve script is generated by ISPConfig, any changes made will be overwritten. # You can create and activate a per-user sieve script (manually or via managesieve), -# which will execute before this. -require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; +# which will execute after this. -<tmpl_if name="cc"> -# Send a copy of email to -<tmpl_loop name="ccloop"> -redirect "<tmpl_var name='address'>"; -</tmpl_loop> -</tmpl_if> +require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="move_junk" op="==" value="y"> # Move spam to spam folder @@ -19,9 +14,20 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", } </tmpl_if> +<tmpl_if name="cc"> +# Send a copy of email to +<tmpl_loop name="ccloop"> +redirect "<tmpl_var name='address'>"; +</tmpl_loop> +</tmpl_if> + <tmpl_var name='custom_mailfilter'> -keep; +</tmpl_if> +<tmpl_if name="sieve_script" op="==" value="after"> +# This sieve script is generated by ISPConfig, any changes made will be overwritten. +# You can create and activate a per-user sieve script (manually or via managesieve), +# which will execute before this. <tmpl_if name="move_junk" op="==" value="a"> # Move spam to spam folder @@ -39,13 +45,28 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", # Move spam to spam folder if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { - fileinto "Junk"; # Stop here so that we do not reply on spams stop; } + +<tmpl_if name="start_date"> +if currentdate :value "ge" "iso8601" "<tmpl_var name='start_date'>" { +</tmpl_if> +<tmpl_if name="end_date"> +if currentdate :value "le" "iso8601" "<tmpl_var name='end_date'>" { +</tmpl_if> + vacation :days 1 :subject "<tmpl_var name='autoresponder_subject'>" - # :addresses ["test@test.int", "till@test.int"] <tmpl_var name='addresses'> "<tmpl_var name='autoresponder_text'>"; + +<tmpl_if name="end_date"> +} +</tmpl_if> +<tmpl_if name="start_date"> +} +</tmpl_if> +</tmpl_if> + </tmpl_if> diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master index 3a8695b1a6..c5b33e4ba3 100644 --- a/server/conf/sieve_filter_1.2.master +++ b/server/conf/sieve_filter_1.2.master @@ -1,6 +1,8 @@ +<tmpl_if name="sieve_script" op="==" value="before"> # This sieve script is generated by ISPConfig, any changes made will be overwritten. # You can create and activate a per-user sieve script (manually or via managesieve), -# which will execute before this. +# which will execute after this. + require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; <tmpl_if name="move_junk" op="==" value="y"> @@ -21,7 +23,11 @@ redirect "<tmpl_var name='address'>"; <tmpl_var name='custom_mailfilter'> -keep; +</tmpl_if> +<tmpl_if name="sieve_script" op="==" value="after"> +# This sieve script is generated by ISPConfig, any changes made will be overwritten. +# You can create and activate a per-user sieve script (manually or via managesieve), +# which will execute before this. <tmpl_if name="move_junk" op="==" value="a"> # Move spam to spam folder @@ -43,8 +49,11 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", stop; } -<tmpl_if name="autoresponder_date_limit"> -if allof(currentdate :value "ge" "iso8601" "<tmpl_var name='start_date'>", currentdate :value "le" "iso8601" "<tmpl_var name='end_date'>") { +<tmpl_if name="start_date"> +if currentdate :value "ge" "iso8601" "<tmpl_var name='start_date'>" { +</tmpl_if> +<tmpl_if name="end_date"> +if currentdate :value "le" "iso8601" "<tmpl_var name='end_date'>" { </tmpl_if> vacation :days 1 @@ -52,8 +61,12 @@ vacation :days 1 <tmpl_var name='addresses'> "<tmpl_var name='autoresponder_text'>"; -<tmpl_if name="autoresponder_date_limit"> +<tmpl_if name="end_date"> +} +</tmpl_if> +<tmpl_if name="start_date"> } </tmpl_if> </tmpl_if> +</tmpl_if> diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 05ee88e777..5b4c5671e4 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -127,116 +127,111 @@ class maildeliver_plugin { } unset($tmp); - //* Create new filter file based on template - $tpl = new tpl(); - $tpl->newTemplate($filter_file_template); - - // cc Field - $tmp_mails_arr = explode(',',$data["new"]["cc"]); - $tmp_addresses_arr = array(); - foreach($tmp_mails_arr as $address) { - if(trim($address) != '') $tmp_addresses_arr[] = array('address' => trim($address)); - } + foreach ( array('before', 'after') as $sieve_script ) { + //* Create new filter file based on template + $tpl = new tpl(); + $tpl->newTemplate($filter_file_template); + + // cc Field + $tmp_mails_arr = explode(',',$data["new"]["cc"]); + $tmp_addresses_arr = array(); + foreach($tmp_mails_arr as $address) { + if(trim($address) != '') $tmp_addresses_arr[] = array('address' => trim($address)); + } - $tpl->setVar('cc', $data["new"]["cc"]); - $tpl->setLoop('ccloop', $tmp_addresses_arr); - - // Custom filters - if($data["new"]["custom_mailfilter"] == 'NULL') $data["new"]["custom_mailfilter"] = ''; - $tpl->setVar('custom_mailfilter', str_replace("\r\n","\n",$data["new"]["custom_mailfilter"])); - - // Move junk - $tpl->setVar('move_junk', $data["new"]["move_junk"]); - - // Check autoresponder dates - if((!$data['new']['autoresponder_start_date'] || $data["new"]["autoresponder_start_date"] == '0000-00-00 00:00:00') && (!$data['new']['autoresponder_end_date'] || $data["new"]["autoresponder_end_date"] == '0000-00-00 00:00:00')) { - $tpl->setVar('autoresponder_date_limit', 0); - } else { - $tpl->setVar('autoresponder_date_limit', 1); - } - - - // Set autoresponder start date - $data["new"]["autoresponder_start_date"] = str_replace(" ", "T", $data["new"]["autoresponder_start_date"]); - $tpl->setVar('start_date', $data["new"]["autoresponder_start_date"]); - - // Set autoresponder end date - $data["new"]["autoresponder_end_date"] = str_replace(" ", "T", $data["new"]["autoresponder_end_date"]); - $tpl->setVar('end_date', $data["new"]["autoresponder_end_date"]); - - // Autoresponder - $tpl->setVar('autoresponder', $data["new"]["autoresponder"]); - - // Autoresponder Subject - $data["new"]["autoresponder_subject"] = str_replace("\"", "'", $data["new"]["autoresponder_subject"]); - $tpl->setVar('autoresponder_subject', $data["new"]["autoresponder_subject"]); - - // Autoresponder Text - $data["new"]["autoresponder_text"] = str_replace("\"", "'", $data["new"]["autoresponder_text"]); - $tpl->setVar('autoresponder_text', $data["new"]["autoresponder_text"]); + $tpl->setVar('cc', $data["new"]["cc"]); + $tpl->setLoop('ccloop', $tmp_addresses_arr); + + // Custom filters + if($data["new"]["custom_mailfilter"] == 'NULL') $data["new"]["custom_mailfilter"] = ''; + $tpl->setVar('custom_mailfilter', str_replace("\r\n","\n",$data["new"]["custom_mailfilter"])); + + // Move junk + $tpl->setVar('move_junk', $data["new"]["move_junk"]); + + // Set autoresponder start date + $data["new"]["autoresponder_start_date"] = str_replace(" ", "T", $data["new"]["autoresponder_start_date"]); + $tpl->setVar('start_date', $data["new"]["autoresponder_start_date"]); + + // Set autoresponder end date + $data["new"]["autoresponder_end_date"] = str_replace(" ", "T", $data["new"]["autoresponder_end_date"]); + $tpl->setVar('end_date', $data["new"]["autoresponder_end_date"]); + + // Autoresponder + $tpl->setVar('autoresponder', $data["new"]["autoresponder"]); + + // Autoresponder Subject + $data["new"]["autoresponder_subject"] = str_replace("\"", "'", $data["new"]["autoresponder_subject"]); + $tpl->setVar('autoresponder_subject', $data["new"]["autoresponder_subject"]); + + // Autoresponder Text + $data["new"]["autoresponder_text"] = str_replace("\"", "'", $data["new"]["autoresponder_text"]); + $tpl->setVar('autoresponder_text', $data["new"]["autoresponder_text"]); + + if (! defined($address_str)) { + //* Set alias addresses for autoresponder + $sql = "SELECT * FROM mail_forwarding WHERE type = 'alias' AND destination = ?"; + $records = $app->db->queryAllRecords($sql, $data["new"]["email"]); + + $addresses = array(); + $addresses[] = $data["new"]["email"]; + if(is_array($records) && count($records) > 0) { + foreach($records as $rec) { + $addresses[] = $rec['source']; + } + } - //* Set alias addresses for autoresponder - $sql = "SELECT * FROM mail_forwarding WHERE type = 'alias' AND destination = ?"; - $records = $app->db->queryAllRecords($sql, $data["new"]["email"]); + $app->log("Found " . count($addresses) . " addresses.", LOGLEVEL_DEBUG); + + $alias_addresses = array(); + + $email_parts = explode('@', $data["new"]["email"]); + $sql = "SELECT * FROM mail_forwarding WHERE type = 'aliasdomain' AND destination = ?"; + $records = $app->db->queryAllRecords($sql, '@'.$email_parts[1]); + if(is_array($records) && count($records) > 0) { + $app->log("Found " . count($records) . " records (aliasdomains).", LOGLEVEL_DEBUG); + foreach($records as $rec) { + $aliasdomain = substr($rec['source'], 1); + foreach($addresses as $email) { + $email_parts = explode('@', $email); + $alias_addresses[] = $email_parts[0].'@'.$aliasdomain; + } + } + } - $addresses = array(); - $addresses[] = $data["new"]["email"]; - if(is_array($records) && count($records) > 0) { - foreach($records as $rec) { - $addresses[] = $rec['source']; - } - } + $app->log("Found " . count($addresses) . " addresses at all.", LOGLEVEL_DEBUG); - $app->log("Found " . count($addresses) . " addresses.", LOGLEVEL_DEBUG); + $addresses = array_unique(array_merge($addresses, $alias_addresses)); - $alias_addresses = array(); + $app->log("Found " . count($addresses) . " unique addresses at all.", LOGLEVEL_DEBUG); - $email_parts = explode('@', $data["new"]["email"]); - $sql = "SELECT * FROM mail_forwarding WHERE type = 'aliasdomain' AND destination = ?"; - $records = $app->db->queryAllRecords($sql, '@'.$email_parts[1]); - if(is_array($records) && count($records) > 0) { - $app->log("Found " . count($records) . " records (aliasdomains).", LOGLEVEL_DEBUG); - foreach($records as $rec) { - $aliasdomain = substr($rec['source'], 1); - foreach($addresses as $email) { - $email_parts = explode('@', $email); - $alias_addresses[] = $email_parts[0].'@'.$aliasdomain; + $address_str = ''; + if(is_array($addresses) && count($addresses) > 0) { + $address_str .= ':addresses ['; + foreach($addresses as $rec) { + $address_str .= '"'.$rec.'",'; + } + $address_str = substr($address_str, 0, -1); + $address_str .= ']'; } } - } - $app->log("Found " . count($addresses) . " addresses at all.", LOGLEVEL_DEBUG); + $tpl->setVar('addresses', $address_str); - $addresses = array_unique(array_merge($addresses, $alias_addresses)); - - $app->log("Found " . count($addresses) . " unique addresses at all.", LOGLEVEL_DEBUG); - - $address_str = ''; - if(is_array($addresses) && count($addresses) > 0) { - $address_str .= ':addresses ['; - foreach($addresses as $rec) { - $address_str .= '"'.$rec.'",'; + if ( ! is_dir($data["new"]["maildir"].'/sieve/') ) { + $app->system->mkdirpath($data["new"]["maildir"].'/sieve/', 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); } - $address_str = substr($address_str, 0, -1); - $address_str .= ']'; - } + $tpl->setVar('sieve_script', $sieve_script); + if ($sieve_script == 'before') { + $sieve_file_isp = $sieve_file_isp_before; + $sieve_file_isp_svbin = $sieve_file_isp_before_svbin; + } elseif ($sieve_script == 'after') { + $sieve_file_isp = $sieve_file_isp_after; + $sieve_file_isp_svbin = $sieve_file_isp_after_svbin; + } - $tpl->setVar('addresses', $address_str); - - if ( ! is_dir($data["new"]["maildir"].'/sieve/') ) { - $app->system->mkdirpath($data["new"]["maildir"].'/sieve/', 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); - } - - if ($data["new"]["move_junk"] == "y") { - $sieve_file_isp = $sieve_file_isp_before; - $sieve_file_isp_svbin = $sieve_file_isp_before_svbin; - } elseif ($data["new"]["move_junk"] == "a") { - $sieve_file_isp = $sieve_file_isp_after; - $sieve_file_isp_svbin = $sieve_file_isp_after_svbin; - } - if (isset($sieve_file_isp)) { - file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file", LOGLEVEL_WARN); + file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file " . $sieve_file_isp, LOGLEVEL_WARN); if ( is_file($sieve_file_isp) ) { $app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false); $app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false); @@ -247,10 +242,10 @@ class maildeliver_plugin { $app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false); } } - } - unset($tpl); + unset($tpl); + } } } diff --git a/server/plugins-available/maildrop_plugin.inc.php b/server/plugins-available/maildrop_plugin.inc.php index 93bd29f338..00777a1662 100644 --- a/server/plugins-available/maildrop_plugin.inc.php +++ b/server/plugins-available/maildrop_plugin.inc.php @@ -146,9 +146,12 @@ class maildrop_plugin { if ($data['new']['autoresponder_start_date'] && $data["new"]["autoresponder_start_date"] != '0000-00-00 00:00:00') { // Dates have been set $tpl = str_replace('{start_date}', strtotime($data["new"]["autoresponder_start_date"]), $tpl); - $tpl = str_replace('{end_date}', strtotime($data["new"]["autoresponder_end_date"]), $tpl); } else { $tpl = str_replace('{start_date}', -7200, $tpl); + } + if ($data['new']['autoresponder_end_date'] && $data["new"]["autoresponder_end_date"] != '0000-00-00 00:00:00') { // Dates have been set + $tpl = str_replace('{end_date}', strtotime($data["new"]["autoresponder_end_date"]), $tpl); + } else { $tpl = str_replace('{end_date}', 2147464800, $tpl); } -- GitLab From 62af6f1446d6576a1dc0ea6cfedfc18a66937a6a Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 22 Jul 2020 16:17:44 -0600 Subject: [PATCH 518/571] no need for multiple, identical sieve filter templates --- server/conf/sieve_filter_1.2.master | 72 ------------------- .../maildeliver_plugin.inc.php | 15 +--- 2 files changed, 1 insertion(+), 86 deletions(-) delete mode 100644 server/conf/sieve_filter_1.2.master diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master deleted file mode 100644 index c5b33e4ba3..0000000000 --- a/server/conf/sieve_filter_1.2.master +++ /dev/null @@ -1,72 +0,0 @@ -<tmpl_if name="sieve_script" op="==" value="before"> -# This sieve script is generated by ISPConfig, any changes made will be overwritten. -# You can create and activate a per-user sieve script (manually or via managesieve), -# which will execute after this. - -require ["fileinto", "regex", "date", "relational", "vacation", "imap4flags", "envelope", "subaddress", "copy", "reject"]; - -<tmpl_if name="move_junk" op="==" value="y"> -# Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { - fileinto "Junk"; - # Stop here so that we do not reply on spams - stop; -} -</tmpl_if> - -<tmpl_if name="cc"> -# Send a copy of email to -<tmpl_loop name="ccloop"> -redirect "<tmpl_var name='address'>"; -</tmpl_loop> -</tmpl_if> - -<tmpl_var name='custom_mailfilter'> - -</tmpl_if> -<tmpl_if name="sieve_script" op="==" value="after"> -# This sieve script is generated by ISPConfig, any changes made will be overwritten. -# You can create and activate a per-user sieve script (manually or via managesieve), -# which will execute before this. - -<tmpl_if name="move_junk" op="==" value="a"> -# Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { - fileinto "Junk"; - # Stop here so that we do not reply on spams - stop; -} -</tmpl_if> - -<tmpl_if name="autoresponder" op="==" value="y"> -################################################################# -# Autoreply -################################################################# - -# Move spam to spam folder -if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") { - # Stop here so that we do not reply on spams - stop; -} - -<tmpl_if name="start_date"> -if currentdate :value "ge" "iso8601" "<tmpl_var name='start_date'>" { -</tmpl_if> -<tmpl_if name="end_date"> -if currentdate :value "le" "iso8601" "<tmpl_var name='end_date'>" { -</tmpl_if> - -vacation :days 1 - :subject "<tmpl_var name='autoresponder_subject'>" - <tmpl_var name='addresses'> - "<tmpl_var name='autoresponder_text'>"; - -<tmpl_if name="end_date"> -} -</tmpl_if> -<tmpl_if name="start_date"> -} -</tmpl_if> -</tmpl_if> - -</tmpl_if> diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 5b4c5671e4..99220d5ffa 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -114,23 +114,10 @@ class maildeliver_plugin { if(is_file($sieve_file_isp_after_svbin)) unlink($sieve_file_isp_after_svbin) or $app->log("Unable to delete file: $sieve_file_isp_after_svbin", LOGLEVEL_WARN); $app->load('tpl'); - //* Select sieve filter file for dovecot version - exec('dovecot --version', $tmp); - if(substr($tmp[0], 0, 3) == '1.0') { - $filter_file_template = "sieve_filter.master"; - } elseif(substr($tmp[0], 0, 3) == '1.2') { - $filter_file_template = "sieve_filter_1.2.master"; - } elseif(substr($tmp[0], 0, 1) == '2') { - $filter_file_template = "sieve_filter_1.2.master"; - } else { - $filter_file_template = "sieve_filter.master"; - } - unset($tmp); - foreach ( array('before', 'after') as $sieve_script ) { //* Create new filter file based on template $tpl = new tpl(); - $tpl->newTemplate($filter_file_template); + $tpl->newTemplate("sieve_filter.master"); // cc Field $tmp_mails_arr = explode(',',$data["new"]["cc"]); -- GitLab From e55e8dc2d6fc1b9937bc1703de8d1da47e9ccf97 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 24 Jul 2020 12:25:51 -0600 Subject: [PATCH 519/571] rename .ispconfig-after.sieve to .ispconfig.sieve --- install/tpl/debian6_dovecot.conf.master | 2 +- install/tpl/debian6_dovecot2.conf.master | 2 +- install/tpl/debian_dovecot.conf.master | 2 +- install/tpl/debian_dovecot2.conf.master | 2 +- install/tpl/fedora_dovecot.conf.master | 2 +- install/tpl/fedora_dovecot2.conf.master | 2 +- install/tpl/opensuse_dovecot.conf.master | 2 +- install/tpl/opensuse_dovecot2.conf.master | 2 +- server/plugins-available/maildeliver_plugin.inc.php | 12 +++++++----- 9 files changed, 15 insertions(+), 13 deletions(-) diff --git a/install/tpl/debian6_dovecot.conf.master b/install/tpl/debian6_dovecot.conf.master index cf9e85f3b3..f1df2e241e 100644 --- a/install/tpl/debian6_dovecot.conf.master +++ b/install/tpl/debian6_dovecot.conf.master @@ -61,7 +61,7 @@ plugin { sieve=/var/vmail/%d/%n/.sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index ead02a68c7..80709cfe36 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -30,7 +30,7 @@ plugin { sieve=/var/vmail/%d/%n/.sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian_dovecot.conf.master b/install/tpl/debian_dovecot.conf.master index 2bba3fa985..4109498cea 100644 --- a/install/tpl/debian_dovecot.conf.master +++ b/install/tpl/debian_dovecot.conf.master @@ -1146,7 +1146,7 @@ plugin { #lazy_expunge = .EXPUNGED/ .DELETED/ .DELETED/.EXPUNGED/ sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index c71f683e96..a292591372 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -29,7 +29,7 @@ plugin { sieve=/var/vmail/%d/%n/.sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/fedora_dovecot.conf.master b/install/tpl/fedora_dovecot.conf.master index 405a723a55..0bd4f7ca6d 100644 --- a/install/tpl/fedora_dovecot.conf.master +++ b/install/tpl/fedora_dovecot.conf.master @@ -1307,7 +1307,7 @@ plugin { sieve_dir=~/sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 312654732c..2acd757fbd 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -27,7 +27,7 @@ plugin { sieve=/var/vmail/%d/%n/.sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/opensuse_dovecot.conf.master b/install/tpl/opensuse_dovecot.conf.master index a6ed0ab71f..4a4d5e319c 100644 --- a/install/tpl/opensuse_dovecot.conf.master +++ b/install/tpl/opensuse_dovecot.conf.master @@ -1281,7 +1281,7 @@ plugin { sieve_dir=~/sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index da716c6dfc..62c9939819 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -26,7 +26,7 @@ plugin { sieve=/var/vmail/%d/%n/.sieve sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve - sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve + sieve_after=/var/vmail/%d/%n/.ispconfig.sieve sieve_max_script_size = 2M sieve_max_actions = 100 sieve_max_redirects = 25 diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 99220d5ffa..130d0a7f18 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -102,8 +102,9 @@ class maildeliver_plugin { $old_sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve'; $sieve_file_isp_before = $data["new"]["maildir"].'/.ispconfig-before.sieve'; $sieve_file_isp_before_svbin = $data["new"]["maildir"].'/.ispconfig-before.svbin'; - $sieve_file_isp_after = $data["new"]["maildir"].'/.ispconfig-after.sieve'; - $sieve_file_isp_after_svbin = $data["new"]["maildir"].'/.ispconfig-after.svbin'; + $sieve_file_isp_after = $data["new"]["maildir"].'/.ispconfig.sieve'; + $sieve_file_isp_after_svbin = $data["new"]["maildir"].'/.ispconfig.svbin'; + if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); // cleanup .sieve file if it is now a broken link if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); @@ -241,11 +242,12 @@ class maildeliver_plugin { $sieve_file = $data["old"]["maildir"].'/.sieve'; $sieve_file_svbin = $data["old"]["maildir"].'/.sieve.svbin'; - $old_sieve_file_isp = $data["old"]["maildir"].'/sieve/ispconfig.sieve'; + $old_sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve'; $sieve_file_isp_before = $data["old"]["maildir"].'/.ispconfig-before.sieve'; $sieve_file_isp_before_svbin = $data["old"]["maildir"].'/.ispconfig-before.svbin'; - $sieve_file_isp_after = $data["old"]["maildir"].'/.ispconfig-after.sieve'; - $sieve_file_isp_after_svbin = $data["old"]["maildir"].'/.ispconfig-after.svbin'; + $sieve_file_isp_after = $data["old"]["maildir"].'/.ispconfig.sieve'; + $sieve_file_isp_after_svbin = $data["old"]["maildir"].'/.ispconfig.svbin'; + if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp) or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN); // cleanup .sieve file if it is now a broken link if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file) or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN); -- GitLab From bd155b39fec86c2115f5555a023fce807e6d15f4 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Fri, 24 Jul 2020 23:30:15 +0200 Subject: [PATCH 520/571] Set DirectoryIndex and unset CSP for /stats --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 26f2948256..174228eb48 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1841,7 +1841,7 @@ class apache2_plugin { if($data['new']['stats_type'] != '') { if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); - $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user"; + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user\nDirectoryIndex index.php\nHeader unset Content-Security-Policy"; $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); unset($ht_file); -- GitLab From ca9fab3dc848d58cbada6a0ce84a3268cb9c34cd Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 24 Jul 2020 15:47:44 -0600 Subject: [PATCH 521/571] outgoing_bcc regex matches more mail_forwarding.destination addrs --- install/tpl/mysql-virtual_outgoing_bcc.cf.master | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master index eafd098a3f..19b235fcf5 100644 --- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master +++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master @@ -8,9 +8,9 @@ query = SELECT sender_cc FROM ( UNION SELECT SUBSTRING_INDEX(u.sender_cc, ',', 1) AS sender_cc FROM mail_user u, mail_forwarding f - WHERE f.destination REGEXP CONCAT( '(^|\\n)[[:blank:]]*,?[[:blank:]]*', + WHERE f.destination REGEXP CONCAT( '((^|\\n)[[:blank:]]*,?|[[:alnum:]][[:blank:]]*,)[[:blank:]]*', REPLACE( REPLACE(u.email, '+', '\\+'), '.', '\\.' ), - '[[:blank:]]*,?[[:blank:]]*(\\r?\\n|$)' ) + '[[:blank:]]*(,[[:blank:]]*[[:alnum:]]|,?[[:blank:]]*(\\r?\\n|$))' ) AND u.disablesmtp = 'n' AND u.sender_cc != '' AND u.server_id = {server_id} AND f.source = '%s' AND f.allow_send_as = 'y' AND f.active = 'y' AND f.server_id = {server_id} ) table1 WHERE sender_cc != '' LIMIT 1 -- GitLab From b63fa47694fe3a0f4b002b7d426c12862c82bf50 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 25 Jul 2020 19:28:06 +0200 Subject: [PATCH 522/571] Set DirectoryIndex --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 174228eb48..0153b2597d 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1841,7 +1841,7 @@ class apache2_plugin { if($data['new']['stats_type'] != '') { if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); - $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user\nDirectoryIndex index.php\nHeader unset Content-Security-Policy"; + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user\nDirectoryIndex index.html index.htm index.php\nHeader unset Content-Security-Policy"; $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); unset($ht_file); -- GitLab From 5bbacaa1367637fe86716432c29d48facb76084d Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 25 Jul 2020 19:35:26 +0200 Subject: [PATCH 523/571] Set DirectoryIndex - index.html and index.php --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 0153b2597d..ea85c51a2b 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1841,7 +1841,7 @@ class apache2_plugin { if($data['new']['stats_type'] != '') { if(!is_dir($data['new']['document_root'].'/' . $web_folder . '/stats')) $app->system->mkdir($data['new']['document_root'].'/' . $web_folder . '/stats'); - $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user\nDirectoryIndex index.html index.htm index.php\nHeader unset Content-Security-Policy"; + $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$data['new']['document_root']."/web/stats/.htpasswd_stats\nrequire valid-user\nDirectoryIndex index.html index.php\nHeader unset Content-Security-Policy"; $app->system->file_put_contents($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', $ht_file); $app->system->chmod($data['new']['document_root'].'/' . $web_folder . '/stats/.htaccess', 0755); unset($ht_file); -- GitLab From 61eac82c2b579b94eb1152ce52285dc681a99214 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 25 Jul 2020 19:42:28 +0200 Subject: [PATCH 524/571] Add CSP for /stats --- server/conf/nginx_vhost.conf.master | 1 + 1 file changed, 1 insertion(+) diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index ce245787a5..3fc50cc108 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -168,6 +168,7 @@ server { index index.html index.php; auth_basic "Members Only"; auth_basic_user_file <tmpl_var name='stats_auth_passwd_file'>; + add_header Content-Security-Policy "default-src * 'self' 'unsafe-inline';"; } location ^~ /awstats-icon { -- GitLab From d3c8533b94592bb36c6b2fa2e7375c2e612caaaf Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Mon, 27 Jul 2020 12:24:52 +0200 Subject: [PATCH 525/571] backported GoAccess code --- .../web/sites/form/web_vhost_domain.tform.php | 2 +- server/conf/goaccess_index.php.master | 73 ++++++ .../lib/classes/cron.d/150-goaccess.inc.php | 212 ++++++++++++++++++ .../plugins-available/apache2_plugin.inc.php | 67 ++++++ 4 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 server/conf/goaccess_index.php.master create mode 100644 server/lib/classes/cron.d/150-goaccess.inc.php diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 7da71281cf..aa02dfe96c 100644 --- a/interface/web/sites/form/web_vhost_domain.tform.php +++ b/interface/web/sites/form/web_vhost_domain.tform.php @@ -629,7 +629,7 @@ $form["tabs"]['stats'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'awstats', - 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None') + 'value' => array('awstats' => 'AWStats', 'goaccess' => 'GoAccess', 'webalizer' => 'Webalizer','' => 'None') ), //################################# // END Datatable fields diff --git a/server/conf/goaccess_index.php.master b/server/conf/goaccess_index.php.master new file mode 100644 index 0000000000..d0a8bf3c84 --- /dev/null +++ b/server/conf/goaccess_index.php.master @@ -0,0 +1,73 @@ +<?php +$yearmonth_text = "Jump to previous stats: "; +$script = "<script>function load_content(url){var iframe = document.getElementById(\"content\");iframe.src = url;}</script>\n"; + +if ($handle = opendir('.')) +{ + while(false !== ($file = readdir($handle))) + { + if (substr($file,0,1) != "." && is_dir($file)) + { + $orderkey = substr($file,0,4).substr($file,5,2); + if (substr($file,5,2) < 10 ) + { + $orderkey = substr($file,0,4)."0".substr($file,5,2); + } + $goaprev[$orderkey] = $file; + } + } + + $month = date("n"); + $year = date("Y"); + + if (date("d") == 1) + { + $month = date("m")-1; + if (date("m") == 1) + { + $year = date("Y")-1; + $month = "12"; + } + } + + $current = $year.$month; + if ( $month < 10 ) { + $current = $year."0".$month; + } + $goaprev[$current] = $year."-".$month; + + closedir($handle); +} + +arsort($goaprev); + +$options = ""; +foreach ($goaprev as $key => $value) +{ + + if(file_exists($value.'/awsindex.html') && file_exists($value.'/goaindex.html')) { + $goaccessindex = 'goaindex.html'; + } elseif(file_exists($value.'/awsindex.html') && !file_exists($value.'/goaindex.html')) { + $goaccessindex = 'awsindex.html'; + } else { + $goaccessindex = 'goaindex.html'; + } + + if($key == $current) $options .= "<option selected=\"selected\" value=\"{$goaccessindex}\">{$value}</option>\n"; + else $options .= "<option value=\"{$value}/{$goaccessindex}\">{$value}</option>\n"; + +} +$goaccessindex = 'goaindex.html'; + +$html = "<!DOCTYPE html>\n<html>\n<head>\n<title>Stats</title>\n"; +$html .= "<style>\nhtml,body {margin:0px;padding:0px;width:100%;height:100%;background-color: #ccc;}\n"; +$html .= "#header\n{\nwidth:100%;margin:0px auto;\nheight:20px;\nposition:fixed;\npadding:4px;\ntext-align:center;\n}\n"; +$html .= "iframe {width:100%;height:95%;margin:0px;margin-top:40px;border:0px;padding:0px;}\n</style>\n</head>\n<body>\n"; +$html .= $script; +$html .= "<div id=\"header\">{$yearmonth_text}\n"; +$html .= "<select name=\"goadate\" onchange=\"load_content(this.value)\">\n"; +$html .= $options; +$html .= "</select>\n</div>\n<iframe src=\"{$goaccessindex}\" id=\"content\"></iframe>\n"; +$html .= "</body></html>"; +echo $html; +?> diff --git a/server/lib/classes/cron.d/150-goaccess.inc.php b/server/lib/classes/cron.d/150-goaccess.inc.php new file mode 100644 index 0000000000..fe9e565f5f --- /dev/null +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -0,0 +1,212 @@ +<?php + +/* +Copyright (c) 2013, Marius Cramer, pixcept KG +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. +*/ + +class cronjob_goaccess extends cronjob { + + // job schedule + protected $_schedule = '0 0 * * *'; + + /* this function is optional if it contains no custom code */ + public function onPrepare() { + global $app; + + parent::onPrepare(); + } + + /* this function is optional if it contains no custom code */ + public function onBeforeRun() { + global $app; + + return parent::onBeforeRun(); + } + + public function onRunJob() { + global $app, $conf; + + //###################################################################################################### + // Create goaccess statistics + //###################################################################################################### + + $sql = "SELECT domain_id, domain, document_root, web_folder, type, system_user, system_group, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') and stats_type = 'goaccess' AND server_id = ?"; + $records = $app->db->queryAllRecords($sql, $conf['server_id']); + + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + + $goaccess_conf_dir = '/etc/'; + $goaccess_conf_main = $goaccess_conf_dir . 'goaccess.conf'; + + if(!file_exists($goaccess_conf_main) || !isset($goaccess_conf_main)) + { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); + } + + /* Check wether the goaccess binary is in path */ + system('type goaccess', $retval); + if ($retval === 0) { + + foreach($records as $rec) { + $yesterday = date('Ymd', strtotime("-1 day", time())); + + $log_folder = 'log'; + + if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') { + $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $rec['parent_domain_id']); + $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']); + if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id']; + $log_folder .= '/' . $subdomain_host; + unset($tmp); + } + + $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + + if(!@is_file($logfile)) { + $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); + if(!@is_file($logfile)) { + continue; + } + } + + $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web'); + $domain = escapeshellcmd($rec['domain']); + $statsdir = escapeshellcmd($rec['document_root'].'/'.$web_folder.'/stats'); + $goaccess_conf = escapeshellcmd($rec['document_root'].'/log/goaccess.conf'); + + /* + In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. + By default the originally, with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. + */ + + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + } elseif(!file_exists($goaccess_conf)) { + /* + By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. + Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + */ + copy($goaccess_conf_main, $goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + } + + /* Update the primary domain name in the title, it could occasionally change */ + if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { + $goaccess_content = file_get_contents($goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)?/m', "html-report-title $domain", file_get_contents($goaccess_conf))); + } + + + + if(!@is_dir($statsdir)) mkdir($statsdir); + $username = escapeshellcmd($rec['system_user']); + $groupname = escapeshellcmd($rec['system_group']); + $docroot = $rec['document_root']; + + $goa_db_dir = $docroot.'/'.$web_folder.'/stats/.db/'; + $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; + if(!@is_dir($goa_db_dir)) mkdir($goa_db_dir); + + if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); + symlink($logfile, '/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); + + + chown($statsdir, $username); + chgrp($statsdir, $groupname); + + $goamonth = date("n"); + $goayear = date("Y"); + + if (date("d") == 1) { + $goamonth = date("m")-1; + if (date("m") == 1) { + $goayear = date("Y")-1; + $goamonth = "12"; + } + } + + + if (date("d") == 2) { + $goamonth = date("m")-1; + if (date("m") == 1) { + $goayear = date("Y")-1; + $goamonth = "12"; + } + + $statsdirold = $statsdir."/".$goayear."-".$goamonth."/"; + + if(!is_dir($statsdirold)) { + mkdir($statsdirold); + } + + rename($goa_db_dir, $statsdirold.'db'); + mkdir($goa_db_dir); + + $files = scandir($statsdir); + foreach ($files as $file) { + if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); + } + } + + $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); + + if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } else { + copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } + } + + $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); + + + if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); + chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); + } + + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + + } + } else { + $app->log("Stats not generated. The GoAccess binary couldn't be found. Make sure that GoAccess is installed and that it is in \$PATH", LOGLEVEL_WARN); + } + + parent::onRunJob(); + } + + /* this function is optional if it contains no custom code */ + public function onAfterRun() { + global $app; + + parent::onAfterRun(); + } + +} + +?> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 26f2948256..1bebab55f4 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1863,6 +1863,12 @@ class apache2_plugin { $this->awstats_update($data, $web_config); } + //* Create GoAccess configuration + if($data['new']['stats_type'] == 'goaccess' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + $this->goaccess_update($data, $web_config); + } + + //* Remove Stats-Folder when Statistics set to none if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); @@ -2973,6 +2979,67 @@ class apache2_plugin { } } + //* Update the GoAccess configuration file + private function goaccess_update ($data, $web_config) { + global $app; + + $web_folder = $data['new']['web_folder']; + if($data['new']['type'] == 'vhost') $web_folder = 'web'; + + $goaccess_conf_dir = '/etc/'; + $goaccess_conf_main = $goaccess_conf_dir.'goaccess.conf'; + + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); + $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + + + /* + In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. + By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. + */ + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + } elseif(!file_exists($goaccess_conf)) { + /* + By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. + Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + */ + copy($goaccess_conf_main, $goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + } + + if(file_exists($goaccess_conf)) { + $domain = escapeshellcmd($data['new']['domain']); + file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", file_get_contents($goaccess_conf))); + } + + if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { + $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); + } else { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); + } + + if(is_file($data['new']['document_root']."/" . $web_folder . "/stats/index.html")) $app->system->unlink($data['new']['document_root']."/" . $web_folder . "/stats/index.html"); + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); + } else { + $app->system->copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); + } + } + + //* Delete the GoAccess configuration file + private function goaccess_delete ($data, $web_config) { + global $app; + + $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + + if ( @is_file($goaccess_conf) ) { + $app->system->unlink($goaccess_conf); + $app->log('Removed GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); + } + } + + //* Delete the awstats configuration file private function awstats_delete ($data, $web_config) { global $app; -- GitLab From fa064a7cab3f1c02a8e0bb4805c97f742ae7d8bb Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Mon, 27 Jul 2020 12:27:13 +0200 Subject: [PATCH 526/571] missed nginx_plugin code in previous commit --- server/plugins-available/nginx_plugin.inc.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index ad6fc5f07b..d02811ad93 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2532,6 +2532,71 @@ class nginx_plugin { //$app->services->restartServiceDelayed('httpd','reload'); } + + + //* Update the GoAccess configuration file + private function goaccess_update ($data, $web_config) { + global $app; + + $web_folder = $data['new']['web_folder']; + if($data['new']['type'] == 'vhost') $web_folder = 'web'; + + $goaccess_conf_dir = '/etc/'; + $goaccess_conf_main = $goaccess_conf_dir.'goaccess.conf'; + + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); + $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + + + /* + In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. + By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. + */ + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + } elseif(!file_exists($goaccess_conf)) { + /* + By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. + Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + */ + copy($goaccess_conf_main, $goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + } + + if(file_exists($goaccess_conf)) { + $domain = escapeshellcmd($data['new']['domain']); + file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", file_get_contents($goaccess_conf))); + } + + if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { + $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); + } else { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); + } + + if(is_file($data['new']['document_root']."/" . $web_folder . "/stats/index.html")) $app->system->unlink($data['new']['document_root']."/" . $web_folder . "/stats/index.html"); + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); + } else { + $app->system->copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); + } + } + + //* Delete the GoAccess configuration file + private function goaccess_delete ($data, $web_config) { + global $app; + + $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + + if ( @is_file($goaccess_conf) ) { + $app->system->unlink($goaccess_conf); + $app->log('Removed GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); + } + } + + + + //* Update the awstats configuration file private function awstats_update ($data, $web_config) { global $app; -- GitLab From 49779a62a20fb5a2293de771040b041431f9f82f Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 27 Jul 2020 12:48:43 +0200 Subject: [PATCH 527/571] Combine user and interface settings (#5626) --- .../web/tools/form/user_settings.tform.php | 78 +++++++++++++++ .../web/tools/lib/lang/ar_usersettings.lng | 3 + .../web/tools/lib/lang/bg_usersettings.lng | 3 + .../web/tools/lib/lang/br_usersettings.lng | 3 + .../web/tools/lib/lang/ca_usersettings.lng | 3 + .../web/tools/lib/lang/cz_usersettings.lng | 3 + .../web/tools/lib/lang/de_usersettings.lng | 3 + .../web/tools/lib/lang/dk_usersettings.lng | 3 + .../web/tools/lib/lang/el_usersettings.lng | 2 + .../web/tools/lib/lang/en_usersettings.lng | 7 ++ .../web/tools/lib/lang/es_usersettings.lng | 3 + .../web/tools/lib/lang/fi_usersettings.lng | 3 + .../web/tools/lib/lang/fr_usersettings.lng | 3 + .../web/tools/lib/lang/hr_usersettings.lng | 3 + .../web/tools/lib/lang/hu_usersettings.lng | 3 + .../web/tools/lib/lang/id_usersettings.lng | 3 + .../web/tools/lib/lang/it_usersettings.lng | 3 + .../web/tools/lib/lang/ja_usersettings.lng | 3 + .../web/tools/lib/lang/nl_usersettings.lng | 3 + .../web/tools/lib/lang/pl_usersettings.lng | 3 + .../web/tools/lib/lang/pt_usersettings.lng | 3 + .../web/tools/lib/lang/ro_usersettings.lng | 3 + .../web/tools/lib/lang/ru_usersettings.lng | 5 + .../web/tools/lib/lang/se_usersettings.lng | 3 + .../web/tools/lib/lang/sk_usersettings.lng | 3 + .../web/tools/lib/lang/tr_usersettings.lng | 3 + interface/web/tools/lib/module.conf.php | 23 +---- .../web/tools/templates/user_settings.htm | 99 +++++++++++-------- interface/web/tools/user_settings.php | 34 ++++++- 29 files changed, 249 insertions(+), 65 deletions(-) diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php index 7daa1a7b84..a696d75339 100644 --- a/interface/web/tools/form/user_settings.tform.php +++ b/interface/web/tools/form/user_settings.tform.php @@ -92,6 +92,46 @@ while ($file = @readdir($handle)) { } } } +//* Pick out modules +//* TODO: limit to activated modules of the user +$modules_list = array(); +if($_SESSION["s"]["user"]["typ"] == 'admin') { + $handle = @opendir(ISPC_WEB_PATH); + while ($file = @readdir($handle)) { + if ($file != '.' && $file != '..') { + if(@is_dir(ISPC_WEB_PATH."/$file")) { + if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer' && $file != 'mailuser') { + $modules_list[$file] = $file; + } + } + } + } +} else { + $tmp = $app->db->queryOneRecord("SELECT * FROM sys_user where username = ?", $_SESSION["s"]["user"]['username']); + $modules = $tmp['modules']; + //$modules = $conf['interface_modules_enabled']; + if($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { + $modules .= ',client'; + } + $tmp = explode(',', $modules); + foreach($tmp as $m) { + $modules_list[$m] = $m; + } +} + +//* Load themes +$themes_list = array(); +$handle = @opendir(ISPC_THEMES_PATH); +while ($file = @readdir($handle)) { + if (substr($file, 0, 1) != '.') { + if(@is_dir(ISPC_THEMES_PATH."/$file")) { + if(!file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") || (@file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") && trim(@file_get_contents(ISPC_THEMES_PATH."/$file/ispconfig_version")) == ISPC_APP_VERSION)) { + $themes_list[$file] = $file; + } + } + } +} + $form['tabs']['users'] = array ( 'title' => 'Settings', @@ -141,6 +181,44 @@ $form['tabs']['users'] = array ( 'maxlength' => '2', 'rows' => '', 'cols' => '' + ), + 'startmodule' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'startmodule_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'startmodule_regex'), + ), + 'regex' => '', + 'errmsg' => '', + 'default' => '', + 'value' => $modules_list, + 'separator' => '', + 'width' => '30', + 'maxlength' => '255', + 'rows' => '', + 'cols' => '' + ), + 'app_theme' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'app_theme_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-z0-9\_]{0,64}$/', + 'errmsg'=> 'app_theme_regex'), + ), + 'regex' => '', + 'errmsg' => '', + 'default' => 'default', + 'value' => $themes_list, + 'separator' => '', + 'width' => '30', + 'maxlength' => '255', + 'rows' => '', + 'cols' => '' ) //################################# // ENDE Datenbankfelder diff --git a/interface/web/tools/lib/lang/ar_usersettings.lng b/interface/web/tools/lib/lang/ar_usersettings.lng index 4ac506ab77..c05b94e76e 100644 --- a/interface/web/tools/lib/lang/ar_usersettings.lng +++ b/interface/web/tools/lib/lang/ar_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/bg_usersettings.lng b/interface/web/tools/lib/lang/bg_usersettings.lng index 838053f563..c30dcf3701 100644 --- a/interface/web/tools/lib/lang/bg_usersettings.lng +++ b/interface/web/tools/lib/lang/bg_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/br_usersettings.lng b/interface/web/tools/lib/lang/br_usersettings.lng index cb3ae2dc4f..e254e81a4f 100644 --- a/interface/web/tools/lib/lang/br_usersettings.lng +++ b/interface/web/tools/lib/lang/br_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Gerar Senha'; $wb['repeat_password_txt'] = 'Repetir Senha'; $wb['password_mismatch_txt'] = 'As senhas não coincidem.'; $wb['password_match_txt'] = 'As senhas coincidem.'; +$wb['language_txt'] = 'Idioma'; +$wb['startmodule_txt'] = 'Módulo Inicial'; +$wb['app_theme_txt'] = 'Tema'; ?> diff --git a/interface/web/tools/lib/lang/ca_usersettings.lng b/interface/web/tools/lib/lang/ca_usersettings.lng index fa40272aa0..4705660b9e 100644 --- a/interface/web/tools/lib/lang/ca_usersettings.lng +++ b/interface/web/tools/lib/lang/ca_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Générer mot de passe'; $wb['repeat_password_txt'] = 'Retaper 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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Page d\'accueil'; +$wb['app_theme_txt'] = 'Interface'; ?> diff --git a/interface/web/tools/lib/lang/cz_usersettings.lng b/interface/web/tools/lib/lang/cz_usersettings.lng index ab76b2261d..f447299e08 100644 --- a/interface/web/tools/lib/lang/cz_usersettings.lng +++ b/interface/web/tools/lib/lang/cz_usersettings.lng @@ -9,4 +9,7 @@ $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodujÃ.'; $wb['password_match_txt'] = 'Hesla se shodujÃ.'; $wb['password_txt'] = 'Heslo'; +$wb['language_txt'] = 'Jazyk'; +$wb['startmodule_txt'] = 'Výchozà modul po pÅ™ihlášenÃ'; +$wb['app_theme_txt'] = 'Výchozà grafické téma'; ?> diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng index c643d38ff4..dd5fefffae 100644 --- a/interface/web/tools/lib/lang/de_usersettings.lng +++ b/interface/web/tools/lib/lang/de_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Passwort erzeugen'; $wb['repeat_password_txt'] = 'Passwort wiederholen'; $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; +$wb['language_txt'] = 'Sprache'; +$wb['startmodule_txt'] = 'Startmodul'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/dk_usersettings.lng b/interface/web/tools/lib/lang/dk_usersettings.lng index 9398f2626a..341d9db757 100644 --- a/interface/web/tools/lib/lang/dk_usersettings.lng +++ b/interface/web/tools/lib/lang/dk_usersettings.lng @@ -9,4 +9,7 @@ $wb['repeat_password_txt'] = 'Gentage Adgangskode'; $wb['password_mismatch_txt'] = 'Adgangskoderne stemmer ikke overens.'; $wb['password_match_txt'] = 'Adgangskoderne stemmer overens.'; $wb['password_txt'] = 'Password'; +$wb['language_txt'] = 'Sprog'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/el_usersettings.lng b/interface/web/tools/lib/lang/el_usersettings.lng index 57e8bcb17a..68ddcd657c 100644 --- a/interface/web/tools/lib/lang/el_usersettings.lng +++ b/interface/web/tools/lib/lang/el_usersettings.lng @@ -9,4 +9,6 @@ $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['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/en_usersettings.lng b/interface/web/tools/lib/lang/en_usersettings.lng index 79c7437cb1..601ae420ff 100644 --- a/interface/web/tools/lib/lang/en_usersettings.lng +++ b/interface/web/tools/lib/lang/en_usersettings.lng @@ -9,4 +9,11 @@ $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["language_txt"] = 'Language'; +$wb["startmodule_txt"] = 'Startmodule'; +$wb["app_theme_txt"] = 'Design'; +$wb['startmodule_empty'] = 'Startmodule empty.'; +$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; +$wb['app_theme_empty'] = 'App theme empty.'; +$wb['app_theme_regex'] = 'Invalid chars in App theme.'; ?> diff --git a/interface/web/tools/lib/lang/es_usersettings.lng b/interface/web/tools/lib/lang/es_usersettings.lng index 9b2de57bfb..43a181a11c 100644 --- a/interface/web/tools/lib/lang/es_usersettings.lng +++ b/interface/web/tools/lib/lang/es_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generar contraseña'; $wb['repeat_password_txt'] = 'Repetir contraseña'; $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; $wb['password_match_txt'] = 'Las contraseñas coinciden.'; +$wb['language_txt'] = 'Idioma'; +$wb['startmodule_txt'] = 'Módulo de inicio'; +$wb['app_theme_txt'] = 'Diseño'; ?> diff --git a/interface/web/tools/lib/lang/fi_usersettings.lng b/interface/web/tools/lib/lang/fi_usersettings.lng index 8267c8117a..91d7173953 100644 --- a/interface/web/tools/lib/lang/fi_usersettings.lng +++ b/interface/web/tools/lib/lang/fi_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/fr_usersettings.lng b/interface/web/tools/lib/lang/fr_usersettings.lng index bafccd3b97..b398e76e35 100644 --- a/interface/web/tools/lib/lang/fr_usersettings.lng +++ b/interface/web/tools/lib/lang/fr_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/hr_usersettings.lng b/interface/web/tools/lib/lang/hr_usersettings.lng index 50759d4883..b707cce4da 100644 --- a/interface/web/tools/lib/lang/hr_usersettings.lng +++ b/interface/web/tools/lib/lang/hr_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Jezik'; +$wb['startmodule_txt'] = 'PoÄetna stranica'; +$wb['app_theme_txt'] = 'Tema'; ?> diff --git a/interface/web/tools/lib/lang/hu_usersettings.lng b/interface/web/tools/lib/lang/hu_usersettings.lng index 49aa75537f..2a89acf5b5 100644 --- a/interface/web/tools/lib/lang/hu_usersettings.lng +++ b/interface/web/tools/lib/lang/hu_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/id_usersettings.lng b/interface/web/tools/lib/lang/id_usersettings.lng index 7b1bc225ca..760cfe75f2 100644 --- a/interface/web/tools/lib/lang/id_usersettings.lng +++ b/interface/web/tools/lib/lang/id_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/it_usersettings.lng b/interface/web/tools/lib/lang/it_usersettings.lng index e75e8d28d2..a1ad8eba87 100644 --- a/interface/web/tools/lib/lang/it_usersettings.lng +++ b/interface/web/tools/lib/lang/it_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/ja_usersettings.lng b/interface/web/tools/lib/lang/ja_usersettings.lng index 443a451054..291aa94537 100644 --- a/interface/web/tools/lib/lang/ja_usersettings.lng +++ b/interface/web/tools/lib/lang/ja_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/nl_usersettings.lng b/interface/web/tools/lib/lang/nl_usersettings.lng index 0a95f7ffa9..909df9dbec 100644 --- a/interface/web/tools/lib/lang/nl_usersettings.lng +++ b/interface/web/tools/lib/lang/nl_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Taal'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/pl_usersettings.lng b/interface/web/tools/lib/lang/pl_usersettings.lng index 45081f681b..64396df240 100644 --- a/interface/web/tools/lib/lang/pl_usersettings.lng +++ b/interface/web/tools/lib/lang/pl_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Wygeneruj hasÅ‚o'; $wb['repeat_password_txt'] = 'Powtórz hasÅ‚o'; $wb['password_mismatch_txt'] = 'HasÅ‚a siÄ™ nie zgadzajÄ…'; $wb['password_match_txt'] = 'HasÅ‚a siÄ™ zgadzajÄ…'; +$wb['language_txt'] = 'JÄ™zyk'; +$wb['startmodule_txt'] = 'ModuÅ‚ startowy'; +$wb['app_theme_txt'] = 'Temat'; ?> diff --git a/interface/web/tools/lib/lang/pt_usersettings.lng b/interface/web/tools/lib/lang/pt_usersettings.lng index 81fd824d30..4925a3f728 100644 --- a/interface/web/tools/lib/lang/pt_usersettings.lng +++ b/interface/web/tools/lib/lang/pt_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/ro_usersettings.lng b/interface/web/tools/lib/lang/ro_usersettings.lng index fae890fab6..8c43550f33 100644 --- a/interface/web/tools/lib/lang/ro_usersettings.lng +++ b/interface/web/tools/lib/lang/ro_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/ru_usersettings.lng b/interface/web/tools/lib/lang/ru_usersettings.lng index 609b69fdb0..ffa3f3bf03 100644 --- a/interface/web/tools/lib/lang/ru_usersettings.lng +++ b/interface/web/tools/lib/lang/ru_usersettings.lng @@ -9,4 +9,9 @@ $wb['generate_password_txt'] = 'Создать пароль'; $wb['repeat_password_txt'] = 'Повторить пароль'; $wb['password_mismatch_txt'] = 'Пароли не Ñовпадают.'; $wb['password_match_txt'] = 'Ðти пароли Ñовпадают.'; +$wb['interface_head_txt'] = 'ÐаÑтройки интерфейÑа'; +$wb['interface_desc_txt'] = 'Измените Ñвой интерфейÑ'; +$wb['language_txt'] = 'Язык'; +$wb['startmodule_txt'] = 'Стартовый модуль'; +$wb['app_theme_txt'] = 'Тема'; ?> diff --git a/interface/web/tools/lib/lang/se_usersettings.lng b/interface/web/tools/lib/lang/se_usersettings.lng index 4461fff496..f6de2dc4ee 100644 --- a/interface/web/tools/lib/lang/se_usersettings.lng +++ b/interface/web/tools/lib/lang/se_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'SprÃ¥k'; +$wb['startmodule_txt'] = 'Startmodul'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/sk_usersettings.lng b/interface/web/tools/lib/lang/sk_usersettings.lng index 4c8bcb900e..e00f5e664b 100644 --- a/interface/web/tools/lib/lang/sk_usersettings.lng +++ b/interface/web/tools/lib/lang/sk_usersettings.lng @@ -9,4 +9,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['language_txt'] = 'Language'; +$wb['startmodule_txt'] = 'Startmodule'; +$wb['app_theme_txt'] = 'Design'; ?> diff --git a/interface/web/tools/lib/lang/tr_usersettings.lng b/interface/web/tools/lib/lang/tr_usersettings.lng index fa2eff63d7..a1fd7c56d4 100644 --- a/interface/web/tools/lib/lang/tr_usersettings.lng +++ b/interface/web/tools/lib/lang/tr_usersettings.lng @@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Parola Ãœret'; $wb['repeat_password_txt'] = 'Parola Onayı'; $wb['password_mismatch_txt'] = 'Parola ile onayı aynı deÄŸil.'; $wb['password_match_txt'] = 'Parola ile onayı aynı.'; +$wb['language_txt'] = 'Dil'; +$wb['startmodule_txt'] = 'BaÅŸlangıç modülü'; +$wb['app_theme_txt'] = 'Tasarım'; ?> diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php index 617ab0b6cd..5911cdbebf 100644 --- a/interface/web/tools/lib/module.conf.php +++ b/interface/web/tools/lib/module.conf.php @@ -5,7 +5,7 @@ global $conf; $module['name'] = 'tools'; $module['title'] = 'top_menu_tools'; $module['template'] = 'module.tpl.htm'; -$module['startpage'] = 'tools/index.php'; +$module['startpage'] = 'tools/user_settings.php'; $module['tab_width'] = '60'; $module['order'] = '80'; @@ -13,7 +13,7 @@ $module['order'] = '80'; //**** Change User password $items = array(); -$items[] = array( 'title' => 'Password and Language', +$items[] = array( 'title' => 'User Settings', 'target' => 'content', 'link' => 'tools/user_settings.php', 'html_id' => 'user_settings'); @@ -24,23 +24,4 @@ $module['nav'][] = array( 'title' => 'User Settings', 'items' => $items); unset($items); - -//**** Change interface settings + load settings page of the activated theme -$items = array(); - -$items[] = array( 'title' => 'Interface', - 'target' => 'content', - 'link' => 'tools/interface_settings.php', - 'html_id' => 'interface_settings'); - -if(file_exists(ISPC_WEB_PATH.'/tools/lib/interface.d/tpl_' . $_SESSION['s']['user']['app_theme'] . '.menu.php')) include_once ISPC_WEB_PATH.'/tools/lib/interface.d/tpl_' . $_SESSION['s']['user']['app_theme'] . '.menu.php'; - -$module['nav'][] = array( 'title' => 'Interface', - 'open' => 1, - 'items' => $items); - -unset($items); - - - ?> diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm index 4fa1c9de34..a620f419c5 100644 --- a/interface/web/tools/templates/user_settings.htm +++ b/interface/web/tools/templates/user_settings.htm @@ -1,41 +1,58 @@ - <div class="form-group"> - <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> - <div class="col-sm-9"> - <div class="input-group"> - <input type="password" name="passwort" id="passwort" value="{tmpl_var name='passwort'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');" /> - <span class="input-group-btn"> - <button class="btn btn-default" type="button" onclick="generatePassword('passwort','repeat_password');">{tmpl_var name='generate_password_txt'}</button> - </span> - </div> - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label> - <div class="col-sm-9 checkbox"> - <div id="passBar"></div> - <span id="passText"> </span> - </div> - </div> - <div class="form-group"> - <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> - <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('passwort','repeat_password');" /></div></div> - <div class="form-group"> - <div class="col-sm-offset-3 col-sm-9"> - <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> - <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> - </div> - </div> - <div class="form-group"> - <label for="language" class="col-sm-3 control-label">{tmpl_var name='language_txt'}</label> - <div class="col-sm-9"><select name="language" id="language" class="form-control flags"> - {tmpl_var name='language'} - </select></div> - </div> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/user_settings.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> +<div class="form-group"> + <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> + <div class="col-sm-9"> + <div class="input-group"> + <input type="password" name="passwort" id="passwort" value="{tmpl_var name='passwort'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');" /> + <span class="input-group-btn"> + <button class="btn btn-default" type="button" onclick="generatePassword('passwort','repeat_password');">{tmpl_var name='generate_password_txt'}</button> + </span> + </div> + </div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label> + <div class="col-sm-9 checkbox"> + <div id="passBar"></div> + <span id="passText"> </span> + </div> +</div> +<div class="form-group"> + <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> + <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('passwort','repeat_password');" /></div> +</div> +<div class="form-group"> + <div class="col-sm-offset-3 col-sm-9"> + <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> + <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> + </div> +</div> +<div class="form-group"> + <label for="language" class="col-sm-3 control-label">{tmpl_var name='language_txt'}</label> + <div class="col-sm-9"><select name="language" id="language" class="form-control flags"> + {tmpl_var name='language'} + </select> + </div> +</div> +<!-- TODO: If user theme change is activated --> +<div class="form-group"> + <label for="app_theme" class="col-sm-3 control-label">{tmpl_var name='app_theme_txt'}</label> + <div class="col-sm-9"><select name="app_theme" id="app_theme" class="form-control"> + {tmpl_var name='app_theme'} + </select> + </div> +</div> +<!-- TODO: Limit to activated modules --> +<div class="form-group"> + <label for="startmodule" class="col-sm-3 control-label">{tmpl_var name='startmodule_txt'}</label> + <div class="col-sm-9"><select name="startmodule" id="startmodule" class="form-control"> + {tmpl_var name='startmodule'} + </select> + </div> +</div> +<input type="hidden" name="id" value="{tmpl_var name='id'}"> +<div class="clear"> + <div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/user_settings.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button> + </div> +</div> diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php index 5c3876fb86..03c0b6a7e2 100644 --- a/interface/web/tools/user_settings.php +++ b/interface/web/tools/user_settings.php @@ -86,22 +86,50 @@ class page_action extends tform_actions { if($_POST['passwort'] != $_POST['repeat_password']) { $app->tform->errorMessage = $app->tform->lng('password_mismatch'); } - + $language = $app->functions->check_language($_POST['language']); $_SESSION['s']['user']['language'] = $language; $_SESSION['s']['language'] = $language; } - + function onAfterUpdate() { global $app; - + if($_POST['passwort'] != '') { $tmp_user = $app->db->queryOneRecord("SELECT passwort FROM sys_user WHERE userid = ?", $_SESSION['s']['user']['userid']); $_SESSION['s']['user']['passwort'] = $tmp_user['passwort']; unset($tmp_user); } + $this->updateSessionTheme(); + + if($this->_theme_changed == true) { + // not the best way, but it works + header('Content-Type: text/html'); + print '<script type="text/javascript">document.location.reload();</script>'; + exit; + } } + var $_theme_changed = false; + function updateSessionTheme() { + global $app, $conf; + + if($this->dataRecord['app_theme'] != 'default') { + $tmp_path = ISPC_THEMES_PATH."/".$this->dataRecord['app_theme']; + if(!@is_dir($tmp_path) || (@file_exists($tmp_path."/ispconfig_version") && trim(file_get_contents($tmp_path."/ispconfig_version")) != ISPC_APP_VERSION)) { + // fall back to default theme if this one is not compatible with current ispc version + $this->dataRecord['app_theme'] = 'default'; + } + } + if($this->dataRecord['app_theme'] != $_SESSION['s']['user']['theme']) $this->_theme_changed = true; + $_SESSION['s']['theme'] = $this->dataRecord['app_theme']; + $_SESSION['s']['user']['theme'] = $_SESSION['s']['theme']; + $_SESSION['s']['user']['app_theme'] = $_SESSION['s']['theme']; + } + + function onAfterInsert() { + $this->onAfterUpdate(); + } } -- GitLab From 94ba1c2be5a325783be3b432282ab03c1a13c85f Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 27 Jul 2020 12:57:09 +0200 Subject: [PATCH 528/571] Remove old interface settings files (#5626) --- .../tools/form/interface_settings.tform.php | 189 ------------------ interface/web/tools/interface_settings.php | 139 ------------- interface/web/tools/lib/lang/ar_interface.lng | 7 - interface/web/tools/lib/lang/bg_interface.lng | 7 - interface/web/tools/lib/lang/br_interface.lng | 7 - interface/web/tools/lib/lang/ca_interface.lng | 7 - interface/web/tools/lib/lang/cz_interface.lng | 7 - interface/web/tools/lib/lang/de_interface.lng | 7 - interface/web/tools/lib/lang/dk_interface.lng | 7 - interface/web/tools/lib/lang/el_interface.lng | 7 - interface/web/tools/lib/lang/en_interface.lng | 11 - interface/web/tools/lib/lang/es_interface.lng | 7 - interface/web/tools/lib/lang/fi_interface.lng | 7 - interface/web/tools/lib/lang/fr_interface.lng | 7 - interface/web/tools/lib/lang/hr_interface.lng | 7 - interface/web/tools/lib/lang/hu_interface.lng | 7 - interface/web/tools/lib/lang/id_interface.lng | 7 - interface/web/tools/lib/lang/it_interface.lng | 7 - interface/web/tools/lib/lang/ja_interface.lng | 7 - interface/web/tools/lib/lang/nl_interface.lng | 7 - interface/web/tools/lib/lang/pl_interface.lng | 7 - interface/web/tools/lib/lang/pt_interface.lng | 7 - interface/web/tools/lib/lang/ro_interface.lng | 7 - interface/web/tools/lib/lang/ru_interface.lng | 7 - interface/web/tools/lib/lang/se_interface.lng | 7 - interface/web/tools/lib/lang/sk_interface.lng | 7 - interface/web/tools/lib/lang/tr_interface.lng | 7 - .../tools/templates/interface_settings.htm | 22 -- 28 files changed, 529 deletions(-) delete mode 100644 interface/web/tools/form/interface_settings.tform.php delete mode 100644 interface/web/tools/interface_settings.php delete mode 100644 interface/web/tools/lib/lang/ar_interface.lng delete mode 100644 interface/web/tools/lib/lang/bg_interface.lng delete mode 100644 interface/web/tools/lib/lang/br_interface.lng delete mode 100644 interface/web/tools/lib/lang/ca_interface.lng delete mode 100644 interface/web/tools/lib/lang/cz_interface.lng delete mode 100644 interface/web/tools/lib/lang/de_interface.lng delete mode 100644 interface/web/tools/lib/lang/dk_interface.lng delete mode 100644 interface/web/tools/lib/lang/el_interface.lng delete mode 100644 interface/web/tools/lib/lang/en_interface.lng delete mode 100644 interface/web/tools/lib/lang/es_interface.lng delete mode 100644 interface/web/tools/lib/lang/fi_interface.lng delete mode 100644 interface/web/tools/lib/lang/fr_interface.lng delete mode 100644 interface/web/tools/lib/lang/hr_interface.lng delete mode 100644 interface/web/tools/lib/lang/hu_interface.lng delete mode 100644 interface/web/tools/lib/lang/id_interface.lng delete mode 100644 interface/web/tools/lib/lang/it_interface.lng delete mode 100644 interface/web/tools/lib/lang/ja_interface.lng delete mode 100644 interface/web/tools/lib/lang/nl_interface.lng delete mode 100644 interface/web/tools/lib/lang/pl_interface.lng delete mode 100644 interface/web/tools/lib/lang/pt_interface.lng delete mode 100644 interface/web/tools/lib/lang/ro_interface.lng delete mode 100644 interface/web/tools/lib/lang/ru_interface.lng delete mode 100644 interface/web/tools/lib/lang/se_interface.lng delete mode 100644 interface/web/tools/lib/lang/sk_interface.lng delete mode 100644 interface/web/tools/lib/lang/tr_interface.lng delete mode 100644 interface/web/tools/templates/interface_settings.htm diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php deleted file mode 100644 index 05eaba9416..0000000000 --- a/interface/web/tools/form/interface_settings.tform.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php - -/* -Copyright (c) 2005, Till Brehm, projektfarm Gmbh -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. -*/ - -/* - Form Definition - - Tabellendefinition - - Datentypen: - - INTEGER (Wandelt Ausdr�cke in Int um) - - DOUBLE - - CURRENCY (Formatiert Zahlen nach W�hrungsnotation) - - VARCHAR (kein weiterer Format Check) - - TEXT (kein weiterer Format Check) - - DATE (Datumsformat, Timestamp Umwandlung) - - Formtype: - - TEXT (normales Textfeld) - - TEXTAREA (normales Textfeld) - - PASSWORD (Feldinhalt wird nicht angezeigt) - - SELECT (Gibt Werte als option Feld aus) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hinweis: - Das ID-Feld ist nicht bei den Table Values einzuf�gen. - - -*/ - -$form['title'] = 'interface_head_txt'; -//*$form['description'] = 'interface_desc_txt'; -$form['name'] = 'interface'; -$form['action'] = 'interface_settings.php'; -$form['db_table'] = 'sys_user'; -$form['db_table_idx'] = 'userid'; -$form["db_history"] = "no"; -$form['tab_default'] = 'main'; -$form['list_default'] = 'index.php'; -$form['auth'] = 'no'; //?? - -//* 0 = id of the user, > 0 id must match with id of current user -$form['auth_preset']['userid'] = 0; -//* 0 = default groupid of the user, > 0 id must match with groupid of current user -$form['auth_preset']['groupid'] = 0; - -//** Permissions are: r = read, i = insert, u = update, d = delete -$form['auth_preset']['perm_user'] = 'riud'; -$form['auth_preset']['perm_group'] = 'riud'; -$form['auth_preset']['perm_other'] = ''; - -//* Pick out modules -//* TODO: limit to activated modules of the user -$modules_list = array(); -if($_SESSION["s"]["user"]["typ"] == 'admin') { - $handle = @opendir(ISPC_WEB_PATH); - while ($file = @readdir($handle)) { - if ($file != '.' && $file != '..') { - if(@is_dir(ISPC_WEB_PATH."/$file")) { - if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer' && $file != 'mailuser') { - $modules_list[$file] = $file; - } - } - } - } -} else { - $tmp = $app->db->queryOneRecord("SELECT * FROM sys_user where username = ?", $_SESSION["s"]["user"]['username']); - $modules = $tmp['modules']; - //$modules = $conf['interface_modules_enabled']; - if($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { - $modules .= ',client'; - } - $tmp = explode(',', $modules); - foreach($tmp as $m) { - $modules_list[$m] = $m; - } -} - -//* Languages -$language_list = array(); -$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang'); -while ($file = @readdir($handle)) { - if ($file != '.' && $file != '..') { - if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file, -4, 4) == '.lng') { - $tmp = substr($file, 0, 2); - $language_list[$tmp] = $tmp; - } - } -} - -//* Load themes -$themes_list = array(); -$handle = @opendir(ISPC_THEMES_PATH); -while ($file = @readdir($handle)) { - if (substr($file, 0, 1) != '.') { - if(@is_dir(ISPC_THEMES_PATH."/$file")) { - if(!file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") || (@file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") && trim(@file_get_contents(ISPC_THEMES_PATH."/$file/ispconfig_version")) == ISPC_APP_VERSION)) { - $themes_list[$file] = $file; - } - } - } -} - -$form['tabs']['main'] = array ( - 'title' => 'Settings', - 'width' => 80, - 'template' => 'templates/interface_settings.htm', - 'fields' => array ( - //################################# - // Beginn Datenbankfelder - //################################# - 'startmodule' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'startmodule_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-z0-9\_]{0,64}$/', - 'errmsg'=> 'startmodule_regex'), - ), - 'regex' => '', - 'errmsg' => '', - 'default' => '', - 'value' => $modules_list, - 'separator' => '', - 'width' => '30', - 'maxlength' => '255', - 'rows' => '', - 'cols' => '' - ), - 'app_theme' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'app_theme_empty'), - 1 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-z0-9\_]{0,64}$/', - 'errmsg'=> 'app_theme_regex'), - ), - 'regex' => '', - 'errmsg' => '', - 'default' => 'default', - 'value' => $themes_list, - 'separator' => '', - 'width' => '30', - 'maxlength' => '255', - 'rows' => '', - 'cols' => '' - ) - //################################# - // ENDE Datenbankfelder - //################################# - ) -); - - -?> diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php deleted file mode 100644 index b14b637375..0000000000 --- a/interface/web/tools/interface_settings.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh -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. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ - -$tform_def_file = "form/interface_settings.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('tools'); - -// Loading classes -$app->uses('tpl,tform,tform_actions'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - var $_theme_changed = false; - - function onLoad() { - global $app, $conf, $tform_def_file; - - // Loading template classes and initialize template - if(!is_object($app->tpl)) $app->uses('tpl'); - if(!is_object($app->tform)) $app->uses('tform'); - - $app->tpl->newTemplate("tabbed_form.tpl.htm"); - - // Load table definition from file - $app->tform->loadFormDef($tform_def_file); - - // Importing ID - $this->id = $_SESSION['s']['user']['userid']; - $_POST['id'] = $_SESSION['s']['user']['userid']; - - if(count($_POST) > 1) { - $this->dataRecord = $_POST; - $this->onSubmit(); - } else { - $this->onShow(); - } - } - - function onBeforeInsert() { - global $app, $conf; - - if(!in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { - $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; - } - } - - function onInsert() { - die('No inserts allowed.'); - } - - function onBeforeUpdate() { - global $app, $conf; - - if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.'; - - if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'], $this->dataRecord['modules'])) { - $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err']; - } - } - - function updateSessionTheme() { - global $app, $conf; - - if($this->dataRecord['app_theme'] != 'default') { - $tmp_path = ISPC_THEMES_PATH."/".$this->dataRecord['app_theme']; - if(!@is_dir($tmp_path) || (@file_exists($tmp_path."/ispconfig_version") && trim(file_get_contents($tmp_path."/ispconfig_version")) != ISPC_APP_VERSION)) { - // fall back to default theme if this one is not compatible with current ispc version - $this->dataRecord['app_theme'] = 'default'; - } - } - if($this->dataRecord['app_theme'] != $_SESSION['s']['user']['theme']) $this->_theme_changed = true; - $_SESSION['s']['theme'] = $this->dataRecord['app_theme']; - $_SESSION['s']['user']['theme'] = $_SESSION['s']['theme']; - $_SESSION['s']['user']['app_theme'] = $_SESSION['s']['theme']; - } - - function onAfterInsert() { - $this->onAfterUpdate(); - } - - function onAfterUpdate() { - - $this->updateSessionTheme(); - - if($this->_theme_changed == true) { - // not the best way, but it works - header('Content-Type: text/html'); - print '<script type="text/javascript">document.location.reload();</script>'; - exit; - } - //else parent::onShow(); - } - - -} - -$page = new page_action; -$page->onLoad(); - -?> diff --git a/interface/web/tools/lib/lang/ar_interface.lng b/interface/web/tools/lib/lang/ar_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/ar_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/bg_interface.lng b/interface/web/tools/lib/lang/bg_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/bg_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/br_interface.lng b/interface/web/tools/lib/lang/br_interface.lng deleted file mode 100644 index 95677c4b59..0000000000 --- a/interface/web/tools/lib/lang/br_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Configurações da Interface'; -$wb['interface_desc_txt'] = 'Alterar a interface'; -$wb['language_txt'] = 'Idioma'; -$wb['startmodule_txt'] = 'Módulo Inicial'; -$wb['app_theme_txt'] = 'Tema'; -?> diff --git a/interface/web/tools/lib/lang/ca_interface.lng b/interface/web/tools/lib/lang/ca_interface.lng deleted file mode 100644 index b252103fd9..0000000000 --- a/interface/web/tools/lib/lang/ca_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Paramètres d\'interface'; -$wb['interface_desc_txt'] = 'Modifier votre interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Page d\'accueil'; -$wb['app_theme_txt'] = 'Interface'; -?> diff --git a/interface/web/tools/lib/lang/cz_interface.lng b/interface/web/tools/lib/lang/cz_interface.lng deleted file mode 100644 index 507b7c3cbe..0000000000 --- a/interface/web/tools/lib/lang/cz_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Nastavenà rozhranÃ'; -$wb['interface_desc_txt'] = 'Možnost úpravy rozhranÃ'; -$wb['language_txt'] = 'Jazyk'; -$wb['startmodule_txt'] = 'Výchozà modul po pÅ™ihlášenÃ'; -$wb['app_theme_txt'] = 'Výchozà grafické téma'; -?> diff --git a/interface/web/tools/lib/lang/de_interface.lng b/interface/web/tools/lib/lang/de_interface.lng deleted file mode 100644 index 2af008f763..0000000000 --- a/interface/web/tools/lib/lang/de_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Benutzeroberflächen Einstellungen'; -$wb['interface_desc_txt'] = 'Passen Sie die Benutzeroberfläche für sich an'; -$wb['language_txt'] = 'Sprache'; -$wb['startmodule_txt'] = 'Startmodul'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/dk_interface.lng b/interface/web/tools/lib/lang/dk_interface.lng deleted file mode 100644 index cc17dd2f5c..0000000000 --- a/interface/web/tools/lib/lang/dk_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Indstillinger'; -$wb['interface_desc_txt'] = 'Ændre din grænseflade'; -$wb['language_txt'] = 'Sprog'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/el_interface.lng b/interface/web/tools/lib/lang/el_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/el_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/en_interface.lng b/interface/web/tools/lib/lang/en_interface.lng deleted file mode 100644 index 7cb0e2d8bc..0000000000 --- a/interface/web/tools/lib/lang/en_interface.lng +++ /dev/null @@ -1,11 +0,0 @@ -<?php -$wb["interface_head_txt"] = 'Interface Settings'; -$wb["interface_desc_txt"] = 'Modify your interface'; -$wb["language_txt"] = 'Language'; -$wb["startmodule_txt"] = 'Startmodule'; -$wb["app_theme_txt"] = 'Design'; -$wb['startmodule_empty'] = 'Startmodule empty.'; -$wb['startmodule_regex'] = 'Invalid chars in Startmodule.'; -$wb['app_theme_empty'] = 'App theme empty.'; -$wb['app_theme_regex'] = 'Invalid chars in App theme.'; -?> \ No newline at end of file diff --git a/interface/web/tools/lib/lang/es_interface.lng b/interface/web/tools/lib/lang/es_interface.lng deleted file mode 100644 index 87b94e4c4a..0000000000 --- a/interface/web/tools/lib/lang/es_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Configuración de la interfaz'; -$wb['interface_desc_txt'] = 'Modifique su interfaz'; -$wb['language_txt'] = 'Idioma'; -$wb['startmodule_txt'] = 'Módulo de inicio'; -$wb['app_theme_txt'] = 'Diseño'; -?> diff --git a/interface/web/tools/lib/lang/fi_interface.lng b/interface/web/tools/lib/lang/fi_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/fi_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/fr_interface.lng b/interface/web/tools/lib/lang/fr_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/fr_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/hr_interface.lng b/interface/web/tools/lib/lang/hr_interface.lng deleted file mode 100644 index 5cc9815a10..0000000000 --- a/interface/web/tools/lib/lang/hr_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Postavke teme'; -$wb['interface_desc_txt'] = 'Podesi temu'; -$wb['language_txt'] = 'Jezik'; -$wb['startmodule_txt'] = 'PoÄetna stranica'; -$wb['app_theme_txt'] = 'Tema'; -?> diff --git a/interface/web/tools/lib/lang/hu_interface.lng b/interface/web/tools/lib/lang/hu_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/hu_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/id_interface.lng b/interface/web/tools/lib/lang/id_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/id_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/it_interface.lng b/interface/web/tools/lib/lang/it_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/it_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/ja_interface.lng b/interface/web/tools/lib/lang/ja_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/ja_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/nl_interface.lng b/interface/web/tools/lib/lang/nl_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/nl_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/pl_interface.lng b/interface/web/tools/lib/lang/pl_interface.lng deleted file mode 100644 index 0256fab376..0000000000 --- a/interface/web/tools/lib/lang/pl_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Ustawienia interfejsu'; -$wb['interface_desc_txt'] = 'ZmieÅ„ temat interfejsu'; -$wb['language_txt'] = 'JÄ™zyk'; -$wb['startmodule_txt'] = 'ModuÅ‚ startowy'; -$wb['app_theme_txt'] = 'Temat'; -?> diff --git a/interface/web/tools/lib/lang/pt_interface.lng b/interface/web/tools/lib/lang/pt_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/pt_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/ro_interface.lng b/interface/web/tools/lib/lang/ro_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/ro_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/ru_interface.lng b/interface/web/tools/lib/lang/ru_interface.lng deleted file mode 100644 index 91644d5c2b..0000000000 --- a/interface/web/tools/lib/lang/ru_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'ÐаÑтройки интерфейÑа'; -$wb['interface_desc_txt'] = 'Измените Ñвой интерфейÑ'; -$wb['language_txt'] = 'Язык'; -$wb['startmodule_txt'] = 'Стартовый модуль'; -$wb['app_theme_txt'] = 'Тема'; -?> diff --git a/interface/web/tools/lib/lang/se_interface.lng b/interface/web/tools/lib/lang/se_interface.lng deleted file mode 100644 index 9a66f59e00..0000000000 --- a/interface/web/tools/lib/lang/se_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Gränssnittsinställnignar'; -$wb['interface_desc_txt'] = 'Ändra ditt gränssnitt'; -$wb['language_txt'] = 'SprÃ¥k'; -$wb['startmodule_txt'] = 'Startmodul'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/sk_interface.lng b/interface/web/tools/lib/lang/sk_interface.lng deleted file mode 100644 index aab4fc89ff..0000000000 --- a/interface/web/tools/lib/lang/sk_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Interface Settings'; -$wb['interface_desc_txt'] = 'Modify your interface'; -$wb['language_txt'] = 'Language'; -$wb['startmodule_txt'] = 'Startmodule'; -$wb['app_theme_txt'] = 'Design'; -?> diff --git a/interface/web/tools/lib/lang/tr_interface.lng b/interface/web/tools/lib/lang/tr_interface.lng deleted file mode 100644 index 2384c71107..0000000000 --- a/interface/web/tools/lib/lang/tr_interface.lng +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$wb['interface_head_txt'] = 'Arayüz Ayarları'; -$wb['interface_desc_txt'] = 'Arayüzü Düzenle'; -$wb['language_txt'] = 'Dil'; -$wb['startmodule_txt'] = 'BaÅŸlangıç modülü'; -$wb['app_theme_txt'] = 'Tasarım'; -?> diff --git a/interface/web/tools/templates/interface_settings.htm b/interface/web/tools/templates/interface_settings.htm deleted file mode 100644 index 6767287206..0000000000 --- a/interface/web/tools/templates/interface_settings.htm +++ /dev/null @@ -1,22 +0,0 @@ - <!-- TODO: If user theme change is activated --> - <div class="form-group"> - <label for="app_theme" class="col-sm-3 control-label">{tmpl_var name='app_theme_txt'}</label> - <div class="col-sm-9"><select name="app_theme" id="app_theme" class="form-control"> - {tmpl_var name='app_theme'} - </select></div> - </div> - <!-- TODO: Limit to activated modules --> - <div class="form-group"> - <label for="startmodule" class="col-sm-3 control-label">{tmpl_var name='startmodule_txt'}</label> - <div class="col-sm-9"><select name="startmodule" id="startmodule" class="form-control"> - {tmpl_var name='startmodule'} - </select></div> - </div> - - - <input type="hidden" name="id" value="{tmpl_var name='id'}"> - - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/interface_settings.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> -- GitLab From c094c6020c143a721d8c6e6200fd87622ac7223d Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 27 Jul 2020 13:10:06 +0200 Subject: [PATCH 529/571] Add variables for DB size (#4475) --- interface/web/monitor/lib/lang/ar.lng | 2 ++ interface/web/monitor/lib/lang/bg.lng | 2 ++ interface/web/monitor/lib/lang/br.lng | 2 ++ interface/web/monitor/lib/lang/ca.lng | 2 ++ interface/web/monitor/lib/lang/cz.lng | 2 ++ interface/web/monitor/lib/lang/de.lng | 2 ++ interface/web/monitor/lib/lang/dk.lng | 2 ++ interface/web/monitor/lib/lang/el.lng | 2 ++ interface/web/monitor/lib/lang/en.lng | 2 ++ interface/web/monitor/lib/lang/es.lng | 2 ++ interface/web/monitor/lib/lang/fi.lng | 2 ++ interface/web/monitor/lib/lang/fr.lng | 2 ++ interface/web/monitor/lib/lang/hr.lng | 2 ++ interface/web/monitor/lib/lang/hu.lng | 2 ++ interface/web/monitor/lib/lang/id.lng | 2 ++ interface/web/monitor/lib/lang/it.lng | 2 ++ interface/web/monitor/lib/lang/ja.lng | 2 ++ interface/web/monitor/lib/lang/nl.lng | 2 ++ interface/web/monitor/lib/lang/pl.lng | 2 ++ interface/web/monitor/lib/lang/pt.lng | 2 ++ interface/web/monitor/lib/lang/ro.lng | 2 ++ interface/web/monitor/lib/lang/ru.lng | 2 ++ interface/web/monitor/lib/lang/se.lng | 2 ++ interface/web/monitor/lib/lang/sk.lng | 2 ++ interface/web/monitor/lib/lang/tr.lng | 2 ++ 25 files changed, 50 insertions(+) diff --git a/interface/web/monitor/lib/lang/ar.lng b/interface/web/monitor/lib/lang/ar.lng index 9d54ea1f5d..6a63ea9ab5 100644 --- a/interface/web/monitor/lib/lang/ar.lng +++ b/interface/web/monitor/lib/lang/ar.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/bg.lng b/interface/web/monitor/lib/lang/bg.lng index a8b7f491ac..ec28969581 100644 --- a/interface/web/monitor/lib/lang/bg.lng +++ b/interface/web/monitor/lib/lang/bg.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index 172891cfd9..781dd1e7e1 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -163,4 +163,6 @@ $wb['no_permissions_to_view_monit_txt'] = 'Você não tem permissão para acessa $wb['Show Munin'] = 'Exibir Munin'; $wb['no_munin_url_defined_txt'] = 'Nenhuma URL do Munin definida.'; $wb['no_permissions_to_view_munin_txt'] = 'Você não tem permissão para acessar o Munin.'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/ca.lng b/interface/web/monitor/lib/lang/ca.lng index b57b255a74..ebceac3467 100644 --- a/interface/web/monitor/lib/lang/ca.lng +++ b/interface/web/monitor/lib/lang/ca.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index be2d9eadbb..604fbd5ceb 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Doména'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Zobrazit historii datového logu'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/de.lng b/interface/web/monitor/lib/lang/de.lng index f8fabe7990..63cb5b9848 100644 --- a/interface/web/monitor/lib/lang/de.lng +++ b/interface/web/monitor/lib/lang/de.lng @@ -162,4 +162,6 @@ $wb['monitor_database_name_txt'] = 'Database'; $wb['monitor_database_size_txt'] = 'Size'; $wb['monitor_database_client_txt'] = 'Client'; $wb['monitor_database_domain_txt'] = 'Domain'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/dk.lng b/interface/web/monitor/lib/lang/dk.lng index 4c7bfab1e7..0a7f8bc19e 100644 --- a/interface/web/monitor/lib/lang/dk.lng +++ b/interface/web/monitor/lib/lang/dk.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng index 245c80c666..1d783f3da7 100644 --- a/interface/web/monitor/lib/lang/el.lng +++ b/interface/web/monitor/lib/lang/el.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/en.lng b/interface/web/monitor/lib/lang/en.lng index 194bbc5030..f507f54229 100644 --- a/interface/web/monitor/lib/lang/en.lng +++ b/interface/web/monitor/lib/lang/en.lng @@ -162,4 +162,6 @@ $wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.' $wb['Show Munin'] = 'Show Munin'; $wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; $wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index f4acb3c45c..56ce9a4222 100644 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -162,4 +162,6 @@ $wb['System load 5 minutes'] = 'Carga del sistema hace 5 minutos'; $wb['System State (All Servers)'] = 'Estado de los sistemas'; $wb['Users online'] = 'Usuarios en lÃnea'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng index 911aae9bd1..f825f6e20b 100644 --- a/interface/web/monitor/lib/lang/fi.lng +++ b/interface/web/monitor/lib/lang/fi.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/fr.lng b/interface/web/monitor/lib/lang/fr.lng index c08fe74948..8bf754cb9b 100644 --- a/interface/web/monitor/lib/lang/fr.lng +++ b/interface/web/monitor/lib/lang/fr.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index 17899ff3f0..4c8037604a 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/hu.lng b/interface/web/monitor/lib/lang/hu.lng index 9a5c41654f..e9ac7009f0 100644 --- a/interface/web/monitor/lib/lang/hu.lng +++ b/interface/web/monitor/lib/lang/hu.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/id.lng b/interface/web/monitor/lib/lang/id.lng index 4cdbf5d8ba..8a1bba91d8 100644 --- a/interface/web/monitor/lib/lang/id.lng +++ b/interface/web/monitor/lib/lang/id.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/it.lng b/interface/web/monitor/lib/lang/it.lng index e6feadf01f..675f27494b 100644 --- a/interface/web/monitor/lib/lang/it.lng +++ b/interface/web/monitor/lib/lang/it.lng @@ -162,4 +162,6 @@ $wb['monitor_database_domain_txt'] = 'Domain'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/ja.lng b/interface/web/monitor/lib/lang/ja.lng index cccd678cb7..3ea8fb1dfd 100644 --- a/interface/web/monitor/lib/lang/ja.lng +++ b/interface/web/monitor/lib/lang/ja.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/nl.lng b/interface/web/monitor/lib/lang/nl.lng index a534b9afb3..bef9eb80a2 100644 --- a/interface/web/monitor/lib/lang/nl.lng +++ b/interface/web/monitor/lib/lang/nl.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/pl.lng b/interface/web/monitor/lib/lang/pl.lng index a8e1b3e53c..6900d31b92 100644 --- a/interface/web/monitor/lib/lang/pl.lng +++ b/interface/web/monitor/lib/lang/pl.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/pt.lng b/interface/web/monitor/lib/lang/pt.lng index 7930febda2..f48c41e9fe 100644 --- a/interface/web/monitor/lib/lang/pt.lng +++ b/interface/web/monitor/lib/lang/pt.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/ro.lng b/interface/web/monitor/lib/lang/ro.lng index 96a2ce10e6..2a2423927f 100644 --- a/interface/web/monitor/lib/lang/ro.lng +++ b/interface/web/monitor/lib/lang/ro.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/ru.lng b/interface/web/monitor/lib/lang/ru.lng index 823174b716..c256c2faaf 100644 --- a/interface/web/monitor/lib/lang/ru.lng +++ b/interface/web/monitor/lib/lang/ru.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Показать журнал MongoDB'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Ñервер:'; $wb['monitor_title_mongodb_txt'] = 'Журнал MongoDB'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 78dd5ed1be..54b504c9bb 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/sk.lng b/interface/web/monitor/lib/lang/sk.lng index 36af834eaf..59af606856 100644 --- a/interface/web/monitor/lib/lang/sk.lng +++ b/interface/web/monitor/lib/lang/sk.lng @@ -162,4 +162,6 @@ $wb['Show MongoDB-Log'] = 'Show MongoDB-Log'; $wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:'; $wb['monitor_title_mongodb_txt'] = 'MongoDB Log'; $wb['Show Data Log History'] = 'Show Data Log History'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index 20a9e8e140..836f38ce97 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -161,4 +161,6 @@ $wb['no_permissions_to_view_monit_txt'] = 'Monit eriÅŸimi izniniz yok.'; $wb['Show Munin'] = 'Munin Durumu'; $wb['no_munin_url_defined_txt'] = 'Munin adresi belirtilmemiÅŸ.'; $wb['no_permissions_to_view_munin_txt'] = 'Munin eriÅŸimi izniniz yok.'; +$wb['Database size'] = 'Database size'; +$wb['Show MySQL Database size'] = 'Show MySQL Database size'; ?> -- GitLab From 6b4966d677338ac4ff6adb7c0a124c09f9878edb Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Mon, 27 Jul 2020 16:19:52 +0200 Subject: [PATCH 530/571] fixed GoAccess config detection --- .../lib/classes/cron.d/150-goaccess.inc.php | 66 ++++++++++++------- .../plugins-available/apache2_plugin.inc.php | 17 ++++- server/plugins-available/nginx_plugin.inc.php | 18 ++++- 3 files changed, 71 insertions(+), 30 deletions(-) diff --git a/server/lib/classes/cron.d/150-goaccess.inc.php b/server/lib/classes/cron.d/150-goaccess.inc.php index fe9e565f5f..87c9642b4e 100644 --- a/server/lib/classes/cron.d/150-goaccess.inc.php +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -2,6 +2,7 @@ /* Copyright (c) 2013, Marius Cramer, pixcept KG +Copyright (c) 2020, Michael Seevogel All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -59,17 +60,25 @@ class cronjob_goaccess extends cronjob { $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); - $goaccess_conf_dir = '/etc/'; - $goaccess_conf_main = $goaccess_conf_dir . 'goaccess.conf'; + $goaccess_conf_locs = array('/etc/goaccess.conf', '/etc/goaccess/goaccess.conf'); + $count = 0; + + foreach($goaccess_conf_locs as $goa_loc) { + if(is_file($goa_loc) && (filesize($goa_loc) > 0)) { + $goaccess_conf_main = $goa_loc; + break; + } else { + $count++; + if($count == 2) { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_ERROR); + } + } + } - if(!file_exists($goaccess_conf_main) || !isset($goaccess_conf_main)) - { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); - } /* Check wether the goaccess binary is in path */ - system('type goaccess', $retval); - if ($retval === 0) { + system("type goaccess 2>&1>/dev/null", $retval); + if ($retval === 0) { foreach($records as $rec) { $yesterday = date('Ymd', strtotime("-1 day", time())); @@ -121,7 +130,6 @@ class cronjob_goaccess extends cronjob { } - if(!@is_dir($statsdir)) mkdir($statsdir); $username = escapeshellcmd($rec['system_user']); $groupname = escapeshellcmd($rec['system_group']); @@ -171,30 +179,38 @@ class cronjob_goaccess extends cronjob { if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); } } - - $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); - - if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); - } else { - copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + + + $output = shell_exec('goaccess --help'); + + if(preg_match('/keep-db-files/', $output)) { + $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); + + if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } else { + copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } } - } - $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); - + $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); + if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); + chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); + } + + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); - if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); - chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); + } else { + $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support!", LOGLEVEL_ERROR); } - $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + unset($output); } } else { - $app->log("Stats not generated. The GoAccess binary couldn't be found. Make sure that GoAccess is installed and that it is in \$PATH", LOGLEVEL_WARN); + $app->log("Stats not generated. The GoAccess binary couldn't be found. Make sure that GoAccess is installed and that it is in \$PATH", LOGLEVEL_ERROR); } parent::onRunJob(); diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 1bebab55f4..aecab199cd 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -2986,8 +2986,21 @@ class apache2_plugin { $web_folder = $data['new']['web_folder']; if($data['new']['type'] == 'vhost') $web_folder = 'web'; - $goaccess_conf_dir = '/etc/'; - $goaccess_conf_main = $goaccess_conf_dir.'goaccess.conf'; + $goaccess_conf_locs = array('/etc/goaccess.conf', '/etc/goaccess/goaccess.conf'); + $count = 0; + + foreach($goaccess_conf_locs as $goa_loc) { + if(is_file($goa_loc) && (filesize($goa_loc) > 0)) { + $goaccess_conf_main = $goa_loc; + break; + } else { + $count++; + if($count == 2) { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_ERROR); + } + } + } + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index d02811ad93..3c59011cbb 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2541,13 +2541,25 @@ class nginx_plugin { $web_folder = $data['new']['web_folder']; if($data['new']['type'] == 'vhost') $web_folder = 'web'; - $goaccess_conf_dir = '/etc/'; - $goaccess_conf_main = $goaccess_conf_dir.'goaccess.conf'; + $goaccess_conf_locs = array('/etc/goaccess.conf', '/etc/goaccess/goaccess.conf'); + $count = 0; + + foreach($goaccess_conf_locs as $goa_loc) { + if(is_file($goa_loc) && (filesize($goa_loc) > 0)) { + $goaccess_conf_main = $goa_loc; + break; + } else { + $count++; + if($count == 2) { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_ERROR); + } + } + } + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); - /* In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. -- GitLab From 2ea8f75e23acaf533364194bc8ea0b06c9518dc8 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 27 Jul 2020 16:40:31 +0200 Subject: [PATCH 531/571] Fixed #5662 installer (gentoo) $dovecot_version empty --- install/dist/lib/gentoo.lib.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index a39c346376..324fe06e9a 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -338,6 +338,11 @@ class installer extends installer_base replaceLine($config_dir.'/'.$configfile, 'protocols = imap pop3', 'protocols = imap pop3 lmtp', 1, 0); } + //* Get the dovecot version + exec('dovecot --version', $tmp); + $dovecot_version = $tmp[0]; + unset($tmp); + //* dovecot-sql.conf $configfile = $config_dir.'/dovecot-sql.conf'; $content = $this->get_template_file('debian_dovecot-sql.conf', true, true); -- GitLab From c5c1c9aa9dba54522b560f6c3ea15fa6d496a434 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 27 Jul 2020 16:54:05 +0200 Subject: [PATCH 532/571] Fixed #5614 Fix home initialization for Jailkit --- server/plugins-available/shelluser_base_plugin.inc.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 69d96a961e..4be97961ff 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -107,11 +107,7 @@ class shelluser_base_plugin { $app->system->web_folder_protection($web['document_root'], false); //* Home directory of the new shell user - if($data['new']['chroot'] == 'jailkit') { - $homedir = $data['new']['dir']; - } else { - $homedir = $data['new']['dir'].'/home/'.$data['new']['username']; - } + $homedir = $data['new']['dir'].'/home/'.$data['new']['username']; // Create home base directory if it does not exist if(!is_dir($data['new']['dir'].'/home')){ -- GitLab From 2bbebeb3e5eddcccc784cab29097f9c56452c9ea Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 27 Jul 2020 17:02:48 +0200 Subject: [PATCH 533/571] Fixed #5593 Data too long for column 'id_rsa' at row 1 --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index a48996916a..9eefff3630 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -59,3 +59,6 @@ ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext -- add move to junk before/after option, default to after ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'y'; + +-- Change id_rsa column to TEXT format +ALTER TABLE `client` CHANGE `id_rsa` `id_rsa` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 9c11a68914..fae07c8036 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -253,7 +253,7 @@ CREATE TABLE `client` ( `canceled` enum('n','y') NOT NULL DEFAULT 'n', `can_use_api` enum('n','y') NOT NULL DEFAULT 'n', `tmp_data` mediumblob, - `id_rsa` varchar(2000) NOT NULL DEFAULT '', + `id_rsa` text NOT NULL DEFAULT '', `ssh_rsa` varchar(600) NOT NULL DEFAULT '', `customer_no_template` varchar(255) DEFAULT 'R[CLIENTID]C[CUSTOMER_NO]', `customer_no_start` int(11) NOT NULL DEFAULT '1', -- GitLab From c868adc12267ae628b04740370c8a6dd25639d64 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 27 Jul 2020 17:08:55 +0200 Subject: [PATCH 534/571] Fixed #5578 --- server/plugins-available/shelluser_base_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 4be97961ff..e3276755be 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -96,7 +96,7 @@ class shelluser_base_plugin { return false; } - if($data['new']['active'] != 'y') $data['new']['shell'] = '/bin/false'; + if($data['new']['active'] != 'y' || $data['new']['chroot'] == "jailkit") $data['new']['shell'] = '/bin/false'; if($app->system->is_user($data['new']['puser'])) { -- GitLab From 80603de2860c939dde7974df9c3cfd32d2caf4bd Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Mon, 27 Jul 2020 17:36:53 +0200 Subject: [PATCH 535/571] Fixes #3696 Add -Indexes for /var/www directory in Apache --- install/tpl/apache_ispconfig.conf.master | 4 ++++ server/conf/apache_ispconfig.conf.master | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index 84eec5c554..ff744741ff 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -35,6 +35,10 @@ CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m </tmpl_if> </Directory> +<Directory /var/www> + Options -Indexes +</Directory> + <Directory /var/www/conf> AllowOverride None <tmpl_if name='apache_version' op='>' value='2.2' format='version'> diff --git a/server/conf/apache_ispconfig.conf.master b/server/conf/apache_ispconfig.conf.master index e30ccd6d3b..040de23625 100644 --- a/server/conf/apache_ispconfig.conf.master +++ b/server/conf/apache_ispconfig.conf.master @@ -35,6 +35,10 @@ CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m </tmpl_if> </Directory> +<Directory /var/www> + Options -Indexes +</Directory> + <Directory /var/www/conf> AllowOverride None <tmpl_if name='apache_version' op='>' value='2.2' format='version'> -- GitLab From 1536e8b48f26f87a010d8848fff66e492f989aeb Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 9 Jul 2020 13:59:14 -0600 Subject: [PATCH 536/571] mail_forwardings alias/forward/catchall, aliasdomains in virtual_alias_{maps,domains} --- install/dist/lib/fedora.lib.php | 3 +++ install/dist/lib/opensuse.lib.php | 3 +++ install/lib/installer_base.lib.php | 3 +++ install/tpl/debian_postfix.conf.master | 4 ++-- install/tpl/fedora_postfix.conf.master | 4 ++-- install/tpl/gentoo_postfix.conf.master | 4 ++-- .../tpl/mysql-virtual_alias_domains.cf.master | 6 +++++ install/tpl/mysql-virtual_domains.cf.master | 3 ++- .../tpl/mysql-virtual_forwardings.cf.master | 24 +++++-------------- install/tpl/opensuse_postfix.conf.master | 4 ++-- 10 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 install/tpl/mysql-virtual_alias_domains.cf.master diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 4a7c9cfbfe..05fea64519 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -63,6 +63,9 @@ class installer_dist extends installer_base { //* mysql-virtual_forwardings.cf $this->process_postfix_config('mysql-virtual_forwardings.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 60fb0511fd..574b38100d 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -63,6 +63,9 @@ class installer_dist extends installer_base { //* mysql-virtual_forwardings.cf $this->process_postfix_config('mysql-virtual_forwardings.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 81b1257db0..0476c92330 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -960,6 +960,9 @@ class installer_base { //* mysql-virtual_forwardings.cf $this->process_postfix_config('mysql-virtual_forwardings.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 1c739a5c7e..c1a5baa71d 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -1,7 +1,7 @@ alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases -virtual_alias_domains = -virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index d504c6ed56..5b53b9a45f 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -1,5 +1,5 @@ -virtual_alias_domains = -virtual_alias_maps = hash:/etc/mailman/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index cad2b97c3c..a326051d5e 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -1,5 +1,5 @@ -virtual_alias_domains = -virtual_alias_maps = proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/mysql-virtual_alias_domains.cf.master b/install/tpl/mysql-virtual_alias_domains.cf.master new file mode 100644 index 0000000000..e55fd8ea8d --- /dev/null +++ b/install/tpl/mysql-virtual_alias_domains.cf.master @@ -0,0 +1,6 @@ +user = {mysql_server_ispconfig_user} +password = {mysql_server_ispconfig_password} +dbname = {mysql_server_database} +hosts = {mysql_server_ip} +query = SELECT destination FROM mail_forwarding + WHERE source = '@%d' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id} diff --git a/install/tpl/mysql-virtual_domains.cf.master b/install/tpl/mysql-virtual_domains.cf.master index 0d1793a95a..11ccb046ef 100644 --- a/install/tpl/mysql-virtual_domains.cf.master +++ b/install/tpl/mysql-virtual_domains.cf.master @@ -2,4 +2,5 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = select domain from mail_domain where domain = '%s' and active = 'y' and server_id = {server_id} +query = SELECT domain FROM mail_domain WHERE domain = '%s' AND active = 'y' AND server_id = {server_id} + AND NOT EXISTS (SELECT source FROM mail_forwarding WHERE source = '@%s' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id}) diff --git a/install/tpl/mysql-virtual_forwardings.cf.master b/install/tpl/mysql-virtual_forwardings.cf.master index 04a94ee634..9ab6f3e860 100644 --- a/install/tpl/mysql-virtual_forwardings.cf.master +++ b/install/tpl/mysql-virtual_forwardings.cf.master @@ -2,22 +2,10 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = SELECT u.email as target FROM mail_forwarding as s - INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) - WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id} +query = SELECT s.destination AS target FROM mail_forwarding AS s + WHERE s.source = '%s' AND s.type IN ('alias', 'forward') AND s.active = 'y' AND s.server_id = {server_id} UNION - SELECT s.destination as target FROM mail_forwarding as s - WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id} - UNION - SELECT s.destination as target FROM mail_forwarding as s - INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) - WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} - UNION - SELECT s.destination as target FROM mail_forwarding as s - LEFT JOIN mail_user as uu ON (uu.email = '%s' AND uu.disabledeliver = 'n') - LEFT JOIN mail_forwarding as uf ON (uf.source = '%s' AND uf.type IN ('alias', 'forward') AND uf.active = 'y') - WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND uu.mailuser_id IS NULL AND uf.forwarding_id IS NULL AND s.server_id = {server_id} - UNION - SELECT s.destination as target FROM mail_forwarding as s - INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') - WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id} + SELECT s.destination AS target FROM mail_forwarding AS s + WHERE s.source = '@%d' AND s.type = 'catchall' AND s.active = 'y' AND s.server_id = {server_id} + AND NOT EXISTS (SELECT email FROM mail_user WHERE email = '%s' AND server_id = {server_id}) + AND NOT EXISTS (SELECT source FROM mail_forwarding WHERE source = '%s' AND active = 'y' AND server_id = {server_id}) diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index c59d46fa97..ea4375b6ac 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -1,7 +1,7 @@ alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases -virtual_alias_domains = -virtual_alias_maps = hash:/etc/mailman/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} -- GitLab From 015a175f9fbee0399ec31cfc7e2dae7943495c67 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 14 Jul 2020 13:43:43 -0600 Subject: [PATCH 537/571] use reject_unverified_recipient with lmtp --- install/dist/lib/fedora.lib.php | 3 ++ install/dist/lib/opensuse.lib.php | 3 ++ install/lib/installer_base.lib.php | 42 +++++++++++++-- install/tpl/debian_postfix.conf.master | 6 ++- install/tpl/fedora_postfix.conf.master | 6 ++- install/tpl/gentoo_postfix.conf.master | 6 ++- install/tpl/mysql-verify_recipients.cf.master | 5 ++ install/tpl/opensuse_postfix.conf.master | 6 ++- .../postfix_server_plugin.inc.php | 53 ++++++++++++++----- 9 files changed, 105 insertions(+), 25 deletions(-) create mode 100644 install/tpl/mysql-verify_recipients.cf.master diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 05fea64519..9ffc7d0ef4 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -105,6 +105,9 @@ class installer_dist extends installer_base { //* mysql-virtual_uids.cf $this->process_postfix_config('mysql-virtual_uids.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-verify_recipients.cf'); + //* postfix-dkim $filename='tag_as_originating.re'; $full_file_name=$config_dir.'/'.$filename; diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 574b38100d..15ab5b6e91 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -102,6 +102,9 @@ class installer_dist extends installer_base { //* mysql-virtual_uids.cf $this->process_postfix_config('mysql-virtual_uids.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-verify_recipients.cf'); + //* postfix-dkim $filename='tag_as_originating.re'; $full_file_name=$config_dir.'/'.$filename; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 0476c92330..c02a33eebb 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1002,6 +1002,9 @@ class installer_base { //* mysql-virtual_uids.cf $this->process_postfix_config('mysql-virtual_uids.cf'); + //* mysql-virtual_alias_domains.cf + $this->process_postfix_config('mysql-verify_recipients.cf'); + // test if lmtp if available $configure_lmtp = $this->get_postfix_service('lmtp','unix'); @@ -1340,6 +1343,8 @@ class installer_base { } $config_dir = $conf['postfix']['config_dir']; + $postfix_version = `postconf -d mail_version 2>/dev/null`; + $postfix_version = preg_replace( '/mail_version\s*=\s*(.*)\s*/', '$1', $postfix_version ); //* Configure master.cf and add a line for deliver if(!$this->get_postfix_service('dovecot', 'unix')) { @@ -1351,7 +1356,7 @@ class installer_base { chmod($config_dir.'/master.cf~2', 0400); } //* Configure master.cf and add a line for deliver - $content = rf($conf["postfix"]["config_dir"].'/master.cf'); + $content = rf($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"; af($config_dir.'/master.cf', $deliver_content); unset($content); @@ -1368,7 +1373,31 @@ class installer_base { ); // Make a backup copy of the main.cf file - copy($conf['postfix']['config_dir'].'/main.cf', $conf['postfix']['config_dir'].'/main.cf~3'); + copy($config_dir.'/main.cf', $config_dir.'/main.cf~3'); + + $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $new_options = array(); + foreach ($options as $value) { + if (($value = trim($value)) == '') continue; + if (preg_match("|check_recipient_access\s+proxy:mysql:${config_dir}/mysql-verify_recipients.cf|", $value)) { + continue; + } + $new_options[] = $value; + } + if ($configure_lmtp) { + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'reject_unlisted_recipient') { + array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${config_dir}/mysql-verify_recipients.cf")); + break; + } + } + # postfix < 3.3 needs this when using reject_unverified_recipient: + if(version_compare($postfix_version, 3.3, '<')) { + $postconf_commands[] = "enable_original_recipient = yes"; + } + } + #exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + $postconf_commands[] = "smtpd_recipient_restrictions = ".implode(", ", $new_options); // Executing the postconf commands foreach($postconf_commands as $cmd) { @@ -1608,12 +1637,15 @@ class installer_base { exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); + + $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); - $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); foreach ($options as $value) { - if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { - $new_options[] = $value; + if (($value = trim($value)) == '') continue; + if (preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + continue; } + $new_options[] = $value; } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index c1a5baa71d..d3df3ab568 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -15,7 +15,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert @@ -24,7 +24,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions smtpd_helo_required = yes smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re @@ -44,3 +44,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): +enable_original_recipient = yes diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 5b53b9a45f..e6f43b01e8 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -11,7 +11,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert @@ -20,7 +20,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions smtpd_helo_required = yes smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re @@ -40,3 +40,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): +enable_original_recipient = yes diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index a326051d5e..0f6ee7301b 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -10,7 +10,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert @@ -19,7 +19,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions smtpd_helo_required = yes smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re @@ -39,3 +39,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): +enable_original_recipient = yes diff --git a/install/tpl/mysql-verify_recipients.cf.master b/install/tpl/mysql-verify_recipients.cf.master new file mode 100644 index 0000000000..2b433491d8 --- /dev/null +++ b/install/tpl/mysql-verify_recipients.cf.master @@ -0,0 +1,5 @@ +user = {mysql_server_ispconfig_user} +password = {mysql_server_ispconfig_password} +dbname = {mysql_server_database} +hosts = {mysql_server_ip} +query = SELECT 'reject_unverified_recipient' FROM mail_domain WHERE domain = '%s' AND active = 'y' AND server_id = {server_id} diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index ea4375b6ac..d29c3d1b05 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -13,7 +13,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert @@ -22,7 +22,7 @@ transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{conf relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf smtpd_sender_login_maps = proxy:mysql:{config_dir}/mysql-virtual_sender_login_maps.cf -proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps +proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $sender_bcc_maps $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $smtpd_recipient_restrictions smtpd_helo_required = yes smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:{config_dir}/tag_as_originating.re {reject_slm}, permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:{config_dir}/mysql-virtual_sender.cf, check_sender_access regexp:{config_dir}/tag_as_foreign.re @@ -42,3 +42,5 @@ smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +# needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): +enable_original_recipient = yes diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 80db1c102a..757ee5e72f 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -33,9 +33,6 @@ class postfix_server_plugin { var $plugin_name = 'postfix_server_plugin'; var $class_name = 'postfix_server_plugin'; - - var $postfix_config_dir = '/etc/postfix'; - //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. function onInstall() { @@ -79,8 +76,13 @@ class postfix_server_plugin { $old_ini_data = $app->ini_parser->parse_ini_string($data['old']['config']); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + // Get postfix version + exec('postconf -d mail_version 2>&1', $out); + $postfix_version = preg_replace('/.*=\s*/', '', $out[0]); + unset($out); + copy('/etc/postfix/main.cf', '/etc/postfix/main.cf~'); - + if ($mail_config['relayhost'].$mail_config['relayhost_user'].$mail_config['relayhost_password'] != $old_ini_data['mail']['relayhost'].$old_ini_data['mail']['relayhost_user'].$old_ini_data['mail']['relayhost_password']) { $content = file_exists('/etc/postfix/sasl_passwd') ? file_get_contents('/etc/postfix/sasl_passwd') : ''; $content = preg_replace('/^'.preg_quote($old_ini_data['email']['relayhost']).'\s+[^\n]*(:?\n|)/m','',$content); @@ -112,17 +114,18 @@ class postfix_server_plugin { if($rbl_hosts != ''){ $rbl_hosts = explode(",", $rbl_hosts); } - $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $key => $value) { + if (($value = trim($value)) == '') continue; if (!preg_match('/reject_rbl_client/', $value)) { $new_options[] = $value; } else { if(is_array($rbl_hosts) && !empty($rbl_hosts) && !$rbl_updated){ $rbl_updated = true; - foreach ($rbl_hosts as $key => $value) { - $value = trim($value); - if($value != '') $new_options[] = "reject_rbl_client ".$value; + foreach ($rbl_hosts as $key2 => $value2) { + $value2 = trim($value2); + if($value2 != '') $new_options[] = "reject_rbl_client ".$value2; } } } @@ -190,6 +193,30 @@ class postfix_server_plugin { } } + $postfix_config_dir = $conf['postfix']['config_dir']; + $new_options = array(); + $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + foreach ($options as $key => $value) { + if (($value = trim($value)) == '') continue; + if (preg_match("|check_recipient_access\s+proxy:mysql:${postfix_config_dir}/mysql-verify_recipients.cf|", $value)) { + continue; + } + $new_options[] = $value; + } + if (defined($configure_lmtp) && $configure_lmtp) { + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'reject_unlisted_recipient') { + array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${postfix_config_dir}/mysql-verify_recipients.cf")); + break; + } + } + # postfix < 3.3 needs this when using reject_unverified_recipient: + if(version_compare($postfix_version, 3.3, '<')) { + exec("postconf -e 'enable_original_recipient = yes'"); + } + } + exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); + if($mail_config['content_filter'] != $old_ini_data['mail']['content_filter']) { if($mail_config['content_filter'] == 'rspamd'){ exec("postconf -X 'receive_override_options'"); @@ -204,11 +231,13 @@ class postfix_server_plugin { exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); $new_options = array(); - $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); + $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); foreach ($options as $key => $value) { - if (!preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { - $new_options[] = $value; + if (($value = trim($value)) == '') continue; + if (preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { + continue; } + $new_options[] = $value; } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); @@ -235,7 +264,7 @@ class postfix_server_plugin { exec("postconf -e 'receive_override_options = no_address_mappings'"); exec("postconf -e 'content_filter = " . ($configure_lmtp ? "lmtp" : "amavis" ) . ":[127.0.0.1]:10024'"); - exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); + exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/tag_as_foreign.re'"); } } -- GitLab From c0651edf42b4cd461fa4b4cc3423d51ca1fcac66 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 15 Jul 2020 10:55:29 -0600 Subject: [PATCH 538/571] fix issues from MR 1053 review --- install/lib/installer_base.lib.php | 28 +++++++++++-------- .../postfix_server_plugin.inc.php | 23 ++++++++------- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c02a33eebb..265dd8c583 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -876,8 +876,8 @@ class installer_base { $postfix_service = @($out[0]=='')?false:true; } else { //* fallback - Postfix < 2.9 $content = rf($conf['postfix']['config_dir'].'/master.cf'); - $regex = "/^((?!#)".$service.".*".$type.".*)$/m"; - $postfix_service = @(preg_match($regex, $content))?true:false; + $quoted_regex = "^((?!#)".preg_quote($service, '/').".*".preg_quote($type, '/').".*)$"; + $postfix_service = @(preg_match("/$quoted_regex/m", $content))?true:false; } return $postfix_service; @@ -915,10 +915,11 @@ class installer_base { while ( !feof( $cf ) ) { $line = fgets( $cf ); + $quoted_regex = '^'.preg_quote($service, '/').'\s+'.preg_quote($type, '/'); if ( $reading_service ) { # regex matches a new service or "empty" (whitespace) line if ( preg_match( '/^([^\s#]+.*|\s*)$/', $line ) && - ! preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) { + ! preg_match( "/$quoted_regex/", $line ) ) { $out .= $line; $reading_service = false; } @@ -926,7 +927,7 @@ class installer_base { # $skipped_lines .= $line; # regex matches definition matching service to be removed - } else if ( preg_match( '/^'.$service.'\s+'.$type.'/', $line ) ) { + } else if ( preg_match( "/$quoted_regex/", $line ) ) { $reading_service = true; # $skipped_lines .= $line; @@ -1157,13 +1158,13 @@ class installer_base { if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command); //* Check maildrop service in posfix master.cf - $regex = "/^maildrop unix.*pipe flags=DRhu user=vmail argv=\\/usr\\/bin\\/maildrop -d ".$cf['vmail_username']." \\$\{extension} \\$\{recipient} \\$\{user} \\$\{nexthop} \\$\{sender}/"; + $quoted_regex = '^maildrop unix.*pipe flags=DRhu user=vmail '.preg_quote('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 2> /dev/null", $out, $ret); - $change_maildrop_flags = @(preg_match($regex, $out[0]) && $out[0] !='')?false:true; + $change_maildrop_flags = @(preg_match("/$quoted_regex/", $out[0]) && $out[0] !='')?false:true; } else { - $change_maildrop_flags = @(preg_match($regex, $configfile))?false:true; + $change_maildrop_flags = @(preg_match("/$quoted_regex/", $configfile))?false:true; } if ($change_maildrop_flags) { //* Change maildrop service in posfix master.cf @@ -1343,6 +1344,7 @@ class installer_base { } $config_dir = $conf['postfix']['config_dir']; + $quoted_config_dir = preg_quote($config_dir, '/'); $postfix_version = `postconf -d mail_version 2>/dev/null`; $postfix_version = preg_replace( '/mail_version\s*=\s*(.*)\s*/', '$1', $postfix_version ); @@ -1375,11 +1377,12 @@ class installer_base { // Make a backup copy of the main.cf file copy($config_dir.'/main.cf', $config_dir.'/main.cf~3'); - $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $value) { - if (($value = trim($value)) == '') continue; - if (preg_match("|check_recipient_access\s+proxy:mysql:${config_dir}/mysql-verify_recipients.cf|", $value)) { + $value = trim($value); + if ($value == '') continue; + if (preg_match("|check_recipient_access\s+proxy:mysql:${quoted_config_dir}/mysql-verify_recipients.cf|", $value)) { continue; } $new_options[] = $value; @@ -1638,10 +1641,11 @@ class installer_base { exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); - $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $value) { - if (($value = trim($value)) == '') continue; + $value = trim($value); + if ($value == '') continue; if (preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { continue; } diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 757ee5e72f..5a0b222a24 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -85,7 +85,7 @@ class postfix_server_plugin { if ($mail_config['relayhost'].$mail_config['relayhost_user'].$mail_config['relayhost_password'] != $old_ini_data['mail']['relayhost'].$old_ini_data['mail']['relayhost_user'].$old_ini_data['mail']['relayhost_password']) { $content = file_exists('/etc/postfix/sasl_passwd') ? file_get_contents('/etc/postfix/sasl_passwd') : ''; - $content = preg_replace('/^'.preg_quote($old_ini_data['email']['relayhost']).'\s+[^\n]*(:?\n|)/m','',$content); + $content = preg_replace('/^'.preg_quote($old_ini_data['email']['relayhost'], '/').'\s+[^\n]*(:?\n|)/m','',$content); if (!empty($mail_config['relayhost_user']) || !empty($mail_config['relayhost_password'])) { $content .= "\n".$mail_config['relayhost'].' '.$mail_config['relayhost_user'].':'.$mail_config['relayhost_password']; @@ -114,10 +114,11 @@ class postfix_server_plugin { if($rbl_hosts != ''){ $rbl_hosts = explode(",", $rbl_hosts); } - $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); foreach ($options as $key => $value) { - if (($value = trim($value)) == '') continue; + $value = trim($value); + if ($value == '') continue; if (!preg_match('/reject_rbl_client/', $value)) { $new_options[] = $value; } else { @@ -142,7 +143,7 @@ class postfix_server_plugin { } if($mail_config['reject_sender_login_mismatch'] != $old_ini_data['mail']['reject_sender_login_mismatch']) { - $options = explode(", ", exec("postconf -h smtpd_sender_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_sender_restrictions")); $new_options = array(); foreach ($options as $key => $value) { if (!preg_match('/reject_authenticated_sender_login_mismatch/', $value)) { @@ -193,12 +194,13 @@ class postfix_server_plugin { } } - $postfix_config_dir = $conf['postfix']['config_dir']; + $quoted_postfix_config_dir = preg_quote($conf['postfix']['config_dir'], '|'); $new_options = array(); - $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); foreach ($options as $key => $value) { - if (($value = trim($value)) == '') continue; - if (preg_match("|check_recipient_access\s+proxy:mysql:${postfix_config_dir}/mysql-verify_recipients.cf|", $value)) { + $value = trim($value); + if ($value == '') continue; + if (preg_match("|check_recipient_access\s+proxy:mysql:${quoted_postfix_config_dir}/mysql-verify_recipients.cf|", $value)) { continue; } $new_options[] = $value; @@ -231,9 +233,10 @@ class postfix_server_plugin { exec("postconf -e 'smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, permit_mynetworks, permit_sasl_authenticated'"); $new_options = array(); - $options = explode(",", exec("postconf -h smtpd_recipient_restrictions")); + $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); foreach ($options as $key => $value) { - if (($value = trim($value)) == '') continue; + $value = trim($value); + if ($value == '') continue; if (preg_match('/check_policy_service\s+inet:127.0.0.1:10023/', $value)) { continue; } -- GitLab From 67452af5eb9c395f5d403396983d9226a6ef020e Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 23 Jul 2020 12:25:20 -0600 Subject: [PATCH 539/571] remove reject_unlisted_recipient --- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index d3df3ab568..169826747d 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -15,7 +15,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index e6f43b01e8..1c78e858be 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -11,7 +11,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 0f6ee7301b..84d404d15b 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -10,7 +10,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index d29c3d1b05..f2d2a4403b 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -13,7 +13,7 @@ broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_restriction_classes = greylisting greylisting = check_policy_service inet:127.0.0.1:10023 -smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unlisted_recipient, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status +smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may smtpd_tls_cert_file = {config_dir}/smtpd.cert -- GitLab From 7d9d0c61928d93a91049dbff76f032f3ce864452 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 27 Jul 2020 23:42:10 +0200 Subject: [PATCH 540/571] #1804 Option to disable welcome messages --- install/tpl/system.ini.master | 1 + server/plugins-available/mail_plugin.inc.php | 41 +++++++++++-------- .../plugins-available/mailman_plugin.inc.php | 15 ++++--- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 873b0e7372..81f6bba553 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -16,6 +16,7 @@ webmail_url=/webmail dkim_path=/var/lib/amavis/dkim smtp_enabled=y smtp_host=localhost +enable_welcome_mail=y [monitor] diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index 4d5ac826d3..6c8737cfe0 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -135,7 +135,7 @@ class mail_plugin { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); @@ -149,26 +149,26 @@ class mail_plugin { $app->log('Created Directory: '.$maildomain_path, LOGLEVEL_DEBUG); $maildomain_path .= '/Maildir'; } - + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); $app->system->exec_safe("su -c ? vmail", "mv -f " . $data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']); $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } - + //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path)) { - + $app->system->maildirmake($maildomain_path, $user, '', $group); - + //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if(is_dir($maildomain_path)) $app->system->exec_safe("su -c ? ?", "maildirmake -q ".$data['new']['quota']."S ".$maildomain_path, $user); // Avoid maildirmake quota bug, see debian bug #214911 $app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".$maildomain_path."' ".$user, LOGLEVEL_DEBUG); } } - + if(!is_dir($data['new']['maildir'].'/.Sent')) { $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } @@ -181,11 +181,11 @@ class mail_plugin { if(!is_dir($data['new']['maildir'].'/.Junk')) { $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } - + // Set permissions now recursive $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); - + //* Set the maildir quota if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { @@ -194,6 +194,11 @@ class mail_plugin { } } } + + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['enable_welcome_mail'] == 'n') { + return; + } //* Send the welcome email message $tmp = explode('@', $data["new"]["email"]); @@ -261,7 +266,7 @@ class mail_plugin { // Maildir-Format must not be changed on this way !! $data['new']['maildir_format'] = $data['old']['maildir_format']; - + $maildomain_path = $data['new']['maildir']; $tmp_basepath = $data['new']['maildir']; $tmp_basepath_parts = explode('/', $tmp_basepath); @@ -315,7 +320,7 @@ class mail_plugin { $app->system->exec_safe('mv -f ? ?'. $data['old']['maildir'], $data['new']['maildir']); $app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'], LOGLEVEL_DEBUG); } - + //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!is_dir($data['new']['maildir'].'/mdbox')) { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? INBOX'", $data["new"]["email"]); @@ -323,7 +328,7 @@ class mail_plugin { $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Trash'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Junk'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox create -u ? Drafts'", $data["new"]["email"]); - + $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? INBOX'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Sent'", $data["new"]["email"]); $app->system->exec_safe("su -c 'doveadm mailbox subscribe -u ? Trash'", $data["new"]["email"]); @@ -338,18 +343,18 @@ class mail_plugin { $app->log('Created Directory: '.$base_path, LOGLEVEL_DEBUG); $maildomain_path .= '/Maildir'; } - + //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) { if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']); $app->system->exec_safe("su -c ? ?", "mv -f ".$data['new']['maildir']." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 'vmail'); $app->log('Moved invalid maildir to corrupted Maildirs folder: '.$data['new']['maildir'], LOGLEVEL_WARN); } - + //* Create the maildir, if it doesn not exist, set permissions, set quota. if(!empty($maildomain_path) && !is_dir($maildomain_path.'/new')) { $app->system->maildirmake($maildomain_path, $user, '', $group); - + //* This is to fix the maildrop quota not being rebuilt after the quota is changed. if($mail_config['pop3_imap_daemon'] != 'dovecot') { if($data['new']['quota'] > 0) { @@ -361,7 +366,7 @@ class mail_plugin { } } } - + if(!is_dir($data['new']['maildir'].'/.Sent')) { $app->system->maildirmake($maildomain_path, $user, 'Sent', $group); } @@ -374,11 +379,11 @@ class mail_plugin { if(!is_dir($data['new']['maildir'].'/.Junk')) { $app->system->maildirmake($maildomain_path, $user, 'Junk', $group); } - + // Set permissions now recursive $app->system->exec_safe('chown -R ?:? ?', $user, $group, $data['new']['maildir']); $app->log('Set ownership on '.$data['new']['maildir'], LOGLEVEL_DEBUG); - + // Move mailbox, if domain has changed and delete old mailbox if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) { if(is_dir($data['new']['maildir'])) { @@ -470,7 +475,7 @@ class mail_plugin { } else { $app->log('Possible security violation when deleting the mail domain mailfilter directory: '.$old_maildomain_path, LOGLEVEL_ERROR); } - + //* Delete the mail-backups $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = $server_config['backup_dir']; diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php index e6251aedf1..da033b80cc 100644 --- a/server/plugins-available/mailman_plugin.inc.php +++ b/server/plugins-available/mailman_plugin.inc.php @@ -71,9 +71,12 @@ class mailman_plugin { function insert($event_name, $data) { global $app, $conf; + $global_config = $app->getconf->get_global_config('mail'); + $opt_quiet = ($global_config['enable_welcome_mail'] == 'n') ? "-q" : ""; + $this->update_config(); - $pid = $app->system->exec_safe("nohup /usr/lib/mailman/bin/newlist -u ? -e ? ? ? ? >/dev/null 2>&1 & echo $!;", $data["new"]["domain"], $data["new"]["domain"], $data["new"]["listname"], $data["new"]["email"], $data["new"]["password"]); + $pid = $app->system->exec_safe("nohup /usr/lib/mailman/bin/newlist ? -u ? -e ? ? ? ? >/dev/null 2>&1 & echo $!;", $opt_quiet, $data["new"]["domain"], $data["new"]["domain"], $data["new"]["listname"], $data["new"]["email"], $data["new"]["password"]); // wait for /usr/lib/mailman/bin/newlist-call $running = true; do { @@ -87,9 +90,9 @@ class mailman_plugin { } if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); 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 $app->system->exec_safe('/usr/sbin/withlist -l -r fix_url ?', $data["new"]["listname"]); @@ -100,7 +103,7 @@ class mailman_plugin { // The purpose of this plugin is to rewrite the main.cf file function update($event_name, $data) { global $app, $conf; - + $this->update_config(); if($data["new"]["password"] != $data["old"]["password"] && $data["new"]["password"] != '') { @@ -108,7 +111,7 @@ class mailman_plugin { exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ?", $data["new"]['mailinglist_id']); } - + if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); } @@ -121,7 +124,7 @@ class mailman_plugin { $app->system->exec_safe("nohup /usr/lib/mailman/bin/rmlist -a ? >/dev/null 2>&1 &", $data["old"]["listname"]); exec('nohup '.$conf['init_scripts'] . '/' . 'mailman reload >/dev/null 2>&1 &'); - + if(is_file('/var/lib/mailman/data/virtual-mailman')) exec('postmap /var/lib/mailman/data/virtual-mailman'); if(is_file('/var/lib/mailman/data/transport-mailman')) exec('postmap /var/lib/mailman/data/transport-mailman'); -- GitLab From ebcbdbbe1b34aa3375a19d1f806c0139bd35396e Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Tue, 28 Jul 2020 10:18:13 +0200 Subject: [PATCH 541/571] Send welcome email only if it's enabled (#1804) --- server/plugins-available/mail_plugin.inc.php | 113 +++++++++---------- 1 file changed, 55 insertions(+), 58 deletions(-) diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php index 6c8737cfe0..c584b68215 100644 --- a/server/plugins-available/mail_plugin.inc.php +++ b/server/plugins-available/mail_plugin.inc.php @@ -194,67 +194,64 @@ class mail_plugin { } } } - - $global_config = $app->getconf->get_global_config('mail'); - if($global_config['enable_welcome_mail'] == 'n') { - return; - } - - //* Send the welcome email message - $tmp = explode('@', $data["new"]["email"]); - $domain = $tmp[1]; - unset($tmp); - $html = false; - if(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.html')) { - $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.html'); - $html = true; - } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.html')) { - $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.html'); - $html = true; - } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.txt')) { - $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.txt'); - } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt')) { - $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt'); - } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt')) { - $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt'); - } elseif(file_exists($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt')) { - $lines = file($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt'); - } else { - $lines = file($conf['rootpath'].'/conf/mail/welcome_email_en.txt'); - } - //* Get from address - $parts = explode(':', trim($lines[0])); - unset($parts[0]); - $welcome_mail_from = implode(':', $parts); - unset($lines[0]); - - //* Get subject - $parts = explode(':', trim($lines[1])); - unset($parts[0]); - $welcome_mail_subject = implode(':', $parts); - unset($lines[1]); - - //* Get message - $welcome_mail_message = trim(implode($lines)); - unset($tmp); - - $mailHeaders = "MIME-Version: 1.0" . "\n"; - if($html) { - $mailHeaders .= "Content-Type: text/html; charset=utf-8" . "\n"; - $mailHeaders .= "Content-Transfer-Encoding: quoted-printable" . "\n"; - } else { - $mailHeaders .= "Content-Type: text/plain; charset=utf-8" . "\n"; - $mailHeaders .= "Content-Transfer-Encoding: 8bit" . "\n"; - } - $mailHeaders .= "From: $welcome_mail_from" . "\n"; - $mailHeaders .= "Reply-To: $welcome_mail_from" . "\n"; - $mailTarget = $data["new"]["email"]; - $mailSubject = "=?utf-8?B?".base64_encode($welcome_mail_subject)."?="; + $global_config = $app->getconf->get_global_config('mail'); + if($global_config['enable_welcome_mail'] == 'y') { + //* Send the welcome email message + $tmp = explode('@', $data["new"]["email"]); + $domain = $tmp[1]; + unset($tmp); + $html = false; + if(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.html')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.html'); + $html = true; + } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.html')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.html'); + $html = true; + } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.txt')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$domain.'.txt'); + } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt'); + } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt'); + } elseif(file_exists($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt')) { + $lines = file($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt'); + } else { + $lines = file($conf['rootpath'].'/conf/mail/welcome_email_en.txt'); + } - //* Send the welcome email only on the "master" mail server to avoid duplicate emails - if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders); + //* Get from address + $parts = explode(':', trim($lines[0])); + unset($parts[0]); + $welcome_mail_from = implode(':', $parts); + unset($lines[0]); + + //* Get subject + $parts = explode(':', trim($lines[1])); + unset($parts[0]); + $welcome_mail_subject = implode(':', $parts); + unset($lines[1]); + + //* Get message + $welcome_mail_message = trim(implode($lines)); + unset($tmp); + + $mailHeaders = "MIME-Version: 1.0" . "\n"; + if($html) { + $mailHeaders .= "Content-Type: text/html; charset=utf-8" . "\n"; + $mailHeaders .= "Content-Transfer-Encoding: quoted-printable" . "\n"; + } else { + $mailHeaders .= "Content-Type: text/plain; charset=utf-8" . "\n"; + $mailHeaders .= "Content-Transfer-Encoding: 8bit" . "\n"; + } + $mailHeaders .= "From: $welcome_mail_from" . "\n"; + $mailHeaders .= "Reply-To: $welcome_mail_from" . "\n"; + $mailTarget = $data["new"]["email"]; + $mailSubject = "=?utf-8?B?".base64_encode($welcome_mail_subject)."?="; + //* Send the welcome email only on the "master" mail server to avoid duplicate emails + if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders); + } } function user_update($event_name, $data) { -- GitLab From e39688e4c9a684e90df312d576786077462cdaba Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Tue, 28 Jul 2020 13:28:07 +0200 Subject: [PATCH 542/571] Hide APS by default (First step to #5676) --- install/tpl/system.ini.master | 1 + interface/web/sites/lib/module.conf.php | 58 +++++++++++++------------ 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 81f6bba553..d6dfa18f47 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -35,6 +35,7 @@ client_username_web_check_disabled=n backups_include_into_web_quota=n reseller_can_use_options=n web_php_options=no,fast-cgi,mod,php-fpm +show_aps_menu=n [tools] diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php index a9aefad967..775a704873 100644 --- a/interface/web/sites/lib/module.conf.php +++ b/interface/web/sites/lib/module.conf.php @@ -157,33 +157,37 @@ if($app->auth->get_client_limit($userid, 'shell_user') != 0 or $app->auth->get_c } // APS menu -if($app->auth->get_client_limit($userid, 'aps') != 0) -{ - $items = array(); - - $items[] = array( 'title' => 'Available packages', - 'target' => 'content', - 'link' => 'sites/aps_availablepackages_list.php', - 'html_id' => 'aps_availablepackages_list'); - - $items[] = array( 'title' => 'Installed packages', - 'target' => 'content', - 'link' => 'sites/aps_installedpackages_list.php', - 'html_id' => 'aps_installedpackages_list'); - - - // Second menu group, available only for admins - if($_SESSION['s']['user']['typ'] == 'admin') - { - $items[] = array( 'title' => 'Update Packagelist', - 'target' => 'content', - 'link' => 'sites/aps_update_packagelist.php', - 'html_id' => 'aps_packagedetails_show'); - } - - $module['nav'][] = array( 'title' => 'APS Installer', - 'open' => 1, - 'items' => $items); +if($app->auth->get_client_limit($userid, 'aps') != 0) { + // read web config + $app->uses('getconf'); + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['show_aps_menu'] == 'y') { + $items = array(); + + $items[] = array( 'title' => 'Available packages', + 'target' => 'content', + 'link' => 'sites/aps_availablepackages_list.php', + 'html_id' => 'aps_availablepackages_list'); + + $items[] = array( 'title' => 'Installed packages', + 'target' => 'content', + 'link' => 'sites/aps_installedpackages_list.php', + 'html_id' => 'aps_installedpackages_list'); + + + // Second menu group, available only for admins + if($_SESSION['s']['user']['typ'] == 'admin') + { + $items[] = array( 'title' => 'Update Packagelist', + 'target' => 'content', + 'link' => 'sites/aps_update_packagelist.php', + 'html_id' => 'aps_packagedetails_show'); + } + + $module['nav'][] = array( 'title' => 'APS Installer', + 'open' => 1, + 'items' => $items); + } } // Statistics menu -- GitLab From 6aa06901f3bd4491333d5fa1ec16e26ac1bc621c Mon Sep 17 00:00:00 2001 From: Florian Schaal <info@schaal-24.de> Date: Tue, 28 Jul 2020 14:07:05 +0200 Subject: [PATCH 543/571] update affected websites when a directive snippet was updated (Implements #5632) --- .../sql/incremental/upd_dev_collection.sql | 3 ++ install/sql/ispconfig3.sql | 1 + .../web/admin/directive_snippets_edit.php | 34 +++++++++++++++++-- .../admin/form/directive_snippets.tform.php | 6 ++++ .../admin/lib/lang/ar_directive_snippets.lng | 1 + .../admin/lib/lang/bg_directive_snippets.lng | 1 + .../admin/lib/lang/br_directive_snippets.lng | 1 + .../admin/lib/lang/ca_directive_snippets.lng | 1 + .../admin/lib/lang/cz_directive_snippets.lng | 1 + .../admin/lib/lang/de_directive_snippets.lng | 1 + .../admin/lib/lang/dk_directive_snippets.lng | 1 + .../admin/lib/lang/el_directive_snippets.lng | 1 + .../admin/lib/lang/en_directive_snippets.lng | 1 + .../admin/lib/lang/es_directive_snippets.lng | 1 + .../admin/lib/lang/fi_directive_snippets.lng | 1 + .../admin/lib/lang/fr_directive_snippets.lng | 1 + .../admin/lib/lang/hr_directive_snippets.lng | 1 + .../admin/lib/lang/hu_directive_snippets.lng | 1 + .../admin/lib/lang/id_directive_snippets.lng | 1 + .../admin/lib/lang/it_directive_snippets.lng | 1 + .../admin/lib/lang/ja_directive_snippets.lng | 1 + .../admin/lib/lang/nl_directive_snippets.lng | 1 + .../admin/lib/lang/pl_directive_snippets.lng | 1 + .../admin/lib/lang/pt_directive_snippets.lng | 1 + .../admin/lib/lang/ro_directive_snippets.lng | 1 + .../admin/lib/lang/ru_directive_snippets.lng | 1 + .../admin/lib/lang/se_directive_snippets.lng | 1 + .../admin/lib/lang/sk_directive_snippets.lng | 1 + .../admin/lib/lang/tr_directive_snippets.lng | 1 + .../templates/directive_snippets_edit.htm | 5 ++- server/mods-available/web_module.inc.php | 13 +++++-- .../plugins-available/apache2_plugin.inc.php | 28 +++++++++++++++ server/plugins-available/nginx_plugin.inc.php | 29 ++++++++++++++++ 33 files changed, 139 insertions(+), 5 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 9eefff3630..1deb605028 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -62,3 +62,6 @@ ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'y -- Change id_rsa column to TEXT format ALTER TABLE `client` CHANGE `id_rsa` `id_rsa` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; + +ALTER TABLE `directive_snippets` ADD `update_sites` ENUM('y','n') NOT NULL DEFAULT 'n' ; + diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index fae07c8036..cac7ad0f08 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -470,6 +470,7 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` ( `required_php_snippets` varchar(255) NOT NULL DEFAULT '', `active` enum('n','y') NOT NULL DEFAULT 'y', `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0', + `update_sites` ENUM('y','n') NOT NULL DEFAULT 'n', PRIMARY KEY (`directive_snippets_id`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/interface/web/admin/directive_snippets_edit.php b/interface/web/admin/directive_snippets_edit.php index b12da0a79b..af700213a4 100644 --- a/interface/web/admin/directive_snippets_edit.php +++ b/interface/web/admin/directive_snippets_edit.php @@ -75,22 +75,52 @@ class page_action extends tform_actions { $app->tpl->setVar("snippet", $this->dataRecord['snippet'], true); } } + $app->tpl->setVar("is_master", $is_master); + + if($this->dataRecord['managed_snippet_id'] > 0) { + } parent::onShowEnd(); } function onSubmit() { global $app, $conf; - + if($this->id > 0){ $record = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ?", $this->id); if($record['master_directive_snippets_id'] > 0){ unset($app->tform->formDef["tabs"]['directive_snippets']['fields']['name'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['type'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['snippet'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['required_php_snippets']); } + + if(isset($this->dataRecord['update_sites'])) { + parent::onSubmit(); + } else { + $app->db->query('UPDATE directive_snippets SET name = ?, type = ?, snippet = ?, customer_viewable = ?, required_php_snippets = ?, active = ? WHERE directive_snippets_id = ?', $this->dataRecord['name'], $this->dataRecord['type'], $this->dataRecord['snippet'], $this->dataRecord['customer_viewable'], implode(',', $this->dataRecord['required_php_snippets']), $this->dataRecord['active'], $this->id); + + if($_REQUEST["next_tab"] == '') { + $list_name = $_SESSION["s"]["form"]["return_to"]; + if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"]; + $_SESSION["s"]["form"]["return_to"] = ''; + session_write_close(); + header($redirect); + } elseif (isset($_SESSION["s"]["form"]["return_to_url"]) && $_SESSION["s"]["form"]["return_to_url"] != '') { + $redirect = $_SESSION["s"]["form"]["return_to_url"]; + $_SESSION["s"]["form"]["return_to_url"] = ''; + session_write_close(); + header("Location: ".$redirect); + exit; + } else { + header("Location: ".$app->tform->formDef['list_default']); + } + exit; + } + } + unset($record); } - + parent::onSubmit(); } diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php index bd9466c310..bf7f2b7fe5 100644 --- a/interface/web/admin/form/directive_snippets.tform.php +++ b/interface/web/admin/form/directive_snippets.tform.php @@ -110,6 +110,12 @@ $form["tabs"]['directive_snippets'] = array ( 'default' => 'y', 'value' => array(0 => 'n', 1 => 'y') ), + 'update_sites' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), 'required_php_snippets' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOXARRAY', diff --git a/interface/web/admin/lib/lang/ar_directive_snippets.lng b/interface/web/admin/lib/lang/ar_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/ar_directive_snippets.lng +++ b/interface/web/admin/lib/lang/ar_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/bg_directive_snippets.lng b/interface/web/admin/lib/lang/bg_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/bg_directive_snippets.lng +++ b/interface/web/admin/lib/lang/bg_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng index 43c46c69b9..bc94b85b7d 100644 --- a/interface/web/admin/lib/lang/br_directive_snippets.lng +++ b/interface/web/admin/lib/lang/br_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva com este $wb['variables_txt'] = 'Variáveis'; $wb['customer_viewable_txt'] = 'Visualização personalizada'; $wb['required_php_snippets_txt'] = 'Trecho de código exige php'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/ca_directive_snippets.lng b/interface/web/admin/lib/lang/ca_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/ca_directive_snippets.lng +++ b/interface/web/admin/lib/lang/ca_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/cz_directive_snippets.lng b/interface/web/admin/lib/lang/cz_directive_snippets.lng index 1fd316583b..26d17f64b3 100644 --- a/interface/web/admin/lib/lang/cz_directive_snippets.lng +++ b/interface/web/admin/lib/lang/cz_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'PromÄ›nné'; $wb['customer_viewable_txt'] = 'Dostupná volba pro klienta'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/de_directive_snippets.lng b/interface/web/admin/lib/lang/de_directive_snippets.lng index 9e369f4b51..dbe3aaf8bd 100644 --- a/interface/web/admin/lib/lang/de_directive_snippets.lng +++ b/interface/web/admin/lib/lang/de_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Es existiert schon ein Direktiven $wb['variables_txt'] = 'Variablen'; $wb['customer_viewable_txt'] = 'Sichtbar für Kunden'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/dk_directive_snippets.lng b/interface/web/admin/lib/lang/dk_directive_snippets.lng index 7b43dcd40b..1b158e5c80 100644 --- a/interface/web/admin/lib/lang/dk_directive_snippets.lng +++ b/interface/web/admin/lib/lang/dk_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Der er allerede et direktiv uddra $wb['variables_txt'] = 'Variabler'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/el_directive_snippets.lng b/interface/web/admin/lib/lang/el_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/el_directive_snippets.lng +++ b/interface/web/admin/lib/lang/el_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/en_directive_snippets.lng b/interface/web/admin/lib/lang/en_directive_snippets.lng index 8e8a63afe1..da164a5318 100644 --- a/interface/web/admin/lib/lang/en_directive_snippets.lng +++ b/interface/web/admin/lib/lang/en_directive_snippets.lng @@ -9,4 +9,5 @@ $wb["directive_snippets_name_error_unique"] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng index 8e2a927079..a5bb21b494 100644 --- a/interface/web/admin/lib/lang/es_directive_snippets.lng +++ b/interface/web/admin/lib/lang/es_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['snippet_txt'] = 'Fragmento'; $wb['type_txt'] = 'Tipo'; $wb['variables_txt'] = 'Variables'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/fi_directive_snippets.lng b/interface/web/admin/lib/lang/fi_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/fi_directive_snippets.lng +++ b/interface/web/admin/lib/lang/fi_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/fr_directive_snippets.lng b/interface/web/admin/lib/lang/fr_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/fr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/fr_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/hr_directive_snippets.lng b/interface/web/admin/lib/lang/hr_directive_snippets.lng index 077896577d..5709d6075d 100644 --- a/interface/web/admin/lib/lang/hr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/hr_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Već postoji direktiva sa tim ime $wb['variables_txt'] = 'Varijable'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/hu_directive_snippets.lng b/interface/web/admin/lib/lang/hu_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/hu_directive_snippets.lng +++ b/interface/web/admin/lib/lang/hu_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/id_directive_snippets.lng b/interface/web/admin/lib/lang/id_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/id_directive_snippets.lng +++ b/interface/web/admin/lib/lang/id_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/it_directive_snippets.lng b/interface/web/admin/lib/lang/it_directive_snippets.lng index 5598aacecc..e9a473f92e 100644 --- a/interface/web/admin/lib/lang/it_directive_snippets.lng +++ b/interface/web/admin/lib/lang/it_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Esiste già una direttiva snippet $wb['variables_txt'] = 'Variabili'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/ja_directive_snippets.lng b/interface/web/admin/lib/lang/ja_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/ja_directive_snippets.lng +++ b/interface/web/admin/lib/lang/ja_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/nl_directive_snippets.lng b/interface/web/admin/lib/lang/nl_directive_snippets.lng index a4f610634e..d216622c6f 100644 --- a/interface/web/admin/lib/lang/nl_directive_snippets.lng +++ b/interface/web/admin/lib/lang/nl_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Er is al een Directive Snippet me $wb['variables_txt'] = 'Variabelen'; $wb['customer_viewable_txt'] = 'Zichtbaar voor klanten'; $wb['required_php_snippets_txt'] = 'Vereiste PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/pl_directive_snippets.lng b/interface/web/admin/lib/lang/pl_directive_snippets.lng index 4902bf3282..abef1e28fa 100644 --- a/interface/web/admin/lib/lang/pl_directive_snippets.lng +++ b/interface/web/admin/lib/lang/pl_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Istnieje już zestaw dyrektyw o p $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/pt_directive_snippets.lng b/interface/web/admin/lib/lang/pt_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/pt_directive_snippets.lng +++ b/interface/web/admin/lib/lang/pt_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/ro_directive_snippets.lng b/interface/web/admin/lib/lang/ro_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/ro_directive_snippets.lng +++ b/interface/web/admin/lib/lang/ro_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/ru_directive_snippets.lng b/interface/web/admin/lib/lang/ru_directive_snippets.lng index cfa09a02fc..120a962d7f 100644 --- a/interface/web/admin/lib/lang/ru_directive_snippets.lng +++ b/interface/web/admin/lib/lang/ru_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Уже еÑÑ‚ÑŒ заготовк $wb['variables_txt'] = 'Переменные:'; $wb['customer_viewable_txt'] = 'Видимый клиентам'; $wb['required_php_snippets_txt'] = 'ОбÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ PHP-заготовка'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/se_directive_snippets.lng b/interface/web/admin/lib/lang/se_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/se_directive_snippets.lng +++ b/interface/web/admin/lib/lang/se_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/sk_directive_snippets.lng b/interface/web/admin/lib/lang/sk_directive_snippets.lng index 0616afad8b..071d6f4fed 100644 --- a/interface/web/admin/lib/lang/sk_directive_snippets.lng +++ b/interface/web/admin/lib/lang/sk_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip $wb['variables_txt'] = 'Variables'; $wb['customer_viewable_txt'] = 'Customer viewable'; $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng index 448d453672..4c1cebea4e 100644 --- a/interface/web/admin/lib/lang/tr_directive_snippets.lng +++ b/interface/web/admin/lib/lang/tr_directive_snippets.lng @@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge kod par $wb['variables_txt'] = 'DeÄŸiÅŸkenler'; $wb['customer_viewable_txt'] = 'Müşteri görebilir'; $wb['required_php_snippets_txt'] = 'Gerekli PHP Parçası'; +$wb['update_sites_txt'] = 'Update sites using this snippet'; ?> diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm index ee4d2ab3cd..4506cafd63 100644 --- a/interface/web/admin/templates/directive_snippets_edit.htm +++ b/interface/web/admin/templates/directive_snippets_edit.htm @@ -36,7 +36,10 @@ {tmpl_var name='active'} </div> </div> - + <div class="form-group"> + <label for="update_sites" class="col-sm-3 control-label">{tmpl_var name='update_sites_txt'}</label> + <div class="col-sm-9">{tmpl_var name='update_sites'}</div> + </div> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index 02f31510c2..609e9212dc 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -32,7 +32,8 @@ class web_module { var $module_name = 'web_module'; var $class_name = 'web_module'; - var $actions_available = array( 'web_domain_insert', + var $actions_available = array( + 'web_domain_insert', 'web_domain_update', 'web_domain_delete', 'ftp_user_insert', @@ -64,7 +65,9 @@ class web_module { 'aps_package_delete', 'aps_setting_insert', 'aps_setting_update', - 'aps_setting_delete'); + 'aps_setting_delete', + 'directive_snippets_update' + ); //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. @@ -114,6 +117,7 @@ class web_module { $app->modules->registerTableHook('aps_instances_settings', 'web_module', 'process'); $app->modules->registerTableHook('aps_packages', 'web_module', 'process'); $app->modules->registerTableHook('aps_settings', 'web_module', 'process'); + $app->modules->registerTableHook('directive_snippets', 'web_module', 'process'); // Register service $app->services->registerService('httpd', 'web_module', 'restartHttpd'); @@ -185,6 +189,11 @@ class web_module { if($action == 'u') $app->plugins->raiseEvent('aps_setting_update', $data); if($action == 'd') $app->plugins->raiseEvent('aps_setting_delete', $data); break; + case 'directive_snippets': + if($action == 'i') $app->plugins->raiseEvent('directive_snippets_insert', $data); + if($action == 'u') $app->plugins->raiseEvent('directive_snippets_update', $data); + if($action == 'd') $app->plugins->raiseEvent('directive_snippets_delete', $data); + break; } // end switch } // end function diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 4553208638..3ef5e21467 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -93,6 +93,34 @@ class apache2_plugin { $app->plugins->registerEvent('ftp_user_delete', $this->plugin_name, 'ftp_user_delete'); $app->plugins->registerAction('php_ini_changed', $this->plugin_name, 'php_ini_changed'); + + $app->plugins->registerEvent('directive_snippets_update', $this->plugin_name, 'directive_snippets'); + } + + function directive_snippets($event_name, $data) { + global $app, $conf; + + $snippet = $data['new']; + if($snippet['active'] == 'y' && $snippet['update_sites'] == 'y') { + if($snippet['type'] == 'php') { + $rlike = $snippet['directive_snippets_id'].'|,'.$snippet['directive_snippets_id'].'|'.$snippet['directive_snippets_id'].','; + $affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'apache'); + if(is_array($affected_snippets) && !empty($affected_snippets)) { + foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id']; + $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN('.implode(',', $sql_in).')', $conf['server_id']); + } + } + if($snippet['type'] == 'apache') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']); + + if(is_array($affected_sites) && !empty($affected_sites)) { + foreach($affected_sites as $site) { + $website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $site['domain_id']); + $new_data['old'] = $website; + $new_data['new'] = $website; + $this->update('web_domain_update', $new_data); + } + } + } } private function get_master_php_ini_content($web_data) { diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 4116c18676..85661b97ce 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -88,6 +88,35 @@ class nginx_plugin { $app->plugins->registerEvent('web_folder_update', $this->plugin_name, 'web_folder_update'); $app->plugins->registerEvent('web_folder_delete', $this->plugin_name, 'web_folder_delete'); + + $app->plugins->registerEvent('directive_snippets_update', $this->plugin_name, 'directive_snippets'); + } + + function directive_snippets($event_name, $data) { + global $app, $conf; + + $snippet = $data['new']; + + if($snippet['active'] == 'y' && $snippet['update_sites'] == 'y') { + if($snippet['type'] == 'php') { + $rlike = $snippet['directive_snippets_id'].'|,'.$snippet['directive_snippets_id'].'|'.$snippet['directive_snippets_id'].','; + $affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'nginx'); + if(is_array($affected_snippets) && !empty($affected_snippets)) { + foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id']; + $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN('.implode(',', $sql_in).')', $conf['server_id']); + } + } + if($snippet['type'] == 'nginx') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']); + + if(is_array($affected_sites) && !empty($affected_sites)) { + foreach($affected_sites as $site) { + $website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $site['domain_id']); + $new_data['old'] = $website; + $new_data['new'] = $website; + $this->update('web_domain_update', $new_data); + } + } + } } // Handle the creation of SSL certificates -- GitLab From 2bb522c8c7d281d044084b504668dac24ab5d8ca Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Wed, 29 Jul 2020 07:53:52 +0200 Subject: [PATCH 544/571] Update directive_snippets_edit.php --- interface/web/admin/directive_snippets_edit.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/interface/web/admin/directive_snippets_edit.php b/interface/web/admin/directive_snippets_edit.php index af700213a4..e22a7cf42a 100644 --- a/interface/web/admin/directive_snippets_edit.php +++ b/interface/web/admin/directive_snippets_edit.php @@ -77,9 +77,6 @@ class page_action extends tform_actions { } $app->tpl->setVar("is_master", $is_master); - - if($this->dataRecord['managed_snippet_id'] > 0) { - } parent::onShowEnd(); } -- GitLab From 5fb3abafa99f79f0e5052981ab7bb9a49790288c Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Wed, 29 Jul 2020 07:54:48 +0200 Subject: [PATCH 545/571] Apply 1 suggestion(s) to 1 file(s) --- server/plugins-available/nginx_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 85661b97ce..f31c378c0f 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -103,7 +103,7 @@ class nginx_plugin { $affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'nginx'); if(is_array($affected_snippets) && !empty($affected_snippets)) { foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id']; - $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN('.implode(',', $sql_in).')', $conf['server_id']); + $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in); } } if($snippet['type'] == 'nginx') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']); -- GitLab From 4c2cca6dfbf9810f344206ad0ef7503bc95a450d Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Wed, 29 Jul 2020 07:56:57 +0200 Subject: [PATCH 546/571] Update apache2_plugin.inc.php --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 3ef5e21467..584f313e80 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -107,7 +107,7 @@ class apache2_plugin { $affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'apache'); if(is_array($affected_snippets) && !empty($affected_snippets)) { foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id']; - $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN('.implode(',', $sql_in).')', $conf['server_id']); + $$affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in); } } if($snippet['type'] == 'apache') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']); -- GitLab From cf865a976be5a079b3269b4e41e34b32ff2fca45 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Wed, 29 Jul 2020 08:58:48 +0200 Subject: [PATCH 547/571] - added missing server_php_ini column --- install/sql/ispconfig3.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index fae07c8036..c35d55331a 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -2081,6 +2081,7 @@ CREATE TABLE `web_domain` ( `folder_directive_snippets` text, `log_retention` int(11) NOT NULL DEFAULT '10', `proxy_protocol` enum('n','y') NOT NULL default 'n', + `server_php_id` INT(11) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`domain_id`), UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` ) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- GitLab From 2ece9ca0cee51d82193d9fb5b269434b8168cb79 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Wed, 29 Jul 2020 12:39:07 +0200 Subject: [PATCH 548/571] clean up in 150-goaccess.inc.php --- .../lib/classes/cron.d/150-goaccess.inc.php | 186 +++++++++--------- 1 file changed, 95 insertions(+), 91 deletions(-) diff --git a/server/lib/classes/cron.d/150-goaccess.inc.php b/server/lib/classes/cron.d/150-goaccess.inc.php index 87c9642b4e..7c70486317 100644 --- a/server/lib/classes/cron.d/150-goaccess.inc.php +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -80,133 +80,137 @@ class cronjob_goaccess extends cronjob { system("type goaccess 2>&1>/dev/null", $retval); if ($retval === 0) { - foreach($records as $rec) { - $yesterday = date('Ymd', strtotime("-1 day", time())); + foreach($records as $rec) { + $yesterday = date('Ymd', strtotime("-1 day", time())); - $log_folder = 'log'; + $log_folder = 'log'; - if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') { - $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $rec['parent_domain_id']); - $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']); - if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id']; - $log_folder .= '/' . $subdomain_host; - unset($tmp); - } + if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') { + $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $rec['parent_domain_id']); + $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']); + if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id']; + $log_folder .= '/' . $subdomain_host; + unset($tmp); + } - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; - if(!@is_file($logfile)) { - $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); if(!@is_file($logfile)) { - continue; + $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'; + if(!@is_file($logfile)) { + continue; + } } - } - $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web'); - $domain = escapeshellcmd($rec['domain']); - $statsdir = escapeshellcmd($rec['document_root'].'/'.$web_folder.'/stats'); - $goaccess_conf = escapeshellcmd($rec['document_root'].'/log/goaccess.conf'); + $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web'); + $domain = $rec['domain']; + $statsdir = $rec['document_root'].'/'.$web_folder.'/stats'; + $goaccess_conf = $rec['document_root'].'/log/goaccess.conf'; - /* - In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. - By default the originally, with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. - */ - - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); - } elseif(!file_exists($goaccess_conf)) { /* - By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. - Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. + By default the originally, with GoAccess shipped goaccess.conf from /etc/ or /etc/goaccess will be used along with the log-format value COMBINED. */ - copy($goaccess_conf_main, $goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); - } - /* Update the primary domain name in the title, it could occasionally change */ - if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { - $goaccess_content = file_get_contents($goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)?/m', "html-report-title $domain", file_get_contents($goaccess_conf))); - } + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + } elseif(!file_exists($goaccess_conf)) { + /* + By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. + Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + */ + copy($goaccess_conf_main, $goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + } + + /* Update the primary domain name in the title, it could occasionally change */ + if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { + $goaccess_content = file_get_contents($goaccess_conf); + file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)?/m', "html-report-title $domain", file_get_contents($goaccess_conf))); + unset($goaccess_content); + } - if(!@is_dir($statsdir)) mkdir($statsdir); - $username = escapeshellcmd($rec['system_user']); - $groupname = escapeshellcmd($rec['system_group']); - $docroot = $rec['document_root']; - $goa_db_dir = $docroot.'/'.$web_folder.'/stats/.db/'; - $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; - if(!@is_dir($goa_db_dir)) mkdir($goa_db_dir); + if(!@is_dir($statsdir)) mkdir($statsdir); + $username = $rec['system_user']; + $groupname = $rec['system_group']; + $docroot = $rec['document_root']; - if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); - symlink($logfile, '/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); + $goa_db_dir = $docroot.'/'.$web_folder.'/stats/.db/'; + $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; + if(!@is_dir($goa_db_dir)) mkdir($goa_db_dir); + + if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); + symlink($logfile, '/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); - chown($statsdir, $username); - chgrp($statsdir, $groupname); + chown($statsdir, $username); + chgrp($statsdir, $groupname); - $goamonth = date("n"); - $goayear = date("Y"); + $goamonth = date("n"); + $goayear = date("Y"); - if (date("d") == 1) { - $goamonth = date("m")-1; - if (date("m") == 1) { - $goayear = date("Y")-1; - $goamonth = "12"; + if (date("d") == 1) { + $goamonth = date("m")-1; + if (date("m") == 1) { + $goayear = date("Y")-1; + $goamonth = "12"; + } } - } - if (date("d") == 2) { - $goamonth = date("m")-1; - if (date("m") == 1) { - $goayear = date("Y")-1; - $goamonth = "12"; - } + if (date("d") == 2) { + $goamonth = date("m")-1; + if (date("m") == 1) { + $goayear = date("Y")-1; + $goamonth = "12"; + } - $statsdirold = $statsdir."/".$goayear."-".$goamonth."/"; + $statsdirold = $statsdir."/".$goayear."-".$goamonth."/"; - if(!is_dir($statsdirold)) { - mkdir($statsdirold); - } + if(!is_dir($statsdirold)) { + mkdir($statsdirold); + } - rename($goa_db_dir, $statsdirold.'db'); - mkdir($goa_db_dir); + // don't rotate db files per month + //rename($goa_db_dir, $statsdirold.'db'); + //mkdir($goa_db_dir); - $files = scandir($statsdir); - foreach ($files as $file) { - if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); + $files = scandir($statsdir); + + foreach ($files as $file) { + if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); + } } - } - $output = shell_exec('goaccess --help'); + $output = shell_exec('goaccess --help'); - if(preg_match('/keep-db-files/', $output)) { - $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); + if(preg_match('/keep-db-files/', $output)) { + $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); - if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); - } else { - copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } else { + copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } } - } - $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); - if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); - chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); - } + $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); + if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); + chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); + } - $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); - } else { - $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support!", LOGLEVEL_ERROR); - } + } else { + $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support!", LOGLEVEL_ERROR); + } - unset($output); + unset($output); } } else { -- GitLab From 81d93e4fcc0c7ede1b1b72c4c2a078fd43c2e73f Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Wed, 29 Jul 2020 13:26:28 +0200 Subject: [PATCH 549/571] added GoAccess index file compatiblity to awstats_index.php.master --- server/conf/awstats_index.php.master | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/conf/awstats_index.php.master b/server/conf/awstats_index.php.master index f7222c9687..b3e694ebbf 100644 --- a/server/conf/awstats_index.php.master +++ b/server/conf/awstats_index.php.master @@ -45,10 +45,21 @@ arsort($awprev); $options = ""; foreach ($awprev as $key => $value) { + + if(file_exists($value.'/awsindex.html') && file_exists($value.'/goaindex.html')) { + $awstatsindex = 'awsindex.html'; + } elseif(file_exists($value.'/awsindex.html') && !file_exists($value.'/goaindex.html')) { + $awstatsindex = 'awsindex.html'; + } else { + $awstatsindex = 'goaindex.html'; + } + if($key == $current) $options .= "<option selected=\"selected\" value=\"{$awstatsindex}\">{$value}</option>\n"; else $options .= "<option value=\"{$value}/{$awstatsindex}\">{$value}</option>\n"; } +$awstatsindex = 'awsindex.html'; + $html = "<!DOCTYPE html>\n<html>\n<head>\n<title>Stats</title>\n"; $html .= "<style>\nhtml,body {margin:0px;padding:0px;width:100%;height:100%;background-color: #ccc;}\n"; $html .= "#header\n{\nwidth:100%;margin:0px auto;\nheight:20px;\nposition:fixed;\npadding:4px;\ntext-align:center;\n}\n"; @@ -60,4 +71,4 @@ $html .= $options; $html .= "</select>\n</div>\n<iframe src=\"{$awstatsindex}\" id=\"content\"></iframe>\n"; $html .= "</body></html>"; echo $html; -?> \ No newline at end of file +?> -- GitLab From 5494772cebcef900fc16b7a03212715cc21f40e2 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 29 Jul 2020 11:16:42 -0600 Subject: [PATCH 550/571] installer should store encrypted rspamd password --- install/lib/installer_base.lib.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 265dd8c583..2121eadeb1 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1805,7 +1805,12 @@ class installer_base { $tpl = new tpl(); $tpl->newTemplate('rspamd_worker-controller.inc.master'); - $tpl->setVar('rspamd_password', $mail_config['rspamd_password']); + $rspamd_password = $mail_config['rspamd_password']; + $crypted_password = trim(exec('rspamadm pw -p ' . escapeshellarg($rspamd_password))); + if($crypted_password) { + $rspamd_password = $crypted_password; + } + $tpl->setVar('rspamd_password', $rspamd_password); wf('/etc/rspamd/local.d/worker-controller.inc', $tpl->grab()); chmod('/etc/rspamd/local.d/worker-controller.inc', 0644); } -- GitLab From cd7df83da3d30619bacbffa82a08d5758ea162e5 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 29 Jul 2020 13:42:29 -0600 Subject: [PATCH 551/571] set server_php_id in ajax_get_json.php --- interface/web/sites/ajax_get_json.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index 298fbdb019..e896e6fe37 100644 --- a/interface/web/sites/ajax_get_json.php +++ b/interface/web/sites/ajax_get_json.php @@ -105,9 +105,9 @@ if($type == 'getphpfastcgi'){ if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { if($php_type == 'php-fpm' || ($php_type == 'hhvm' && $server_type == 'nginx')){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; + $php_version = $php_version = $php_record['server_php_id']; } else { - $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; + $php_version = $php_version = $php_record['server_php_id']; } if($php_record['name'] != $web_config['php_default_name']) { $json .= '"'.$php_version.'": "'.$php_record['name'].'",'; -- GitLab From 8e4dfea6ce1f5f9a90edc11c0d3754d69234eff2 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 29 Jul 2020 15:33:27 -0600 Subject: [PATCH 552/571] further server_php_id fixing --- interface/web/sites/ajax_get_json.php | 8 ++-- .../sites/templates/web_vhost_domain_edit.htm | 44 ++++++++++++------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index e896e6fe37..8ca9cae31d 100644 --- a/interface/web/sites/ajax_get_json.php +++ b/interface/web/sites/ajax_get_json.php @@ -63,7 +63,7 @@ if($type == 'getserverid'){ $json .= '"}'; } -if($type == 'getphpfastcgi'){ +if($type == 'getserverphp'){ $json = '{'; $server_type = 'apache'; @@ -105,14 +105,14 @@ if($type == 'getphpfastcgi'){ if(is_array($php_records) && !empty($php_records)) { foreach( $php_records as $php_record) { if($php_type == 'php-fpm' || ($php_type == 'hhvm' && $server_type == 'nginx')){ - $php_version = $php_version = $php_record['server_php_id']; + $php_version = $php_record['server_php_id']; } else { - $php_version = $php_version = $php_record['server_php_id']; + $php_version = $php_record['server_php_id']; } if($php_record['name'] != $web_config['php_default_name']) { $json .= '"'.$php_version.'": "'.$php_record['name'].'",'; } else { - $json .= '"": "'.$php_record['name'].'",'; + $json .= '"0": "'.$php_record['name'].'",'; } } } diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 0b17e38022..8728d9c571 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -280,26 +280,31 @@ serverId = $(this).val(); adjustForm(); reloadWebIP(); - reloadFastcgiPHPVersions(); + reloadServerPHPVersions(); reloadDirectiveSnippets(); }); } adjustForm(true); - reloadFastcgiPHPVersions(true); + reloadServerPHPVersions(true); jQuery('#client_group_id').change(function(){ clientGroupId = $(this).val(); reloadWebIP(); - reloadFastcgiPHPVersions(); + reloadServerPHPVersions(); }); if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm' || (jQuery('#php').val() == 'hhvm' && serverType == 'nginx')){ jQuery('.server_php_id:hidden').show(); + // This block can be removed? if(jQuery('#php').val() == 'hhvm'){ + // There is no element with id="server_php_id_txt" jQuery('#server_php_id_txt').hide(); + // There is no element with id="#fastcgi_php_fallback_version_txt" jQuery('#fastcgi_php_fallback_version_txt').show(); } else { + // There is no element with id="server_php_id_txt" jQuery('#server_php_id_txt').show(); + // There is no element with id="#fastcgi_php_fallback_version_txt" jQuery('#fastcgi_php_fallback_version_txt').hide(); } } else { @@ -308,14 +313,19 @@ //ISPConfig.resetFormChanged(); jQuery('#php').change(function(){ - reloadFastcgiPHPVersions(); + reloadServerPHPVersions(); if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm' || (jQuery(this).val() == 'hhvm' && serverType == 'nginx')){ jQuery('.server_php_id:hidden').show(); + // This block can be removed? if(jQuery(this).val() == 'hhvm'){ + // There is no element with id="server_php_id_txt" jQuery('#server_php_id_txt').hide(); + // There is no element with id="#fastcgi_php_fallback_version_txt" jQuery('#fastcgi_php_fallback_version_txt').show(); } else { + // There is no element with id="server_php_id_txt" jQuery('#server_php_id_txt').show(); + // There is no element with id="#fastcgi_php_fallback_version_txt" jQuery('#fastcgi_php_fallback_version_txt').hide(); } } else { @@ -348,7 +358,7 @@ jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : parentWebId, type : "getserverid"}, function(data) { if(data.serverid) serverId = data.serverid; adjustForm(noFormChange); - if(noFormChange) reloadFastcgiPHPVersions(noFormChange); + if(noFormChange) reloadServerPHPVersions(noFormChange); }); } @@ -438,33 +448,33 @@ $('#'+elem).select2(); } - 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) { + function reloadServerPHPVersions(noFormChange) { + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getserverphp", client_group_id : clientGroupId}, function(data) { //var options = '<option value="">Default</option>'; var options = ''; - var phpfastcgiselected = ''; + var serverphpidselected = ''; $.each(data, function(key, val) { <tmpl_if name="id"> if($('#server_php_id').val() == key){ - phpfastcgiselected = ' selected="selected"'; + serverphpidselected = ' selected="selected"'; } else { - phpfastcgiselected = ''; + serverphpidselected = ''; } </tmpl_else> - phpfastcgiselected = ''; + serverphpidselected = ''; </tmpl_if> - options += '<option value="'+key+'"'+phpfastcgiselected+'>'+val+'</option>'; + options += '<option value="'+key+'"'+serverphpidselected+'>'+val+'</option>'; }); <tmpl_if name="id"> - if($('#server_php_id').val() == ''){ - phpfastcgiselected = ' selected="selected"'; + if($('#server_php_id').val() == '0'){ + serverphpidselected = ' selected="selected"'; } else { - phpfastcgiselected = ''; + serverphpidselected = ''; } </tmpl_else> - phpfastcgiselected = ''; + serverphpidselected = ''; </tmpl_if> - //options += '<option value=""'+phpfastcgiselected+'>{tmpl_var name="default_php_txt"}</option>'; + //options += '<option value=""'+serverphpidselected+'>{tmpl_var name="default_php_txt"}</option>'; $('#server_php_id').html(options).change(); if(noFormChange) ISPConfig.resetFormChanged(); }); -- GitLab From 600a4b0a7f1ee89e8fc14d20ba54598d832b4c3b Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 29 Jul 2020 17:06:26 -0600 Subject: [PATCH 553/571] sender_cc must be optional --- interface/web/mail/form/mail_user.tform.php | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index b46e43b98e..da47041093 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -200,6 +200,7 @@ $form["tabs"]['mailuser'] = array( 'type' => 'TOLOWER') ), 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'allowempty' => 'y', 'errmsg'=> 'sender_cc_error_isemail'), ), 'default' => '', -- GitLab From ce345aff685772fed0fe3c67b8c3debc5912ebf3 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Wed, 29 Jul 2020 17:48:56 -0600 Subject: [PATCH 554/571] allow '+' recipient delimiter in sender_cc address --- interface/web/mail/form/mail_user.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index da47041093..67330f4658 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -199,7 +199,7 @@ $form["tabs"]['mailuser'] = array( 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') ), - 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAILADDRESS', 'allowempty' => 'y', 'errmsg'=> 'sender_cc_error_isemail'), ), -- GitLab From e98bb168681760e194512f9332af7a61b152aaaf Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 30 Jul 2020 14:12:15 +0200 Subject: [PATCH 555/571] Fixes #5681 mysql-verify_recipients.cf owner/permissions --- install/dist/lib/fedora.lib.php | 6 ------ install/dist/lib/opensuse.lib.php | 6 ------ install/lib/installer_base.lib.php | 16 ++++++++++------ 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 9ffc7d0ef4..0cf2141f72 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -121,12 +121,6 @@ class installer_dist extends installer_base { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); wf($full_file_name, $content); - //* Changing mode and group of the new created config files. - caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); - caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed'); - //* Creating virtual mail user and group $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname']; if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 15ab5b6e91..1401614c3f 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -118,12 +118,6 @@ class installer_dist extends installer_base { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/postfix-'.$filename.'.master', 'tpl/postfix-'.$filename.'.master'); wf($full_file_name, $content); - //* Changing mode and group of the new created config files. - caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); - caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed'); - if(!is_dir($cf['vmail_mailbox_base'])) mkdir($cf['vmail_mailbox_base']); //* Creating virtual mail user and group diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 2121eadeb1..c88851acad 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -742,6 +742,9 @@ class installer_base { if(is_file($full_file_name)) { copy($full_file_name, $config_dir.$configfile.'~'); } + chmod($config_dir.$configfile.'~',0600); + + //* Replace variables in config file template $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content); $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); @@ -749,6 +752,13 @@ class installer_base { $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); $content = str_replace('{server_id}', $conf['server_id'], $content); wf($full_file_name, $content); + + //* Changing mode and group of the new created config file + caselog('chmod u=rw,g=r,o= '.$config_dir.'/'.$full_file_name.' &> /dev/null', + __FILE__, __LINE__, 'chmod on '.$full_file_name, 'chmod on '.$full_file_name.' failed'); + caselog('chgrp '.$cf['group'].' '.$config_dir.'/'.$full_file_name.' &> /dev/null', + __FILE__, __LINE__, 'chgrp on '.$full_file_name, 'chgrp on '.$full_file_name.' failed'); + } public function configure_jailkit() { @@ -1028,12 +1038,6 @@ class installer_base { } wf($full_file_name, $content); - //* Changing mode and group of the new created config files. - caselog('chmod u=rw,g=r,o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); - caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', - __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed'); - //* Creating virtual mail user and group $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname']; if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); -- GitLab From 54cfa4fa83e26fd1120cc602c166a52641f359f1 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Thu, 30 Jul 2020 14:18:51 +0200 Subject: [PATCH 556/571] Apply 1 suggestion(s) to 1 file(s) --- server/plugins-available/apache2_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 584f313e80..ba1da74354 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -107,7 +107,7 @@ class apache2_plugin { $affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'apache'); if(is_array($affected_snippets) && !empty($affected_snippets)) { foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id']; - $$affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in); + $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in); } } if($snippet['type'] == 'apache') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']); -- GitLab From 2d374afb035093a6b78880c74e936267614d7289 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 30 Jul 2020 14:20:59 +0200 Subject: [PATCH 557/571] Fixed file paths and group in #5681 --- install/lib/installer_base.lib.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c88851acad..a3e68fcb8d 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -737,6 +737,7 @@ class installer_base { global $conf; $config_dir = $conf['postfix']['config_dir'].'/'; + $postfix_group = $conf['postfix']['group']; $full_file_name = $config_dir.$configfile; //* Backup exiting file if(is_file($full_file_name)) { @@ -754,9 +755,9 @@ class installer_base { wf($full_file_name, $content); //* Changing mode and group of the new created config file - caselog('chmod u=rw,g=r,o= '.$config_dir.'/'.$full_file_name.' &> /dev/null', + caselog('chmod u=rw,g=r,o= '.$full_file_name.' &> /dev/null', __FILE__, __LINE__, 'chmod on '.$full_file_name, 'chmod on '.$full_file_name.' failed'); - caselog('chgrp '.$cf['group'].' '.$config_dir.'/'.$full_file_name.' &> /dev/null', + caselog('chgrp '.$postfix_group.' '.$full_file_name.' &> /dev/null', __FILE__, __LINE__, 'chgrp on '.$full_file_name, 'chgrp on '.$full_file_name.' failed'); } -- GitLab From 572668e3184bfedb622e188b7bf8ac8766845145 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 30 Jul 2020 14:34:49 +0200 Subject: [PATCH 558/571] Added escapeshellarg to postfix config file chown and chgrp in installer. --- install/lib/installer_base.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index a3e68fcb8d..6094a527ce 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -755,9 +755,9 @@ class installer_base { wf($full_file_name, $content); //* Changing mode and group of the new created config file - caselog('chmod u=rw,g=r,o= '.$full_file_name.' &> /dev/null', + caselog('chmod u=rw,g=r,o= '.escapeshellarg($full_file_name).' &> /dev/null', __FILE__, __LINE__, 'chmod on '.$full_file_name, 'chmod on '.$full_file_name.' failed'); - caselog('chgrp '.$postfix_group.' '.$full_file_name.' &> /dev/null', + caselog('chgrp '.escapeshellarg($postfix_group).' '.escapeshellarg($full_file_name).' &> /dev/null', __FILE__, __LINE__, 'chgrp on '.$full_file_name, 'chgrp on '.$full_file_name.' failed'); } -- GitLab From 6b0723dabdd263b0a7627bc5b63bc3123a4cde38 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Thu, 30 Jul 2020 14:52:00 +0200 Subject: [PATCH 559/571] Fixed chmod notice in installer. --- install/lib/installer_base.lib.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 6094a527ce..10533dd66f 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -739,11 +739,12 @@ class installer_base { $config_dir = $conf['postfix']['config_dir'].'/'; $postfix_group = $conf['postfix']['group']; $full_file_name = $config_dir.$configfile; + //* Backup exiting file if(is_file($full_file_name)) { copy($full_file_name, $config_dir.$configfile.'~'); + chmod($config_dir.$configfile.'~',0600); } - chmod($config_dir.$configfile.'~',0600); //* Replace variables in config file template $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); -- GitLab From 08212a98266284ee0a9bf9568680afd8697bfa84 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Thu, 30 Jul 2020 15:42:14 +0200 Subject: [PATCH 560/571] Go back to user settings on save (#5682) --- interface/web/tools/form/user_settings.tform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php index a696d75339..f063634b0c 100644 --- a/interface/web/tools/form/user_settings.tform.php +++ b/interface/web/tools/form/user_settings.tform.php @@ -68,7 +68,7 @@ $form['db_table'] = 'sys_user'; $form['db_table_idx'] = 'userid'; $form["db_history"] = "no"; $form['tab_default'] = 'users'; -$form['list_default'] = 'index.php'; +$form['list_default'] = 'user_settings.php'; $form['auth'] = 'no'; //* 0 = id of the user, > 0 id must match with id of current user -- GitLab From bb995db7248807d3ec4c4d6c1ee6bfde37d0c1d0 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Thu, 30 Jul 2020 14:54:46 -0600 Subject: [PATCH 561/571] fix webalizer exec to exec_safe --- server/lib/classes/cron.d/150-webalizer.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/lib/classes/cron.d/150-webalizer.inc.php b/server/lib/classes/cron.d/150-webalizer.inc.php index 42aa125e0f..6c68cef183 100644 --- a/server/lib/classes/cron.d/150-webalizer.inc.php +++ b/server/lib/classes/cron.d/150-webalizer.inc.php @@ -127,8 +127,8 @@ class cronjob_webalizer extends cronjob { chown($statsdir, $username); chgrp($statsdir, $groupname); $app->system->exec_safe("$webalizer -c ? -n ? -s ? -r ? -q -T -p -o ? ?", $webalizer_conf, $domain, $domain, $domain, $statsdir, $logfile); - - exec('chown -R ?:? ?', $username, $groupname, $statsdir); + + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); } -- GitLab From a11a3106e2ce1196fb0b06d28e1dbb4a19a46c67 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Fri, 31 Jul 2020 14:10:16 +0200 Subject: [PATCH 562/571] - fixed idn encoded domains on dashlets --- interface/web/dashboard/dashlets/mailquota.php | 6 +++++- interface/web/dashboard/dashlets/quota.php | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/web/dashboard/dashlets/mailquota.php b/interface/web/dashboard/dashlets/mailquota.php index 4629d6a463..a9434e58ea 100644 --- a/interface/web/dashboard/dashlets/mailquota.php +++ b/interface/web/dashboard/dashlets/mailquota.php @@ -21,13 +21,17 @@ class dashlet_mailquota { $has_mailquota = false; if(is_array($emails) && !empty($emails)){ + foreach($emails as &$email) { + $email['email'] = $app->functions->idn_decode($email['email']); + } + unset($email); // 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']); } $tpl->setVar('has_mailquota', $has_mailquota); - + return $tpl->grab(); } diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php index dfb82d5c24..3fd5adbb85 100644 --- a/interface/web/dashboard/dashlets/quota.php +++ b/interface/web/dashboard/dashlets/quota.php @@ -7,9 +7,9 @@ class dashlet_quota { //* Loading Template $app->uses('tpl,quota_lib'); - if (!$app->auth->verify_module_permissions('sites')) { - return; - } + if (!$app->auth->verify_module_permissions('sites')) { + return; + } $tpl = new tpl; $tpl->newTemplate("dashlets/templates/quota.htm"); @@ -24,6 +24,11 @@ class dashlet_quota { $has_quota = false; if(is_array($sites) && !empty($sites)){ + foreach($sites as &$site) { + $site['domain'] = $app->functions->idn_decode($site['domain']); + } + unset($site); + $sites = $app->functions->htmlentities($sites); $tpl->setloop('quota', $sites); $has_quota = isset($sites[0]['used']); -- GitLab From 73d3a22ef7adc1b3d5bf3083cdcefcc069518036 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Fri, 31 Jul 2020 14:20:03 +0200 Subject: [PATCH 563/571] misc adjustments --- server/lib/classes/.system.inc.php.swp | Bin 0 -> 16384 bytes .../lib/classes/cron.d/150-goaccess.inc.php | 99 +++++++++++------- .../plugins-available/apache2_plugin.inc.php | 81 ++++++++------ server/plugins-available/nginx_plugin.inc.php | 86 +++++++++------ 4 files changed, 159 insertions(+), 107 deletions(-) create mode 100644 server/lib/classes/.system.inc.php.swp diff --git a/server/lib/classes/.system.inc.php.swp b/server/lib/classes/.system.inc.php.swp new file mode 100644 index 0000000000000000000000000000000000000000..ffcf3125ccd5c07ce14da979526066c47c98501c GIT binary patch literal 16384 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 PT@b=3o~wz1g0K7s>WYm_ literal 0 HcmV?d00001 diff --git a/server/lib/classes/cron.d/150-goaccess.inc.php b/server/lib/classes/cron.d/150-goaccess.inc.php index 7c70486317..8f5c2a4323 100644 --- a/server/lib/classes/cron.d/150-goaccess.inc.php +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -51,6 +51,7 @@ class cronjob_goaccess extends cronjob { public function onRunJob() { global $app, $conf; + //###################################################################################################### // Create goaccess statistics //###################################################################################################### @@ -76,7 +77,7 @@ class cronjob_goaccess extends cronjob { } - /* Check wether the goaccess binary is in path */ + /* Check if goaccess binary is in path */ system("type goaccess 2>&1>/dev/null", $retval); if ($retval === 0) { @@ -113,40 +114,43 @@ class cronjob_goaccess extends cronjob { */ if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); } elseif(!file_exists($goaccess_conf)) { /* By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. */ - copy($goaccess_conf_main, $goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + + $app->system->copy($goaccess_conf_main, $goaccess_conf); + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); } /* Update the primary domain name in the title, it could occasionally change */ if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { - $goaccess_content = file_get_contents($goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)?/m', "html-report-title $domain", file_get_contents($goaccess_conf))); - unset($goaccess_content); + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); } + $username = $rec['system_user']; + $groupname = $rec['system_group']; + $docroot = $rec['document_root']; - - if(!@is_dir($statsdir)) mkdir($statsdir); - $username = $rec['system_user']; - $groupname = $rec['system_group']; - $docroot = $rec['document_root']; + if(!@is_dir($statsdir)) $app->system->mkdirpath($statsdir, 0755, $username, $groupname); $goa_db_dir = $docroot.'/'.$web_folder.'/stats/.db/'; $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; - if(!@is_dir($goa_db_dir)) mkdir($goa_db_dir); + if(!@is_dir($goa_db_dir)) $app->system->mkdirpath($goa_db_dir, 0755, $username, $groupname); if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); symlink($logfile, '/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); - chown($statsdir, $username); - chgrp($statsdir, $groupname); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); $goamonth = date("n"); $goayear = date("Y"); @@ -159,7 +163,6 @@ class cronjob_goaccess extends cronjob { } } - if (date("d") == 2) { $goamonth = date("m")-1; if (date("m") == 1) { @@ -170,7 +173,7 @@ class cronjob_goaccess extends cronjob { $statsdirold = $statsdir."/".$goayear."-".$goamonth."/"; if(!is_dir($statsdirold)) { - mkdir($statsdirold); + $app->system->mkdirpath($statsdirold, 0755, $username, $groupname); } // don't rotate db files per month @@ -180,39 +183,57 @@ class cronjob_goaccess extends cronjob { $files = scandir($statsdir); foreach ($files as $file) { - if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") copy("$statsdir"."/"."$file", "$statsdirold"."$file"); + if (substr($file, 0, 1) != "." && !is_dir("$statsdir"."/"."$file") && substr($file, 0, 1) != "w" && substr($file, 0, 1) != "i") $app->system->copy("$statsdir"."/"."$file", "$statsdirold"."$file"); } } + // Get the GoAccess version + $match = array(); - $output = shell_exec('goaccess --help'); - - if(preg_match('/keep-db-files/', $output)) { - $app->system->exec_safe("goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $logfile, $goaccess_conf, $goa_db_dir, $output_html); - - if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); - } else { - copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); - } - } + $goaccess_version = $app->system->system_safe('goaccess --version 2>&1'); - $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); - if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { - chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); - chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); - } + if(preg_match('/[0-9]\.[0-9]{1,2}/', $goaccess_version, $match)) { + $goaccess_version = $match[0]; + } - $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + /* + * GoAccess removed with 1.4 btree support and supports from this version on only "In-Memory with On-Disk Persitance Storage". + * For versions prior 1.4 you need GoAccess with btree support compiled! + */ + + $cust_lang = $conf['language']."_".strtoupper($conf['language']); + + if(version_compare($goaccess_version,1.4) >= 0) { + $app->system->exec_safe("LANG=? goaccess -f ? --config-file ? --restore --persist --db-path=? --output=?", $cust_lang, $logfile, $goaccess_conf, $goa_db_dir, $output_html); } else { - $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support!", LOGLEVEL_ERROR); + $output = $app->system->system_safe('goaccess --help'); + if(preg_match('/keep-db-files/', $output)) { + $app->system->exec_safe("LANG=? goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $cust_lang, $logfile, $goaccess_conf, $goa_db_dir, $output_html); + } else { + $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support, or install GoAccess version >= 1.4!", LOGLEVEL_ERROR); + } + unset($output); } + unset($cust_lang); + + if(!is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } else { + $app->system->copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $rec['document_root']."/".$web_folder."/stats/index.php"); + } + } + + $app->log('Created GoAccess statistics for ' . $domain, LOGLEVEL_DEBUG); + if(is_file($rec['document_root']."/".$web_folder."/stats/index.php")) { + chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); + chgrp($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_group']); + } - unset($output); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + } - } } else { $app->log("Stats not generated. The GoAccess binary couldn't be found. Make sure that GoAccess is installed and that it is in \$PATH", LOGLEVEL_ERROR); } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index aecab199cd..b348c823e6 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1868,7 +1868,6 @@ class apache2_plugin { $this->goaccess_update($data, $web_config); } - //* Remove Stats-Folder when Statistics set to none if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); @@ -2282,6 +2281,11 @@ class apache2_plugin { $this->awstats_delete($data, $web_config); } + //* Remove the GoAccess configuration file + if($data['old']['stats_type'] == 'goaccess') { + $this->goaccess_delete($data, $web_config); + } + if($data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') { $app->system->web_folder_protection($parent_web_document_root, true); } @@ -2979,6 +2983,18 @@ class apache2_plugin { } } + //* Delete the awstats configuration file + private function awstats_delete ($data, $web_config) { + global $app; + + $awstats_conf_dir = $web_config['awstats_conf_dir']; + + if ( @is_file($awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf') ) { + $app->system->unlink($awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf'); + $app->log('Removed AWStats config file: '.$awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf', LOGLEVEL_DEBUG); + } + } + //* Update the GoAccess configuration file private function goaccess_update ($data, $web_config) { global $app; @@ -2996,34 +3012,44 @@ class apache2_plugin { } else { $count++; if($count == 2) { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_ERROR); + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_WARN); } } } - - if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); - $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); - + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) $app->system->mkdirpath($data['new']['document_root']."/" . $web_folder . "/stats/.db"); + $goaccess_conf = $data['new']['document_root'].'/log/goaccess.conf'; /* In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. - */ - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); + */ + + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master")) { + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $goaccess_conf); + } elseif(!file_exists($goaccess_conf)) { - /* + + /* By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. - */ - copy($goaccess_conf_main, $goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); + */ + + $app->system->copy($goaccess_conf_main, $goaccess_conf); + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); + } if(file_exists($goaccess_conf)) { - $domain = escapeshellcmd($data['new']['domain']); - file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", file_get_contents($goaccess_conf))); + $domain = $data['new']['domain']; + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); + } if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { @@ -3040,28 +3066,15 @@ class apache2_plugin { } } - //* Delete the GoAccess configuration file - private function goaccess_delete ($data, $web_config) { - global $app; - - $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); - - if ( @is_file($goaccess_conf) ) { - $app->system->unlink($goaccess_conf); - $app->log('Removed GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); - } - } - - - //* Delete the awstats configuration file - private function awstats_delete ($data, $web_config) { + //* Delete the GoAccess configuration file + private function goaccess_delete ($data, $web_config) { global $app; - $awstats_conf_dir = $web_config['awstats_conf_dir']; + $goaccess_conf = $data['old']['document_root'] . "/log/goaccess.conf"; - if ( @is_file($awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf') ) { - $app->system->unlink($awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf'); - $app->log('Removed AWStats config file: '.$awstats_conf_dir.'/awstats.'.$data['old']['domain'].'.conf', LOGLEVEL_DEBUG); + if ( @is_file($goaccess_conf) ) { + $app->system->unlink($goaccess_conf); + $app->log('Removed GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); } } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 3c59011cbb..2b3223a9d9 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1906,6 +1906,11 @@ class nginx_plugin { $this->awstats_update($data, $web_config); } + //* Create GoAccess configuration + if($data['new']['stats_type'] == 'goaccess' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { + $this->goaccess_update($data, $web_config); + } + //* Remove Stats-Folder when Statistics set to none if($data['new']['stats_type'] == '' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) { $app->file->removeDirectory($data['new']['document_root'].'/web/stats'); @@ -2292,6 +2297,11 @@ class nginx_plugin { $this->awstats_delete($data, $web_config); } + //* Remove the GoAccess configuration file + if($data['old']['stats_type'] == 'goaccess') { + $this->goaccess_delete($data, $web_config); + } + //* Delete the web-backups if($data['old']['type'] == 'vhost') { $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); @@ -2534,8 +2544,8 @@ class nginx_plugin { - //* Update the GoAccess configuration file - private function goaccess_update ($data, $web_config) { + //* Update the GoAccess configuration file + private function goaccess_update ($data, $web_config) { global $app; $web_folder = $data['new']['web_folder']; @@ -2549,56 +2559,67 @@ class nginx_plugin { $goaccess_conf_main = $goa_loc; break; } else { - $count++; + $count++; if($count == 2) { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_ERROR); + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in /etc or /etc/goaccess", LOGLEVEL_WARN); } } } + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) $app->system->mkdirpath($data['new']['document_root']."/" . $web_folder . "/stats/.db"); + $goaccess_conf = $data['new']['document_root'].'/log/goaccess.conf'; - if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) mkdir($data['new']['document_root']."/" . $web_folder . "/stats/.db"); - $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + /* + In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. + By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. + */ - /* - In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. - By default the originaly with GoAccess shipped goaccess.conf from /etc/ will be used along with the log-format value COMBINED. - */ - if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master") && (!file_exists($goaccess_conf))) { - copy("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master", $goaccess_conf); - } elseif(!file_exists($goaccess_conf)) { - /* - By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. - Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. - */ - copy($goaccess_conf_main, $goaccess_conf); - file_put_contents($goaccess_conf, preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", file_get_contents($goaccess_conf))); - } + if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess.conf.master")) { + $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $goaccess_conf); + + } elseif(!file_exists($goaccess_conf)) { + + /* + By default the goaccess.conf should get copied by the webserver plugin but in case it wasn't, or it got deleted by accident we gonna copy it again to the destination dir. + Also there was no /usr/local/ispconfig/server/conf-custom/goaccess.conf.master, so we gonna use /etc/goaccess.conf as the base conf. + */ + + $app->system->copy($goaccess_conf_main, $goaccess_conf); + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?log-format COMBINED/m', "log-format COMBINED", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); + + } if(file_exists($goaccess_conf)) { - $domain = escapeshellcmd($data['new']['domain']); - file_put_contents($goaccess_conf, preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", file_get_contents($goaccess_conf))); - } + $domain = $data['new']['domain']; + $content = $app->system->file_get_contents($goaccess_conf, true); + $content = preg_replace('/^(#)?html-report-title(.*)/m', "html-report-title $domain", $content); + $app->system->file_put_contents($goaccess_conf, $content, true); + unset($content); - if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { - $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); - } else { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); - } + } + + if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { + $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); + } else { + $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); + } if(is_file($data['new']['document_root']."/" . $web_folder . "/stats/index.html")) $app->system->unlink($data['new']['document_root']."/" . $web_folder . "/stats/index.html"); if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { $app->system->copy("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); } else { $app->system->copy("/usr/local/ispconfig/server/conf/goaccess_index.php.master", $data['new']['document_root']."/" . $web_folder . "/stats/index.php"); - } - } + } + } //* Delete the GoAccess configuration file private function goaccess_delete ($data, $web_config) { global $app; - $goaccess_conf = escapeshellcmd($data['new']['document_root'].'/log/goaccess.conf'); + $goaccess_conf = $data['old']['document_root'] . "/log/goaccess.conf"; if ( @is_file($goaccess_conf) ) { $app->system->unlink($goaccess_conf); @@ -2606,9 +2627,6 @@ class nginx_plugin { } } - - - //* Update the awstats configuration file private function awstats_update ($data, $web_config) { global $app; -- GitLab From 9bc41deca9b2f2eddd9b74ea9c38eb7fb9c09f88 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Fri, 31 Jul 2020 14:20:21 +0200 Subject: [PATCH 564/571] remove swp --- server/lib/classes/.system.inc.php.swp | Bin 16384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 server/lib/classes/.system.inc.php.swp diff --git a/server/lib/classes/.system.inc.php.swp b/server/lib/classes/.system.inc.php.swp deleted file mode 100644 index ffcf3125ccd5c07ce14da979526066c47c98501c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 PT@b=3o~wz1g0K7s>WYm_ -- GitLab From 94b093e3fe968abc263e4784b401a01b6f305ab5 Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Fri, 31 Jul 2020 14:47:16 +0200 Subject: [PATCH 565/571] removed redundant log warning if goaccess.conf does not exist --- server/plugins-available/apache2_plugin.inc.php | 4 +--- server/plugins-available/nginx_plugin.inc.php | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index b348c823e6..582f005e49 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -3054,9 +3054,7 @@ class apache2_plugin { if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); - } else { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); - } + } if(is_file($data['new']['document_root']."/" . $web_folder . "/stats/index.html")) $app->system->unlink($data['new']['document_root']."/" . $web_folder . "/stats/index.html"); if(file_exists("/usr/local/ispconfig/server/conf-custom/goaccess_index.php.master")) { diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 2b3223a9d9..9beb579197 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2603,8 +2603,6 @@ class nginx_plugin { if(is_file($goaccess_conf) && (filesize($goaccess_conf) > 0)) { $app->log('Created GoAccess config file: '.$goaccess_conf, LOGLEVEL_DEBUG); - } else { - $app->log("No GoAccess base config found. Make sure that GoAccess is installed and that the goaccess.conf does exist in ".$goaccess_conf_dir.".", LOGLEVEL_WARN); } if(is_file($data['new']['document_root']."/" . $web_folder . "/stats/index.html")) $app->system->unlink($data['new']['document_root']."/" . $web_folder . "/stats/index.html"); -- GitLab From 8fff80bd140e6cd225c8f6a2118439865a31c93f Mon Sep 17 00:00:00 2001 From: Michael Seevogel <git@michaelseevogel.de> Date: Fri, 31 Jul 2020 16:17:51 +0200 Subject: [PATCH 566/571] fixed fallback for older GoAccess versions --- server/lib/classes/cron.d/150-goaccess.inc.php | 9 +++++---- server/plugins-available/apache2_plugin.inc.php | 2 +- server/plugins-available/nginx_plugin.inc.php | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/server/lib/classes/cron.d/150-goaccess.inc.php b/server/lib/classes/cron.d/150-goaccess.inc.php index 8f5c2a4323..8c9d764442 100644 --- a/server/lib/classes/cron.d/150-goaccess.inc.php +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -144,9 +144,9 @@ class cronjob_goaccess extends cronjob { $goa_db_dir = $docroot.'/'.$web_folder.'/stats/.db/'; $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; - if(!@is_dir($goa_db_dir)) $app->system->mkdirpath($goa_db_dir, 0755, $username, $groupname); + if(!@is_dir($goa_db_dir)) $app->system->mkdirpath($goa_db_dir); - if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); + if(is_link('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log')) $app->system->unlink('/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); symlink($logfile, '/var/log/ispconfig/httpd/'.$domain.'/yesterday-access.log'); @@ -207,8 +207,9 @@ class cronjob_goaccess extends cronjob { if(version_compare($goaccess_version,1.4) >= 0) { $app->system->exec_safe("LANG=? goaccess -f ? --config-file ? --restore --persist --db-path=? --output=?", $cust_lang, $logfile, $goaccess_conf, $goa_db_dir, $output_html); } else { - $output = $app->system->system_safe('goaccess --help'); - if(preg_match('/keep-db-files/', $output)) { + $output = $app->system->system_safe('goaccess --help 2>&1'); + preg_match('/keep-db-files/', $output, $match); + if($match[0] == "keep-db-files") { $app->system->exec_safe("LANG=? goaccess -f ? --config-file ? --load-from-disk --keep-db-files --db-path=? --output=?", $cust_lang, $logfile, $goaccess_conf, $goa_db_dir, $output_html); } else { $app->log("Stats not generated. The GoAccess binary was not compiled with btree support. Please recompile/reinstall GoAccess with btree support, or install GoAccess version >= 1.4!", LOGLEVEL_ERROR); diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 582f005e49..b2680561ab 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -3017,7 +3017,7 @@ class apache2_plugin { } } - if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) $app->system->mkdirpath($data['new']['document_root']."/" . $web_folder . "/stats/.db"); + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/.db")) $app->system->mkdirpath($data['new']['document_root'] . "/" . $web_folder . "/stats/.db"); $goaccess_conf = $data['new']['document_root'].'/log/goaccess.conf'; /* diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 9beb579197..5e008f211f 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -2566,8 +2566,8 @@ class nginx_plugin { } } - if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/")) $app->system->mkdirpath($data['new']['document_root']."/" . $web_folder . "/stats/.db"); - $goaccess_conf = $data['new']['document_root'].'/log/goaccess.conf'; + if(!is_dir($data['new']['document_root']."/" . $web_folder . "/stats/.db")) $app->system->mkdirpath($data['new']['document_root'] . "/" . $web_folder . "/stats/.db"); + $goaccess_conf = $data['new']['document_root'].'/log/goaccess.conf'; /* In case that you use a different log format, you should use a custom goaccess.conf which you'll have to put into /usr/local/ispconfig/server/conf-custom/. -- GitLab From aab9bd3bf5ac55495ed61a5591bca62bb28d74fa Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 4 Aug 2020 14:25:06 -0600 Subject: [PATCH 567/571] log subdomain name in error --- server/plugins-available/apache2_plugin.inc.php | 2 +- server/plugins-available/nginx_plugin.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 8234058714..ca14b737be 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -613,7 +613,7 @@ class apache2_plugin { unset($tmp); if($app->system->is_blacklisted_web_path($web_folder)) { - $app->log('Vhost is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); + $app->log('Vhost ' . $subdomain_host . ' is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); return 0; } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 6483df4eb9..e4d59a02bb 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -455,7 +455,7 @@ class nginx_plugin { unset($tmp); if($app->system->is_blacklisted_web_path($web_folder)) { - $app->log('Vhost is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); + $app->log('Vhost ' . $subdomain_host . ' is using a blacklisted web folder: ' . $web_folder, LOGLEVEL_ERROR); return 0; } -- GitLab From 1c7d6d81a4af3fa99c2a01b1a25242465724e2bf Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Fri, 7 Aug 2020 13:25:56 -0600 Subject: [PATCH 568/571] separate mysql-virtual_alias_domains.cf and mysql-virtual_alias_maps.cf --- install/dist/lib/fedora.lib.php | 3 +++ install/dist/lib/opensuse.lib.php | 3 +++ install/lib/installer_base.lib.php | 3 +++ install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/mysql-virtual_alias_domains.cf.master | 5 +++-- install/tpl/mysql-virtual_alias_maps.cf.master | 6 ++++++ install/tpl/opensuse_postfix.conf.master | 2 +- 9 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 install/tpl/mysql-virtual_alias_maps.cf.master diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 0cf2141f72..c188ac93a5 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -66,6 +66,9 @@ class installer_dist extends installer_base { //* mysql-virtual_alias_domains.cf $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_alias_maps.cf + $this->process_postfix_config('mysql-virtual_alias_maps.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 1401614c3f..da31ad6b57 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -66,6 +66,9 @@ class installer_dist extends installer_base { //* mysql-virtual_alias_domains.cf $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_alias_maps.cf + $this->process_postfix_config('mysql-virtual_alias_maps.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 10533dd66f..6a4d771e16 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -976,6 +976,9 @@ class installer_base { //* mysql-virtual_alias_domains.cf $this->process_postfix_config('mysql-virtual_alias_domains.cf'); + //* mysql-virtual_alias_maps.cf + $this->process_postfix_config('mysql-virtual_alias_maps.cf'); + //* mysql-virtual_mailboxes.cf $this->process_postfix_config('mysql-virtual_mailboxes.cf'); diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 169826747d..1c1b8187b1 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -1,7 +1,7 @@ alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf -virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_maps.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 1c78e858be..58892ef82a 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -1,5 +1,5 @@ virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf -virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_maps.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 84d404d15b..c38670f250 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -1,5 +1,5 @@ virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf -virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_maps.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} diff --git a/install/tpl/mysql-virtual_alias_domains.cf.master b/install/tpl/mysql-virtual_alias_domains.cf.master index e55fd8ea8d..26b14ac00d 100644 --- a/install/tpl/mysql-virtual_alias_domains.cf.master +++ b/install/tpl/mysql-virtual_alias_domains.cf.master @@ -2,5 +2,6 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} hosts = {mysql_server_ip} -query = SELECT destination FROM mail_forwarding - WHERE source = '@%d' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id} +query = SELECT SUBSTRING_INDEX(destination, '@', -1) FROM mail_forwarding + WHERE source = '@%s' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id} + diff --git a/install/tpl/mysql-virtual_alias_maps.cf.master b/install/tpl/mysql-virtual_alias_maps.cf.master new file mode 100644 index 0000000000..e55fd8ea8d --- /dev/null +++ b/install/tpl/mysql-virtual_alias_maps.cf.master @@ -0,0 +1,6 @@ +user = {mysql_server_ispconfig_user} +password = {mysql_server_ispconfig_password} +dbname = {mysql_server_database} +hosts = {mysql_server_ip} +query = SELECT destination FROM mail_forwarding + WHERE source = '@%d' AND type = 'aliasdomain' AND active = 'y' AND server_id = {server_id} diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index f2d2a4403b..d254e3ccb5 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -1,7 +1,7 @@ alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases virtual_alias_domains = proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf -virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_domains.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf +virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:{config_dir}/mysql-virtual_forwardings.cf, proxy:mysql:{config_dir}/mysql-virtual_alias_maps.cf, proxy:mysql:{config_dir}/mysql-virtual_email2email.cf virtual_mailbox_domains = proxy:mysql:{config_dir}/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:{config_dir}/mysql-virtual_mailboxes.cf virtual_mailbox_base = {vmail_mailbox_base} -- GitLab From 7164c05979c91b6346a944fd3fe366c4ea9298dc Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Sat, 8 Aug 2020 16:21:25 +0200 Subject: [PATCH 569/571] Update SSL params (#5423) --- install/tpl/apache_ispconfig.vhost.master | 4 ++-- install/tpl/debian6_dovecot2.conf.master | 5 +++-- install/tpl/debian_dovecot2.conf.master | 4 +++- install/tpl/debian_postfix.conf.master | 11 +++++++---- install/tpl/fedora_dovecot2.conf.master | 4 +++- install/tpl/fedora_postfix.conf.master | 9 ++++++--- install/tpl/gentoo_postfix.conf.master | 9 ++++++--- install/tpl/nginx_apps.vhost.master | 4 ++-- install/tpl/nginx_ispconfig.vhost.master | 10 +++++----- install/tpl/opensuse_dovecot2.conf.master | 7 ++++--- install/tpl/opensuse_postfix.conf.master | 9 ++++++--- 11 files changed, 47 insertions(+), 29 deletions(-) diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 61e9a58859..f90876170b 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -70,7 +70,7 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> # SSL Configuration <tmpl_var name="ssl_comment">SSLEngine On <tmpl_if name='apache_version' op='>=' value='2.3.16' format='version'> - <tmpl_var name="ssl_comment">SSLProtocol All -SSLv3 + <tmpl_var name="ssl_comment">SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1 <tmpl_else> <tmpl_var name="ssl_comment">SSLProtocol All -SSLv2 -SSLv3 </tmpl_if> @@ -78,7 +78,7 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> <tmpl_var name="ssl_comment">SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key <tmpl_var name="ssl_bundle_comment">SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle - <tmpl_var name="ssl_comment">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 + <tmpl_var name="ssl_comment">SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 <tmpl_var name="ssl_comment">SSLHonorCipherOrder On <tmpl_if name='apache_version' op='>=' value='2.4.3' format='version'> <tmpl_var name="ssl_comment">SSLCompression Off diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 80709cfe36..ce27f2376e 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -7,8 +7,9 @@ mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_dh = </etc/dovecot/dh.pem -ssl_protocols = !SSLv2 !SSLv3 -ssl_min_protocol = TLSv1 +ssl_min_protocol = TLSv1.2 +ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +ssl_prefer_server_ciphers = no auth_verbose = yes mail_max_userip_connections = 100 mail_plugins = quota diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master index a292591372..60a1263e48 100644 --- a/install/tpl/debian_dovecot2.conf.master +++ b/install/tpl/debian_dovecot2.conf.master @@ -7,7 +7,9 @@ mail_privileged_group = vmail postmaster_address = postmaster@example.com ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key -ssl_protocols = !SSLv2 !SSLv3 +ssl_min_protocol = TLSv1.2 +ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +ssl_prefer_server_ciphers = no auth_verbose = yes mail_max_userip_connections = 100 mail_plugins = $mail_plugins quota diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 1c1b8187b1..8e3fa50f22 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, reject_unknown_recipient_domain, check_recipient_access proxy:mysql:{config_dir}/mysql-verify_recipients.cf, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_recipient_access proxy:mysql:{config_dir}/mysql-virtual_recipient.cf{rbl_list}{greylisting}, check_policy_service unix:private/quota-status smtpd_use_tls = yes smtpd_tls_security_level = may @@ -39,10 +39,13 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks owner_request_special = no smtp_tls_security_level = may -smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 -smtpd_tls_protocols = !SSLv2,!SSLv3 -smtp_tls_protocols = !SSLv2,!SSLv3 +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 +smtpd_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 +smtp_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +smtpd_tls_mandatory_ciphers = medium +tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +tls_preempt_cipherlist = no # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master index 2acd757fbd..4b9bb5c6a9 100644 --- a/install/tpl/fedora_dovecot2.conf.master +++ b/install/tpl/fedora_dovecot2.conf.master @@ -6,7 +6,9 @@ log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key -ssl_protocols = !SSLv2 !SSLv3 +ssl_min_protocol = TLSv1.2 +ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +ssl_prefer_server_ciphers = no auth_verbose = yes mail_plugins = quota passdb { diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 58892ef82a..ffe831286c 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -35,10 +35,13 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 -smtpd_tls_protocols = !SSLv2,!SSLv3 -smtp_tls_protocols = !SSLv2,!SSLv3 +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 +smtpd_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 +smtp_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +smtpd_tls_mandatory_ciphers = medium +tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +tls_preempt_cipherlist = no # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index c38670f250..52b48f9274 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -34,10 +34,13 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 -smtpd_tls_protocols = !SSLv2,!SSLv3 -smtp_tls_protocols = !SSLv2,!SSLv3 +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 +smtpd_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 +smtp_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +smtpd_tls_mandatory_ciphers = medium +tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +tls_preempt_cipherlist = no # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index a22b1aab46..2680b209a2 100644 --- a/install/tpl/nginx_apps.vhost.master +++ b/install/tpl/nginx_apps.vhost.master @@ -2,7 +2,7 @@ server { listen {apps_vhost_port} {ssl_on}; listen [::]:{apps_vhost_port} {ssl_on} ipv6only=on; - {ssl_comment}ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + {ssl_comment}ssl_protocols TLSv1.2; {ssl_comment}ssl_certificate /usr/local/ispconfig/interface/ssl/ispserver.crt; {ssl_comment}ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key; @@ -115,7 +115,7 @@ server { location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } - + location /squirrelmail { root /usr/share/; index index.php index.html index.htm; diff --git a/install/tpl/nginx_ispconfig.vhost.master b/install/tpl/nginx_ispconfig.vhost.master index aad670e97a..dbe44d7064 100644 --- a/install/tpl/nginx_ispconfig.vhost.master +++ b/install/tpl/nginx_ispconfig.vhost.master @@ -1,13 +1,13 @@ server { listen {vhost_port} {ssl_on}; listen [::]:{vhost_port} {ssl_on} ipv6only=on; - - {ssl_comment}ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + + {ssl_comment}ssl_protocols TLSv1.2; {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_prefer_server_ciphers on; - + # redirect to https if accessed with http {ssl_comment}error_page 497 https://$host:{vhost_port}$request_uri; @@ -44,7 +44,7 @@ server { location ~ /\. { deny all; } - + # location /phpmyadmin { # root /usr/share/; # index index.php index.html index.htm; @@ -64,7 +64,7 @@ server { # location /phpMyAdmin { # rewrite ^/* /phpmyadmin last; # } -# +# # location /squirrelmail { # root /usr/share/; # index index.php index.html index.htm; diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master index 62c9939819..9624c05684 100644 --- a/install/tpl/opensuse_dovecot2.conf.master +++ b/install/tpl/opensuse_dovecot2.conf.master @@ -6,7 +6,9 @@ log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key -ssl_protocols = !SSLv2 !SSLv3 +ssl_min_protocol = TLSv1.2 +ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +ssl_prefer_server_ciphers = no mail_plugins = quota passdb { args = /etc/dovecot/dovecot-sql.conf @@ -79,7 +81,7 @@ mail_plugins = $mail_plugins quota #2.3+ group = vmail #2.3+ mode = 0660 #2.3+ } -#2.3+ +#2.3+ #2.3+ unix_listener stats-writer { #2.3+ user = vmail #2.3+ group = vmail @@ -122,4 +124,3 @@ namespace inbox { special_use = \Trash } } - diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index d254e3ccb5..545dcb1080 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -37,10 +37,13 @@ nested_header_checks = regexp:{config_dir}/nested_header_checks body_checks = regexp:{config_dir}/body_checks inet_interfaces = all smtp_tls_security_level = may -smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 -smtpd_tls_protocols = !SSLv2,!SSLv3 -smtp_tls_protocols = !SSLv2,!SSLv3 +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 +smtpd_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 +smtp_tls_protocols = !SSLv2,!SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_exclude_ciphers = RC4, aNULL smtp_tls_exclude_ciphers = RC4, aNULL +smtpd_tls_mandatory_ciphers = medium +tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 +tls_preempt_cipherlist = no # needed for postfix < 3.3 when using reject_unverified_recipient (lmtp): enable_original_recipient = yes -- GitLab From 4189017a3a443758613ecc2521d01198cd1616e7 Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 10 Aug 2020 12:30:01 +0200 Subject: [PATCH 570/571] Add ssl_protocols for backwards compatibility (#5423) --- install/tpl/debian6_dovecot2.conf.master | 1 + 1 file changed, 1 insertion(+) diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index ce27f2376e..1080eeb559 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -7,6 +7,7 @@ mail_privileged_group = vmail ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_dh = </etc/dovecot/dh.pem +ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1 ssl_min_protocol = TLSv1.2 ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl_prefer_server_ciphers = no -- GitLab From be9d18be9d35e911d8d0c66007c2350577225e8a Mon Sep 17 00:00:00 2001 From: thom <thom@amsterdamtech.nl> Date: Mon, 10 Aug 2020 12:35:11 +0200 Subject: [PATCH 571/571] Change loglevel to debug if no DB exists for site (#5688) --- server/lib/classes/backup.inc.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index ba28cd4c90..485bd996d3 100644 --- a/server/lib/classes/backup.inc.php +++ b/server/lib/classes/backup.inc.php @@ -1147,7 +1147,7 @@ class backup $records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ?", $server_id, $domain_id); if (empty($records)){ - $app->log('Skipping database backup for domain ' . $web_domain['domain_id'] . ', because no related databases found.', LOGLEVEL_ERROR); + $app->log('Skipping database backup for domain ' . $web_domain['domain_id'] . ', because no related databases found.', LOGLEVEL_DEBUG); return true; } @@ -1450,4 +1450,3 @@ class backup } ?> - -- GitLab